From 174051f6139a05e5bc5a2ba101534a4742e3afb1 Mon Sep 17 00:00:00 2001
From: Robin Dunn <robin@alldunn.com>
Date: Mon, 5 Apr 2004 18:23:01 +0000
Subject: [PATCH] GetDefaultAttributes, and other tweaks needed to get up to
 date with CVS

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 wxPython/src/_app.i           |  5 +--
 wxPython/src/_control.i       |  6 +++-
 wxPython/src/_core_rename.i   |  3 +-
 wxPython/src/_listbox.i       |  3 ++
 wxPython/src/_listctrl.i      |  3 ++
 wxPython/src/_treectrl.i      |  2 ++
 wxPython/src/_window.i        | 67 +++++++++++++++++++++++++++++------
 wxPython/wxPython/controls.py |  3 ++
 wxPython/wxPython/core.py     |  6 +++-
 9 files changed, 83 insertions(+), 15 deletions(-)

diff --git a/wxPython/src/_app.i b/wxPython/src/_app.i
index 0507835d35..ce26488679 100644
--- a/wxPython/src/_app.i
+++ b/wxPython/src/_app.i
@@ -252,8 +252,9 @@ public:
         "For internal use only");
 
     DocStr(GetComCtl32Version,
-           "Returns 400, 470, 471 for comctl32.dll 4.00, 4.70, 4.71 or 0 if it\n"
-           "wasn't found at all.  Raises an exception on non-Windows platforms.");
+           "Returns 400, 470, 471, etc. for comctl32.dll 4.00, 4.70, 4.71 or
+0 if it wasn't found at all.  Raises an exception on non-Windows
+platforms.");
 #ifdef __WXMSW__
     static int GetComCtl32Version();
 #else
diff --git a/wxPython/src/_control.i b/wxPython/src/_control.i
index 460f5fda47..6e7e46de39 100644
--- a/wxPython/src/_control.i
+++ b/wxPython/src/_control.i
@@ -63,7 +63,7 @@ public:
     DocDeclStr(
         void , Command(wxCommandEvent& event),
         "Simulates the effect of the user issuing a command to the\n"
-        "item. See wxCommandEvent.");
+        "item. See wx.CommandEvent.");
    
     DocDeclStr(
         wxString , GetLabel(),
@@ -72,6 +72,10 @@ public:
     DocDeclStr(
         void , SetLabel(const wxString& label),
         "Sets the item's text.");
+
+    
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 };
 
 
diff --git a/wxPython/src/_core_rename.i b/wxPython/src/_core_rename.i
index 644bfe7358..8e0bfa131e 100644
--- a/wxPython/src/_core_rename.i
+++ b/wxPython/src/_core_rename.i
@@ -602,11 +602,12 @@
 %rename(AcceleratorTable)                   wxAcceleratorTable;
 %rename(NullAcceleratorTable)               wxNullAcceleratorTable;
 %rename(GetAccelFromString)                 wxGetAccelFromString;
-%rename(WINDOW_VARIANT_DEFAULT)             wxWINDOW_VARIANT_DEFAULT;
+%rename(VisualAttributes)                   wxVisualAttributes;
 %rename(WINDOW_VARIANT_NORMAL)              wxWINDOW_VARIANT_NORMAL;
 %rename(WINDOW_VARIANT_SMALL)               wxWINDOW_VARIANT_SMALL;
 %rename(WINDOW_VARIANT_MINI)                wxWINDOW_VARIANT_MINI;
 %rename(WINDOW_VARIANT_LARGE)               wxWINDOW_VARIANT_LARGE;
+%rename(WINDOW_VARIANT_MAX)                 wxWINDOW_VARIANT_MAX;
 %rename(Window)                             wxWindow;
 %rename(FindWindowById)                     wxFindWindowById;
 %rename(FindWindowByName)                   wxFindWindowByName;
diff --git a/wxPython/src/_listbox.i b/wxPython/src/_listbox.i
index 51ac30a90e..d2144006ce 100644
--- a/wxPython/src/_listbox.i
+++ b/wxPython/src/_listbox.i
@@ -127,6 +127,9 @@ public:
             %#endif
         }
     }
+    
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 };
 
 
diff --git a/wxPython/src/_listctrl.i b/wxPython/src/_listctrl.i
index d95360d13a..c1619a8708 100644
--- a/wxPython/src/_listctrl.i
+++ b/wxPython/src/_listctrl.i
@@ -767,6 +767,9 @@ public:
         #endif
         }
     }
