X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b39c3fa09a936e6a3f386a67c0fc7cfd84df0168..e6113e3a52d1c1c486b3a31cb22b59e2d9555b2d:/wxPython/src/_menu.i diff --git a/wxPython/src/_menu.i b/wxPython/src/_menu.i index f7584ed534..d1122ce95a 100644 --- a/wxPython/src/_menu.i +++ b/wxPython/src/_menu.i @@ -33,7 +33,7 @@ public: // append any kind of item (normal/check/radio/separator) wxMenuItem* Append(int id, - const wxString& text, + const wxString& text = wxPyEmptyString, const wxString& help = wxPyEmptyString, wxItemKind kind = wxITEM_NORMAL); @@ -50,25 +50,33 @@ public: const wxString& text, const wxString& help = wxPyEmptyString); // append a submenu - %name(AppendMenu) wxMenuItem* Append(int id, - const wxString& text, - wxMenu *submenu, - const wxString& help = wxPyEmptyString); + %Rename(AppendMenu, wxMenuItem*, Append(int id, + const wxString& text, + wxMenu *submenu, + const wxString& help = wxPyEmptyString)); + + wxMenuItem* AppendSubMenu(wxMenu *submenu, + const wxString& text, + const wxString& help = wxPyEmptyString); + %disownarg(wxMenuItem*); // the most generic form of Append() - append anything - %name(AppendItem) wxMenuItem* Append(wxMenuItem *item); + %Rename(AppendItem, wxMenuItem*, Append(wxMenuItem *item)); + // insert an item before given position + %Rename(InsertItem, wxMenuItem*, Insert(size_t pos, wxMenuItem *item)); + // prepend an item to the menu + %Rename(PrependItem, wxMenuItem*, Prepend(wxMenuItem *item)); + %cleardisown(wxMenuItem*); + // insert a break in the menu (only works when appending the items, not // inserting them) virtual void Break(); - // insert an item before given position - %name(InsertItem) wxMenuItem* Insert(size_t pos, wxMenuItem *item); - // insert an item before given position wxMenuItem* Insert(size_t pos, int id, - const wxString& text, + const wxString& text = wxPyEmptyString, const wxString& help = wxPyEmptyString, wxItemKind kind = wxITEM_NORMAL); @@ -88,18 +96,15 @@ public: const wxString& help = wxPyEmptyString); // insert a submenu - %name(InsertMenu) wxMenuItem* Insert(size_t pos, + %Rename(InsertMenu, wxMenuItem*, Insert(size_t pos, int id, const wxString& text, wxMenu *submenu, - const wxString& help = wxPyEmptyString); - - // prepend an item to the menu - %name(PrependItem) wxMenuItem* Prepend(wxMenuItem *item); + const wxString& help = wxPyEmptyString)); // prepend any item to the menu wxMenuItem* Prepend(int id, - const wxString& text, + const wxString& text = wxPyEmptyString, const wxString& help = wxPyEmptyString, wxItemKind kind = wxITEM_NORMAL); @@ -117,26 +122,30 @@ public: const wxString& help = wxPyEmptyString); // prepend a submenu - %name(PrependMenu) wxMenuItem* Prepend(int id, + %Rename(PrependMenu, wxMenuItem*, Prepend(int id, const wxString& text, wxMenu *submenu, - const wxString& help = wxPyEmptyString); + const wxString& help = wxPyEmptyString)); + // detach an item from the menu, but don't delete it so that it can be // added back later (but if it's not, the caller is responsible for // deleting it!) + %newobject Remove; wxMenuItem *Remove(int id); - %name(RemoveItem) wxMenuItem *Remove(wxMenuItem *item); + %Rename(RemoveItem, wxMenuItem*, Remove(wxMenuItem *item)); // delete an item from the menu (submenus are not destroyed by this // function, see Destroy) bool Delete(int id); - %name(DeleteItem) bool Delete(wxMenuItem *item); + %Rename(DeleteItem, bool, Delete(wxMenuItem *item)); - // delete the item from menu and destroy it (if it's a submenu) + %pythonAppend Destroy "args[0].thisown = 0" %extend { void Destroy() { delete self; } } - %name(DestroyId) bool Destroy(int id); - %name(DestroyItem) bool Destroy(wxMenuItem *item); + + // delete the item from menu and destroy it (if it's a submenu) + %Rename(DestroyId, bool, Destroy(int id)); + %Rename(DestroyItem, bool, Destroy(wxMenuItem *item)); // get the items @@ -150,7 +159,7 @@ public: // search int FindItem(const wxString& item) const; - %name(FindItemById) wxMenuItem* FindItem(int id /*, wxMenu **menu = NULL*/) const; + %Rename(FindItemById, wxMenuItem*, FindItem(int id /*, wxMenu **menu = NULL*/) const); // find by position wxMenuItem* FindItemByPosition(size_t position) const; @@ -249,7 +258,7 @@ public: virtual void EnableTop(size_t pos, bool enable); // is the menu enabled? - virtual bool IsEnabledTop(size_t WXUNUSED(pos)) const { return True; } + virtual bool IsEnabledTop(size_t pos) const; // get or change the label of the menu at given position virtual void SetLabelTop(size_t pos, const wxString& label); @@ -263,10 +272,10 @@ public: // find item by id (in any menu), returns NULL if not found // // if menu is !NULL, it will be filled with wxMenu this item belongs to - %name(FindItemById) virtual wxMenuItem* FindItem(int id /*, wxMenu **menu = NULL*/) const; + %Rename(FindItemById, virtual wxMenuItem*, FindItem(int id /*, wxMenu **menu = NULL*/) const); // find menu by its caption, return wxNOT_FOUND on failure - int FindMenu(const wxString& title) const; + int FindMenu(const wxString& title); // all these functions just use FindItem() and then call an appropriate @@ -279,7 +288,8 @@ public: void Check(int id, bool check); bool IsChecked(int id) const; bool IsEnabled(int id) const; - + // TODO: bool IsEnabled() const; + void SetLabel(int id, const wxString &label); wxString GetLabel(int id) const; @@ -298,6 +308,35 @@ public: // called before deleting the menubar normally virtual void Detach(); + + // update all menu item states in all menus + virtual void UpdateMenus(); + +#ifdef __WXMAC__ + static void SetAutoWindowMenu( bool enable ); + static bool GetAutoWindowMenu(); +#else + %extend { + static void SetAutoWindowMenu( bool enable ) {} + static bool GetAutoWindowMenu() { return false; } + } +#endif + + %pythoncode { + def GetMenus(self): + """Return a list of (menu, label) items for the menus in the MenuBar. """ + return [(self.GetMenu(i), self.GetLabelTop(i)) + for i in range(self.GetMenuCount())] + + def SetMenus(self, items): + """Clear and add new menus to the MenuBar from a list of (menu, label) items. """ + for i in range(self.GetMenuCount()-1, -1, -1): + self.Remove(i) + for m, l in items: + self.Append(m, l) + } + %property(Menus, GetMenus, SetMenus); + }; //--------------------------------------------------------------------------- @@ -310,6 +349,7 @@ public: const wxString& help = wxPyEmptyString, wxItemKind kind = wxITEM_NORMAL, wxMenu* subMenu = NULL); + ~wxMenuItem(); // the menu we're in wxMenu *GetMenu() const; @@ -345,10 +385,10 @@ public: wxMenu *GetSubMenu() const; // state - virtual void Enable(bool enable = True); + virtual void Enable(bool enable = true); virtual bool IsEnabled() const; - virtual void Check(bool check = True); + virtual void Check(bool check = true); virtual bool IsChecked() const; void Toggle(); @@ -363,7 +403,9 @@ public: // SetText() virtual void SetAccel(wxAcceleratorEntry *accel); - + void SetBitmap(const wxBitmap& bitmap); + const wxBitmap& GetBitmap(); + // wxOwnerDrawn methods #ifdef __WXMSW__ void SetFont(const wxFont& font); @@ -384,17 +426,32 @@ public: bool IsOwnerDrawn(); // switch on/off owner-drawing the item - void SetOwnerDrawn(bool ownerDrawn = True); + void SetOwnerDrawn(bool ownerDrawn = true); void ResetOwnerDrawn(); #else - // just to keep the global renamers in sync %extend { + void SetFont(const wxFont& font) {} + wxFont GetFont() { return wxNullFont; } + void SetTextColour(const wxColour& colText) {} + wxColour GetTextColour() { return wxNullColour; } + void SetBackgroundColour(const wxColour& colBack) {} + wxColour GetBackgroundColour() { return wxNullColour; } + + void SetBitmaps(const wxBitmap& bmpChecked, + const wxBitmap& bmpUnchecked = wxNullBitmap) + { self->SetBitmap( bmpChecked ); } + + void SetDisabledBitmap( const wxBitmap& bmpDisabled ) {} + const wxBitmap& GetDisabledBitmap() const { return wxNullBitmap; } + + void SetMarginWidth(int nWidth) {} + int GetMarginWidth() { return 0; } static int GetDefaultMarginWidth() { return 0; } + bool IsOwnerDrawn() { return false; } + void SetOwnerDrawn(bool ownerDrawn = true) {} + void ResetOwnerDrawn() {} } #endif - - void SetBitmap(const wxBitmap& bitmap); - const wxBitmap& GetBitmap(); }; //---------------------------------------------------------------------------