[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