]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_stockobjs.i
reSWIGged
[wxWidgets.git] / wxPython / src / _stockobjs.i
index b3227af4636310b6733d15d6de26302688467f69..6eb20892c339eb50368ceee574d8bdb7ad662c20 100644 (file)
 %newgroup
 
 
-// See also wxPy_ReinitStockObjects in helpers.cpp
-%immutable;
-%threadWrapperOff;
+class wxStockGDI
+{
+public:
+    enum Item {
+        BRUSH_BLACK,
+        BRUSH_BLUE,
+        BRUSH_CYAN,
+        BRUSH_GREEN,
+        BRUSH_GREY,
+        BRUSH_LIGHTGREY,
+        BRUSH_MEDIUMGREY,
+        BRUSH_RED,
+        BRUSH_TRANSPARENT,
+        BRUSH_WHITE,
+        COLOUR_BLACK,
+        COLOUR_BLUE,
+        COLOUR_CYAN,
+        COLOUR_GREEN,
+        COLOUR_LIGHTGREY,
+        COLOUR_RED,
+        COLOUR_WHITE,
+        CURSOR_CROSS,
+        CURSOR_HOURGLASS,
+        CURSOR_STANDARD,
+        FONT_ITALIC,
+        FONT_NORMAL,
+        FONT_SMALL,
+        FONT_SWISS,
+        PEN_BLACK,
+        PEN_BLACKDASHED,
+        PEN_CYAN,
+        PEN_GREEN,
+        PEN_GREY,
+        PEN_LIGHTGREY,
+        PEN_MEDIUMGREY,
+        PEN_RED,
+        PEN_TRANSPARENT,
+        PEN_WHITE,
+        ITEMCOUNT
+    };
+
+    wxStockGDI();
+    virtual ~wxStockGDI();
+    static void DeleteAll();
+
+    static wxStockGDI& instance();
+
+    static const wxBrush* GetBrush(Item item);
+    static const wxColour* GetColour(Item item);
+    static const wxCursor* GetCursor(Item item);
+    static const wxPen* GetPen(Item item);
+
+    virtual const wxFont* GetFont(Item item);
+
+    %pythoncode {
+    def _initStockObjects():
+        import wx
+        wx.ITALIC_FONT  = StockGDI.instance().GetFont(StockGDI.FONT_ITALIC)
+        wx.NORMAL_FONT  = StockGDI.instance().GetFont(StockGDI.FONT_NORMAL)
+        wx.SMALL_FONT   = StockGDI.instance().GetFont(StockGDI.FONT_SMALL)
+        wx.SWISS_FONT   = StockGDI.instance().GetFont(StockGDI.FONT_SWISS)
+                                              
+        wx.BLACK_DASHED_PEN  = StockGDI.GetPen(StockGDI.PEN_BLACKDASHED)
+        wx.BLACK_PEN         = StockGDI.GetPen(StockGDI.PEN_BLACK)
+        wx.CYAN_PEN          = StockGDI.GetPen(StockGDI.PEN_CYAN)
+        wx.GREEN_PEN         = StockGDI.GetPen(StockGDI.PEN_GREEN)
+        wx.GREY_PEN          = StockGDI.GetPen(StockGDI.PEN_GREY)
+        wx.LIGHT_GREY_PEN    = StockGDI.GetPen(StockGDI.PEN_LIGHTGREY)
+        wx.MEDIUM_GREY_PEN   = StockGDI.GetPen(StockGDI.PEN_MEDIUMGREY)
+        wx.RED_PEN           = StockGDI.GetPen(StockGDI.PEN_RED)
+        wx.TRANSPARENT_PEN   = StockGDI.GetPen(StockGDI.PEN_TRANSPARENT)
+        wx.WHITE_PEN         = StockGDI.GetPen(StockGDI.PEN_WHITE)
+
+        wx.BLACK_BRUSH        = StockGDI.GetBrush(StockGDI.BRUSH_BLACK)
+        wx.BLUE_BRUSH         = StockGDI.GetBrush(StockGDI.BRUSH_BLUE)
+        wx.CYAN_BRUSH         = StockGDI.GetBrush(StockGDI.BRUSH_CYAN)
+        wx.GREEN_BRUSH        = StockGDI.GetBrush(StockGDI.BRUSH_GREEN)
+        wx.GREY_BRUSH         = StockGDI.GetBrush(StockGDI.BRUSH_GREY)
+        wx.LIGHT_GREY_BRUSH   = StockGDI.GetBrush(StockGDI.BRUSH_LIGHTGREY)
+        wx.MEDIUM_GREY_BRUSH  = StockGDI.GetBrush(StockGDI.BRUSH_MEDIUMGREY)
+        wx.RED_BRUSH          = StockGDI.GetBrush(StockGDI.BRUSH_RED)
+        wx.TRANSPARENT_BRUSH  = StockGDI.GetBrush(StockGDI.BRUSH_TRANSPARENT)
+        wx.WHITE_BRUSH        = StockGDI.GetBrush(StockGDI.BRUSH_WHITE)
+
+        wx.BLACK       = StockGDI.GetColour(StockGDI.COLOUR_BLACK)
+        wx.BLUE        = StockGDI.GetColour(StockGDI.COLOUR_BLUE)
+        wx.CYAN        = StockGDI.GetColour(StockGDI.COLOUR_CYAN)
+        wx.GREEN       = StockGDI.GetColour(StockGDI.COLOUR_GREEN)
+        wx.LIGHT_GREY  = StockGDI.GetColour(StockGDI.COLOUR_LIGHTGREY)
+        wx.RED         = StockGDI.GetColour(StockGDI.COLOUR_RED)
+        wx.WHITE       = StockGDI.GetColour(StockGDI.COLOUR_WHITE)
+    
+        wx.CROSS_CURSOR      = StockGDI.GetCursor(StockGDI.CURSOR_CROSS)
+        wx.HOURGLASS_CURSOR  = StockGDI.GetCursor(StockGDI.CURSOR_HOURGLASS)
+        wx.STANDARD_CURSOR   = StockGDI.GetCursor(StockGDI.CURSOR_STANDARD)
+        
+    _initStockObjects = staticmethod(_initStockObjects)
+    }
+};
+
 
