Added to wxSystemSettings for better GTK+ themes compatibility

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2000-09-01 08:35:30 +00:00
parent cb281cfc8c
commit 37d403aa1c
16 changed files with 1453 additions and 361 deletions
Vendored
+307 -299
View File
File diff suppressed because it is too large Load Diff
+8
View File
@@ -14,6 +14,8 @@
#pragma interface
#endif
#include "wx/bitmap.h"
//-----------------------------------------------------------------------------
// wxMenuItem
//-----------------------------------------------------------------------------
@@ -34,6 +36,8 @@ public:
virtual void Enable( bool enable = TRUE );
virtual void Check( bool check = TRUE );
virtual bool IsChecked() const;
virtual void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
virtual const wxBitmap& GetBitmap() const { return m_bitmap; }
#if wxUSE_ACCEL
virtual wxAcceleratorEntry *GetAccel() const;
@@ -42,6 +46,8 @@ public:
// implementation
void SetMenuItem(GtkWidget *menuItem) { m_menuItem = menuItem; }
GtkWidget *GetMenuItem() const { return m_menuItem; }
GtkWidget *GetLabelWidget() const { return m_labelWidget; }
void SetLabelWidget(GtkWidget *labelWidget) { m_labelWidget = labelWidget; }
wxString GetFactoryPath() const;
wxString GetHotKey() const { return m_hotKey; }
@@ -52,8 +58,10 @@ private:
void DoSetText(const wxString& text);
wxString m_hotKey;
wxBitmap m_bitmap; // Bitmap for menuitem, if any
GtkWidget *m_menuItem; // GtkMenuItem
GtkWidget* m_labelWidget; // Label widget
DECLARE_DYNAMIC_CLASS(wxMenuItem)
};
+8
View File
@@ -14,6 +14,8 @@
#pragma interface
#endif
#include "wx/bitmap.h"
//-----------------------------------------------------------------------------
// wxMenuItem
//-----------------------------------------------------------------------------
@@ -34,6 +36,8 @@ public:
virtual void Enable( bool enable = TRUE );
virtual void Check( bool check = TRUE );
virtual bool IsChecked() const;
virtual void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
virtual const wxBitmap& GetBitmap() const { return m_bitmap; }
#if wxUSE_ACCEL
virtual wxAcceleratorEntry *GetAccel() const;
@@ -42,6 +46,8 @@ public:
// implementation
void SetMenuItem(GtkWidget *menuItem) { m_menuItem = menuItem; }
GtkWidget *GetMenuItem() const { return m_menuItem; }
GtkWidget *GetLabelWidget() const { return m_labelWidget; }
void SetLabelWidget(GtkWidget *labelWidget) { m_labelWidget = labelWidget; }
wxString GetFactoryPath() const;
wxString GetHotKey() const { return m_hotKey; }
@@ -52,8 +58,10 @@ private:
void DoSetText(const wxString& text);
wxString m_hotKey;
wxBitmap m_bitmap; // Bitmap for menuitem, if any
GtkWidget *m_menuItem; // GtkMenuItem
GtkWidget* m_labelWidget; // Label widget
DECLARE_DYNAMIC_CLASS(wxMenuItem)
};
+4
View File
@@ -63,6 +63,10 @@ public:
m_bmpUnchecked = bmpUnchecked;
m_bOwnerDrawn = TRUE; }
void SetBitmap(const wxBitmap& bmpChecked);
{ m_bmpChecked = bmpChecked;
m_bOwnerDrawn = TRUE; }
const wxBitmap& GetBitmap(bool bChecked = TRUE) const
{ return (bChecked ? m_bmpChecked : m_bmpUnchecked); }
+1 -1
View File
@@ -389,7 +389,7 @@ void MyFrame::FileOpen2(wxCommandEvent& WXUNUSED(event) )
s_extDef = path.AfterLast(_T('.'));
wxLogMessage(_T("You selected the file '%s', remembered extension '%s'"),
path, s_extDef);
(const wxChar*) path, (const wxChar*) s_extDef);
}
void MyFrame::FilesOpen(wxCommandEvent& WXUNUSED(event) )
+1 -1
View File
@@ -47,7 +47,7 @@ bool MyApp::OnInit()
// Problem with generic wxNotebook implementation whereby it doesn't size properly unless
// you set the size again
#if defined(__WIN16__)
#if defined(__WIN16__) || defined(__WXMOTIF__)
int width, height;
frame->GetSize(& width, & height);
frame->SetSize(-1, -1, width, height);
+2 -1
View File
@@ -1231,7 +1231,8 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
// do *not* use the listctrl colour for headers - one day we will have a
// function to set it separately
dc.SetTextForeground( *wxBLACK );
//dc.SetTextForeground( *wxBLACK );
dc.SetTextForeground(wxSystemSettings::GetSystemColour( wxSYS_COLOUR_WINDOWTEXT ));
int x = 1; // left of the header rect
const int y = 1; // top
+3 -2
View File
@@ -98,7 +98,8 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
// reset the cursor
#if defined(__WXMOTIF__) || defined(__WXGTK__)
SetCursor(* wxSTANDARD_CURSOR);
// Not necessary and in fact inhibits proper cursor setting (JACS 8/2000)
//SetCursor(* wxSTANDARD_CURSOR);
#endif
#ifdef __WXMSW__
SetCursor(wxNullCursor);
@@ -655,7 +656,7 @@ void wxSashWindow::SizeWindows()
void wxSashWindow::InitColours()
{
// Shadow colours
#if defined(__WIN95__)
#ifndef __WIN16__
m_faceColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
m_mediumShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW);
m_darkShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW);
+3 -3
View File
@@ -833,7 +833,7 @@ void wxSplitterWindow::InitColours()
wxDELETE( m_hilightPen );
// Shadow colours
#if defined(__WIN95__)
#ifndef __WIN16__
wxColour faceColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
m_facePen = new wxPen(faceColour, 1, wxSOLID);
m_faceBrush = new wxBrush(faceColour, wxSOLID);
@@ -849,14 +849,14 @@ void wxSplitterWindow::InitColours()
wxColour hilightColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHILIGHT));
m_hilightPen = new wxPen(hilightColour, 1, wxSOLID);
#else // !Win32
#else
m_facePen = new wxPen("LIGHT GREY", 1, wxSOLID);
m_faceBrush = new wxBrush("LIGHT GREY", wxSOLID);
m_mediumShadowPen = new wxPen("GREY", 1, wxSOLID);
m_darkShadowPen = new wxPen("BLACK", 1, wxSOLID);
m_lightShadowPen = new wxPen("LIGHT GREY", 1, wxSOLID);
m_hilightPen = new wxPen("WHITE", 1, wxSOLID);
#endif // Win32/!Win32
#endif // __WIN16__
}
void wxSplitterWindow::SendUnsplitEvent(wxWindow *winRemoved)
+2 -1
View File
@@ -179,6 +179,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
if ( GetFont().Ok() )
dc.SetFont(GetFont());
dc.SetBackgroundMode(wxTRANSPARENT);
dc.SetTextForeground(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT));
for ( i = 0; i < m_nFields; i ++ )
DrawField(dc, i);
@@ -320,7 +321,7 @@ bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const
void wxStatusBarGeneric::InitColours()
{
// Shadow colours
#if defined(__WIN95__)
#ifndef __WIN16__
wxColour mediumShadowColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW));
m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID);
+1 -1
View File
@@ -1818,7 +1818,7 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level
if ( attr && attr->HasTextColour() )
colText = attr->GetTextColour();
else
colText = *wxBLACK;
colText = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_WINDOWTEXT );
}
// prepare to draw
+475 -3
View File
File diff suppressed because it is too large Load Diff
+75 -2
View File
@@ -69,6 +69,7 @@ wxColour *g_systemBtnHighlightColour = (wxColour *) NULL;
wxColour *g_systemHighlightColour = (wxColour *) NULL;
wxColour *g_systemHighlightTextColour = (wxColour *) NULL;
wxColour *g_systemListBoxColour = (wxColour *) NULL;
wxColour *g_systemBtnTextColour = (wxColour *) NULL;
wxFont *g_systemFont = (wxFont *) NULL;
@@ -82,6 +83,7 @@ void wxSystemSettings::Done()
delete g_systemHighlightTextColour;
delete g_systemListBoxColour;
delete g_systemFont;
delete g_systemBtnTextColour;
}
wxColour wxSystemSettings::GetSystemColour( int index )
@@ -99,6 +101,34 @@ wxColour wxSystemSettings::GetSystemColour( int index )
case wxSYS_COLOUR_BTNFACE:
case wxSYS_COLOUR_3DLIGHT:
{
if (!g_systemBtnFaceColour)
{
GtkWidget *widget = gtk_button_new();
GtkStyle *def = gtk_rc_get_style( widget );
if (!def)
def = gtk_widget_get_default_style();
if (def)
{
int red = def->bg[GTK_STATE_NORMAL].red;
int green = def->bg[GTK_STATE_NORMAL].green;
int blue = def->bg[GTK_STATE_NORMAL].blue;
g_systemBtnFaceColour =
new wxColour( red >> SHIFT,
green >> SHIFT,
blue >> SHIFT );
}
else
{
g_systemBtnFaceColour =
new wxColour( 0 >> SHIFT,
0 >> SHIFT,
0x9c40 >> SHIFT );
}
gtk_widget_destroy( widget );
}
return *g_systemBtnFaceColour;
/*
if (!g_systemBtnFaceColour)
{
g_systemBtnFaceColour =
@@ -107,14 +137,29 @@ wxColour wxSystemSettings::GetSystemColour( int index )
0xd6d6 >> SHIFT );
}
return *g_systemBtnFaceColour;
*/
}
case wxSYS_COLOUR_WINDOW:
{
return *wxWHITE;
}
case wxSYS_COLOUR_3DDKSHADOW:
{
return *wxBLACK;
}
case wxSYS_COLOUR_GRAYTEXT:
case wxSYS_COLOUR_BTNSHADOW:
//case wxSYS_COLOUR_3DSHADOW:
{
if (!g_systemBtnShadowColour)
{
wxColour faceColour(GetSystemColour(wxSYS_COLOUR_3DFACE));
g_systemBtnShadowColour =
new wxColour(faceColour.Red() * 0.666,
faceColour.Green() * 0.666,
faceColour.Blue() * 0.666);
}
/*
if (!g_systemBtnShadowColour)
{
g_systemBtnShadowColour =
@@ -122,10 +167,14 @@ wxColour wxSystemSettings::GetSystemColour( int index )
0x7530 >> SHIFT,
0x7530 >> SHIFT );
}
*/
return *g_systemBtnShadowColour;
}
case wxSYS_COLOUR_BTNHIGHLIGHT:
case wxSYS_COLOUR_3DHIGHLIGHT:
//case wxSYS_COLOUR_BTNHIGHLIGHT:
{
return * wxWHITE;
/* I think this should normally be white (JACS 8/2000)
if (!g_systemBtnHighlightColour)
{
g_systemBtnHighlightColour =
@@ -134,6 +183,7 @@ wxColour wxSystemSettings::GetSystemColour( int index )
0xea60 >> SHIFT );
}
return *g_systemBtnHighlightColour;
*/
}
case wxSYS_COLOUR_HIGHLIGHT:
{
@@ -196,7 +246,30 @@ wxColour wxSystemSettings::GetSystemColour( int index )
case wxSYS_COLOUR_BTNTEXT:
case wxSYS_COLOUR_INFOTEXT:
{
return *wxBLACK;
if (!g_systemBtnTextColour)
{
GtkWidget *widget = gtk_button_new();
GtkStyle *def = gtk_rc_get_style( widget );
if (!def)
def = gtk_widget_get_default_style();
if (def)
{
int red = def->fg[GTK_STATE_NORMAL].red;
int green = def->fg[GTK_STATE_NORMAL].green;
int blue = def->fg[GTK_STATE_NORMAL].blue;
g_systemBtnTextColour =
new wxColour( red >> SHIFT,
green >> SHIFT,
blue >> SHIFT );
}
else
{
g_systemBtnTextColour =
new wxColour(0, 0, 0);
}
gtk_widget_destroy( widget );
}
return *g_systemBtnTextColour;
}
case wxSYS_COLOUR_HIGHLIGHTTEXT:
{
+475 -3
View File
File diff suppressed because it is too large Load Diff
+75 -2
View File
@@ -69,6 +69,7 @@ wxColour *g_systemBtnHighlightColour = (wxColour *) NULL;
wxColour *g_systemHighlightColour = (wxColour *) NULL;
wxColour *g_systemHighlightTextColour = (wxColour *) NULL;
wxColour *g_systemListBoxColour = (wxColour *) NULL;
wxColour *g_systemBtnTextColour = (wxColour *) NULL;
wxFont *g_systemFont = (wxFont *) NULL;
@@ -82,6 +83,7 @@ void wxSystemSettings::Done()
delete g_systemHighlightTextColour;
delete g_systemListBoxColour;
delete g_systemFont;
delete g_systemBtnTextColour;
}
wxColour wxSystemSettings::GetSystemColour( int index )
@@ -99,6 +101,34 @@ wxColour wxSystemSettings::GetSystemColour( int index )
case wxSYS_COLOUR_BTNFACE:
case wxSYS_COLOUR_3DLIGHT:
{
if (!g_systemBtnFaceColour)
{
GtkWidget *widget = gtk_button_new();
GtkStyle *def = gtk_rc_get_style( widget );
if (!def)
def = gtk_widget_get_default_style();
if (def)
{
int red = def->bg[GTK_STATE_NORMAL].red;
int green = def->bg[GTK_STATE_NORMAL].green;
int blue = def->bg[GTK_STATE_NORMAL].blue;
g_systemBtnFaceColour =
new wxColour( red >> SHIFT,
green >> SHIFT,
blue >> SHIFT );
}
else
{
g_systemBtnFaceColour =
new wxColour( 0 >> SHIFT,
0 >> SHIFT,
0x9c40 >> SHIFT );
}
gtk_widget_destroy( widget );
}
return *g_systemBtnFaceColour;
/*
if (!g_systemBtnFaceColour)
{
g_systemBtnFaceColour =
@@ -107,14 +137,29 @@ wxColour wxSystemSettings::GetSystemColour( int index )
0xd6d6 >> SHIFT );
}
return *g_systemBtnFaceColour;
*/
}
case wxSYS_COLOUR_WINDOW:
{
return *wxWHITE;
}
case wxSYS_COLOUR_3DDKSHADOW:
{
return *wxBLACK;
}
case wxSYS_COLOUR_GRAYTEXT:
case wxSYS_COLOUR_BTNSHADOW:
//case wxSYS_COLOUR_3DSHADOW:
{
if (!g_systemBtnShadowColour)
{
wxColour faceColour(GetSystemColour(wxSYS_COLOUR_3DFACE));
g_systemBtnShadowColour =
new wxColour(faceColour.Red() * 0.666,
faceColour.Green() * 0.666,
faceColour.Blue() * 0.666);
}
/*
if (!g_systemBtnShadowColour)
{
g_systemBtnShadowColour =
@@ -122,10 +167,14 @@ wxColour wxSystemSettings::GetSystemColour( int index )
0x7530 >> SHIFT,
0x7530 >> SHIFT );
}
*/
return *g_systemBtnShadowColour;
}
case wxSYS_COLOUR_BTNHIGHLIGHT:
case wxSYS_COLOUR_3DHIGHLIGHT:
//case wxSYS_COLOUR_BTNHIGHLIGHT:
{
return * wxWHITE;
/* I think this should normally be white (JACS 8/2000)
if (!g_systemBtnHighlightColour)
{
g_systemBtnHighlightColour =
@@ -134,6 +183,7 @@ wxColour wxSystemSettings::GetSystemColour( int index )
0xea60 >> SHIFT );
}
return *g_systemBtnHighlightColour;
*/
}
case wxSYS_COLOUR_HIGHLIGHT:
{
@@ -196,7 +246,30 @@ wxColour wxSystemSettings::GetSystemColour( int index )
case wxSYS_COLOUR_BTNTEXT:
case wxSYS_COLOUR_INFOTEXT:
{
return *wxBLACK;
if (!g_systemBtnTextColour)
{
GtkWidget *widget = gtk_button_new();
GtkStyle *def = gtk_rc_get_style( widget );
if (!def)
def = gtk_widget_get_default_style();
if (def)
{
int red = def->fg[GTK_STATE_NORMAL].red;
int green = def->fg[GTK_STATE_NORMAL].green;
int blue = def->fg[GTK_STATE_NORMAL].blue;
g_systemBtnTextColour =
new wxColour( red >> SHIFT,
green >> SHIFT,
blue >> SHIFT );
}
else
{
g_systemBtnTextColour =
new wxColour(0, 0, 0);
}
gtk_widget_destroy( widget );
}
return *g_systemBtnTextColour;
}
case wxSYS_COLOUR_HIGHLIGHTTEXT:
{
+13 -42
View File
@@ -1,51 +1,22 @@
# Generated automatically from Makefile.in by configure.
#
# File: Makefile
# Author: Robert Roebling
# Created: 1999
# File: makefile.unx
# Author: Julian Smart
# Created: 1998
# Updated:
# Copyright: (c) 1998 Robert Roebling
# Copyright: (c) 1998 Julian Smart
#
# Makefile for Dialog Editor (GTK version)
#
# This makefile requires wxWindows/GTK to be
# installed (possibly using "make install")
# on your system.
# "%W% %G%"
#
# Makefile for Tex2RTF (Unix)
CC = g++
top_srcdir = ../../..
top_builddir = ../../..
program_dir = utils/dialoged/src
DialogEd: dialoged.o dlghndlr.o edlist.o edtree.o reseditr.o reswrite.o \
symbtabl.o winprop.o winstyle.o
$(CC) -o DialogEd \
dialoged.o dlghndlr.o edlist.o edtree.o reseditr.o reswrite.o \
symbtabl.o winprop.o winstyle.o `wx-config --libs`
PROGRAM=DialogEd
dialoged.o: dialoged.cpp
$(CC) `wx-config --cflags` -c dialoged.cpp
OBJECTS = dialoged.o dlghndlr.o edlist.o edtree.o reseditr.o reswrite.o symbtabl.o winprop.o winstyle.o
dlghndlr.o: dlghndlr.cpp
$(CC) `wx-config --cflags` -c dlghndlr.cpp
include ../../../src/makeprog.env
edlist.o: edlist.cpp
$(CC) `wx-config --cflags` -c edlist.cpp
edtree.o: edtree.cpp
$(CC) `wx-config --cflags` -c edtree.cpp
reseditr.o: reseditr.cpp
$(CC) `wx-config --cflags` -c reseditr.cpp
reswrite.o: reswrite.cpp
$(CC) `wx-config --cflags` -c reswrite.cpp
symbtabl.o: symbtabl.cpp
$(CC) `wx-config --cflags` -c symbtabl.cpp
winprop.o: winprop.cpp
$(CC) `wx-config --cflags` -c winprop.cpp
winstyle.o: winstyle.cpp
$(CC) `wx-config --cflags` -c winstyle.cpp
clean:
rm -f *.o DialogEd