[commit] r2523 - in trunk/GME: Gme Search
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Wed Sep 3 10:26:36 CDT 2014
Author: ksmyth
Date: Wed Sep 3 10:26:36 2014
New Revision: 2523
Log:
Search: allow multiselect
Modified:
trunk/GME/Gme/GMESearch.cpp
trunk/GME/Search/Search.rc
trunk/GME/Search/SearchCtl.cpp
trunk/GME/Search/SearchCtl.h
trunk/GME/Search/SearchDlg.cpp
trunk/GME/Search/SearchDlg.h
Modified: trunk/GME/Gme/GMESearch.cpp
==============================================================================
--- trunk/GME/Gme/GMESearch.cpp Wed Sep 3 10:11:36 2014 (r2522)
+++ trunk/GME/Gme/GMESearch.cpp Wed Sep 3 10:26:36 2014 (r2523)
@@ -179,11 +179,16 @@
void CGMESearch::SelectObject(LPUNKNOWN mgaObject)
{
CComQIPtr<IMgaObject> ccpmgaObject = mgaObject;
- if (mgaObject) {
+ if (ccpmgaObject) {
CComPtr<IMgaObjects> ccpSelectedObjects;
COMTHROW(ccpSelectedObjects.CoCreateInstance(OLESTR("Mga.MgaObjects")));
COMTHROW(ccpSelectedObjects->Append(ccpmgaObject));
CGMEObjectInspector::theInstance->SetObjects(ccpSelectedObjects);
+ } else {
+ CComQIPtr<IMgaObjects> ccpSelectedObjects = mgaObject;
+ if (ccpSelectedObjects) {
+ CGMEObjectInspector::theInstance->SetObjects(ccpSelectedObjects);
+ }
}
}
Modified: trunk/GME/Search/Search.rc
==============================================================================
--- trunk/GME/Search/Search.rc Wed Sep 3 10:11:36 2014 (r2522)
+++ trunk/GME/Search/Search.rc Wed Sep 3 10:26:36 2014 (r2523)
@@ -153,7 +153,7 @@
CONTROL "Current and below",IDC_CHILDSCOPE2,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_TABSTOP,535,26,71,10
CONTROL "Search within results",IDC_CHECK_RESULTS,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,311,62,81,10
CONTROL "",IDC_TREE_SEARCH_HISTORY,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_DISABLED | WS_BORDER | WS_HSCROLL | WS_TABSTOP,446,85,165,83
- CONTROL "List1",IDC_LISTRESULTS,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_DISABLED | WS_BORDER | WS_TABSTOP,2,85,438,83
+ CONTROL "List1",IDC_LISTRESULTS,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | LVS_SHOWSELALWAYS | WS_DISABLED | WS_BORDER | WS_TABSTOP,2,85,438,83
GROUPBOX "Search Criteria",IDC_STATICCRIT,2,2,134,69,WS_DISABLED
LTEXT "Name:",IDC_STATICNAME4,10,15,40,9,WS_DISABLED
LTEXT "Role Name:",IDC_STATICROLE,10,28,41,9,WS_DISABLED
Modified: trunk/GME/Search/SearchCtl.cpp
==============================================================================
--- trunk/GME/Search/SearchCtl.cpp Wed Sep 3 10:11:36 2014 (r2522)
+++ trunk/GME/Search/SearchCtl.cpp Wed Sep 3 10:26:36 2014 (r2523)
@@ -493,6 +493,13 @@
FireClickMgaObject(unk);
}
+void CSearchCtrl::ClickOnObject(CComPtr<IMgaObjects> object)
+{
+ CComPtr<IUnknown> unk;
+ COMTHROW(object.QueryInterface(&unk));
+ FireClickMgaObject(unk);
+}
+
void CSearchCtrl::DblClickOnObject(CComPtr<IMgaObject> object)
{
Modified: trunk/GME/Search/SearchCtl.h
==============================================================================
--- trunk/GME/Search/SearchCtl.h Wed Sep 3 10:11:36 2014 (r2522)
+++ trunk/GME/Search/SearchCtl.h Wed Sep 3 10:26:36 2014 (r2523)
@@ -44,6 +44,7 @@
CComPtr<IMgaTerritory> Terr();
CComPtr<IMgaObjects> PutInMyTerritory(CComPtr<IMgaObjects> &in_coll);
void ClickOnObject(CComPtr<IMgaObject> object);
+ void ClickOnObject(CComPtr<IMgaObjects> object);
void DblClickOnObject(CComPtr<IMgaObject> object);
void WantToBeClosed();
void LocateMgaObject(CComPtr<IMgaObject> object);
Modified: trunk/GME/Search/SearchDlg.cpp
==============================================================================
--- trunk/GME/Search/SearchDlg.cpp Wed Sep 3 10:11:36 2014 (r2522)
+++ trunk/GME/Search/SearchDlg.cpp Wed Sep 3 10:26:36 2014 (r2523)
@@ -527,21 +527,9 @@
}
try
{
- int selected = m_lstResults.GetSelectionMark() + 1; //IMgaFCOs 1 based, GetSelectionMark 0 based
- //LVITEM lvItem;
- long lParam = m_lstResults.GetItemData(selected-1);
- // m_lstResults.GetItem(&lvItem);
- CComPtr<IMgaFCO> selectedFCO;
- // selected might be 0 because GeSelectionMark might have returned -1
- if( selected >= 1 && selected <= count)
- {
- COMTHROW(results->get_Item(lParam+1, &selectedFCO));
- }
- VARIANT_BOOL isInstance, isLibObject;
- COMTHROW(selectedFCO->get_IsInstance(&isInstance));
- COMTHROW(selectedFCO->get_IsLibObject(&isLibObject));
- CComQIPtr<IMgaObject> selectedObject(selectedFCO);
- COMTHROW(selectedObject->DestroyObject());
+ ForEachSelectedFCO([&](CComPtr<IMgaFCO> selectedFCO) {
+ COMTHROW(selectedFCO->DestroyObject());
+ });
TheCtrl->CommitTransaction();
// RemoveZombies
}
@@ -633,7 +621,7 @@
int selected = m_lstResults.GetSelectionMark() + 1; //IMgaFCOs 1 based, GetSelectionMark 0 based
long lParam = m_lstResults.GetItemData(selected-1);
CComPtr<IMgaFCO> selectedFCO;
- // selected might be 0 because GeSelectionMark might have returned -1
+ // selected might be 0 because GetSelectionMark might have returned -1
if( selected >= 1 && selected <= count)
{
COMTHROW(results->get_Item(lParam+1, &selectedFCO)); // crashed probably when called with 0
@@ -648,10 +636,15 @@
specialSearchFCO = selectedFCO;
}
- //CComPtr<IMgaObject> selectedObject = (IMgaObject *)(selectedFCO.p); // WAS this the scapegoat?
- CComQIPtr<IMgaObject> selectedObject( selectedFCO);
+ CComPtr<IMgaObjects> selectedObjects;
+ COMTHROW(selectedObjects.CoCreateInstance(L"Mga.MgaObjects", 0, CLSCTX_INPROC));
+ ForEachSelectedFCO([&](CComPtr<IMgaFCO> selected) {
+ CComQIPtr<IMgaObject> selectedObject(selected);
+ selectedObjects->Append(selectedObject);
+ });
+
TheCtrl->CommitTransaction();
- if( selectedObject) TheCtrl->ClickOnObject(selectedObject);
+ TheCtrl->ClickOnObject(selectedObjects);
}
catch( ...)
{
Modified: trunk/GME/Search/SearchDlg.h
==============================================================================
--- trunk/GME/Search/SearchDlg.h Wed Sep 3 10:11:36 2014 (r2522)
+++ trunk/GME/Search/SearchDlg.h Wed Sep 3 10:26:36 2014 (r2523)
@@ -224,6 +224,20 @@
m_edtKindNameCtrlSecond.SetOptions(std::move(kinds));
}
+ template<typename F>
+ void ForEachSelectedFCO(F f)
+ {
+ POSITION pos = m_lstResults.GetFirstSelectedItemPosition();
+ while (pos)
+ {
+ int nItem = m_lstResults.GetNextSelectedItem(pos);
+ long lParam = m_lstResults.GetItemData(nItem);
+ CComPtr<IMgaFCO> selected;
+ COMTHROW(results->get_Item(lParam + 1, &selected));
+ f(selected);
+ }
+ }
+
protected:
BOOL m_scopedCtrlEnabled; // whether to enable scoped search at all
More information about the gme-commit
mailing list