[GME-commit] GMESRC/GME/Gme sizecbar.h,1.1,1.2 ScrollZoomView.cpp,1.16,1.17 PartBrowser.h,1.3,1.4 PanningWindow.h,1.4,1.5 GMEOLEPanel.h,1.2,1.3 GMEOLEPanel.cpp,1.3,1.4 GMEOLEModel.h,1.3,1.4 GMEOLEModel.cpp,1.6,1.7 GMEOLEApp.h,1.4,1.5 GMEOLEApp.cpp,1.8,1.9 GMEObjectInspector.h,1.6,1.7 GMEDoc.h,1.11,1.12 GMEDoc.cpp,1.25,1.26 GMEConsole.h,1.2,1.3 GMEBrowser.h,1.8,1.9 GMEBrowser.cpp,1.28,1.29 gmeactivebrowser.h,1.2,1.3 gmeactivebrowser.cpp,1.1,1.2

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


Update of /var/lib/gme/GMESRC/GME/Gme
In directory braindrain:/tmp/cvs-serv29407

Modified Files:
	sizecbar.h ScrollZoomView.cpp PartBrowser.h PanningWindow.h 
	GMEOLEPanel.h GMEOLEPanel.cpp GMEOLEModel.h GMEOLEModel.cpp 
	GMEOLEApp.h GMEOLEApp.cpp GMEObjectInspector.h GMEDoc.h 
	GMEDoc.cpp GMEConsole.h GMEBrowser.h GMEBrowser.cpp 
	gmeactivebrowser.h gmeactivebrowser.cpp 
Log Message:
Extended interface for scripting

CVS User: bogyom

Index: sizecbar.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/sizecbar.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sizecbar.h	6 Jul 2000 20:44:00 -0000	1.1
--- sizecbar.h	12 Jan 2005 17:53:15 -0000	1.2
***************
*** 119,122 ****
--- 119,123 ----
      const BOOL IsVertDocked() const;
      const BOOL IsSideTracking() const;
+ 	virtual IDispatch * GetInterface() = 0;
  
  // Operations

Index: ScrollZoomView.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/ScrollZoomView.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** ScrollZoomView.cpp	22 Jul 2004 14:05:36 -0000	1.16
--- ScrollZoomView.cpp	12 Jan 2005 17:53:16 -0000	1.17
***************
*** 888,892 ****
  
  	// ignore scroll bar msgs from other controls
! 	if (pScrollBar != GetScrollBarCtrl(SB_HORZ))
  		return;
  
--- 888,892 ----
  
  	// ignore scroll bar msgs from other controls
! 	if (pScrollBar != NULL  &&  pScrollBar != GetScrollBarCtrl(SB_HORZ))
  		return;
  
***************
*** 900,904 ****
  
  	// ignore scroll bar msgs from other controls
! 	if (pScrollBar != GetScrollBarCtrl(SB_VERT))
  		return;
  
--- 900,904 ----
  
  	// ignore scroll bar msgs from other controls
! 	if (pScrollBar != NULL  &&  pScrollBar != GetScrollBarCtrl(SB_VERT))
  		return;
  

Index: PartBrowser.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/PartBrowser.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PartBrowser.h	13 Aug 2001 17:19:00 -0000	1.3
--- PartBrowser.h	12 Jan 2005 17:53:16 -0000	1.4
***************
*** 19,22 ****
--- 19,23 ----
  public:
  	CPartBrowser();
+ 	IDispatch * GetInterface() {return NULL;};
  
  // Attributes

Index: PanningWindow.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/PanningWindow.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PanningWindow.h	24 Jul 2004 06:41:53 -0000	1.4
--- PanningWindow.h	12 Jan 2005 17:53:16 -0000	1.5
***************
*** 22,25 ****
--- 22,26 ----
  	void SetBitmapDC(CWnd *owner, CDC *bdc, CRect &ori, CRect &rect, COLORREF &bkgrnd);
  	void SetViewRect(CRect vrect);
+ 	IDispatch * GetInterface() {return NULL;};
  
  	// Generated message map functions

Index: GMEOLEPanel.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEPanel.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEOLEPanel.h	22 Jul 2004 14:05:36 -0000	1.2
--- GMEOLEPanel.h	12 Jan 2005 17:53:16 -0000	1.3
***************
*** 8,12 ****
  //
  
! 
  
  /////////////////////////////////////////////////////////////////////////////
--- 8,12 ----
  //
  
! #include "sizecbar.h"
  
  /////////////////////////////////////////////////////////////////////////////
***************
*** 24,28 ****
  // Operations
  public:
! 	void SetParams(CControlBar *control, CString name) { m_control = control; m_name = name;}
  
  // Overrides
--- 24,28 ----
  // Operations
  public:
! 	void SetParams(CSizingControlBar *control, CString name) { m_control = control; m_name = name;}
  
  // Overrides
***************
*** 32,36 ****
  // Implementation
  protected:
! 	CControlBar	*m_control;
  	CString	m_name;
  
--- 32,37 ----
  // Implementation
  protected:
! //	CControlBar	*m_control;
! 	CSizingControlBar *m_control;
  	CString	m_name;
  
***************
*** 48,51 ****
--- 49,54 ----
  	afx_msg BOOL GetVisible();
  	afx_msg void SetVisible(BOOL bNewValue);
