[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