[GME-commit] GMESRC/GME/GMEActiveBrowser TreeCtrlEx.cpp,1.3,1.4 MgaMap.h,1.1,1.2 MgaMap.cpp,1.1,1.2 GMEActiveBrowserCtl.h,1.5,1.6 GMEActiveBrowserCtl.cpp,1.11,1.12 GMEActiveBrowser.odl,1.4,1.5 ActiveBrowserPropertyPage.h,1.10,1.11 ActiveBrowserPropertyPage.cpp,1.37,1.38

gme-commit at list.isis.vanderbilt.edu gme-commit at list.isis.vanderbilt.edu
Wed Jan 12 11:54:03 CST 2005


Update of /var/lib/gme/GMESRC/GME/GMEActiveBrowser
In directory braindrain:/tmp/cvs-serv29444

Modified Files:
	TreeCtrlEx.cpp MgaMap.h MgaMap.cpp GMEActiveBrowserCtl.h 
	GMEActiveBrowserCtl.cpp GMEActiveBrowser.odl 
	ActiveBrowserPropertyPage.h ActiveBrowserPropertyPage.cpp 
Log Message:
Extended interface for scripting

CVS User: bogyom

Index: TreeCtrlEx.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/TreeCtrlEx.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TreeCtrlEx.cpp	29 Oct 2004 15:58:13 -0000	1.3
--- TreeCtrlEx.cpp	12 Jan 2005 17:54:00 -0000	1.4
***************
*** 421,425 ****
  	{
  		// Clear selection of all "multiple selected" items first
! 		ClearSelection();
  
  		// Then select the clicked item
--- 421,425 ----
  	{
  		// Clear selection of all "multiple selected" items first
! 		ClearSelection(TRUE);
  
  		// Then select the clicked item
***************
*** 806,815 ****
  void CTreeCtrlEx::ClearSelection(BOOL bMultiOnly/*=FALSE*/)
  {
  	if ( !bMultiOnly )
! 		SelectItem( NULL );
  
  	for ( HTREEITEM hItem=GetRootItem(); hItem!=NULL; hItem=GetNextVisibleItem( hItem ) )
  		if ( GetItemState( hItem, TVIS_SELECTED ) & TVIS_SELECTED )
  			SetItemState( hItem, 0, TVIS_SELECTED );
  }
  
--- 806,818 ----
  void CTreeCtrlEx::ClearSelection(BOOL bMultiOnly/*=FALSE*/)
  {
+ 	// TZS - entropia decreased
  	if ( !bMultiOnly )
! 		return;
! //		SelectItem( NULL );
  
  	for ( HTREEITEM hItem=GetRootItem(); hItem!=NULL; hItem=GetNextVisibleItem( hItem ) )
  		if ( GetItemState( hItem, TVIS_SELECTED ) & TVIS_SELECTED )
  			SetItemState( hItem, 0, TVIS_SELECTED );
+ 	SelectItem( NULL );
  }
  

Index: MgaMap.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/MgaMap.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MgaMap.h	1 Mar 2002 21:53:00 -0000	1.1
--- MgaMap.h	12 Jan 2005 17:54:00 -0000	1.2
***************
*** 26,29 ****
--- 26,30 ----
  	BOOL RemoveObjectProxy(CMgaObjectProxy MgaObjectProxy);
  	BOOL RemoveTreeItem( HTREEITEM hTreeItem);
+ 	BOOL SearchTreeItem(BSTR Id, HTREEITEM &hTreeItem, IUnknown* &punk);
  	BOOL LookupTreeItem(CMgaObjectProxy MgaObjectProxy, HTREEITEM& hTreeItem);
  	BOOL LookupTreeItem(LPUNKNOWN pUnknown, HTREEITEM &hTreeItem);

Index: MgaMap.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/MgaMap.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MgaMap.cpp	1 Mar 2002 21:53:00 -0000	1.1
--- MgaMap.cpp	12 Jan 2005 17:54:00 -0000	1.2
***************
*** 23,26 ****
--- 23,27 ----
  #include "gmeactivebrowser.h"
  #include "MgaMap.h"
+ #include <comdef.h>
  
  #ifdef _DEBUG
***************
*** 175,178 ****
--- 176,213 ----
  }
  
+ 
+ _COM_SMARTPTR_TYPEDEF(IMgaObject, __uuidof(IMgaObject));
+ 
+ BOOL CMgaMap::SearchTreeItem(BSTR Id, HTREEITEM &hTreeItem, IUnknown* &punk)
+ {
+ 	// read all looking for the ID
+ 
+    LPUNKNOWN	nKey;
+    CMgaObjectProxyMapItem *	pt;
+    POSITION pos = m_MapObject2Item.GetStartPosition();
+    bool found = false;
+    while (pos != NULL)
+    {
+       m_MapObject2Item.GetNextAssoc( pos, nKey, pt);
+ 	  IMgaObjectPtr mgao(nKey);
+ 	  IUnknownPtr punkptr(nKey);
+ 
+ 	  punk = punkptr;
+ 	  BSTR oid = NULL;
+ 	  mgao->get_ID(&oid);
+ 	  _bstr_t boid(oid, false);
+ 	  _bstr_t bid = (char*)Id;
+ 	  if (bid == boid)
+ 	  {
+ 		  found = true;
+ 		  break;
+ 	  }
+    }
+ 
+ 	if(found) 
+ 		hTreeItem = pt->m_hTreeItem;
+ 
+ 	return (found);
+ }
  
  

Index: GMEActiveBrowserCtl.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/GMEActiveBrowserCtl.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** GMEActiveBrowserCtl.h	18 Nov 2002 20:09:00 -0000	1.5
--- GMEActiveBrowserCtl.h	12 Jan 2005 17:54:00 -0000	1.6
***************
*** 81,84 ****
--- 81,92 ----
  	afx_msg LPUNKNOWN GetSelectedMgaObjects();
  	afx_msg void OpenProject(LPCTSTR pProjectName);
+ 
+ 	afx_msg void FocusItem(BSTR Id);
+ 	afx_msg void OpenItem(BSTR Id);
+ 	afx_msg void OpenSubtree(BSTR Id);
+ 	afx_msg void CloseSubtree(BSTR Id);
+ 	afx_msg void Up();
+ 	afx_msg void Down();
+ 	afx_msg void ChangePropPage(browser_page page);
  	//}}AFX_DISPATCH
  	DECLARE_DISPATCH_MAP()
***************
*** 102,105 ****
--- 110,120 ----
  	dispidGetSelectedMgaObjects = 4L,
  	dispidOpenProject = 5L,
+ 	dispidFocusItem = 6L,
+ 	dispidOpenItem = 7L,
+ 	dispidOpenSubtree = 8L,
+ 	dispidCloseSubtree = 9L,
+ 	dispidUp = 10L,
+ 	dispidDown = 11L,
+ 	dispidChangePropPage = 12L,
  	eventidDblClickMgaObject = 1L,
  	eventidShowAttributes = 2L,

Index: GMEActiveBrowserCtl.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/GMEActiveBrowserCtl.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** GMEActiveBrowserCtl.cpp	14 Sep 2004 14:13:31 -0000	1.11
--- GMEActiveBrowserCtl.cpp	12 Jan 2005 17:54:00 -0000	1.12
***************
*** 44,47 ****
--- 44,54 ----
  	DISP_FUNCTION(CGMEActiveBrowserCtrl, "GetSelectedMgaObjects", GetSelectedMgaObjects, VT_UNKNOWN, VTS_NONE)
  	DISP_FUNCTION(CGMEActiveBrowserCtrl, "OpenProject", OpenProject, VT_EMPTY, VTS_BSTR)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "FocusItem", FocusItem, VT_EMPTY, VTS_BSTR)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "OpenItem", OpenItem, VT_EMPTY, VTS_BSTR)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "OpenSubtree", OpenSubtree, VT_EMPTY, VTS_BSTR)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "CloseSubtree", CloseSubtree, VT_EMPTY, VTS_BSTR)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "Up", Up, VT_EMPTY, VTS_NONE)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "Down", Down, VT_EMPTY, VTS_NONE)