+ 	afx_msg IDispatch* GetInterface();
+ 	afx_msg void SetInterface(IDispatch* intf);
  	
  	DECLARE_DISPATCH_MAP()
***************
*** 56,59 ****
--- 59,63 ----
  		STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL isVisible);
  		STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL* isVisible);
+ 		STDMETHOD(get_Interface)(THIS_ IDispatch** isVisible);
  	END_DUAL_INTERFACE_PART(Dual)
  

Index: GMEOLEPanel.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEPanel.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** GMEOLEPanel.cpp	22 Jul 2004 14:05:36 -0000	1.3
--- GMEOLEPanel.cpp	12 Jan 2005 17:53:16 -0000	1.4
***************
*** 53,56 ****
--- 53,57 ----
  	DISP_PROPERTY_EX(CGMEOLEPanel, "Name", GetName, SetName, VT_BSTR)
  	DISP_PROPERTY_EX(CGMEOLEPanel, "Visible", GetVisible, SetVisible, VT_BOOL)
+ 	DISP_PROPERTY_EX(CGMEOLEPanel, "Interface", GetInterface, SetInterface, VT_DISPATCH)
  	//}}AFX_DISPATCH_MAP
  END_DISPATCH_MAP()
***************
*** 105,111 ****
--- 106,130 ----
  
  	CMainFrame::theInstance->ShowControlBar(m_control, bNewValue, FALSE);
+ }
  
+ IDispatch* CGMEOLEPanel::GetInterface()
+ {
+ 	CGMEEventLogger::LogGMEEvent("CGMEOLEPanel::GetInterface()\r\n");
+ 	
+ 	PRECONDITION_VALID_PANEL
+ 
+ 	IDispatch* interf = NULL;
+ 	interf = m_control->GetInterface();
+ 	return interf;
  }
  
+ void CGMEOLEPanel::SetInterface(IDispatch* intf)
+ {
+ 	CGMEEventLogger::LogGMEEvent("CGMEOLEPanel::SetInterface()\r\n");
+ 	
+ 	SetNotSupported();
+ }
+ 
+ 
  DELEGATE_DUAL_INTERFACE(CGMEOLEPanel, Dual)
  
***************
*** 150,153 ****
--- 169,186 ----
  #pragma warning(disable: 4310) // cast truncates constant value
  		*isVisible = (pThis->GetVisible() == FALSE) ? VARIANT_FALSE : VARIANT_TRUE;
+ #pragma warning(default: 4310) // cast truncates constant value
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ STDMETHODIMP CGMEOLEPanel::XDual::get_Interface(IDispatch** interf)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEPanel, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEPanel)
+ 	{
+ #pragma warning(disable: 4310) // cast truncates constant value
+ 		*interf = pThis->GetInterface();
  #pragma warning(default: 4310) // cast truncates constant value
  		return NOERROR;

Index: GMEOLEModel.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEModel.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** GMEOLEModel.h	22 Jul 2004 14:05:36 -0000	1.3
--- GMEOLEModel.h	12 Jan 2005 17:53:16 -0000	1.4
***************
*** 63,68 ****
  	afx_msg void RunComponentDialog();
  	afx_msg void Close();
! 	afx_msg void GrayOutFCO(BOOL bGray, BOOL bNeighbours, LPDISPATCH mgaFCO);
! 	afx_msg void GrayOutAll(BOOL bGray);
  
  	DECLARE_DISPATCH_MAP()
--- 63,73 ----
  	afx_msg void RunComponentDialog();
  	afx_msg void Close();
! 	afx_msg void GrayOutFCO(BOOL bGray, BOOL bNeighbours, LPDISPATCH mgaFCOs);
! 	afx_msg void GrayOutHide();
! 	afx_msg void ShowSetMembers(LPDISPATCH mgaFCO);
! 	afx_msg void HideSetMembers();
! 	afx_msg void Zoom(long percent);
! 	afx_msg void ZoomTo(LPDISPATCH mgaFCOs);
! 	afx_msg void Scroll(long bar, long scroll);
  
  	DECLARE_DISPATCH_MAP()
***************
*** 84,88 ****
  		STDMETHOD(Close)(THIS);
  		STDMETHOD(GrayOutFCO)(THIS_ VARIANT_BOOL bGray, VARIANT_BOOL bNeighbours, IMgaFCOs* mgaFCO);
! 		STDMETHOD(GrayOutAll)(THIS_ VARIANT_BOOL bGray);
  	END_DUAL_INTERFACE_PART(Dual)
  
--- 89,98 ----
  		STDMETHOD(Close)(THIS);
  		STDMETHOD(GrayOutFCO)(THIS_ VARIANT_BOOL bGray, VARIANT_BOOL bNeighbours, IMgaFCOs* mgaFCO);
! 		STDMETHOD(GrayOutHide)(THIS);
! 		STDMETHOD(ShowSetMembers)(THIS_ IMgaFCO* mgaFCO);
! 		STDMETHOD(HideSetMembers)(THIS);
! 		STDMETHOD(Zoom)(THIS_ DWORD percent);
! 		STDMETHOD(ZoomTo)(THIS_ IMgaFCOs* mgaFCOs);
! 		STDMETHOD(Scroll)(THIS_ bar_enum bar, scroll_enum scroll);
  	END_DUAL_INTERFACE_PART(Dual)
  

Index: GMEOLEModel.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEModel.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** GMEOLEModel.cpp	22 Jul 2004 14:05:36 -0000	1.6
--- GMEOLEModel.cpp	12 Jan 2005 17:53:16 -0000	1.7
***************
*** 81,85 ****
  	DISP_FUNCTION(CGMEOLEModel, "Close", Close, VT_EMPTY, VTS_NONE)
  	DISP_FUNCTION(CGMEOLEModel, "GrayOutFCO", GrayOutFCO, VT_EMPTY, VTS_BOOL VTS_BOOL VTS_DISPATCH)
! 	DISP_FUNCTION(CGMEOLEModel, "GrayOutAll", GrayOutAll, VT_EMPTY, VTS_BOOL)
  	//}}AFX_DISPATCH_MAP
  END_DISPATCH_MAP()
--- 81,90 ----
  	DISP_FUNCTION(CGMEOLEModel, "Close", Close, VT_EMPTY, VTS_NONE)
  	DISP_FUNCTION(CGMEOLEModel, "GrayOutFCO", GrayOutFCO, VT_EMPTY, VTS_BOOL VTS_BOOL VTS_DISPATCH)
! 	DISP_FUNCTION(CGMEOLEModel, "GrayOutHide", GrayOutHide, VT_EMPTY, VTS_NONE)
! 	DISP_FUNCTION(CGMEOLEModel, "ShowSetMembers", ShowSetMembers, VT_EMPTY, VTS_DISPATCH)
! 	DISP_FUNCTION(CGMEOLEModel, "HideSetMembers", HideSetMembers, VT_EMPTY, VTS_NONE)
! 	DISP_FUNCTION(CGMEOLEModel, "Zoom", Zoom, VT_EMPTY, VTS_I4)
! 	DISP_FUNCTION(CGMEOLEModel, "ZoomTo", ZoomTo, VT_EMPTY, VTS_DISPATCH)
! 	DISP_FUNCTION(CGMEOLEModel, "Scroll", Scroll, VT_EMPTY, VTS_I2 VTS_I2)
  	//}}AFX_DISPATCH_MAP
  END_DISPATCH_MAP()
***************
*** 268,271 ****
--- 273,279 ----
  	PRECONDITION_VALID_MODEL;
  
+ 	if (CGMEDoc::theInstance) 
+ 		CGMEDoc::theInstance->SetMode(5);
+ 
  	CComPtr<IDispatch> alienFCO(mgaFCO);
  	CComPtr<IMgaFCO> mFCO;
***************
*** 296,307 ****
  }
  
