/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "settings.h"
#endif
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
#include "wx/settings.h"
#include "wx/debug.h"
#include "wx/module.h"
#include "wx/cmndata.h"
+#include "wx/fontutil.h"
#include <gdk/gdk.h>
#include <gdk/gdkprivate.h>
#include <gtk/gtk.h>
-extern GdkFont *GtkGetDefaultGuiFont();
-
-
-/*
-#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
-*/
-
#define SHIFT (8*(sizeof(short int)-sizeof(char)))
//wxColour *g_systemWinColour = (wxColour *) NULL;
wxGTK_BASE
};
-// wxSystemSettings::GetSystemColour() helper: get the colours from a GTK+
+// wxSystemSettings::GetColour() helper: get the colours from a GTK+
// widget style, return true if we did get them, false to use defaults
static bool GetColourFromGTKWidget(int& red, int& green, int& blue,
wxGtkWidgetType type = wxGTK_BUTTON,
case wxSYS_COLOUR_ACTIVEBORDER:
case wxSYS_COLOUR_INACTIVEBORDER:
case wxSYS_COLOUR_BTNFACE:
+ case wxSYS_COLOUR_MENUBAR:
case wxSYS_COLOUR_3DLIGHT:
if (!g_systemBtnFaceColour)
{
//case wxSYS_COLOUR_3DSHADOW:
if (!g_systemBtnShadowColour)
{
- wxColour faceColour(GetSystemColour(wxSYS_COLOUR_3DFACE));
+ wxColour faceColour(GetColour(wxSYS_COLOUR_3DFACE));
g_systemBtnShadowColour =
new wxColour((unsigned char) (faceColour.Red() * 0.666),
(unsigned char) (faceColour.Green() * 0.666),
}
return *g_systemBtnTextColour;
+ // this (as well as wxSYS_COLOUR_INFOTEXT above) is used for
+ // tooltip windows - Robert, please change this code to use the
+ // real GTK tooltips when/if you can (TODO)
+ case wxSYS_COLOUR_INFOBK:
+ return wxColour(255, 255, 225);
+
case wxSYS_COLOUR_HIGHLIGHTTEXT:
if (!g_systemHighlightTextColour)
{
- wxColour hclr = GetSystemColour(wxSYS_COLOUR_HIGHLIGHT);
+ wxColour hclr = GetColour(wxSYS_COLOUR_HIGHLIGHT);
if (hclr.Red() > 200 && hclr.Green() > 200 && hclr.Blue() > 200)
g_systemHighlightTextColour = new wxColour(*wxBLACK);
else
}
return *g_systemHighlightTextColour;
- case wxSYS_COLOUR_INFOBK:
case wxSYS_COLOUR_APPWORKSPACE:
return *wxWHITE; // ?
+
+ case wxSYS_COLOUR_HOTLIGHT:
+ case wxSYS_COLOUR_GRADIENTACTIVECAPTION:
+ case wxSYS_COLOUR_GRADIENTINACTIVECAPTION:
+ case wxSYS_COLOUR_MENUHILIGHT:
+ // TODO
+ return *wxBLACK;
+
+ case wxSYS_COLOUR_MAX:
+ default:
+ wxFAIL_MSG( _T("unknown system colour index") );
}
return *wxWHITE;
{
if (!g_systemFont)
{
-#if 0
- GdkFont *gdk_font = GtkGetDefaultGuiFont();
- if (gdk_font)
- {
- GSList *font_list = ((GdkFontPrivate*)gdk_font)->names;
- char *name = (char*)font_list->data;
- wxString font_string( name );
- wxFontData font_data;
- g_systemFont = new wxFont( font_string, font_data );
- }
+#ifdef __WXGTK20__
+ GtkWidget *widget = gtk_button_new();
+ GtkStyle *def = gtk_rc_get_style( widget );
+ if ( !def || !def->font_desc )
+ def = gtk_widget_get_default_style();
+ if ( def && def->font_desc )
+ {
+ wxNativeFontInfo info;
+ info.description = def->font_desc;
+ g_systemFont = new wxFont(info);
+ }
+ else
+ {
+ const gchar *font_name =
+ _gtk_rc_context_get_default_font_name(gtk_settings_get_default());
+ g_systemFont = new wxFont(wxString::FromAscii(font_name));
+ }
gtk_widget_destroy( widget );
-#endif
-
+#else
g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
-
+#endif
}
return *g_systemFont;
}
case wxSYS_SCREEN_Y: return gdk_screen_height();
case wxSYS_HSCROLL_Y: return 15;
case wxSYS_VSCROLL_X: return 15;
+
+ // VZ: is there any way to get the cursor size with GDK?
+ case wxSYS_CURSOR_X: return 16;
+ case wxSYS_CURSOR_Y: return 16;
+ // MBN: ditto for icons
+ case wxSYS_ICON_X: return 32;
+ case wxSYS_ICON_Y: return 32;
default:
wxFAIL_MSG( wxT("wxSystemSettings::GetMetric not fully implemented") );
return 0;