]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/settings.h
Allow calling wxStrchr() with a narrow string and wide character.
[wxWidgets.git] / include / wx / settings.h
index a81d15fc7d0b17e728f130d54e8902aa9fde0d90..8de41ae424b0b8009bfb287540bc78bfbe570ef0 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
-// Name:        settings.h
-// Purpose:     wxSystemSettings defines; includes platform settings.h
+// Name:        wx/settings.h
+// Purpose:     wxSystemSettings class
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// Copyright:   (c) Julian Smart
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __SETTINGSH_BASE__
-#define __SETTINGSH_BASE__
-
-#define wxSYS_WHITE_BRUSH         0
-#define wxSYS_LTGRAY_BRUSH        1
-#define wxSYS_GRAY_BRUSH          2
-#define wxSYS_DKGRAY_BRUSH        3
-#define wxSYS_BLACK_BRUSH         4
-#define wxSYS_NULL_BRUSH          5
-#define wxSYS_HOLLOW_BRUSH        wxSYS_NULL_BRUSH
-#define wxSYS_WHITE_PEN           6
-#define wxSYS_BLACK_PEN           7
-#define wxSYS_NULL_PEN            8
-#define wxSYS_OEM_FIXED_FONT      10
-#define wxSYS_ANSI_FIXED_FONT     11
-#define wxSYS_ANSI_VAR_FONT       12
-#define wxSYS_SYSTEM_FONT         13
-#define wxSYS_DEVICE_DEFAULT_FONT 14
-#define wxSYS_DEFAULT_PALETTE     15
-#define wxSYS_SYSTEM_FIXED_FONT   16
-#define wxSYS_DEFAULT_GUI_FONT    17
-
-#define wxSYS_COLOUR_SCROLLBAR         0
-#define wxSYS_COLOUR_BACKGROUND        1
-#define wxSYS_COLOUR_ACTIVECAPTION     2
-#define wxSYS_COLOUR_INACTIVECAPTION   3
-#define wxSYS_COLOUR_MENU              4
-#define wxSYS_COLOUR_WINDOW            5
-#define wxSYS_COLOUR_WINDOWFRAME       6
-#define wxSYS_COLOUR_MENUTEXT          7
-#define wxSYS_COLOUR_WINDOWTEXT        8
-#define wxSYS_COLOUR_CAPTIONTEXT       9
-#define wxSYS_COLOUR_ACTIVEBORDER      10
-#define wxSYS_COLOUR_INACTIVEBORDER    11
-#define wxSYS_COLOUR_APPWORKSPACE      12
-#define wxSYS_COLOUR_HIGHLIGHT         13
-#define wxSYS_COLOUR_HIGHLIGHTTEXT     14
-#define wxSYS_COLOUR_BTNFACE           15
-#define wxSYS_COLOUR_BTNSHADOW         16
-#define wxSYS_COLOUR_GRAYTEXT          17
-#define wxSYS_COLOUR_BTNTEXT           18
-#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19
-#define wxSYS_COLOUR_BTNHIGHLIGHT      20
-
-#define wxSYS_COLOUR_3DDKSHADOW        21
-#define wxSYS_COLOUR_3DLIGHT           22
-#define wxSYS_COLOUR_INFOTEXT          23
-#define wxSYS_COLOUR_INFOBK            24
-
-#define wxSYS_COLOUR_DESKTOP           wxSYS_COLOUR_BACKGROUND
-#define wxSYS_COLOUR_3DFACE            wxSYS_COLOUR_BTNFACE
-#define wxSYS_COLOUR_3DSHADOW          wxSYS_COLOUR_BTNSHADOW
-#define wxSYS_COLOUR_3DHIGHLIGHT       wxSYS_COLOUR_BTNHIGHLIGHT
-#define wxSYS_COLOUR_3DHILIGHT         wxSYS_COLOUR_BTNHIGHLIGHT
-#define wxSYS_COLOUR_BTNHILIGHT        wxSYS_COLOUR_BTNHIGHLIGHT
-
-// Metrics
-#define wxSYS_MOUSE_BUTTONS           1
-#define wxSYS_BORDER_X                2
-#define wxSYS_BORDER_Y                3
-#define wxSYS_CURSOR_X                4
-#define wxSYS_CURSOR_Y                5
-#define wxSYS_DCLICK_X                6
-#define wxSYS_DCLICK_Y                7
-#define wxSYS_DRAG_X                  8
-#define wxSYS_DRAG_Y                  9
-#define wxSYS_EDGE_X                  10
-#define wxSYS_EDGE_Y                  11
-#define wxSYS_HSCROLL_ARROW_X         12
-#define wxSYS_HSCROLL_ARROW_Y         13
-#define wxSYS_HTHUMB_X                14
-#define wxSYS_ICON_X                  15
-#define wxSYS_ICON_Y                  16
-#define wxSYS_ICONSPACING_X           17
-#define wxSYS_ICONSPACING_Y           18
-#define wxSYS_WINDOWMIN_X             19
-#define wxSYS_WINDOWMIN_Y             20
-#define wxSYS_SCREEN_X                21
-#define wxSYS_SCREEN_Y                22
-#define wxSYS_FRAMESIZE_X             23
-#define wxSYS_FRAMESIZE_Y             24
-#define wxSYS_SMALLICON_X             25
-#define wxSYS_SMALLICON_Y             26
-#define wxSYS_HSCROLL_Y               27
-#define wxSYS_VSCROLL_X               28
-#define wxSYS_VSCROLL_ARROW_X         29
-#define wxSYS_VSCROLL_ARROW_Y         30
-#define wxSYS_VTHUMB_Y                31
-#define wxSYS_CAPTION_Y               32
-#define wxSYS_MENU_Y                  33
-#define wxSYS_NETWORK_PRESENT         34
-#define wxSYS_PENWINDOWS_PRESENT      35
-#define wxSYS_SHOW_SOUNDS             36
-#define wxSYS_SWAP_BUTTONS            37
-
-#if defined(__WXMSW__)
-#include "wx/msw/settings.h"
-#elif defined(__WXMOTIF__)
-#include "wx/xt/settings.h"
-#elif defined(__WXGTK__)
-#include "wx/gtk/settings.h"
-#elif defined(__WXQT__)
-#include "wx/qt/settings.h"
-#endif
+#ifndef _WX_SETTINGS_H_BASE_
+#define _WX_SETTINGS_H_BASE_
+
+#include "wx/colour.h"
+#include "wx/font.h"
+
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+
+// possible values for wxSystemSettings::GetFont() parameter
+//
+// NB: wxMSW assumes that they have the same values as the parameters of
+//     Windows GetStockObject() API, don't change the values!
+enum wxSystemFont
+{
+    wxSYS_OEM_FIXED_FONT = 10,
+    wxSYS_ANSI_FIXED_FONT,
+    wxSYS_ANSI_VAR_FONT,
+    wxSYS_SYSTEM_FONT,
+    wxSYS_DEVICE_DEFAULT_FONT,
+
+    // don't use: this is here just to make the values of enum elements
+    // coincide with the corresponding MSW constants
+    wxSYS_DEFAULT_PALETTE,
+
+    // don't use: MSDN says that this is a stock object provided only
+    // for compatibility with 16-bit Windows versions earlier than 3.0!
+    wxSYS_SYSTEM_FIXED_FONT,
+
+    wxSYS_DEFAULT_GUI_FONT,
+
+    // this was just a temporary aberration, do not use it any more
+    wxSYS_ICONTITLE_FONT = wxSYS_DEFAULT_GUI_FONT
+};
+
+// possible values for wxSystemSettings::GetColour() parameter
+//
+// NB: wxMSW assumes that they have the same values as the parameters of
+//     Windows GetSysColor() API, don't change the values!
+enum wxSystemColour
+{
+    wxSYS_COLOUR_SCROLLBAR,
+    wxSYS_COLOUR_DESKTOP,
+    wxSYS_COLOUR_ACTIVECAPTION,
+    wxSYS_COLOUR_INACTIVECAPTION,
+    wxSYS_COLOUR_MENU,
+    wxSYS_COLOUR_WINDOW,
+    wxSYS_COLOUR_WINDOWFRAME,
+    wxSYS_COLOUR_MENUTEXT,
+    wxSYS_COLOUR_WINDOWTEXT,
+    wxSYS_COLOUR_CAPTIONTEXT,
+    wxSYS_COLOUR_ACTIVEBORDER,
+    wxSYS_COLOUR_INACTIVEBORDER,
+    wxSYS_COLOUR_APPWORKSPACE,
+    wxSYS_COLOUR_HIGHLIGHT,
+    wxSYS_COLOUR_HIGHLIGHTTEXT,
+    wxSYS_COLOUR_BTNFACE,
+    wxSYS_COLOUR_BTNSHADOW,
+    wxSYS_COLOUR_GRAYTEXT,
+    wxSYS_COLOUR_BTNTEXT,
+    wxSYS_COLOUR_INACTIVECAPTIONTEXT,
+    wxSYS_COLOUR_BTNHIGHLIGHT,
+    wxSYS_COLOUR_3DDKSHADOW,
+    wxSYS_COLOUR_3DLIGHT,
+    wxSYS_COLOUR_INFOTEXT,
+    wxSYS_COLOUR_INFOBK,
+    wxSYS_COLOUR_LISTBOX,
+    wxSYS_COLOUR_HOTLIGHT,
+    wxSYS_COLOUR_GRADIENTACTIVECAPTION,
+    wxSYS_COLOUR_GRADIENTINACTIVECAPTION,
+    wxSYS_COLOUR_MENUHILIGHT,
+    wxSYS_COLOUR_MENUBAR,
+    wxSYS_COLOUR_LISTBOXTEXT,
+
+    wxSYS_COLOUR_MAX,
+
+    // synonyms
+    wxSYS_COLOUR_BACKGROUND = wxSYS_COLOUR_DESKTOP,
+    wxSYS_COLOUR_3DFACE = wxSYS_COLOUR_BTNFACE,
+    wxSYS_COLOUR_3DSHADOW = wxSYS_COLOUR_BTNSHADOW,
+    wxSYS_COLOUR_BTNHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
+    wxSYS_COLOUR_3DHIGHLIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
+    wxSYS_COLOUR_3DHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
+    wxSYS_COLOUR_FRAMEBK = wxSYS_COLOUR_BTNFACE
+};
+
+// possible values for wxSystemSettings::GetMetric() index parameter
+//
+// NB: update the conversion table in msw/settings.cpp if you change the values
+//     of the elements of this enum
+enum wxSystemMetric
+{
+    wxSYS_MOUSE_BUTTONS = 1,
+    wxSYS_BORDER_X,
+    wxSYS_BORDER_Y,
+    wxSYS_CURSOR_X,
+    wxSYS_CURSOR_Y,
+    wxSYS_DCLICK_X,
+    wxSYS_DCLICK_Y,
+    wxSYS_DRAG_X,
+    wxSYS_DRAG_Y,
+    wxSYS_EDGE_X,
+    wxSYS_EDGE_Y,
+    wxSYS_HSCROLL_ARROW_X,
+    wxSYS_HSCROLL_ARROW_Y,
+    wxSYS_HTHUMB_X,
+    wxSYS_ICON_X,
+    wxSYS_ICON_Y,
+    wxSYS_ICONSPACING_X,
+    wxSYS_ICONSPACING_Y,
+    wxSYS_WINDOWMIN_X,
+    wxSYS_WINDOWMIN_Y,
+    wxSYS_SCREEN_X,
+    wxSYS_SCREEN_Y,
+    wxSYS_FRAMESIZE_X,
+    wxSYS_FRAMESIZE_Y,
+    wxSYS_SMALLICON_X,
+    wxSYS_SMALLICON_Y,
+    wxSYS_HSCROLL_Y,
+    wxSYS_VSCROLL_X,
+    wxSYS_VSCROLL_ARROW_X,
+    wxSYS_VSCROLL_ARROW_Y,
+    wxSYS_VTHUMB_Y,
+    wxSYS_CAPTION_Y,
+    wxSYS_MENU_Y,
+    wxSYS_NETWORK_PRESENT,
+    wxSYS_PENWINDOWS_PRESENT,
+    wxSYS_SHOW_SOUNDS,
+    wxSYS_SWAP_BUTTONS,
+    wxSYS_DCLICK_MSEC
+};
+
+// possible values for wxSystemSettings::HasFeature() parameter
+enum wxSystemFeature
+{
+    wxSYS_CAN_DRAW_FRAME_DECORATIONS = 1,
+    wxSYS_CAN_ICONIZE_FRAME,
+    wxSYS_TABLET_PRESENT
+};
+
+// values for different screen designs
+enum wxSystemScreenType
+{
+    wxSYS_SCREEN_NONE = 0,  //   not yet defined
+
+    wxSYS_SCREEN_TINY,      //   <
+    wxSYS_SCREEN_PDA,       //   >= 320x240
+    wxSYS_SCREEN_SMALL,     //   >= 640x480
+    wxSYS_SCREEN_DESKTOP    //   >= 800x600
+};
+
+// ----------------------------------------------------------------------------
+// wxSystemSettingsNative: defines the API for wxSystemSettings class
+// ----------------------------------------------------------------------------
+
+// this is a namespace rather than a class: it has only non virtual static
+// functions
+//
+// also note that the methods are implemented in the platform-specific source
+// files (i.e. this is not a real base class as we can't override its virtual
+// functions because it doesn't have any)
+
+class WXDLLIMPEXP_CORE wxSystemSettingsNative
+{
+public:
+    // get a standard system colour
+    static wxColour GetColour(wxSystemColour index);
+
+    // get a standard system font
+    static wxFont GetFont(wxSystemFont index);
+
+    // get a system-dependent metric
+    static int GetMetric(wxSystemMetric index, wxWindow * win = NULL);
+
+    // return true if the port has certain feature
+    static bool HasFeature(wxSystemFeature index);
+};
+
+// ----------------------------------------------------------------------------
+// include the declaration of the real platform-dependent class
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxSystemSettings : public wxSystemSettingsNative
+{
+public:
+#ifdef __WXUNIVERSAL__
+    // in wxUniversal we want to use the theme standard colours instead of the
+    // system ones, otherwise wxSystemSettings is just the same as
+    // wxSystemSettingsNative
+    static wxColour GetColour(wxSystemColour index);
+
+    // some metrics are toolkit-dependent and provided by wxUniv, some are
+    // lowlevel
+    static int GetMetric(wxSystemMetric index, wxWindow *win = NULL);
+#endif // __WXUNIVERSAL__
+
+    // Get system screen design (desktop, pda, ..) used for
+    // laying out various dialogs.
+    static wxSystemScreenType GetScreenType();
+
+    // Override default.
+    static void SetScreenType( wxSystemScreenType screen );
+
+    // Value
+    static wxSystemScreenType ms_screen;
+
+};
 
 #endif
-    // __SETTINGSH_BASE__
+    // _WX_SETTINGS_H_BASE_