! void CGMEOLEModel::GrayOutAll(BOOL bGray) 
  {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::GrayOutAll()\r\n");
  
  	PRECONDITION_VALID_MODEL;
  
! 	CGuiFco::GrayOutFcos(m_view->children, (bGray == TRUE));
! 	CGuiFco::GrayOutFcos(m_view->connections, (bGray == TRUE));
  	m_view->Invalidate();
  }
--- 304,477 ----
  }
  
! void CGMEOLEModel::GrayOutHide() 
  {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::GrayOutHide()\r\n");
  
  	PRECONDITION_VALID_MODEL;
  
! 	if (CGMEDoc::theInstance) 
! 		CGMEDoc::theInstance->SetMode(5);
! 
! 	CGuiFco::GrayOutFcos(m_view->children, TRUE);
! 	CGuiFco::GrayOutFcos(m_view->connections, TRUE);
! 	m_view->Invalidate();
! }
! 
! void CGMEOLEModel::ShowSetMembers(LPDISPATCH mgaFCO) 
! {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::ShowSetMembers()\r\n");
! 
! 	PRECONDITION_VALID_MODEL;
!   
! 	if (CGMEDoc::theInstance) 
! 		CGMEDoc::theInstance->SetMode(3);
! 
! 	CGuiFco::GrayOutFcos(m_view->children, TRUE);
! 
! 	CComPtr<IDispatch> alienFCO(mgaFCO);
! 	CComPtr<IMgaFCO> mFCO;
! 	if (!SUCCEEDED(alienFCO.QueryInterface(&mFCO))) 
! 		return;
! 
! 	// mgaFCO is comming from an unknown territory, do not use it as-is. (except for this search)
! 	CGuiObject *gObj = CGuiObject::FindObject(mFCO, m_view->children);
! 	if (gObj) 
! 	{
! 		gObj->GrayOut(false);
! 
! 		// members of the set too 
! 		CComPtr<IMgaSet> mSet;
! 		if (!SUCCEEDED(mFCO.QueryInterface(&mSet))) 
! 			return;
! 		m_view->BeginTransaction();
! 
! 		try
! 		{
! 			CComPtr<IMgaFCOs> mSetMembers = NULL;
! 			COMTHROW(mSet->get_Members(&mSetMembers));
! 
! 			long num = 0;
! 			COMTHROW(mSetMembers->get_Count(&num));
! 			for (int i=1; i<=num; i++)
! 			{
! 				CComPtr<IMgaFCO> memb = NULL;
! 				COMTHROW(mSetMembers->get_Item(i, &memb));
! 				CGuiObject *gObj = CGuiObject::FindObject(memb, m_view->children);
! 				if (gObj) 
! 					gObj->GrayOut(false);
! 			}
! 			m_view->CommitTransaction();
! 		}
! 		catch(hresult_exception &e) 
! 		{
! 			m_view->AbortTransaction(e.hr);
! 		}
! 	}
! 
! 	m_view->Invalidate();
! }
! 
! void CGMEOLEModel::HideSetMembers() 
! {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::HideSetMembers()\r\n");
! 
! 	PRECONDITION_VALID_MODEL;
! 	 
! 	if (CGMEDoc::theInstance) 
! 		CGMEDoc::theInstance->SetMode(3);
! 
! 	CGuiFco::GrayOutFcos(m_view->children, TRUE);
! 	m_view->Invalidate();
! }
! 
! void CGMEOLEModel::Zoom(long percent) 
! {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::Zoom()\r\n");
! 
! 	PRECONDITION_VALID_MODEL;
! 
! 	m_view->ZoomPercent(percent);
! 	m_view->Invalidate();
! }
! 
! void CGMEOLEModel::ZoomTo(LPDISPATCH mgaFCOs) 
! {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::ZoomTo()\r\n");
! 
! 	PRECONDITION_VALID_MODEL;
!  
! 	if (CGMEDoc::theInstance) 
! 		CGMEDoc::theInstance->SetMode(4);
! 
! 	CComPtr<IDispatch> disp(mgaFCOs);
! 	CComPtr<IMgaFCOs> fcos;
! 	if (!SUCCEEDED(disp.QueryInterface(&fcos))) 
! 		return;
! 
! 	// calculate the total size of them
! 	CRect totalr(0,0,0,0);
! 	m_view->BeginTransaction();
! 	try
! 	{
! 		long num = 0;
! 		COMTHROW(fcos->get_Count(&num));
! 		for (int i=1; i<=num; i++)
! 		{
! 			CComPtr<IMgaFCO> memb = NULL;
! 			COMTHROW(fcos->get_Item(i, &memb));
! 			// size ??
! 			CGuiObject *gObj = CGuiObject::FindObject(memb, m_view->children);
! 			if (gObj) 
! 			{
! 				CRect rec = gObj->GetLocation();
! 				totalr.UnionRect(totalr, rec);
! 			}
! 		}
! 		m_view->CommitTransaction();
! 	}
! 	catch(hresult_exception &e) 
! 	{
! 		m_view->AbortTransaction(e.hr);
! 	}
! 
! 	m_view->ZoomToFCOs(totalr);
! 	m_view->Invalidate();
! 
! }
! 
! void CGMEOLEModel::Scroll(long bar, long scroll) 
! {
! 	CGMEEventLogger::LogGMEEvent("CGMEOLEModel::Scroll()\r\n");
! 
! 	PRECONDITION_VALID_MODEL;
! 
! 	UINT code = SB_LINEDOWN;
! 	switch (scroll)
! 	{
! 	case 0:
! 		code = SB_LINEUP;
! 		break;
! 	case 1: 
! 		code = SB_LINEDOWN;
! 		break;
! 	case 2:
! 		code = SB_PAGEUP;
! 		break;
! 	case 3: 
! 		code = SB_PAGEDOWN;
! 		break;
! 	case 4:
! 		code = SB_TOP;
! 		break;
! 	case 5:
! 		code = SB_BOTTOM;
! 		break;
! 	}
! 
! 	if (bar == 0)
! 		m_view->OnHScroll(code, 1, NULL);
! 	else
! 		m_view->OnVScroll(code, 1, NULL);
! 
  	m_view->Invalidate();
  }