-wxFont* const wxNORMAL_FONT;
-wxFont* const wxSMALL_FONT;
-wxFont* const wxITALIC_FONT;
-wxFont* const wxSWISS_FONT;
-
-wxPen* const wxRED_PEN;
-wxPen* const wxCYAN_PEN;
-wxPen* const wxGREEN_PEN;
-wxPen* const wxBLACK_PEN;
-wxPen* const wxWHITE_PEN;
-wxPen* const wxTRANSPARENT_PEN;
-wxPen* const wxBLACK_DASHED_PEN;
-wxPen* const wxGREY_PEN;
-wxPen* const wxMEDIUM_GREY_PEN;
-wxPen* const wxLIGHT_GREY_PEN;
-
-wxBrush* const wxBLUE_BRUSH;
-wxBrush* const wxGREEN_BRUSH;
-wxBrush* const wxWHITE_BRUSH;
-wxBrush* const wxBLACK_BRUSH;
-wxBrush* const wxTRANSPARENT_BRUSH;
-wxBrush* const wxCYAN_BRUSH;
-wxBrush* const wxRED_BRUSH;
-wxBrush* const wxGREY_BRUSH;
-wxBrush* const wxMEDIUM_GREY_BRUSH;
-wxBrush* const wxLIGHT_GREY_BRUSH;
-
-wxColour* const wxBLACK;
-wxColour* const wxWHITE;
-wxColour* const wxRED;
-wxColour* const wxBLUE;
-wxColour* const wxGREEN;
-wxColour* const wxCYAN;
-wxColour* const wxLIGHT_GREY;
-
-wxCursor* const wxSTANDARD_CURSOR;
-wxCursor* const wxHOURGLASS_CURSOR;
-wxCursor* const wxCROSS_CURSOR;
 
+%immutable;
+%threadWrapperOff;
 
 const wxBitmap wxNullBitmap;
 const wxIcon   wxNullIcon;
@@ -76,34 +137,67 @@ const wxColour wxNullColour;
 
 //---------------------------------------------------------------------------
 