+
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 };
 
 
diff --git a/wxPython/src/_treectrl.i b/wxPython/src/_treectrl.i
index 5f311d954c..fe91fc9e05 100644
--- a/wxPython/src/_treectrl.i
+++ b/wxPython/src/_treectrl.i
@@ -708,6 +708,8 @@ public:
     }
 
 
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 };
 
 
diff --git a/wxPython/src/_window.i b/wxPython/src/_window.i
index cce8a97a99..4898f87e96 100644
--- a/wxPython/src/_window.i
+++ b/wxPython/src/_window.i
@@ -24,13 +24,37 @@ MAKE_CONST_WXSTRING(PanelNameStr);
 %newgroup
 
 
+DocStr(wxVisualAttributes,
+    "struct containing all the visual attributes of a control");
+
+struct wxVisualAttributes
+{
+    %extend {
+        wxVisualAttributes() {}
+        ~wxVisualAttributes() {}
+    }
+    
+    // the font used for control label/text inside it
+    wxFont font;
+
+    // the foreground colour
+    wxColour colFg;
+
+    // the background colour, may be wxNullColour if the controls background
+    // colour is not solid
+    wxColour colBg;
+};
+
+
+
+
 enum wxWindowVariant 
 {
-    wxWINDOW_VARIANT_DEFAULT,       // Default size (usually == normal, may be set by a wxSystemOptions entry)
     wxWINDOW_VARIANT_NORMAL,        // Normal size
     wxWINDOW_VARIANT_SMALL,         // Smaller size (about 25 % smaller than normal )
     wxWINDOW_VARIANT_MINI,          // Mini size (about 33 % smaller than normal )
     wxWINDOW_VARIANT_LARGE,         // Large size (about 25 % larger than normal )
+    wxWINDOW_VARIANT_MAX
 };
 
 
@@ -270,12 +294,10 @@ identification purposes.  The interpretation of this function
 differs from class to class. For frames and dialogs, the value
 returned is the title. For buttons or static text controls, it is
 the button text. This function can be useful for meta-programs
-(such as testing tools or special-needs access programs) which
+such as testing tools or special-needs access programs)which
 need to identify windows by name.");
     
 