***************
*** 486,490 ****
  
  
! STDMETHODIMP CGMEOLEModel::XDual::GrayOutAll(VARIANT_BOOL bGray)
  {
  	METHOD_PROLOGUE(CGMEOLEModel, Dual)
--- 656,660 ----
  
  
! STDMETHODIMP CGMEOLEModel::XDual::GrayOutHide()
  {
  	METHOD_PROLOGUE(CGMEOLEModel, Dual)
***************
*** 492,496 ****
  	TRY_DUAL(IID_IGMEOLEModel)
  	{
! 		pThis->GrayOutAll(bGray);
  		return NOERROR;
  	}
--- 662,666 ----
  	TRY_DUAL(IID_IGMEOLEModel)
  	{
! 		pThis->GrayOutHide();
  		return NOERROR;
  	}
***************
*** 498,500 ****
--- 668,733 ----
  }
  
+ STDMETHODIMP CGMEOLEModel::XDual::ShowSetMembers(IMgaFCO* mgaFCO)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEModel, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEModel)
+ 	{
+ 		LPDISPATCH lpDisp = NULL;
+ 		mgaFCO->QueryInterface(IID_IDispatch, (LPVOID*)&lpDisp);
+ 		pThis->ShowSetMembers(lpDisp);
+ 		lpDisp->Release();
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ 
+ STDMETHODIMP CGMEOLEModel::XDual::HideSetMembers()
+ {
+ 	METHOD_PROLOGUE(CGMEOLEModel, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEModel)
+ 	{
+ 		pThis->HideSetMembers();
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ STDMETHODIMP CGMEOLEModel::XDual::Zoom(DWORD percent)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEModel, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEModel)
+ 	{
+ 		pThis->Zoom(percent);
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ STDMETHODIMP CGMEOLEModel::XDual::ZoomTo(IMgaFCOs* mgaFCOs)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEModel, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEModel)
+ 	{
+ 		pThis->ZoomTo(mgaFCOs);
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ STDMETHODIMP CGMEOLEModel::XDual::Scroll(bar_enum bar, scroll_enum scroll)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEModel, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEModel)
+ 	{
+ 		pThis->Scroll(bar, scroll);
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
  

Index: GMEOLEApp.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEApp.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** GMEOLEApp.h	24 Jul 2004 06:41:53 -0000	1.4
--- GMEOLEApp.h	12 Jan 2005 17:53:16 -0000	1.5
***************
*** 83,90 ****
  	afx_msg void ShowHelpContents();
  	afx_msg void ShowAbout();
! 	afx_msg void ShowFCO(LPDISPATCH mgaFCO);
  	afx_msg void ConsoleMessage(LPCTSTR msg, long type);
  	afx_msg void ConsoleClear();
  
  	DECLARE_DISPATCH_MAP()
  	DECLARE_INTERFACE_MAP()
--- 83,94 ----
  	afx_msg void ShowHelpContents();
  	afx_msg void ShowAbout();
! 	afx_msg void ShowFCO(LPDISPATCH mgaFCO, BOOL inParent);
  	afx_msg void ConsoleMessage(LPCTSTR msg, long type);
  	afx_msg void ConsoleClear();
  
+ 	afx_msg void ChangeEditmode(long mode);
+ 	afx_msg void GridShow(BOOL show);
+ 	afx_msg void AttributepanelPage(long page);
+ 
  	DECLARE_DISPATCH_MAP()
  	DECLARE_INTERFACE_MAP()
***************
*** 126,132 ****
  		STDMETHOD(ShowHelpContents)(THIS);
  		STDMETHOD(ShowAbout)(THIS);
! 		STDMETHOD(ShowFCO)(THIS_ IMgaFCO* mgaFCO);
  		STDMETHOD(ConsoleMessage)(THIS_ BSTR msg, msgtype_enum type);
  		STDMETHOD(ConsoleClear)(THIS);
  	END_DUAL_INTERFACE_PART(Dual)
  
--- 130,141 ----
  		STDMETHOD(ShowHelpContents)(THIS);
  		STDMETHOD(ShowAbout)(THIS);
! 		STDMETHOD(ShowFCO)(THIS_ IMgaFCO* mgaFCO, VARIANT_BOOL inParent = FALSE);
  		STDMETHOD(ConsoleMessage)(THIS_ BSTR msg, msgtype_enum type);
  		STDMETHOD(ConsoleClear)(THIS);
+ 
+ 		STDMETHOD(ChangeEditmode)(THIS_ editmode_enum mode);
+ 		STDMETHOD(GridShow)(THIS_ VARIANT_BOOL show);
+ 		STDMETHOD(AttributepanelPage)(THIS_ attribpanel_page page);
+ 
  	END_DUAL_INTERFACE_PART(Dual)
  

Index: GMEOLEApp.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEOLEApp.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** GMEOLEApp.cpp	24 Aug 2004 21:27:31 -0000	1.8
--- GMEOLEApp.cpp	12 Jan 2005 17:53:16 -0000	1.9
***************
*** 98,104 ****
  	DISP_FUNCTION(CGMEOLEApp, "ShowHelpContents", ShowHelpContents, VT_EMPTY, VTS_NONE)
  	DISP_FUNCTION(CGMEOLEApp, "ShowAbout", ShowAbout, VT_EMPTY, VTS_NONE)
! 	DISP_FUNCTION(CGMEOLEApp, "ShowFCO", ShowFCO, VT_EMPTY, VTS_DISPATCH)
  	DISP_FUNCTION(CGMEOLEApp, "ConsoleMessage", ConsoleMessage, VT_EMPTY, VTS_BSTR VTS_I4)
  	DISP_FUNCTION(CGMEOLEApp, "ConsoleClear", ConsoleClear, VT_EMPTY, VTS_NONE)
  	//}}AFX_DISPATCH_MAP
  END_DISPATCH_MAP()
--- 98,109 ----
  	DISP_FUNCTION(CGMEOLEApp, "ShowHelpContents", ShowHelpContents, VT_EMPTY, VTS_NONE)
  	DISP_FUNCTION(CGMEOLEApp, "ShowAbout", ShowAbout, VT_EMPTY, VTS_NONE)
! 	DISP_FUNCTION(CGMEOLEApp, "ShowFCO", ShowFCO, VT_EMPTY, VTS_DISPATCH VTS_BOOL)
  	DISP_FUNCTION(CGMEOLEApp, "ConsoleMessage", ConsoleMessage, VT_EMPTY, VTS_BSTR VTS_I4)
  	DISP_FUNCTION(CGMEOLEApp, "ConsoleClear", ConsoleClear, VT_EMPTY, VTS_NONE)
+ 
+ 	DISP_FUNCTION(CGMEOLEApp, "ChangeEditmode", ChangeEditmode, VT_EMPTY, VTS_I4)
+ 	DISP_FUNCTION(CGMEOLEApp, "GridShow", GridShow, VT_EMPTY, VTS_BOOL)
+ 	DISP_FUNCTION(CGMEOLEApp, "AttributepanelPage", AttributepanelPage, VT_EMPTY, VTS_I4)
+ 
  	//}}AFX_DISPATCH_MAP
  END_DISPATCH_MAP()
***************
*** 456,460 ****
  
  
! void CGMEOLEApp::ShowFCO(LPDISPATCH mgaFCO) 
  {
  	CGMEEventLogger::LogGMEEvent("CGMEOLEApp::ShowFCO()\r\n");
--- 461,465 ----
  
  
! void CGMEOLEApp::ShowFCO(LPDISPATCH mgaFCO, BOOL inParent) 
  {
  	CGMEEventLogger::LogGMEEvent("CGMEOLEApp::ShowFCO()\r\n");
***************
*** 463,467 ****
  
  	if (CGMEDoc::theInstance) {
! 		CGMEDoc::theInstance->ShowObject(mgaFCO);
  	}
  }
--- 468,472 ----
  
  	if (CGMEDoc::theInstance) {
! 		CGMEDoc::theInstance->ShowObject(mgaFCO, inParent);
  	}
  }
***************
*** 497,500 ****
--- 502,531 ----
  }
  
+ void CGMEOLEApp::ChangeEditmode(long mode)
+ {
+ 	CGMEEventLogger::LogGMEEvent("CGMEOLEApp::ChangeEditmode()\r\n");
+ 	if (CGMEDoc::theInstance) 
+ 		CGMEDoc::theInstance->SetMode(mode);
+ }
+ 
+ void CGMEOLEApp::GridShow(BOOL show)
+ {
+ 	CGMEEventLogger::LogGMEEvent("CGMEOLEApp::GridShow()\r\n");
+ 	CMDIChildWnd *pChild  = CMainFrame::theInstance->MDIGetActive();
+ 	if (pChild) 
+ 	{
+ 		CGMEView *view = (CGMEView*)pChild->GetActiveView();
+ 		if (view) 
+ 			view->ShowGrid(show==TRUE);
+ 	}
+ }
+ 
+ void CGMEOLEApp::AttributepanelPage(long page)
+ {
+ 	CGMEEventLogger::LogGMEEvent("CGMEOLEApp::AttributepanelPage()\r\n");
+ 	CGMEObjectInspector::theInstance->ShowPanel(page);
+ }
+ 
+ 
  LPDISPATCH CGMEOLEApp::GetMgaProject() 
  {
***************
*** 522,541 ****
  
  	CGMEOLEPanel* panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_browser), _T("Browser"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_objectInspector), _T("Attribute Panel"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_console), _T("Console"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_partBrowser), _T("Part Browser"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
--- 553,572 ----
  
  	CGMEOLEPanel* panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_browser), _T("Browser"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_objectInspector), _T("Attribute Panel"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_console), _T("Console"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_partBrowser), _T("Part Browser"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
***************
*** 543,557 ****
  	// terge 
  	panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_pannWin), _T("Panning Window"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_wndStatusBar), _T("Status Bar"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams(&(CMainFrame::theInstance->m_wndReBar), _T("Toolbar"));
  	coll->Add(panel->GetIDispatch(FALSE));	
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
--- 574,588 ----
  	// terge 
  	panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_pannWin), _T("Panning Window"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_wndStatusBar), _T("Status Bar"));
  	coll->Add(panel->GetIDispatch(FALSE));
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
  
  	panel = new CGMEOLEPanel();
! 	panel->SetParams((CSizingControlBar*)&(CMainFrame::theInstance->m_wndReBar), _T("Toolbar"));
  	coll->Add(panel->GetIDispatch(FALSE));	
  	panel->GetIDispatch(FALSE)->Release();	// We do not hold reference, hopefully the collection will hold one
***************
*** 1043,1047 ****
  
  
! STDMETHODIMP CGMEOLEApp::XDual::ShowFCO( IMgaFCO* mgaFCO)
  {
  	METHOD_PROLOGUE(CGMEOLEApp, Dual)
--- 1074,1078 ----
  
  
! STDMETHODIMP CGMEOLEApp::XDual::ShowFCO( IMgaFCO* mgaFCO, VARIANT_BOOL inParent)
  {
  	METHOD_PROLOGUE(CGMEOLEApp, Dual)
***************
*** 1051,1055 ****
  		LPDISPATCH lpDisp = NULL;
  		mgaFCO->QueryInterface(IID_IDispatch, (LPVOID*)&lpDisp);
! 		pThis->ShowFCO(lpDisp);
  		lpDisp->Release();
  		return NOERROR;
--- 1082,1086 ----
  		LPDISPATCH lpDisp = NULL;
  		mgaFCO->QueryInterface(IID_IDispatch, (LPVOID*)&lpDisp);
! 		pThis->ShowFCO(lpDisp, inParent);
  		lpDisp->Release();
  		return NOERROR;
***************
*** 1077,1080 ****
--- 1108,1148 ----
  	{
  		pThis->ConsoleClear();
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ 
+ STDMETHODIMP CGMEOLEApp::XDual::ChangeEditmode(editmode_enum mode)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEApp, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEApp)
+ 	{
+ 		pThis->ChangeEditmode((long)mode);
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ STDMETHODIMP CGMEOLEApp::XDual::GridShow(VARIANT_BOOL show)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEApp, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEApp)
+ 	{
+ 		pThis->GridShow(show);
+ 		return NOERROR;
+ 	}
+ 	CATCH_ALL_DUAL
+ }
+ 
+ STDMETHODIMP CGMEOLEApp::XDual::AttributepanelPage(attribpanel_page page)
+ {
+ 	METHOD_PROLOGUE(CGMEOLEApp, Dual)
+ 
+ 	TRY_DUAL(IID_IGMEOLEApp)
+ 	{
+ 		pThis->AttributepanelPage((long)page);
  		return NOERROR;
  	}

Index: GMEObjectInspector.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEObjectInspector.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** GMEObjectInspector.h	29 May 2002 18:41:00 -0000	1.6
--- GMEObjectInspector.h	12 Jan 2005 17:53:16 -0000	1.7
***************
*** 20,23 ****
--- 20,24 ----
  	virtual ~CGMEObjectInspector(){theInstance = 0;};
  
+ 	IDispatch * GetInterface() {return NULL;};
  
  	// Dialog Data

Index: GMEDoc.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEDoc.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** GMEDoc.h	13 Oct 2004 15:17:55 -0000	1.11
--- GMEDoc.h	12 Jan 2005 17:53:16 -0000	1.12
***************
*** 40,44 ****
  	CGMEView *FindView(CComPtr<IMgaModel> model);
  	void SetNextToView(CComPtr<IMgaModel> &model,CString aspName, CComPtr<IMgaFCO> &centerObj)			{ nextToView = model; nextAspect = aspName; initialCenterObj = centerObj;}
! 	void ShowObject(CComPtr<IUnknown> alienObject);
  	void ShowObject(LPCTSTR objectID);
  	void ResetNextToView()													{ nextToView = 0; }
--- 40,44 ----
  	CGMEView *FindView(CComPtr<IMgaModel> model);
  	void SetNextToView(CComPtr<IMgaModel> &model,CString aspName, CComPtr<IMgaFCO> &centerObj)			{ nextToView = model; nextAspect = aspName; initialCenterObj = centerObj;}
! 	void ShowObject(CComPtr<IUnknown> alienObject, BOOL inParent = FALSE);
  	void ShowObject(LPCTSTR objectID);
  	void ResetNextToView()													{ nextToView = 0; }
***************
*** 73,77 ****
  #endif
  
! protected:
  
  // Generated message map functions
--- 73,78 ----
  #endif
  
! public:
! void SetMode(long mode);
  
  // Generated message map functions

Index: GMEDoc.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEDoc.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** GMEDoc.cpp	13 Oct 2004 15:17:55 -0000	1.25
--- GMEDoc.cpp	12 Jan 2005 17:53:16 -0000	1.26
***************
*** 396,404 ****
  }
  
! void CGMEDoc::ShowObject(CComPtr<IUnknown> alienObject)
  {
  	// Be prepared for in-transaction and out-transaction scenarios
  	// mgaFCO must be transfered to current territory
  		
  	if(alienObject == NULL) {
  		return;
--- 396,405 ----
  }
  
! void CGMEDoc::ShowObject(CComPtr<IUnknown> alienObject, BOOL inParent)
  {
  	// Be prepared for in-transaction and out-transaction scenarios
  	// mgaFCO must be transfered to current territory
  		
+ 	bool isModel = true;
  	if(alienObject == NULL) {
  		return;
***************
*** 413,425 ****
  	
  	
  	if (!SUCCEEDED(alienObject.QueryInterface(&model))) {  // Alien object is not a modell
  		if (SUCCEEDED(alienObject.QueryInterface(&fco))) {
  			
- 			long status;
- 			COMTHROW(theApp.mgaProject->get_ProjectStatus(&status));
- 			bool inTrans = (status & 0x08L) != 0;
- 
- 			CComPtr<IMgaTerritory> terr;
- 			
  			try {
  				if (!inTrans) {
--- 414,426 ----
  	
  	
+ 	long status;
+ 	COMTHROW(theApp.mgaProject->get_ProjectStatus(&status));
+ 	bool inTrans = (status & 0x08L) != 0;
+ 	CComPtr<IMgaTerritory> terr;
+ 
  	if (!SUCCEEDED(alienObject.QueryInterface(&model))) {  // Alien object is not a modell
+ 		isModel = false;
  		if (SUCCEEDED(alienObject.QueryInterface(&fco))) {
  			
  			try {
  				if (!inTrans) {
***************
*** 455,459 ****
  		}
  	}
! 	
  	if (model) {
  		CGMEView *view  = NULL;
--- 456,485 ----
  		}
  	}
! 
! 	if (model  &&  isModel  &&  inParent)
! 	{
! 
! 		try 
! 		{
! 			if (!inTrans) {
! 				COMTHROW(theApp.mgaProject->CreateTerritory(NULL, &terr));
! 				COMTHROW(theApp.mgaProject->BeginTransaction(terr));
! 			}
! 			CComPtr<IMgaObject> parent;
! 			COMTHROW(model->GetParent(&parent));
! 			COMTHROW(model.QueryInterface(&fco));
! 			model = NULL;
! 			COMTHROW(parent.QueryInterface(&model));
! 
! 			if (!inTrans) 
! 				theApp.mgaProject->CommitTransaction();
! 		}
! 		catch (hresult_exception e) 
! 		{
! 			model = NULL;
! 			if (!inTrans) 
! 				theApp.mgaProject->AbortTransaction();
! 		}
! 	}
  	if (model) {
  		CGMEView *view  = NULL;
***************
*** 568,571 ****
--- 594,622 ----
  /////////////////////////////////////////////////////////////////////////////
  // CGMEDoc commands
+ 
+ void CGMEDoc::SetMode(long mode)
+ {
+ 	switch (mode)
+ 	{
+ 	case 0: // edit
+ 		OnModeEdit();
+ 		break;
+ 	case 1: // connect
+ 		OnModeAutoconnect();
+ 		break;
+ 	case 2: // disconnect
+ 		OnModeDisconnect();
+ 		break;
+ 	case 3: // set
+ 		OnModeSet();
+ 		break;
+ 	case 4: // zoom
+ 		OnModeZoom();
+ 		break;
+ 	case 5: // visualize
+ 		OnModeVisualize();
+ 		break;
+ 	}
+ }
  
  void CGMEDoc::OnModeAutoconnect() 

Index: GMEConsole.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEConsole.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** GMEConsole.h	2 Dec 2004 22:32:22 -0000	1.2
--- GMEConsole.h	12 Jan 2005 17:53:16 -0000	1.3
***************
*** 26,29 ****
--- 26,30 ----
  	void SetContents(const CString& contents);
  	void SetGMEApp(IDispatch *idp);
+ 	IDispatch * GetInterface() {return NULL;};
  
  // Dialog Data

Index: GMEBrowser.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEBrowser.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** GMEBrowser.h	7 Feb 2003 15:11:23 -0000	1.8
--- GMEBrowser.h	12 Jan 2005 17:53:16 -0000	1.9
***************
*** 26,31 ****
--- 26,40 ----
  	void RefreshAll();
  	void ShowObject(LPUNKNOWN selected);
+ 	void FocusItem(BSTR Id);
  	void ShowAttrPref(bool isAttr, LPUNKNOWN selected);
  	void SetCurrObject(LPUNKNOWN pMgaObject);
+ 	IDispatch * GetInterface() 
+ 	{
+ 		CComPtr<IUnknown> punk;
+ 		punk.Attach(m_GMEActiveBrowser.GetControlUnknown());
+ 		IDispatch* disp = NULL;
+ 		punk.QueryInterface(&disp);
+ 		return disp;
+ 	};
  
  // Dialog Data

Index: GMEBrowser.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/GMEBrowser.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** GMEBrowser.cpp	12 May 2004 19:38:41 -0000	1.28
--- GMEBrowser.cpp	12 Jan 2005 17:53:16 -0000	1.29
***************
*** 75,78 ****
--- 75,83 ----
  }
  
+ void CGMEBrowser::FocusItem(BSTR Id)
+ {
+ 	m_GMEActiveBrowser.FocusItem(Id);
+ }
+ 
  BEGIN_MESSAGE_MAP(CGMEBrowser, CSizingControlBar)
  	//{{AFX_MSG_MAP(CGMEBrowser)
***************
*** 236,239 ****
--- 241,245 ----
  	pUnknown->Release();
  	ASSERT(ccpSelectedObjects!=NULL);
+ //	CComQIPtr<IMgaObjects> ccpSelectedObjects(pMgaObject);
  	CGMEObjectInspector::theInstance->SetObjects(ccpSelectedObjects);
  }

Index: gmeactivebrowser.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/gmeactivebrowser.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** gmeactivebrowser.h	13 May 2002 17:28:00 -0000	1.2
--- gmeactivebrowser.h	12 Jan 2005 17:53:16 -0000	1.3
***************
*** 50,53 ****
--- 50,54 ----
  	void RefreshAll();
  	LPUNKNOWN GetSelectedMgaObjects();
+ 	void FocusItem(BSTR Id);
  };
  

Index: gmeactivebrowser.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Gme/gmeactivebrowser.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** gmeactivebrowser.cpp	2 Mar 2002 00:10:00 -0000	1.1
--- gmeactivebrowser.cpp	12 Jan 2005 17:53:16 -0000	1.2
***************
*** 7,11 ****
  #include "stdafx.h"
  #include "gmeactivebrowser.h"
! 
  /////////////////////////////////////////////////////////////////////////////
  // CGMEActiveBrowser
--- 7,11 ----
  #include "stdafx.h"
  #include "gmeactivebrowser.h"
! #include <comdef.h>
  /////////////////////////////////////////////////////////////////////////////
  // CGMEActiveBrowser
***************
*** 46,48 ****
--- 46,56 ----
  	InvokeHelper(0x4, DISPATCH_METHOD, VT_UNKNOWN, (void*)&result, NULL);
  	return result;
+ }
+ 
+ void CGMEActiveBrowser::FocusItem(BSTR Id)
+ {
+ 	static BYTE parms[] =
+ 		VTS_BSTR;
+ 	_bstr_t bid(Id);
+ 	InvokeHelper(0x6, DISPATCH_METHOD, VT_EMPTY, NULL, parms, (char*)bid);
  }



More information about the GME-commit mailing list