-class wxPenList : public wxObject {
+
+class wxGDIObjListBase {
+public:
+    wxGDIObjListBase();
+    ~wxGDIObjListBase();
+};
+
+
+class wxPenList : public wxGDIObjListBase {
 public:
 
-    void AddPen(wxPen* pen);
     wxPen* FindOrCreatePen(const wxColour& colour, int width, int style);
-    void RemovePen(wxPen* pen);
 
-    int GetCount();
+    void AddPen(wxPen* pen);
+    void RemovePen(wxPen* pen);
+    %pythoncode {
+        AddPen = wx._deprecated(AddPen)
+        RemovePen = wx._deprecated(RemovePen)
+    }            
+//    int GetCount();
 };
 
 
-//---------------------------------------------------------------------------
-
-class wxBrushList : public wxObject {
+class wxBrushList : public wxGDIObjListBase {
 public:
 
-    void AddBrush(wxBrush *brush);
     wxBrush * FindOrCreateBrush(const wxColour& colour, int style=wxSOLID);
+
+    void AddBrush(wxBrush *brush);
     void RemoveBrush(wxBrush *brush);
+    %pythoncode {
+        AddBrush = wx._deprecated(AddBrush)
+        RemoveBrush = wx._deprecated(RemoveBrush)
+    }
+//    int GetCount();
+};
+
 
-    int GetCount();
+class wxFontList : public wxGDIObjListBase {
+public:
+
+    wxFont * FindOrCreateFont(int point_size, int family, int style, int weight,
+                              bool underline = false,
+                              const wxString& facename = wxPyEmptyString,
+                              wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
+
+    void AddFont(wxFont* font);
+    void RemoveFont(wxFont *font);
+    %pythoncode {
+        AddFont = wx._deprecated(AddFont)
+        RemoveFont = wx._deprecated(RemoveFont)
+    }
+
+//    int GetCount();
 };
 
 //---------------------------------------------------------------------------
 
 MustHaveApp(wxColourDatabase);
 
-class wxColourDatabase : public wxObject {
+class wxColourDatabase {
 public:
     wxColourDatabase();
     ~wxColourDatabase();
@@ -123,35 +217,42 @@ public:
     }
 };
 
-//---------------------------------------------------------------------------
-
-class wxFontList : public wxObject {
-public:
-
-    void AddFont(wxFont* font);
-    wxFont * FindOrCreateFont(int point_size, int family, int style, int weight,
-                              bool underline = false, const wxString& facename = wxPyEmptyString,
-                              wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
-    void RemoveFont(wxFont *font);
-
-    int GetCount();
-};
 
 //---------------------------------------------------------------------------
 %newgroup
 
-
-
-// See also wxPy_ReinitStockObjects in helpers.cpp
-%immutable;
-
-wxFontList*       const wxTheFontList;
-wxPenList*        const wxThePenList;
-wxBrushList*      const wxTheBrushList;
-wxColourDatabase* const wxTheColourDatabase;
-
-%mutable;
-
+%inline {
+    wxFontList* _wxPyInitTheFontList() { return wxTheFontList; }
+    wxPenList* _wxPyInitThePenList() { return wxThePenList; }
+    wxBrushList* _wxPyInitTheBrushList() { return wxTheBrushList; }
+    wxColourDatabase* _wxPyInitTheColourDatabase() { return wxTheColourDatabase; }
+}
+
+%pythoncode {
+%# This function makes a class used to do delayed initialization of some
+%# stock wx objects.  When they are used the first time then an init function
+%# is called to make the real instance, which is then used to replace the
+%# original instance and class seen by the programmer.
+def _wxPyMakeDelayedInitWrapper(initFunc):
+    class _wxPyStockObjectWrapper(object):
+        def __init__(self, *args):
+            self._args = args
+        def __getattr__(self, name):
+            obj = initFunc(*self._args)
+            self.__class__ = obj.__class__
+            self.__dict__ = obj.__dict__
+            return getattr(self, name)
+        def __str__(self):
+            return self.__getattr__("__str__")()
+        def __repr__(self):
+            return self.__getattr__("__repr__")()
+    return _wxPyStockObjectWrapper
+    
+TheFontList       = _wxPyMakeDelayedInitWrapper(_wxPyInitTheFontList)()
+ThePenList        = _wxPyMakeDelayedInitWrapper(_wxPyInitThePenList)()
+TheBrushList      = _wxPyMakeDelayedInitWrapper(_wxPyInitTheBrushList)()
+TheColourDatabase = _wxPyMakeDelayedInitWrapper(_wxPyInitTheColourDatabase)()
+}
 
 //---------------------------------------------------------------------------