3502e687e2
implemented native docking for menus and toolbars (see toolbar sample) someone may have to create the new wxMenuBar constructor corrected wxFileDlg appearance and made it i18n implemented defaults buttons improved look of all common dlgs except print setup corrected forty's player dlg added wxMB_DOCKABLE and wxTB_DOCKABLE flags augmented BETA_VERSION to 4 prevent wxListBox from sending a list_item_selected event when adding the first item to a list that is a single selection list using AppendXX() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
156 lines
4.7 KiB
C++
156 lines
4.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: menu.h
|
|
// Purpose:
|
|
// Author: Robert Roebling
|
|
// Id: $Id$
|
|
// Copyright: (c) 1998 Robert Roebling, Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#ifndef __GTKMENUH__
|
|
#define __GTKMENUH__
|
|
|
|
#ifdef __GNUG__
|
|
#pragma interface
|
|
#endif
|
|
|
|
#include "wx/defs.h"
|
|
#include "wx/object.h"
|
|
#include "wx/list.h"
|
|
#include "wx/window.h"
|
|
#include "wx/menuitem.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// classes
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class wxMenuBar;
|
|
class wxMenuItem;
|
|
class wxMenu;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// const
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#define ID_SEPARATOR (-1)
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxMenuBar
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class wxMenuBar: public wxWindow
|
|
{
|
|
DECLARE_DYNAMIC_CLASS(wxMenuBar)
|
|
|
|
public:
|
|
wxMenuBar( long style );
|
|
wxMenuBar();
|
|
void Append( wxMenu *menu, const wxString &title );
|
|
|
|
int FindMenuItem( const wxString &menuString, const wxString &itemString ) const;
|
|
wxMenuItem* FindMenuItemById( int id ) const;
|
|
inline wxMenuItem* FindItemForId( int id ) const { return FindMenuItemById( id ); }
|
|
|
|
void Check( int id, bool check );
|
|
bool Checked( int id ) const;
|
|
void Enable( int id, bool enable );
|
|
bool Enabled( int id ) const;
|
|
inline bool IsEnabled( int id ) const { return Enabled(id); }
|
|
inline bool IsChecked( int id ) const { return Checked(id); }
|
|
|
|
wxString GetLabel( int id ) const;
|
|
void SetLabel( int id, const wxString &label );
|
|
|
|
void EnableTop( int pos, bool flag );
|
|
void SetLabelTop( int pos, const wxString& label );
|
|
wxString GetLabelTop( int pos ) const;
|
|
|
|
virtual void SetHelpString( int id, const wxString& helpString );
|
|
virtual wxString GetHelpString( int id ) const;
|
|
|
|
inline int GetMenuCount() const { return m_menus.Number(); }
|
|
inline wxMenu *GetMenu( int n ) const { return (wxMenu *)m_menus.Nth(n)->Data(); }
|
|
|
|
wxList m_menus;
|
|
GtkWidget *m_menubar;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxMenu
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class wxMenu: public wxEvtHandler
|
|
{
|
|
DECLARE_DYNAMIC_CLASS(wxMenu)
|
|
|
|
public:
|
|
// construction
|
|
wxMenu( const wxString& title = wxEmptyString, const wxFunction func = (wxFunction) NULL );
|
|
|
|
// operations
|
|
// title
|
|
void SetTitle(const wxString& label);
|
|
const wxString GetTitle() const;
|
|
// menu creation
|
|
void AppendSeparator();
|
|
void Append(int id, const wxString &item,
|
|
const wxString &helpStr = "", bool checkable = FALSE);
|
|
void Append(int id, const wxString &item,
|
|
wxMenu *subMenu, const wxString &helpStr = "" );
|
|
void Break() {};
|
|
|
|
// find item by name/id
|
|
int FindItem( const wxString itemString ) const;
|
|
wxMenuItem *FindItem( int id ) const;
|
|
wxMenuItem *FindItemForId( int id ) const { return FindItem( id ); }
|
|
|
|
// get/set item's state
|
|
void Enable( int id, bool enable );
|
|
bool IsEnabled( int id ) const;
|
|
void Check( int id, bool check );
|
|
bool IsChecked( int id ) const;
|
|
|
|
void SetLabel( int id, const wxString &label );
|
|
wxString GetLabel( int id ) const;
|
|
|
|
// helpstring
|
|
virtual void SetHelpString(int id, const wxString& helpString);
|
|
virtual wxString GetHelpString(int id) const ;
|
|
|
|
// accessors
|
|
wxList& GetItems() { return m_items; }
|
|
|
|
inline void Callback(const wxFunction func) { m_callback = func; }
|
|
|
|
inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; }
|
|
inline wxEvtHandler *GetEventHandler() { return m_eventHandler; }
|
|
|
|
inline void SetClientData( void* clientData ) { m_clientData = clientData; }
|
|
inline void* GetClientData() const { return m_clientData; }
|
|
|
|
// Updates the UI for a menu and all submenus recursively.
|
|
// source is the object that has the update event handlers
|
|
// defined for it. If NULL, the menu or associated window
|
|
// will be used.
|
|
void UpdateUI(wxEvtHandler* source = (wxEvtHandler*) NULL);
|
|
|
|
// implementation
|
|
|
|
int FindMenuIdByMenuItem( GtkWidget *menuItem ) const;
|
|
void SetInvokingWindow( wxWindow *win );
|
|
wxWindow *GetInvokingWindow();
|
|
|
|
wxString m_title;
|
|
wxList m_items;
|
|
wxWindow *m_invokingWindow;
|
|
wxFunction m_callback;
|
|
wxEvtHandler *m_eventHandler;
|
|
void *m_clientData;
|
|
|
|
GtkWidget *m_menu; // GtkMenu
|
|
GtkWidget *m_owner;
|
|
};
|
|
|
|
#endif // __GTKMENUH__
|