[commit] r1849 - trunk/GME/Gme
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Wed Mar 7 11:29:58 CST 2012
Author: ksmyth
Date: Wed Mar 7 11:29:57 2012
New Revision: 1849
Log:
Sort Insert menu items
Modified:
trunk/GME/Gme/DynMenu.cpp
trunk/GME/Gme/DynMenu.h
trunk/GME/Gme/GMEStd.h
trunk/GME/Gme/GuiMeta.cpp
Modified: trunk/GME/Gme/DynMenu.cpp
==============================================================================
--- trunk/GME/Gme/DynMenu.cpp Wed Mar 7 11:29:45 2012 (r1848)
+++ trunk/GME/Gme/DynMenu.cpp Wed Mar 7 11:29:57 2012 (r1849)
@@ -12,9 +12,6 @@
CDynMenu::~CDynMenu()
{
- POSITION pos = items.GetHeadPosition();
- while(pos)
- delete items.GetNext(pos);
}
void CDynMenu::AddItem(int id, const CString& roleName, const CString& displayName, const CString& helpMsg)
@@ -22,16 +19,26 @@
if(minID < 0)
minID = id;
maxID = id;
- CDynMenuItem* item = new CDynMenuItem(id, roleName, helpMsg);
- items.AddTail(item);
- menu.AppendMenu(MF_ENABLED | MF_UNCHECKED | MF_STRING, id, displayName);
+ std::unique_ptr<CDynMenuItem> item(new CDynMenuItem(id, roleName, helpMsg));
+ items.push_back(std::move(item));
+}
+
+void CDynMenu::Sort()
+{
+ std::sort(items.begin(), items.end(),
+ [](const std::unique_ptr<CDynMenuItem>& a, const std::unique_ptr<CDynMenuItem>& b)
+ { return a->GetLabel() < b->GetLabel(); }
+ );
+ for (auto it = items.begin(); it != items.end(); it++)
+ {
+ menu.AppendMenu(MF_ENABLED | MF_UNCHECKED | MF_STRING, (**it).id, (**it).label);
+ }
}
CDynMenuItem* CDynMenu::FindItem(int id)
{
- POSITION pos = items.GetHeadPosition();
- while(pos) {
- CDynMenuItem* item = items.GetNext(pos);
+ for (auto it = items.begin(); it != items.end(); it++) {
+ CDynMenuItem* item = it->get();
if(item->id == id)
return item;
}
Modified: trunk/GME/Gme/DynMenu.h
==============================================================================
--- trunk/GME/Gme/DynMenu.h Wed Mar 7 11:29:45 2012 (r1848)
+++ trunk/GME/Gme/DynMenu.h Wed Mar 7 11:29:57 2012 (r1849)
@@ -22,7 +22,7 @@
int id;
int minID, maxID;
CString name;
- CDynMenuItemList items;
+ std::vector<std::unique_ptr<CDynMenuItem> > items;
CMenu menu;
public:
void SetName(CString nm) { name = nm; }
@@ -30,11 +30,12 @@
CMenu& GetMenu() { return menu; }
int GetMinID() const { return minID; }
int GetMaxID() const { return maxID; }
- bool IsEmpty() const { return items.GetCount() == 0; }
- int GetCount() const { return items.GetCount(); }
+ bool IsEmpty() const { return items.size() == 0; }
+ int GetCount() const { return items.size(); }
void AddItem(int id, const CString& roleName, const CString& displayName, const CString& helpMsg);
CDynMenuItem* FindItem(int id);
+ void Sort();
};
#endif // whole file
Modified: trunk/GME/Gme/GMEStd.h
==============================================================================
--- trunk/GME/Gme/GMEStd.h Wed Mar 7 11:29:45 2012 (r1848)
+++ trunk/GME/Gme/GMEStd.h Wed Mar 7 11:29:57 2012 (r1849)
@@ -216,7 +216,6 @@
typedef CTypedPtrList<CPtrList, CGuiAnnotator*> CGuiAnnotatorList;
typedef CTypedPtrList<CPtrList, CGuiConnection*> CGuiConnectionList;
-typedef CTypedPtrList<CPtrList, CDynMenuItem*> CDynMenuItemList;
typedef CTypedPtrList<CPtrList, CGuiDepCtrlDesc*> CGuiDepCtrlDescList;
typedef CTypedPtrMap<CMapStringToPtr, CString, CGuiPreference *> CGuiPreferenceTable;
Modified: trunk/GME/Gme/GuiMeta.cpp
==============================================================================
--- trunk/GME/Gme/GuiMeta.cpp Wed Mar 7 11:29:45 2012 (r1848)
+++ trunk/GME/Gme/GuiMeta.cpp Wed Mar 7 11:29:57 2012 (r1849)
@@ -632,6 +632,14 @@
}
catch(hresult_exception &) {
}
+ if (insertModelMenu)
+ insertModelMenu->Sort();
+ if (insertAtomMenu)
+ insertAtomMenu->Sort();
+ if (insertReferenceMenu)
+ insertReferenceMenu->Sort();
+ if (insertSetMenu)
+ insertSetMenu->Sort();
try {
CComPtr<IMgaMetaAttributes> mmAttrs;
More information about the gme-commit
mailing list