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__
 |