+ 	DISP_FUNCTION(CGMEActiveBrowserCtrl, "ChangePropPage", ChangePropPage, VT_EMPTY, VTS_I2)
  	//}}AFX_DISPATCH_MAP
  END_DISPATCH_MAP()
***************
*** 403,406 ****
--- 410,465 ----
  
  
+ void CGMEActiveBrowserCtrl::FocusItem(BSTR Id) 
+ {
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.GotoIUnk(Id);
+ }
+ 
+ 
+ void CGMEActiveBrowserCtrl::OpenItem(BSTR Id) 
+ {
+ 	// focus + enter
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.GotoIUnk(Id);
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)VK_RETURN, (LPARAM)0);
+ }
+ 
+ void CGMEActiveBrowserCtrl::OpenSubtree(BSTR Id) 
+ {
+ 	 // focus + '+'
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.GotoIUnk(Id);
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)107, (LPARAM)0);
+ }
+ 
+ void CGMEActiveBrowserCtrl::CloseSubtree(BSTR Id) 
+ {
+ 	 // focus + '-'
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.GotoIUnk(Id);
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)109, (LPARAM)0);
+ }
+ 
+ void CGMEActiveBrowserCtrl::Up() 
+ {
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)VK_UP, (LPARAM)0);
+ }
+ 
+ void CGMEActiveBrowserCtrl::Down() 
+ {
+ 	m_pPropFrame->m_pModelessPropSheet->m_PageAggregate.m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)VK_DOWN, (LPARAM)0);
+ }
+ 
+ void CGMEActiveBrowserCtrl::ChangePropPage(browser_page page) 
+ {
+ 	 switch (page)
+ 	 {
+ 	 case 	MODE_AGGRE:
+ 		 m_pPropFrame->m_pModelessPropSheet->SetActivePage(0);
+ 		 break;
+ 	 case 	MODE_INHERI:
+ 		 m_pPropFrame->m_pModelessPropSheet->SetActivePage(1);
+ 		 break;
+ 	 case 	MODE_META:
+ 		 m_pPropFrame->m_pModelessPropSheet->SetActivePage(2);
+ 		 break;
+ 	 }
+ }
  
  void CGMEActiveBrowserCtrl::OnMgaObjectEvent(IMgaObject * obj, unsigned long eventmask, VARIANT v)