-    // the window name is used for ressource setting in X, it is not the
-    // same as the window title/label
     DocDeclStr(
         virtual void , SetName( const wxString &name ),
         "Sets the window's name.  The window name is used for ressource
@@ -283,16 +305,21 @@ setting in X, it is not the same as the window title/label");
     
     DocDeclStr(
         virtual wxString , GetName() const,
-        "Returns the window's name.  This name is not guaranteed to be
+        "Returns the windows name.  This name is not guaranteed to be
 unique; it is up to the programmer to supply an appropriate name
 in the window constructor or via wx.Window.SetName.");
-
     
     
     DocDeclStr(
         void , SetWindowVariant( wxWindowVariant variant ),
         "Sets the variant of the window/font size to use for this window,
-if the platform supports variants, (for example, wxMac.)");
+if the platform supports variants, for example, wxMac.  Variant values are:
+
+    wx.WINDOW_VARIANT_NORMAL    Normal size
+    wx.WINDOW_VARIANT_SMALL     Smaller size (about 25 % smaller than normal)
+    wx.WINDOW_VARIANT_MINI      Mini size (about 33 % smaller than normal)
+    wx.WINDOW_VARIANT_LARGE     Large size (about 25 % larger than normal)
+");
     
     DocDeclStr(
         wxWindowVariant , GetWindowVariant() const,
@@ -1119,10 +1146,30 @@ exposed.");
     // colours, fonts and cursors
     // --------------------------
 
-    // set/retrieve the window colours (system defaults are used by
-    // default): Set functions return True if colour was changed
 
+    DocDeclStr(
+        wxVisualAttributes , GetDefaultAttributes() const,
+        "Get the default attributes for an instance of this class.  This
+is useful if you want to use the same font or colour in your own
+control as in a standard control -- which is a much better idea
+than hard coding specific colours or fonts which might look
+completely out of place on the users system, especially if it
+uses themes.");
+    
 
+    DocDeclStr(
+        static wxVisualAttributes ,
+        GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL),
+        "Get the default attributes for this class.  This is useful if
+you want to use the same font or colour in your own control as
+in a standard control -- which is a much better idea than hard
+coding specific colours or fonts which might look completely out
+of place on the users system, especially if it uses themes.
+
+The variant parameter is only relevant under Mac currently and is
+ignore under other platforms. Under Mac, it will change the size of the
+returned font. See SetWindowVariant for more about this.");
+    
     
     DocDeclStr(
         virtual bool , SetBackgroundColour( const wxColour &colour ),
@@ -1146,7 +1193,7 @@ modules.");
 was changed.  The interpretation of foreground colour is dependent on
 the window class; it may be the text colour or other colour, or it may
 not be used at all.");
-    
+
 
     DocDeclStr(
         wxColour , GetBackgroundColour() const,
diff --git a/wxPython/wxPython/controls.py b/wxPython/wxPython/controls.py
index 799e8ac63c..c6b8545c9a 100644
--- a/wxPython/wxPython/controls.py
+++ b/wxPython/wxPython/controls.py
@@ -79,6 +79,7 @@ wxListBoxNameStr = wx.controls.ListBoxNameStr
 wxListBox = wx.controls.ListBox
 wxListBoxPtr = wx.controls.ListBoxPtr
 wxPreListBox = wx.controls.PreListBox
+wxListBox_GetClassDefaultAttributes = wx.controls.ListBox_GetClassDefaultAttributes
 wxCheckListBox = wx.controls.CheckListBox
 wxCheckListBoxPtr = wx.controls.CheckListBoxPtr
 wxPreCheckListBox = wx.controls.PreCheckListBox
@@ -332,6 +333,7 @@ wxEVT_COMMAND_LIST_ITEM_FOCUSED = wx.controls.wxEVT_COMMAND_LIST_ITEM_FOCUSED
 wxListCtrl = wx.controls.ListCtrl
 wxListCtrlPtr = wx.controls.ListCtrlPtr
 wxPreListCtrl = wx.controls.PreListCtrl
+wxListCtrl_GetClassDefaultAttributes = wx.controls.ListCtrl_GetClassDefaultAttributes
 wxListView = wx.controls.ListView
 wxListViewPtr = wx.controls.ListViewPtr
 wxPreListView = wx.controls.PreListView
@@ -400,6 +402,7 @@ wxTreeEventPtr = wx.controls.TreeEventPtr
 wxTreeCtrl = wx.controls.TreeCtrl
 wxTreeCtrlPtr = wx.controls.TreeCtrlPtr
 wxPreTreeCtrl = wx.controls.PreTreeCtrl
+wxTreeCtrl_GetClassDefaultAttributes = wx.controls.TreeCtrl_GetClassDefaultAttributes
 wxDirDialogDefaultFolderStr = wx.controls.DirDialogDefaultFolderStr
 wxDIRCTRL_DIR_ONLY = wx.controls.DIRCTRL_DIR_ONLY
 wxDIRCTRL_SELECT_FIRST = wx.controls.DIRCTRL_SELECT_FIRST
diff --git a/wxPython/wxPython/core.py b/wxPython/wxPython/core.py
index 018da73600..c8e866a9be 100644
--- a/wxPython/wxPython/core.py
+++ b/wxPython/wxPython/core.py
@@ -964,11 +964,13 @@ wxAcceleratorTablePtr = wx.core.AcceleratorTablePtr
 wxNullAcceleratorTable = wx.core.NullAcceleratorTable
 wxGetAccelFromString = wx.core.GetAccelFromString
 wxPanelNameStr = wx.core.PanelNameStr
-wxWINDOW_VARIANT_DEFAULT = wx.core.WINDOW_VARIANT_DEFAULT
+wxVisualAttributes = wx.core.VisualAttributes
+wxVisualAttributesPtr = wx.core.VisualAttributesPtr
 wxWINDOW_VARIANT_NORMAL = wx.core.WINDOW_VARIANT_NORMAL
 wxWINDOW_VARIANT_SMALL = wx.core.WINDOW_VARIANT_SMALL
 wxWINDOW_VARIANT_MINI = wx.core.WINDOW_VARIANT_MINI
 wxWINDOW_VARIANT_LARGE = wx.core.WINDOW_VARIANT_LARGE
+wxWINDOW_VARIANT_MAX = wx.core.WINDOW_VARIANT_MAX
 wxWindow = wx.core.Window
 wxWindowPtr = wx.core.WindowPtr
 wxPreWindow = wx.core.PreWindow
@@ -977,6 +979,7 @@ wxWindow_NextControlId = wx.core.Window_NextControlId
 wxWindow_PrevControlId = wx.core.Window_PrevControlId
 wxWindow_FindFocus = wx.core.Window_FindFocus
 wxWindow_GetCapture = wx.core.Window_GetCapture
+wxWindow_GetClassDefaultAttributes = wx.core.Window_GetClassDefaultAttributes
 wxFindWindowById = wx.core.FindWindowById
 wxFindWindowByName = wx.core.FindWindowByName
 wxFindWindowByLabel = wx.core.FindWindowByLabel
@@ -1000,6 +1003,7 @@ wxControlNameStr = wx.core.ControlNameStr
 wxControl = wx.core.Control
 wxControlPtr = wx.core.ControlPtr
 wxPreControl = wx.core.PreControl
+wxControl_GetClassDefaultAttributes = wx.core.Control_GetClassDefaultAttributes
 wxItemContainer = wx.core.ItemContainer
 wxItemContainerPtr = wx.core.ItemContainerPtr
 wxControlWithItems = wx.core.ControlWithItems
-- 
2.47.2