[commit] r2399 - trunk/Tools/TableEditor

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Thu Nov 14 13:33:24 CST 2013


Author: ksmyth
Date: Thu Nov 14 13:33:24 2013
New Revision: 2399

Log:
TableEditor: allow filtering when invoked on a model

Modified:
   trunk/Tools/TableEditor/GridDlg.cpp
   trunk/Tools/TableEditor/GridDlg.h
   trunk/Tools/TableEditor/RawComponent.cpp
   trunk/Tools/TableEditor/SelectDlg.cpp

Modified: trunk/Tools/TableEditor/GridDlg.cpp
==============================================================================
--- trunk/Tools/TableEditor/GridDlg.cpp	Thu Nov 14 13:33:11 2013	(r2398)
+++ trunk/Tools/TableEditor/GridDlg.cpp	Thu Nov 14 13:33:24 2013	(r2399)
@@ -51,7 +51,7 @@
 	m_OldSize = CSize(-1,-1);
 }
 
-CGridDlg::CGridDlg(IMgaFCOs* selectedObjs, CWnd* pParent /*=NULL*/)
+CGridDlg::CGridDlg(IMgaProject* project, IMgaFCO *currentobj, IMgaFCOs *selectedobjs, CWnd* pParent /*=NULL*/)
 	: CDialog(CGridDlg::IDD, pParent), m_bInited(false)
 {
 	//{{AFX_DATA_INIT(CGridDlg)
@@ -66,10 +66,33 @@
 
 	m_OldSize = CSize(-1,-1);
 
-	m_FCOs = selectedObjs;
-
-	
+	m_Project = project;
+	m_currentobj = currentobj;
+	m_selectedobjs = selectedobjs;
+
+	long count = 0;
+	if (selectedobjs)
+		COMTHROW(selectedobjs->get_Count(&count));
+
+	// If there are selected objects, display those.
+	// If there is no current model, display the children of the root folder.
+	// If nothing is selected, display the children of the current
+	// object (assuming it's a model).
+	if (count > 0) {
+		m_FCOs = selectedobjs;
+	} else	{
+		m_Filter = NULL;
+		COMTHROW(m_Project->CreateFilter(&m_Filter));
+		m_FCOs = NULL;
 
+		CComQIPtr<IMgaModel> currentobj_model;
+		if (currentobj)
+			currentobj_model = currentobj;
+		if (currentobj_model)
+			COMVERIFY(currentobj_model->GetDescendantFCOs(m_Filter, &m_FCOs));
+		else
+			COMVERIFY(m_Project->AllFCOs(m_Filter, &m_FCOs));
+	}
 }
 	
 
@@ -88,10 +111,11 @@
 	OnCheckAllKinds();
 	OnChkAllTypes();
 
-	long count;
-	COMTHROW(m_FCOs->get_Count(&count));
+	long count = 0;
+	if (m_selectedobjs)
+		COMTHROW(m_selectedobjs->get_Count(&count));
 