Index: GMEActiveBrowser.odl
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/GMEActiveBrowser.odl,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** GMEActiveBrowser.odl	18 Nov 2002 20:09:00 -0000	1.4
--- GMEActiveBrowser.odl	12 Jan 2005 17:54:00 -0000	1.5
***************
*** 8,11 ****
--- 8,12 ----
  #include <idispids.h>
  
+ 
  [ uuid(FDA9EDB8-ED6A-468F-A3A9-E9361FEED051), version(1.0),
    helpfile("GMEActiveBrowser.hlp"),
***************
*** 17,20 ****
--- 18,27 ----
  	importlib(STDTYPE_TLB);
  
+  typedef enum  browser_page{
+ 	MODE_AGGRE = 0,
+ 	MODE_INHERI = 1,
+ 	MODE_META = 2,
+  } browser_page;
+ 
  	//  Primary dispatch interface for CGMEActiveBrowserCtrl
  
***************
*** 38,41 ****
--- 45,55 ----
  			[id(4)] IUnknown* GetSelectedMgaObjects();
  			[id(5)] void OpenProject(BSTR pProjectName);
+ 			[id(6)] void FocusItem(BSTR Id);
+ 			[id(7)] void OpenItem(BSTR Id);
+ 			[id(8)] void OpenSubtree(BSTR Id);
+ 			[id(9)] void CloseSubtree(BSTR Id);
+ 			[id(10)] void Up();
+ 			[id(11)] void Down();
+ 			[id(12)] void ChangePropPage(browser_page);
  			//}}AFX_ODL_METHOD
  	};

Index: ActiveBrowserPropertyPage.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** ActiveBrowserPropertyPage.h	29 Oct 2004 17:33:07 -0000	1.10
--- ActiveBrowserPropertyPage.h	12 Jan 2005 17:54:00 -0000	1.11
***************
*** 43,46 ****
--- 43,47 ----
  	CAggregateOptions m_Options;
  
+ 	void GotoIUnk(BSTR Id);
  	void Refresh();
  	void OnMgaEvent(CComPtr<IMgaObject> ccpMgaObject, unsigned long lEventMask);
***************
*** 92,95 ****
--- 93,97 ----
  	afx_msg void OnSearch();
  	afx_msg void OnBeginDragTreeAggregate(NMHDR* pNMHDR, LRESULT* pResult);
+ 	afx_msg void OnKillFocus(CWnd* pNewWnd);
  	//}}AFX_MSG
  	DECLARE_MESSAGE_MAP()

Index: ActiveBrowserPropertyPage.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** ActiveBrowserPropertyPage.cpp	29 Oct 2004 17:33:07 -0000	1.37
--- ActiveBrowserPropertyPage.cpp	12 Jan 2005 17:54:00 -0000	1.38
***************
*** 11,14 ****
--- 11,15 ----
  #include "..\Gme\GMEOLEData.h"
  #include "AttachLibDlg.h"
+ #include <comdef.h>
  
  #include "CommonMfc.h"
***************
*** 85,88 ****
--- 86,90 ----
  	ON_BN_CLICKED(IDC_SEARCH, OnSearch)
  	ON_NOTIFY(TVN_BEGINDRAG, IDC_TREE_AGGREGATE, OnBeginDragTreeAggregate)
+ 	ON_WM_KILLFOCUS()
  	//}}AFX_MSG_MAP
  END_MESSAGE_MAP()
