- XmString title_str = XmStringCreateSimple ((char*) (const char*) label);
- XtVaSetValues (widget,
- XmNlabelString, title_str,
- NULL);
- // TODO: should we delete title_str now?
-}
-
-const wxString wxMenu::GetTitle() const
-{
- return m_title;
-}
-
-void wxMenu::SetLabel(int id, const wxString& label)
-{
- wxMenuItem *item = FindItemForId(id);
- if (item == (wxMenuItem*) NULL)
- return;
-
- item->SetText(label);
-}
-
-wxString wxMenu::GetLabel(int id) const
-{
- wxMenuItem *it = NULL;
- WXWidget w = FindMenuItem (id, &it);
- if (w)
- {
- XmString text;
- char *s;
- XtVaGetValues ((Widget) w,
- XmNlabelString, &text,
- NULL);
-
- if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s))
- {
- wxString str(s);
- XtFree (s);
- return str;
- }
- else
- {
- XmStringFree (text);
- return wxEmptyString;
- }
- }
- else
- return wxEmptyString;
-}
-
-// Finds the item id matching the given string, -1 if not found.
-int wxMenu::FindItem (const wxString& itemString) const
-{
- char buf1[200];
- char buf2[200];
- wxStripMenuCodes ((char *)(const char *)itemString, buf1);
-
- for (wxNode * node = m_menuItems.First (); node; node = node->Next ())
- {
- wxMenuItem *item = (wxMenuItem *) node->Data ();
- if (item->GetSubMenu())
- {
- int ans = item->GetSubMenu()->FindItem(itemString);
- if (ans > -1)
- return ans;
- }
- if ( !item->IsSeparator() )
- {
- wxStripMenuCodes((char *)item->GetName().c_str(), buf2);
- if (strcmp(buf1, buf2) == 0)
- return item->GetId();
- }
- }
-
- return -1;
-}
-
-wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const
-{
- if (itemMenu)
- *itemMenu = NULL;
- for (wxNode * node = m_menuItems.First (); node; node = node->Next ())
- {
- wxMenuItem *item = (wxMenuItem *) node->Data ();
-
- if (item->GetId() == itemId)
- {
- if (itemMenu)
- *itemMenu = (wxMenu *) this;
- return item;
- }
-
- if (item->GetSubMenu())
- {
- wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu);
- if (ans)
- return ans;
- }
- }
-
- if (itemMenu)
- *itemMenu = NULL;
- return NULL;