-	if(count>0)
+	if (count > 0)
 	{
 		m_btnAtom.EnableWindow(FALSE);
 		m_btnModel.EnableWindow(FALSE);
@@ -151,7 +175,7 @@
 	m_Grid.SetRowCount(0);
 	m_Grid.SetColumnCount(0);
 
-	if(m_FCOs == NULL)//if nothing was selected for the table editor invocation.
+	if (m_FCOs == NULL)//if nothing was selected for the table editor invocation.
 		return;
 
 
@@ -666,11 +690,6 @@
 /////////////////////////////////////////////////////////////////////////////
 // CGridDlg message handlers
 
-void CGridDlg::SetFilter(IMgaFilter *filter)
-{
-	m_Filter = filter;
-}
-
 
 /* void CGridDlg::Trace(LPCTSTR szFmt, ...)
 {    
@@ -1164,8 +1183,13 @@
 		COMVERIFY(m_Filter->put_Kind(CComBSTR(m_kindsFiltered)));
 		
 		m_FCOs = NULL;
-	
-		COMVERIFY(m_Project->AllFCOs(m_Filter, &m_FCOs));
+		CComQIPtr<IMgaModel> currentobj_model;
+		if (m_currentobj)
+			currentobj_model = m_currentobj;
+		if (currentobj_model)
+			COMVERIFY(currentobj_model->GetDescendantFCOs(m_Filter, &m_FCOs));
+		else
+			COMVERIFY(m_Project->AllFCOs(m_Filter, &m_FCOs));
 
 
 		InitGrid();

Modified: trunk/Tools/TableEditor/GridDlg.h
==============================================================================
--- trunk/Tools/TableEditor/GridDlg.h	Thu Nov 14 13:33:11 2013	(r2398)
+++ trunk/Tools/TableEditor/GridDlg.h	Thu Nov 14 13:33:24 2013	(r2399)
@@ -22,13 +22,9 @@
 public:
 	CGridDlg(CWnd* pParent = NULL);   // standard constructor
 
-	CGridDlg(IMgaFCOs* selectedObjs, CWnd* pParent = NULL);
+	CGridDlg(IMgaProject *project, IMgaFCO *currentobj, IMgaFCOs *selectedobjs, CWnd* pParent = NULL);
 
 
-	void SetProject(IMgaProject *proj) {m_Project = proj;}
-
-	void SetFilter(IMgaFilter *filter);
-
 // Dialog Data
 	//{{AFX_DATA(CGridDlg)
 	enum { IDD = IDD_GRIDDLG };
@@ -75,6 +71,8 @@
 
 	CGridCtrl m_Grid;
 	CComPtr<IMgaProject> m_Project;
+	CComPtr<IMgaFCO> m_currentobj;
+	CComPtr<IMgaFCOs> m_selectedobjs;
 	CComPtr<IMgaFCOs> m_FCOs;
 	CComPtr<IMgaFilter> m_Filter;
 	CComPtr<IMgaMetaFolder> m_rootMetaFolder;

Modified: trunk/Tools/TableEditor/RawComponent.cpp
==============================================================================
--- trunk/Tools/TableEditor/RawComponent.cpp	Thu Nov 14 13:33:11 2013	(r2398)
+++ trunk/Tools/TableEditor/RawComponent.cpp	Thu Nov 14 13:33:24 2013	(r2399)
@@ -47,43 +47,7 @@
 		COMTHROW(project->CreateTerritory(NULL, &terr));
 		COMTHROW(project->BeginTransaction(terr));
 		try {
-			CComPtr<IMgaFCOs> gridFCOs = NULL;
-
-			long count = 0;
-			COMTHROW(selectedobjs->get_Count(&count));
-
-			// If there are selected objects, display those.
-			// If there is no current model, display the children of the root folder.
-			// If nothing is selected, display the children of the current
-			// object (assuming it's a model).
-			// If the current object isn't a model, display an empty list.
-			if (count > 0) {
-				gridFCOs = selectedobjs;
-			}
-			else if (!currentobj) {
-				IMgaFolder* rootFolder = NULL;
-				COMTHROW(project->get_RootFolder(&rootFolder));
-				COMTHROW(rootFolder->get_ChildFCOs(&gridFCOs));
-			}
-			else {
-				IMgaMetaFCO* meta = NULL;
-				objtype_enum type = OBJTYPE_NULL;
-
-				COMTHROW(currentobj->get_Meta(&meta));
-				COMTHROW(meta->get_ObjType(&type));
-
-				if (type == OBJTYPE_MODEL) {
-					IMgaModel* model = static_cast<IMgaModel*>(currentobj);
-					COMTHROW(model->get_ChildFCOs(&gridFCOs));
-				}
-				else {
-					// empty list
-					COMTHROW(gridFCOs.CoCreateInstance(L"Mga.MgaFCOs"));
-				}
-			}
-
-			CGridDlg m_Dlg(gridFCOs);
-			m_Dlg.SetProject(project);
+			CGridDlg m_Dlg(project, currentobj, selectedobjs);
 		
 			if( m_Dlg.DoModal() == IDCANCEL)
 				COMTHROW(project->AbortTransaction());//don't want to see those changes

Modified: trunk/Tools/TableEditor/SelectDlg.cpp
==============================================================================
--- trunk/Tools/TableEditor/SelectDlg.cpp	Thu Nov 14 13:33:11 2013	(r2398)
+++ trunk/Tools/TableEditor/SelectDlg.cpp	Thu Nov 14 13:33:24 2013	(r2399)
@@ -204,8 +204,8 @@
 		COMVERIFY(m_Filter->put_ObjType(CComBSTR(m_ObjType)));
 		COMVERIFY(m_Filter->put_Kind(CComBSTR(m_kindsFiltered)));	
 
-		m_Table.SetProject(m_Project);
-		m_Table.SetFilter(m_Filter);
+		// FIXME m_Table.m_Project = m_Project;
+		// FIXME m_Table.SetFilter(m_Filter);
 		if (m_Table.DoModal() == IDOK)
 			CDialog::OnOK();
 		else


More information about the gme-commit mailing list