***************
*** 1661,1665 ****
  						{
  							m_TreeAggregate.EnsureVisible(hNewItem);
! 							m_TreeAggregate.ClearSelection();
  							m_TreeAggregate.SelectItem(hNewItem);
  							m_TreeAggregate.SetFocus();			
--- 1663,1667 ----
  						{
  							m_TreeAggregate.EnsureVisible(hNewItem);
! 							m_TreeAggregate.ClearSelection(TRUE);
  							m_TreeAggregate.SelectItem(hNewItem);
  							m_TreeAggregate.SetFocus();			
***************
*** 1979,1983 ****
--- 1981,2058 ----
  
  
+ void CAggregatePropertyPage::GotoIUnk(BSTR Id)
+ {
+ 	bool worked = false;
+ 	IUnknown *pUnknown = NULL;
+ 	CGMEActiveBrowserApp* pApp=(CGMEActiveBrowserApp*)AfxGetApp();
+ 	CMgaContext* pMgaContext=&pApp->m_CurrentProject.m_MgaContext;
+ 	MSGTRY{
+ 		// Starting transaction
+ 		pMgaContext->BeginTransaction();
+ 		HTREEITEM hNewItem;
+ 		if(m_TreeAggregate.m_MgaMap.SearchTreeItem(Id,hNewItem, pUnknown))
+ 		{
+ 						m_TreeAggregate.EnsureVisible(hNewItem);
+ 						m_TreeAggregate.ClearSelection(TRUE);
+ 						m_TreeAggregate.SelectItem(hNewItem);
+ 						m_TreeAggregate.SetFocus();			
+ 						m_TreeAggregate.Invalidate();
+ 						worked = true;
+ 		}
+ 		else  // expand the tree until item reached
+ 		{
+ 			_bstr_t id;
+ 			_bstr_t bId = (char*)Id;
+ 			CComPtr<IMgaObject> iitem;
+ 			CComPtr<IMgaFCO> fiitem;
+ 			_bstr_t item[100];
+ 			int itemcount = 0;
+ 			CComPtr<IMgaObject> parent;
+ 			
+ 			pMgaContext->BeginTransaction();
+ 			CComPtr<IMgaProject> project = pMgaContext->m_ccpProject;
+ 			COMTHROW(project->GetFCOByID((wchar_t*)bId, &fiitem));
+ 			fiitem.QueryInterface(&iitem);
+ 			item[itemcount++] = Id;
+ 			do
+ 			{
+ 				COMTHROW(iitem->GetParent(&parent));
+ 				BSTR bstrid = NULL;
+ 				COMTHROW(parent->get_ID(&bstrid));
+ 				id = bstrid;
+ 				item[itemcount++] = id;
+ 				iitem = parent;
+ 				parent.Release();
+ 			} while (!m_TreeAggregate.m_MgaMap.SearchTreeItem((wchar_t*)((char*)id),hNewItem, pUnknown));
+ 			pMgaContext->CommitTransaction();
+ 			// open the parents in backward order
+ 			worked = true;
+ 			m_TreeAggregate.EnsureVisible(hNewItem);
+ 			m_TreeAggregate.ClearSelection(TRUE);
+ 			m_TreeAggregate.SelectItem(hNewItem);
+ 			m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)107, (LPARAM)0);
+ 			for (itemcount-=2; itemcount > 0; itemcount--)
+ 			{
+ 				if (m_TreeAggregate.m_MgaMap.SearchTreeItem((wchar_t*)((char*)item[itemcount]),hNewItem, pUnknown))
+ 				{
+ 					m_TreeAggregate.EnsureVisible(hNewItem);
+ 					m_TreeAggregate.ClearSelection(TRUE);
+ 					m_TreeAggregate.SelectItem(hNewItem);
+ 					m_TreeAggregate.SendMessage(WM_KEYDOWN, (WPARAM)107, (LPARAM)0);
+ 				}
+ 			}
+ 			if (m_TreeAggregate.m_MgaMap.SearchTreeItem(item[0],hNewItem, pUnknown))
+ 			{
+ 				m_TreeAggregate.EnsureVisible(hNewItem);
+ 				m_TreeAggregate.ClearSelection(TRUE);
+ 				m_TreeAggregate.SelectItem(hNewItem);
+ 			}
+ 		}
+ 		pMgaContext->CommitTransaction ();								
+ 	}MSGCATCH("Error completing the operation",pMgaContext->AbortTransaction();)	
+ 	if (worked)
+ 		pApp->GetCtrl()->FireClickMgaObject(pUnknown);
  
+ }
  
  
***************
*** 3067,3069 ****
  
  
! }
\ No newline at end of file
--- 3142,3153 ----
  
  
! }
! 
! void CAggregatePropertyPage::OnKillFocus(CWnd* pNewWnd) 
! {
! 	CPropertyPageEx::OnKillFocus(pNewWnd);
! 	HTREEITEM hItem=m_TreeAggregate.GetFirstSelectedItem();
! 	
! 	// TODO: Add your message handler code here
! 	
! }



More information about the GME-commit mailing list