]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wx.RendererNative class
authorRobin Dunn <robin@alldunn.com>
Thu, 9 Jun 2005 20:11:14 +0000 (20:11 +0000)
committerRobin Dunn <robin@alldunn.com>
Thu, 9 Jun 2005 20:11:14 +0000 (20:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/docs/CHANGES.txt
wxPython/setup.py
wxPython/src/__gdi_rename.i
wxPython/src/_renderer.i [new file with mode: 0644]
wxPython/src/gdi.i
wxPython/wxPython/_gdi.py

index a0ce033079224a71bd9cbc0c27a584b741032a94..96c295af80b2255d7276c0e59cb7326bf8b0f7a4 100644 (file)
@@ -1,6 +1,22 @@
 Recent Changes for wxPython
 =====================================================================
 
+2.6.1.1
+-------
+
+wxMSW: Fix for bug #1211907, popup menu indenting inconsistent with
+bitmaps. 
+
+wxMac: Don't send an event for wx.RadioButton deselections, just the
+selections.  This was done to make it consistent with the other
+platforms. 
+
+Added wx.RendererNative class.
+
+
+
+
+
 2.6.1.0
 -------
 * 4-June-2005
@@ -41,6 +57,7 @@ change will get written at the next flush.
 
 
 
+
 2.6.0.1
 -------
 * 30-May-2005
index 4c231fa4e230116b455cde7ee4a152830d95bfaa..76b3aa4557de16a4dbccfb6eb12827293753af2f 100755 (executable)
@@ -186,6 +186,7 @@ swig_sources = run_swig(['gdi.i'], 'src', GENDIR, PKGDIR,
                          'src/_icon.i',
                          'src/_pen.i',
                          'src/_palette.i',
+                         'src/_renderer.i',
                          ],
                         True)
 ext = Extension('_gdi_', ['src/drawlist.cpp'] + swig_sources,
index f94804e820ef3328027355dab823c2721655cfd4..31374619421329be3164c97e8e0afefddef4a45b 100644 (file)
 %rename(TheBrushList)                       wxTheBrushList;
 %rename(TheColourDatabase)                  wxTheColourDatabase;
 %rename(Effects)                            wxEffects;
+%rename(CONTROL_DISABLED)                   wxCONTROL_DISABLED;
+%rename(CONTROL_FOCUSED)                    wxCONTROL_FOCUSED;
+%rename(CONTROL_PRESSED)                    wxCONTROL_PRESSED;
+%rename(CONTROL_ISDEFAULT)                  wxCONTROL_ISDEFAULT;
+%rename(CONTROL_ISSUBMENU)                  wxCONTROL_ISSUBMENU;
+%rename(CONTROL_EXPANDED)                   wxCONTROL_EXPANDED;
+%rename(CONTROL_CURRENT)                    wxCONTROL_CURRENT;
+%rename(CONTROL_SELECTED)                   wxCONTROL_SELECTED;
+%rename(CONTROL_CHECKED)                    wxCONTROL_CHECKED;
+%rename(CONTROL_CHECKABLE)                  wxCONTROL_CHECKABLE;
+%rename(CONTROL_UNDETERMINED)               wxCONTROL_UNDETERMINED;
+%rename(CONTROL_FLAGS_MASK)                 wxCONTROL_FLAGS_MASK;
+%rename(CONTROL_DIRTY)                      wxCONTROL_DIRTY;
+%rename(SplitterRenderParams)               wxSplitterRenderParams;
+%rename(RendererVersion)                    wxRendererVersion;
+%rename(RendererNative)                     wxRendererNative;
 
 #endif
diff --git a/wxPython/src/_renderer.i b/wxPython/src/_renderer.i
new file mode 100644 (file)
index 0000000..938575e
--- /dev/null
@@ -0,0 +1,237 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        _renderer.i
+// Purpose:     SWIG interface for wxRendererNative
+//
+// Author:      Robin Dunn
+//
+// Created:     9-June-2005
+// RCS-ID:      $Id$
+// Copyright:   (c) 2005 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// Not a %module
+
+//---------------------------------------------------------------------------
+%newgroup
+
+%{
+#include "wx/renderer.h"
+%}
+
+
+// control state flags used in wxRenderer and wxColourScheme
+enum
+{
+    wxCONTROL_DISABLED   = 0x00000001,  // control is disabled
+    wxCONTROL_FOCUSED    = 0x00000002,  // currently has keyboard focus
+    wxCONTROL_PRESSED    = 0x00000004,  // (button) is pressed
+    wxCONTROL_ISDEFAULT  = 0x00000008,  // only applies to the buttons
+    wxCONTROL_ISSUBMENU  = wxCONTROL_ISDEFAULT, // only for menu items
+    wxCONTROL_EXPANDED   = wxCONTROL_ISDEFAULT, // only for the tree items
+    wxCONTROL_CURRENT    = 0x00000010,  // mouse is currently over the control
+    wxCONTROL_SELECTED   = 0x00000020,  // selected item in e.g. listbox
+    wxCONTROL_CHECKED    = 0x00000040,  // (check/radio button) is checked
+    wxCONTROL_CHECKABLE  = 0x00000080,  // (menu) item can be checked
+    wxCONTROL_UNDETERMINED = wxCONTROL_CHECKABLE, // (check) undetermined state
+
+    wxCONTROL_FLAGS_MASK = 0x000000ff,
+
+    // this is a pseudo flag not used directly by wxRenderer but rather by some
+    // controls internally
+    wxCONTROL_DIRTY      = 0x80000000
+};
+
+
+
+DocStr(wxSplitterRenderParams,
+"This is just a simple struct used as a return value of
+`wx.RendererNative.GetSplitterParams` and contains some platform
+specific metrics about splitters.
+
+    * widthSash: the width of the splitter sash.
+    * border: the width of the border of the splitter window.
+    * isHotSensitive: ``True`` if the splitter changes its
+      appearance when the mouse is over it.
+
+", "");
+
+struct wxSplitterRenderParams
+{
+    wxSplitterRenderParams(wxCoord widthSash_, wxCoord border_, bool isSens_);
+    ~wxSplitterRenderParams();
+    
+    // the width of the splitter sash
+    const wxCoord widthSash;
+
+    // the width of the border of the splitter window
+    const wxCoord border;
+
+    // true if the splitter changes its appearance when the mouse is over it
+    const bool isHotSensitive;
+};
+
+
+
+
+DocStr(wxRendererVersion,
+"This simple struct represents the `wx.RendererNative` interface
+version and is only used as the return value of
+`wx.RendererNative.GetVersion`.", "");
+
+struct wxRendererVersion
+{
+    wxRendererVersion(int version_, int age_);
+    ~wxRendererVersion();
+
+    enum
+    {
+        Current_Version,
+        Current_Age
+    };
+
+
+    // check if the given version is compatible with the current one
+    static bool IsCompatible(const wxRendererVersion& ver);
+
+    const int version;
+    const int age;
+};
+
+//---------------------------------------------------------------------------
+
+
+DocStr(wxRendererNative,
+"One of the design principles of wxWidgets is to use the native widgets
+on every platform in order to be as close to the native look and feel
+on every platform.  However there are still cases when some generic
+widgets are needed for various reasons, but it can sometimes take a
+lot of messy work to make them conform to the native LnF.
+
+The wx.RendererNative class is a collection of functions that have
+platform-specific implementations for drawing certain parts of
+genereic controls in ways that are as close to the native look as
+possible.
+", "");
+
+class wxRendererNative
+{
+public:
+
+     
+    DocDeclStr(
+        virtual void , DrawHeaderButton(wxWindow *win,
+                                        wxDC& dc,
+                                        const wxRect& rect,
+                                        int flags = 0),
+        "Draw the header control button (such as whar is used by `wx.ListCtrl`
+in report mode.)", "");
+    
+
+   
+    DocDeclStr(
+        virtual void , DrawTreeItemButton(wxWindow *win,
+                                          wxDC& dc,
+                                          const wxRect& rect,
+                                          int flags = 0),
+        "Draw the expanded/collapsed icon for a tree control item.", "");
+    
+
+    DocDeclStr(
+        virtual void , DrawSplitterBorder(wxWindow *win,
+                                          wxDC& dc,
+                                          const wxRect& rect,
+                                          int flags = 0),
+        "Draw the border for a sash window: this border must be such that the
+sash drawn by `DrawSplitterSash` blends into it well.", "");
+    
+
+    DocDeclStr(
+        virtual void , DrawSplitterSash(wxWindow *win,
+                                        wxDC& dc,
+                                        const wxSize& size,
+                                        wxCoord position,
+                                        wxOrientation orient,
+                                        int flags = 0),
+        "Draw a sash. The orient parameter defines whether the sash should be
+vertical or horizontal and how the position should be interpreted.", "");
+    
+
+    DocDeclStr(
+        virtual void , DrawComboBoxDropButton(wxWindow *win,
+                                              wxDC& dc,
+                                              const wxRect& rect,
+                                              int flags = 0),
+        "Draw a button like the one used by `wx.ComboBox` to show a drop down
+window. The usual appearance is a downwards pointing arrow.
+
+The ``flags`` parameter may have the ``wx.CONTROL_PRESSED`` or
+``wx.CONTROL_CURRENT`` bits set.", "");
+    
+
+    DocDeclStr(
+        virtual void , DrawDropArrow(wxWindow *win,
+                                     wxDC& dc,
+                                     const wxRect& rect,
+                                     int flags = 0),
+        "Draw a drop down arrow that is suitable for use outside a combo
+box. Arrow will have a transparent background.
+
+``rect`` is not entirely filled by the arrow. Instead, you should use
+bounding rectangle of a drop down button which arrow matches the size
+you need. ``flags`` may have the ``wx.CONTROL_PRESSED`` or
+``wx.CONTROL_CURRENT`` bit set.", "");
+    
+
+
+    DocDeclStr(
+        virtual wxSplitterRenderParams , GetSplitterParams(const wxWindow *win),
+        "Get the splitter parameters, see `wx.SplitterRenderParams`.", "");
+    
+
+
+
+    DocDeclStr(
+        static wxRendererNative& , Get(),
+        "Return the currently used renderer", "");
+    
+
+    DocDeclStr(
+        static wxRendererNative& , GetGeneric(),
+        "Return the generic implementation of the renderer. Under some
+platforms, this is the default renderer implementation, others have
+platform-specific default renderer which can be retrieved by calling
+`GetDefault`.", "");
+    
+
+    DocDeclStr(
+        static wxRendererNative& , GetDefault(),
+        "Return the default (native) implementation for this platform -- this
+is also the one used by default but this may be changed by calling `Set`
+in which case the return value of this method may be different from
+the return value of `Get`.", "");
+    
+
+
+
+//     // load the renderer from the specified DLL, the returned pointer must be
+//     // deleted by caller if not NULL when it is not used any more
+//     static wxRendererNative *Load(const wxString& name);
+
+
+    DocDeclStr(
+        static wxRendererNative *, Set(wxRendererNative *renderer),
+        "Set the renderer to use, passing None reverts to using the default
+renderer.  Returns the previous renderer used with Set or None.", "");
+    
+
+
+    DocDeclStr(
+        virtual wxRendererVersion , GetVersion() const,
+        "Returns the version of the renderer.  Will be used for ensuring
+compatibility of dynamically loaded renderers.", "");
+    
+};
+
+
+//---------------------------------------------------------------------------
index 9b0078e018f65c87e6e5e00c013fdeddcb341914..eccdd1c4aa5be32a903ed71f36f3e6423c1440be 100644 (file)
@@ -48,6 +48,7 @@ MAKE_CONST_WXSTRING_NOSWIG(EmptyString);
 %include _imaglist.i
 %include _stockobjs.i
 %include _effects.i
+%include _renderer.i
 
 
 //---------------------------------------------------------------------------
index 2173ab408636d7532430f88ae7e640a8b4529480..3484752a3a78be4bfd1f078d3ae885725cd83c95 100644 (file)
@@ -581,6 +581,30 @@ wxTheBrushList = wx._gdi.TheBrushList
 wxTheColourDatabase = wx._gdi.TheColourDatabase
 wxEffects = wx._gdi.Effects
 wxEffectsPtr = wx._gdi.EffectsPtr
+wxCONTROL_DISABLED = wx._gdi.CONTROL_DISABLED
+wxCONTROL_FOCUSED = wx._gdi.CONTROL_FOCUSED
+wxCONTROL_PRESSED = wx._gdi.CONTROL_PRESSED
+wxCONTROL_ISDEFAULT = wx._gdi.CONTROL_ISDEFAULT
+wxCONTROL_ISSUBMENU = wx._gdi.CONTROL_ISSUBMENU
+wxCONTROL_EXPANDED = wx._gdi.CONTROL_EXPANDED
+wxCONTROL_CURRENT = wx._gdi.CONTROL_CURRENT
+wxCONTROL_SELECTED = wx._gdi.CONTROL_SELECTED
+wxCONTROL_CHECKED = wx._gdi.CONTROL_CHECKED
+wxCONTROL_CHECKABLE = wx._gdi.CONTROL_CHECKABLE
+wxCONTROL_UNDETERMINED = wx._gdi.CONTROL_UNDETERMINED
+wxCONTROL_FLAGS_MASK = wx._gdi.CONTROL_FLAGS_MASK
+wxCONTROL_DIRTY = wx._gdi.CONTROL_DIRTY
+wxSplitterRenderParams = wx._gdi.SplitterRenderParams
+wxSplitterRenderParamsPtr = wx._gdi.SplitterRenderParamsPtr
+wxRendererVersion = wx._gdi.RendererVersion
+wxRendererVersionPtr = wx._gdi.RendererVersionPtr
+wxRendererVersion_IsCompatible = wx._gdi.RendererVersion_IsCompatible
+wxRendererNative = wx._gdi.RendererNative
+wxRendererNativePtr = wx._gdi.RendererNativePtr
+wxRendererNative_Get = wx._gdi.RendererNative_Get
+wxRendererNative_GetGeneric = wx._gdi.RendererNative_GetGeneric
+wxRendererNative_GetDefault = wx._gdi.RendererNative_GetDefault
+wxRendererNative_Set = wx._gdi.RendererNative_Set
 wxMaskColour = wx._gdi.MaskColour