home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / contrib / include / wx / fl / dyntbar.h < prev    next >
C/C++ Source or Header  |  2002-10-24  |  9KB  |  268 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        dyntbar.h
  3. // Purpose:     wxDynamicToolBar header
  4. // Author:      Aleksandras Gluchovas
  5. // Modified by:
  6. // Created:     ??/10/98
  7. // RCS-ID:      $Id: dyntbar.h,v 1.6.2.1 2002/10/24 11:21:33 JS Exp $
  8. // Copyright:   (c) Aleksandras Gluchovas
  9. // Licence:     wxWindows licence
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef __DYNTBAR_G__
  13. #define __DYNTBAR_G__
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16.     #pragma interface "dyntbar.h"
  17. #endif
  18.  
  19. #include "wx/tbarbase.h"
  20. #include "wx/dynarray.h"
  21. #include "wx/fl/fldefs.h"
  22.  
  23. /*
  24. Tool layout item.
  25. */
  26.  
  27. class WXFL_DECLSPEC wxToolLayoutItem : public wxObject
  28. {
  29.     DECLARE_DYNAMIC_CLASS(wxToolLayoutItem)
  30.  
  31. public:
  32.     wxRect    mRect;
  33.     bool      mIsSeparator;
  34. };
  35.  
  36. class WXFL_DECLSPEC wxDynToolInfo;
  37.  
  38. typedef wxToolLayoutItem* wxToolLayoutItemPtrT;
  39. typedef wxDynToolInfo*    wxDynToolInfoPtrT;
  40.  
  41. WXFL_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT  );
  42. WXFL_DEFINE_ARRAY( wxDynToolInfoPtrT,    wxDynToolInfoArrayT );
  43.  
  44. /*
  45. This is a base class for layout algorithm implementations.
  46. */
  47.  
  48. class WXFL_DECLSPEC LayoutManagerBase
  49. {
  50. public:
  51.         // Constructor.
  52.     virtual void Layout( const wxSize&       parentDim,
  53.                          wxSize&             resultingDim,
  54.                          wxLayoutItemArrayT& items,
  55.                          int                 horizGap,
  56.                          int                 vertGap   ) = 0;
  57.  
  58.         // Destructor.
  59.     virtual ~LayoutManagerBase() {}
  60. };
  61.  
  62. /*
  63. BagLayout lays out items in left-to-right order from
  64. top to bottom.
  65. */
  66.  
  67. class WXFL_DECLSPEC BagLayout : public LayoutManagerBase
  68. {
  69. public:
  70.         // Constructor.
  71.     virtual void Layout( const wxSize&       parentDim, 
  72.                          wxSize&             resultingDim,
  73.                          wxLayoutItemArrayT& items,
  74.                          int                 horizGap,
  75.                          int                 vertGap   );
  76. };
  77.  
  78. /*
  79. This class holds dynamic toolbar item information.
  80. */
  81.  
  82. class WXFL_DECLSPEC wxDynToolInfo : public wxToolLayoutItem
  83. {
  84.     DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
  85.  
  86. public:
  87.     wxWindow* mpToolWnd;
  88.     int       mIndex;
  89.     wxSize    mRealSize;
  90. };
  91.  
  92. // Layout orientations for tools
  93.  
  94. #define LO_HORIZONTAL    0
  95. #define LO_VERTICAL      1
  96. #define LO_FIT_TO_WINDOW 2
  97.  
  98. /*
  99. wxDynamicToolBar manages containment and layout of tool windows.
  100. */
  101.  
  102. class WXFL_DECLSPEC wxDynamicToolBar : public wxToolBarBase
  103. {
  104. protected:
  105.     friend class wxDynamicToolBarSerializer;
  106.  
  107.     wxDynToolInfoArrayT mTools;
  108.     LayoutManagerBase*  mpLayoutMan;
  109.  
  110. protected:
  111.         // Internal function for sizing tool windows.
  112.     virtual void SizeToolWindows();
  113.  
  114. public: /* public properties */
  115.  
  116.     int                mSepartorSize; // default: 8
  117.     int                mVertGap;      // default: 0
  118.     int                mHorizGap;      // default: 0
  119.  
  120. public:
  121.         // Default constructor.
  122.  
  123.     wxDynamicToolBar();
  124.  
  125.         // Constructor: see the documentation for wxToolBar for details.
  126.  
  127.     wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
  128.                  const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
  129.                  const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
  130.  
  131.         // Destructor.
  132.  
  133.     ~wxDynamicToolBar(void);
  134.  
  135.         // Creation function: see the documentation for wxToolBar for details.
  136.  
  137.     bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
  138.                 const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
  139.  
  140.         // Adds a tool. See the documentation for wxToolBar for details.
  141.  
  142.     virtual void AddTool( int toolIndex, 
  143.                               wxWindow* pToolWindow,
  144.                               const wxSize& size = wxDefaultSize );
  145.  
  146.         // Adds a tool. See the documentation for wxToolBar for details.
  147.  
  148.     virtual void AddTool( int toolIndex,
  149.                               const wxString& imageFileName,
  150.                               wxBitmapType imageFileType = wxBITMAP_TYPE_BMP,
  151.                               const wxString& labelText = "", bool alignTextRight = FALSE,
  152.                               bool isFlat = TRUE );
  153.         // Adds a tool. See the documentation for wxToolBar for details.
  154.  
  155.     virtual void AddTool( int toolIndex, wxBitmap labelBmp,
  156.                               const wxString& labelText = "", bool alignTextRight = FALSE,
  157.                               bool isFlat = TRUE );
  158.  
  159.     // Method from wxToolBarBase (for compatibility), only
  160.     // the first two arguments are valid.
  161.     // See the documentation for wxToolBar for details.
  162.  
  163.     virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
  164.                const bool toggle = FALSE, const long xPos = -1, const long yPos = -1, wxObject *clientData = NULL,
  165.                const wxString& helpString1 = "", const wxString& helpString2 = "");
  166.  
  167.         // Adds a separator. See the documentation for wxToolBar for details.
  168.  
  169.     virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
  170.  
  171.         // Returns tool information for the given tool index.
  172.  
  173.     wxDynToolInfo* GetToolInfo( int toolIndex );
  174.  
  175.         // Removes the given tool. Misspelt in order not to clash with a similar function
  176.         // in the base class.
  177.  
  178.     void RemveTool( int toolIndex );
  179.  
  180.         // Draws a separator. The default implementation draws a shaded line.
  181.  
  182.     virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
  183.  
  184.         // Performs layout. See definitions of orientation types.
  185.  
  186.     virtual bool Layout();
  187.  
  188.         // Returns the preferred dimension, taking the given dimension and a reference to the result.
  189.  
  190.     virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
  191.  
  192.         // Creates the default layout (BagLayout).
  193.  
  194.     virtual LayoutManagerBase* CreateDefaultLayout() { return new BagLayout(); }
  195.  
  196.         // Sets the layout for this toolbar.
  197.  
  198.     virtual void SetLayout( LayoutManagerBase* pLayout );
  199.  
  200.         // Enables or disables the given tool.
  201.  
  202.     virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
  203.  
  204.         // Responds to size events, calling Layout.
  205.  
  206.     void OnSize( wxSizeEvent& event );
  207.  
  208.         // Responds to paint events, drawing separators.
  209.  
  210.     void OnPaint( wxPaintEvent& event );
  211.  
  212.         // Responds to background erase events. Currently does nothing.
  213.  
  214.     void OnEraseBackground( wxEraseEvent& event );
  215.  
  216.         // Overriden from wxToolBarBase; does nothing.
  217.  
  218.     virtual bool Realize(void);
  219.  
  220.         // Finds a tool for the given position.
  221.  
  222.     virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
  223.                                                    wxCoord y) const;
  224.  
  225.         // Inserts a tool at the given position.
  226.  
  227.     virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
  228.  
  229.         // Deletes a tool. The tool is still in m_tools list when this function is called, and it will
  230.         // only be deleted from it if it succeeds.
  231.  
  232.     virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
  233.  
  234.         // Called when the tools enabled flag changes.
  235.  
  236.     virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
  237.  
  238.         // Called when the tool is toggled.
  239.  
  240.     virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
  241.  
  242.         // Called when the tools 'can be toggled' flag changes.
  243.  
  244.     virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
  245.  
  246.         // Creates a toolbar tool.
  247.  
  248.     virtual wxToolBarToolBase *CreateTool(int id,
  249.                                           const wxString& label,
  250.                                           const wxBitmap& bmpNormal,
  251.                                           const wxBitmap& bmpDisabled,
  252.                                           wxItemKind kind,
  253.                                           wxObject *clientData,
  254.                                           const wxString& shortHelp,
  255.                                           const wxString& longHelp);
  256.  
  257.         // Creates a toolbar tool.
  258.  
  259.     virtual wxToolBarToolBase *CreateTool(wxControl *control);
  260.  
  261. private:
  262.     DECLARE_EVENT_TABLE()
  263.     DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
  264. };
  265.  
  266. #endif /* __DYNTBAR_G__ */
  267.  
  268.