1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface for wxRendererNative
 
   7 // Created:     9-June-2005
 
   9 // Copyright:   (c) 2005 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  15 //---------------------------------------------------------------------------
 
  19 #include "wx/renderer.h"
 
  23 // control state flags used in wxRenderer and wxColourScheme
 
  26     wxCONTROL_DISABLED   = 0x00000001,  // control is disabled
 
  27     wxCONTROL_FOCUSED    = 0x00000002,  // currently has keyboard focus
 
  28     wxCONTROL_PRESSED    = 0x00000004,  // (button) is pressed
 
  29     wxCONTROL_ISDEFAULT  = 0x00000008,  // only applies to the buttons
 
  30     wxCONTROL_ISSUBMENU  = wxCONTROL_ISDEFAULT, // only for menu items
 
  31     wxCONTROL_EXPANDED   = wxCONTROL_ISDEFAULT, // only for the tree items
 
  32     wxCONTROL_CURRENT    = 0x00000010,  // mouse is currently over the control
 
  33     wxCONTROL_SELECTED   = 0x00000020,  // selected item in e.g. listbox
 
  34     wxCONTROL_CHECKED    = 0x00000040,  // (check/radio button) is checked
 
  35     wxCONTROL_CHECKABLE  = 0x00000080,  // (menu) item can be checked
 
  36     wxCONTROL_UNDETERMINED = wxCONTROL_CHECKABLE, // (check) undetermined state
 
  38     wxCONTROL_FLAGS_MASK = 0x000000ff,
 
  40     // this is a pseudo flag not used directly by wxRenderer but rather by some
 
  41     // controls internally
 
  42     wxCONTROL_DIRTY      = 0x80000000
 
  47 DocStr(wxSplitterRenderParams,
 
  48 "This is just a simple struct used as a return value of
 
  49 `wx.RendererNative.GetSplitterParams` and contains some platform
 
  50 specific metrics about splitters.
 
  52     * widthSash: the width of the splitter sash.
 
  53     * border: the width of the border of the splitter window.
 
  54     * isHotSensitive: ``True`` if the splitter changes its
 
  55       appearance when the mouse is over it.
 
  59 struct wxSplitterRenderParams
 
  61     wxSplitterRenderParams(wxCoord widthSash_, wxCoord border_, bool isSens_);
 
  62     ~wxSplitterRenderParams();
 
  64     // the width of the splitter sash
 
  65     const wxCoord widthSash;
 
  67     // the width of the border of the splitter window
 
  70     // true if the splitter changes its appearance when the mouse is over it
 
  71     const bool isHotSensitive;
 
  77 DocStr(wxRendererVersion,
 
  78 "This simple struct represents the `wx.RendererNative` interface
 
  79 version and is only used as the return value of
 
  80 `wx.RendererNative.GetVersion`.", "");
 
  82 struct wxRendererVersion
 
  84     wxRendererVersion(int version_, int age_);
 
  94     // check if the given version is compatible with the current one
 
  95     static bool IsCompatible(const wxRendererVersion& ver);
 
 101 //---------------------------------------------------------------------------
 
 104 DocStr(wxRendererNative,
 
 105 "One of the design principles of wxWidgets is to use the native widgets
 
 106 on every platform in order to be as close to the native look and feel
 
 107 on every platform.  However there are still cases when some generic
 
 108 widgets are needed for various reasons, but it can sometimes take a
 
 109 lot of messy work to make them conform to the native LnF.
 
 111 The wx.RendererNative class is a collection of functions that have
 
 112 platform-specific implementations for drawing certain parts of
 
 113 genereic controls in ways that are as close to the native look as
 
 117 class wxRendererNative
 
 123         virtual void , DrawHeaderButton(wxWindow *win,
 
 127         "Draw the header control button (such as what is used by `wx.ListCtrl`
 
 128 in report mode.)", "");
 
 133         virtual void , DrawTreeItemButton(wxWindow *win,
 
 137         "Draw the expanded/collapsed icon for a tree control item.", "");
 
 141         virtual void , DrawSplitterBorder(wxWindow *win,
 
 145         "Draw the border for a sash window: this border must be such that the
 
 146 sash drawn by `DrawSplitterSash` blends into it well.", "");
 
 150         virtual void , DrawSplitterSash(wxWindow *win,
 
 154                                         wxOrientation orient,
 
 156         "Draw a sash. The orient parameter defines whether the sash should be
 
 157 vertical or horizontal and how the position should be interpreted.", "");
 
 161         virtual void , DrawComboBoxDropButton(wxWindow *win,
 
 165         "Draw a button like the one used by `wx.ComboBox` to show a drop down
 
 166 window. The usual appearance is a downwards pointing arrow.
 
 168 The ``flags`` parameter may have the ``wx.CONTROL_PRESSED`` or
 
 169 ``wx.CONTROL_CURRENT`` bits set.", "");
 
 173         virtual void , DrawDropArrow(wxWindow *win,
 
 177         "Draw a drop down arrow that is suitable for use outside a combo
 
 178 box. Arrow will have a transparent background.
 
 180 ``rect`` is not entirely filled by the arrow. Instead, you should use
 
 181 bounding rectangle of a drop down button which arrow matches the size
 
 182 you need. ``flags`` may have the ``wx.CONTROL_PRESSED`` or
 
 183 ``wx.CONTROL_CURRENT`` bit set.", "");
 
 188         virtual wxSplitterRenderParams , GetSplitterParams(const wxWindow *win),
 
 189         "Get the splitter parameters, see `wx.SplitterRenderParams`.", "");
 
 195         static wxRendererNative& , Get(),
 
 196         "Return the currently used renderer", "");
 
 200         static wxRendererNative& , GetGeneric(),
 
 201         "Return the generic implementation of the renderer. Under some
 
 202 platforms, this is the default renderer implementation, others have
 
 203 platform-specific default renderer which can be retrieved by calling
 
 208         static wxRendererNative& , GetDefault(),
 
 209         "Return the default (native) implementation for this platform -- this
 
 210 is also the one used by default but this may be changed by calling `Set`
 
 211 in which case the return value of this method may be different from
 
 212 the return value of `Get`.", "");
 
 217 //     // load the renderer from the specified DLL, the returned pointer must be
 
 218 //     // deleted by caller if not NULL when it is not used any more
 
 219 //     static wxRendererNative *Load(const wxString& name);
 
 223         static wxRendererNative *, Set(wxRendererNative *renderer),
 
 224         "Set the renderer to use, passing None reverts to using the default
 
 225 renderer.  Returns the previous renderer used with Set or None.", "");
 
 230         virtual wxRendererVersion , GetVersion() const,
 
 231         "Returns the version of the renderer.  Will be used for ensuring
 
 232 compatibility of dynamically loaded renderers.", "");
 
 237 //---------------------------------------------------------------------------