// to override this here too...
virtual bool ShouldInheritColours() const { return false; }
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
virtual wxSize DoGetBestSize() const;
virtual void SetLabel( const wxString& label );
virtual bool Enable( bool enable = TRUE );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
wxString GetString( int n ) const;
void SetString( int n, const wxString& string );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
wxList m_clientList; // contains the client data for the items
virtual wxSize DoGetBestSize() const;
virtual bool IsOwnGtkWindow( GdkWindow *window );
+
private:
// common part of Create() and DoAppend()
int GtkAddHelper(GtkWidget *menu, int pos, const wxString& item);
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
virtual int DoAppend(const wxString& item);
virtual int DoInsert(const wxString& item, int pos);
virtual wxSize DoGetBestSize() const;
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox)
DECLARE_EVENT_TABLE()
virtual void SetLabel( const wxString &label );
virtual wxString GetLabel() const;
+ virtual wxVisualAttributes GetDefaultAttributes() const;
+
protected:
virtual wxSize DoGetBestSize() const;
void PostCreation(const wxSize& size);
wxString PrepareLabelMnemonics( const wxString &label ) const;
#endif
+ // These are used by GetDefaultAttributes
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
+ bool useBase = false,
+ int state = -1);
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(void),
+ bool useBase = false,
+ int state = -1);
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(const gchar*),
+ bool useBase = false,
+ int state = -1);
+
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(GtkAdjustment*),
+ bool useBase = false,
+ int state = -1);
+
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return false; }
+
wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on
bool IsVertical() const { return HasFlag(wxGA_VERTICAL); }
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// -------------
virtual wxSize DoGetBestSize() const;
+ virtual wxVisualAttributes GetDefaultAttributes() const;
+
private:
DECLARE_DYNAMIC_CLASS(wxGauge)
};
virtual void DoSetItemClientObject(int n, wxClientData* clientData);
virtual wxClientData* DoGetItemClientObject(int n) const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation from now on
void GtkAddItem( const wxString &item, int pos=-1 );
// return the string label for the given item
wxString GetRealLabel(struct _GList *item) const;
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
// this array is only used for controls with wxCB_SORT style, so only
// allocate it if it's needed (hence using pointer)
// --------------------------
void OnNavigationKey(wxNavigationKeyEvent& event);
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
virtual bool Show( bool show = TRUE );
virtual bool Enable( bool enable = TRUE );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
virtual bool GetValue() const;
virtual bool Enable( bool enable = TRUE );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
virtual bool IsRadioButton() const { return TRUE; }
void SetObjectLength( int objectLength );
void SetViewLength( int viewLength );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
virtual void SetThumbLength(int lenPixels);
virtual int GetThumbLength() const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle();
virtual int GetMin() const;
virtual int GetMax() const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
void OnSize( wxSizeEvent &event );
virtual int GetMin() const;
virtual int GetMax() const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
void OnChar( wxKeyEvent &event );
protected:
virtual wxSize DoGetBestSize() const;
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
DECLARE_EVENT_TABLE()
return (const wxIcon &)m_bitmap;
}
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
private:
// creates the new pixmap widget
void CreatePixmapWidget();
virtual void SetLabel( const wxString &label );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
virtual void ApplyWidgetStyle();
bool Create( wxWindow *parent, wxWindowID id,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
long style = wxLI_HORIZONTAL, const wxString &name = wxStaticTextNameStr );
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
};
#endif
bool SetFont( const wxFont &font );
bool SetForegroundColour( const wxColour& colour );
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
// implementation
// --------------
virtual void SetWindowStyleFlag( long style );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation from now on
// --------------------------
// should we ignore the changed signal? always resets the flag
bool IgnoreTextUpdate();
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
virtual wxSize DoGetBestSize() const;
// scroll position changed
bool DoScroll(GtkAdjustment *adj, int diff);
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
// change the font for everything in this control
void ChangeFontGlobally();
void SetLabel(const wxBitmap& label);
bool Enable(bool enable = TRUE);
-
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
bool m_blockEvent;
wxBitmap m_bitmap;
private:
DECLARE_DYNAMIC_CLASS(wxToggleBitmapButton)
};
+
//-----------------------------------------------------------------------------
// wxToggleButton
//-----------------------------------------------------------------------------
void SetLabel(const wxString& label);
bool Enable(bool enable = TRUE);
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
// implementation
bool m_blockEvent;
// to override this here too...
virtual bool ShouldInheritColours() const { return false; }
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
virtual wxSize DoGetBestSize() const;
virtual void SetLabel( const wxString& label );
virtual bool Enable( bool enable = TRUE );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
wxString GetString( int n ) const;
void SetString( int n, const wxString& string );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
wxList m_clientList; // contains the client data for the items
virtual wxSize DoGetBestSize() const;
virtual bool IsOwnGtkWindow( GdkWindow *window );
+
private:
// common part of Create() and DoAppend()
int GtkAddHelper(GtkWidget *menu, int pos, const wxString& item);
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
virtual int DoAppend(const wxString& item);
virtual int DoInsert(const wxString& item, int pos);
virtual wxSize DoGetBestSize() const;
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox)
DECLARE_EVENT_TABLE()
virtual void SetLabel( const wxString &label );
virtual wxString GetLabel() const;
+ virtual wxVisualAttributes GetDefaultAttributes() const;
+
protected:
virtual wxSize DoGetBestSize() const;
void PostCreation(const wxSize& size);
wxString PrepareLabelMnemonics( const wxString &label ) const;
#endif
+ // These are used by GetDefaultAttributes
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
+ bool useBase = false,
+ int state = -1);
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(void),
+ bool useBase = false,
+ int state = -1);
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(const gchar*),
+ bool useBase = false,
+ int state = -1);
+
+ static wxVisualAttributes
+ GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(GtkAdjustment*),
+ bool useBase = false,
+ int state = -1);
+
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return false; }
+
wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on
bool IsVertical() const { return HasFlag(wxGA_VERTICAL); }
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// -------------
virtual wxSize DoGetBestSize() const;
+ virtual wxVisualAttributes GetDefaultAttributes() const;
+
private:
DECLARE_DYNAMIC_CLASS(wxGauge)
};
virtual void DoSetItemClientObject(int n, wxClientData* clientData);
virtual wxClientData* DoGetItemClientObject(int n) const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation from now on
void GtkAddItem( const wxString &item, int pos=-1 );
// return the string label for the given item
wxString GetRealLabel(struct _GList *item) const;
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
// this array is only used for controls with wxCB_SORT style, so only
// allocate it if it's needed (hence using pointer)
// --------------------------
void OnNavigationKey(wxNavigationKeyEvent& event);
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
virtual bool Show( bool show = TRUE );
virtual bool Enable( bool enable = TRUE );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
virtual bool GetValue() const;
virtual bool Enable( bool enable = TRUE );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
virtual bool IsRadioButton() const { return TRUE; }
void SetObjectLength( int objectLength );
void SetViewLength( int viewLength );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
// --------------
virtual void SetThumbLength(int lenPixels);
virtual int GetThumbLength() const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle();
virtual int GetMin() const;
virtual int GetMax() const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
void OnSize( wxSizeEvent &event );
virtual int GetMin() const;
virtual int GetMax() const;
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
void OnChar( wxKeyEvent &event );
protected:
virtual wxSize DoGetBestSize() const;
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
DECLARE_EVENT_TABLE()
return (const wxIcon &)m_bitmap;
}
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
private:
// creates the new pixmap widget
void CreatePixmapWidget();
virtual void SetLabel( const wxString &label );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
virtual void ApplyWidgetStyle();
bool Create( wxWindow *parent, wxWindowID id,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
long style = wxLI_HORIZONTAL, const wxString &name = wxStaticTextNameStr );
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
};
#endif
bool SetFont( const wxFont &font );
bool SetForegroundColour( const wxColour& colour );
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
// implementation
// --------------
virtual void SetWindowStyleFlag( long style );
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation from now on
// --------------------------
// should we ignore the changed signal? always resets the flag
bool IgnoreTextUpdate();
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
protected:
virtual wxSize DoGetBestSize() const;
// scroll position changed
bool DoScroll(GtkAdjustment *adj, int diff);
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
private:
// change the font for everything in this control
void ChangeFontGlobally();
void SetLabel(const wxBitmap& label);
bool Enable(bool enable = TRUE);
-
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
// implementation
bool m_blockEvent;
wxBitmap m_bitmap;
private:
DECLARE_DYNAMIC_CLASS(wxToggleBitmapButton)
};
+
//-----------------------------------------------------------------------------
// wxToggleButton
//-----------------------------------------------------------------------------
void SetLabel(const wxString& label);
bool Enable(bool enable = TRUE);
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
// implementation
bool m_blockEvent;
return ret;
}
+// static
+wxVisualAttributes
+wxButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+}
+
#endif // wxUSE_BUTTON
return wxControl::DoGetBestSize();
}
+// static
+wxVisualAttributes
+wxCheckBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_check_button_new);
+}
+
#endif
#endif
}
+// static
+wxVisualAttributes
+wxChoice::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_option_menu_new);
+}
+
#endif // wxUSE_CHOICE
return ret;
}
+// static
+wxVisualAttributes
+wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_combo_new, true);
+}
+
#endif
#if wxUSE_CONTROLS
#include "wx/control.h"
+#include "wx/fontutil.h"
+#include "wx/settings.h"
#include <gtk/gtk.h>
}
#endif
+
+wxVisualAttributes wxControl::GetDefaultAttributes() const
+{
+ return GetDefaultAttributesFromGTKWidget(m_widget,
+ UseGTKStyleBase());
+}
+
+
+#define SHIFT (8*(sizeof(short int)-sizeof(char)))
+
+// static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
+ bool useBase,
+ int state)
+{
+ GtkStyle* style;
+ wxVisualAttributes attr;
+
+ style = gtk_rc_get_style(widget);
+ if (!style)
+ style = gtk_widget_get_default_style();
+
+ if (!style)
+ {
+ return wxWindow::GetClassDefaultAttributes(wxWINDOW_VARIANT_NORMAL);
+ }
+
+ if (state == -1)
+ state = GTK_STATE_NORMAL;
+
+ // get the style's colours
+ attr.colFg = wxColour(style->fg[state].red >> SHIFT,
+ style->fg[state].green >> SHIFT,
+ style->fg[state].blue >> SHIFT);
+ if (useBase)
+ attr.colBg = wxColour(style->base[state].red >> SHIFT,
+ style->base[state].green >> SHIFT,
+ style->base[state].blue >> SHIFT);
+ else
+ attr.colBg = wxColour(style->bg[state].red >> SHIFT,
+ style->bg[state].green >> SHIFT,
+ style->bg[state].blue >> SHIFT);
+
+ // get the style's font
+#ifdef __WXGTK20__
+ if ( !style->font_desc )
+ style = gtk_widget_get_default_style();
+ if ( style && style->font_desc )
+ {
+ wxNativeFontInfo info;
+ info.description = style->font_desc;
+ attr.font = wxFont(info);
+ }
+ else
+ {
+ GtkSettings *settings = gtk_settings_get_default();
+ gchar *font_name = NULL;
+ g_object_get ( settings,
+ "gtk-font-name",
+ &font_name,
+ NULL);
+ if (!font_name)
+ attr.font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
+ else
+ attr.font = wxFont(wxString::FromAscii(font_name));
+ g_free (font_name);
+ }
+#else
+ // TODO: isn't there a way to get a standard gtk 1.2 font?
+ attr.font = wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
+#endif
+
+ return attr;
+}
+
+
+//static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(void),
+ bool useBase,
+ int state)
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = widget_new();
+ attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+//static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(const gchar*),
+ bool useBase,
+ int state)
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = widget_new("");
+ attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+
+//static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(GtkAdjustment*),
+ bool useBase,
+ int state)
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = widget_new(NULL);
+ attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+
#endif // wxUSE_CONTROLS
gtk_widget_set_style( m_widget, m_widgetStyle );
}
+wxVisualAttributes wxGauge::GetDefaultAttributes() const
+{
+ // Visible gauge colours use a different colour state
+ return GetDefaultAttributesFromGTKWidget(m_widget,
+ UseGTKStyleBase(),
+ GTK_STATE_ACTIVE);
+
+}
+
+// static
+wxVisualAttributes
+wxGauge::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_progress_bar_new,
+ false, GTK_STATE_ACTIVE);
+}
+
#endif // wxUSE_GAUGE
y += widget->allocation.y;
}
+
+// static
+wxVisualAttributes
+wxListBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_list_new, true);
+}
+
#endif // wxUSE_LISTBOX
return rc;
}
+// static
+wxVisualAttributes
+wxNotebook::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_notebook_new);
+}
+
//-----------------------------------------------------------------------------
// wxNotebookEvent
//-----------------------------------------------------------------------------
}
}
+// static
+wxVisualAttributes
+wxRadioBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
+ attr = GetDefaultAttributesFromGTKWidget(widget);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
#endif // wxUSE_RADIOBOX
return wxControl::DoGetBestSize();
}
+// static
+wxVisualAttributes
+wxRadioButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
+ attr = GetDefaultAttributesFromGTKWidget(widget);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+
#endif
return wxControl::DoGetBestSize();
}
+// static
+wxVisualAttributes
+wxScrollBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_vscrollbar_new);
+}
+
#endif
(gpointer) this );
}
+// static
+wxVisualAttributes
+wxSlider::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_vscale_new);
+}
+
#endif
return wxSize(15, 26);
}
+// static
+wxVisualAttributes
+wxSpinButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ // TODO: overload to accept functions like gtk_spin_button_new?
+ // Until then use a similar type
+ return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+}
+
#endif
return wxSize(95, ret.y);
}
+// static
+wxVisualAttributes
+wxSpinCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ // TODO: overload to accept functions like gtk_spin_button_new?
+ // Until then use a similar type
+ return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+}
+
#endif
// wxUSE_SPINCTRL
}
}
+// static
+wxVisualAttributes
+wxStaticBitmap::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ // TODO: overload to allow using gtk_pixmap_new?
+ return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+}
+
#endif // wxUSE_STATBMP
gtk_widget_set_style( m_widget, m_widgetStyle );
}
+// static
+wxVisualAttributes
+wxStaticBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_frame_new);
+}
+
#endif // wxUSE_STATBOX
return TRUE;
}
+// static
+wxVisualAttributes
+wxStaticLine::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_vseparator_new);
+}
+
#endif
return true;
}
+// static
+wxVisualAttributes
+wxStaticText::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+}
+
#endif // wxUSE_STATTEXT
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
+
+// ----------------------------------------------------------------------------
+
+// static
+wxVisualAttributes
+wxToolBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+#ifdef __WXGTK20__
+ return GetDefaultAttributesFromGTKWidget(gtk_toolbar_new);
+#else
+ wxVisualAttributes attr;
+ GtkWidget* widget = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
+ attr = GetDefaultAttributesFromGTKWidget(widget);
+ gtk_widget_destroy(widget);
+ return attr;
+#endif
+}
+
#endif // wxUSE_TOOLBAR_NATIVE
gtk_container_add( GTK_CONTAINER(m_widget), m_text );
// Global settings which can be overridden by tags, I guess.
- if (HasFlag( wxHSCROLL ))
+ if (HasFlag( wxHSCROLL ) || HasFlag( wxTE_DONTWRAP ))
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), GTK_WRAP_NONE );
else
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), GTK_WRAP_WORD );
#ifdef __WXGTK20__
else
gtk_text_view_set_editable( GTK_TEXT_VIEW( m_text), FALSE);
- }
#else
}
else
{
if (multi_line)
gtk_text_set_editable( GTK_TEXT(m_text), 1 );
- }
#endif
+ }
+
// We want to be notified about text changes.
#ifdef __WXGTK20__
if (multi_line)
}
else
#endif
+
{
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
}
- // we don't set a valid background colour, because the window
- // manager should use a default one
- m_backgroundColour = wxColour();
-
- wxColour colFg = parent->GetForegroundColour();
- SetForegroundColour( colFg );
-
m_cursor = wxCursor( wxCURSOR_IBEAM );
- wxTextAttr attrDef( colFg, m_backgroundColour, parent->GetFont() );
+ wxTextAttr attrDef(GetForegroundColour(), GetBackgroundColour(), GetFont());
SetDefaultStyle( attrDef );
return TRUE;
}
+
void wxTextCtrl::CalculateScrollbar()
{
#ifndef __WXGTK20__
void wxTextCtrl::ApplyWidgetStyle()
{
- if (m_windowStyle & wxTE_MULTILINE)
- {
- // how ?
- }
- else
+// if (m_windowStyle & wxTE_MULTILINE)
+// {
+// // how ?
+// }
+// else
{
SetWidgetStyle();
gtk_widget_set_style( m_text, m_widgetStyle );
#endif
}
+
+// static
+wxVisualAttributes
+wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+}
}
return best;
}
+
+
+// static
+wxVisualAttributes
+wxToggleBitmapButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
+}
+
+
// ------------------------------------------------------------------------
// wxToggleButton
// ------------------------------------------------------------------------
return ret;
}
+// static
+wxVisualAttributes
+wxToggleButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
+}
+
#endif // wxUSE_TOGGLEBTN
return ret;
}
+// static
+wxVisualAttributes
+wxButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+}
+
#endif // wxUSE_BUTTON
return wxControl::DoGetBestSize();
}
+// static
+wxVisualAttributes
+wxCheckBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_check_button_new);
+}
+
#endif
#endif
}
+// static
+wxVisualAttributes
+wxChoice::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_option_menu_new);
+}
+
#endif // wxUSE_CHOICE
return ret;
}
+// static
+wxVisualAttributes
+wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_combo_new, true);
+}
+
#endif
#if wxUSE_CONTROLS
#include "wx/control.h"
+#include "wx/fontutil.h"
+#include "wx/settings.h"
#include <gtk/gtk.h>
}
#endif
+
+wxVisualAttributes wxControl::GetDefaultAttributes() const
+{
+ return GetDefaultAttributesFromGTKWidget(m_widget,
+ UseGTKStyleBase());
+}
+
+
+#define SHIFT (8*(sizeof(short int)-sizeof(char)))
+
+// static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
+ bool useBase,
+ int state)
+{
+ GtkStyle* style;
+ wxVisualAttributes attr;
+
+ style = gtk_rc_get_style(widget);
+ if (!style)
+ style = gtk_widget_get_default_style();
+
+ if (!style)
+ {
+ return wxWindow::GetClassDefaultAttributes(wxWINDOW_VARIANT_NORMAL);
+ }
+
+ if (state == -1)
+ state = GTK_STATE_NORMAL;
+
+ // get the style's colours
+ attr.colFg = wxColour(style->fg[state].red >> SHIFT,
+ style->fg[state].green >> SHIFT,
+ style->fg[state].blue >> SHIFT);
+ if (useBase)
+ attr.colBg = wxColour(style->base[state].red >> SHIFT,
+ style->base[state].green >> SHIFT,
+ style->base[state].blue >> SHIFT);
+ else
+ attr.colBg = wxColour(style->bg[state].red >> SHIFT,
+ style->bg[state].green >> SHIFT,
+ style->bg[state].blue >> SHIFT);
+
+ // get the style's font
+#ifdef __WXGTK20__
+ if ( !style->font_desc )
+ style = gtk_widget_get_default_style();
+ if ( style && style->font_desc )
+ {
+ wxNativeFontInfo info;
+ info.description = style->font_desc;
+ attr.font = wxFont(info);
+ }
+ else
+ {
+ GtkSettings *settings = gtk_settings_get_default();
+ gchar *font_name = NULL;
+ g_object_get ( settings,
+ "gtk-font-name",
+ &font_name,
+ NULL);
+ if (!font_name)
+ attr.font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
+ else
+ attr.font = wxFont(wxString::FromAscii(font_name));
+ g_free (font_name);
+ }
+#else
+ // TODO: isn't there a way to get a standard gtk 1.2 font?
+ attr.font = wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
+#endif
+
+ return attr;
+}
+
+
+//static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(void),
+ bool useBase,
+ int state)
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = widget_new();
+ attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+//static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(const gchar*),
+ bool useBase,
+ int state)
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = widget_new("");
+ attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+
+//static
+wxVisualAttributes
+wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* (*widget_new)(GtkAdjustment*),
+ bool useBase,
+ int state)
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = widget_new(NULL);
+ attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+
#endif // wxUSE_CONTROLS
gtk_widget_set_style( m_widget, m_widgetStyle );
}
+wxVisualAttributes wxGauge::GetDefaultAttributes() const
+{
+ // Visible gauge colours use a different colour state
+ return GetDefaultAttributesFromGTKWidget(m_widget,
+ UseGTKStyleBase(),
+ GTK_STATE_ACTIVE);
+
+}
+
+// static
+wxVisualAttributes
+wxGauge::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_progress_bar_new,
+ false, GTK_STATE_ACTIVE);
+}
+
#endif // wxUSE_GAUGE
y += widget->allocation.y;
}
+
+// static
+wxVisualAttributes
+wxListBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_list_new, true);
+}
+
#endif // wxUSE_LISTBOX
return rc;
}
+// static
+wxVisualAttributes
+wxNotebook::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_notebook_new);
+}
+
//-----------------------------------------------------------------------------
// wxNotebookEvent
//-----------------------------------------------------------------------------
}
}
+// static
+wxVisualAttributes
+wxRadioBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
+ attr = GetDefaultAttributesFromGTKWidget(widget);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
#endif // wxUSE_RADIOBOX
return wxControl::DoGetBestSize();
}
+// static
+wxVisualAttributes
+wxRadioButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ wxVisualAttributes attr;
+ GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
+ attr = GetDefaultAttributesFromGTKWidget(widget);
+ gtk_widget_destroy(widget);
+ return attr;
+}
+
+
#endif
return wxControl::DoGetBestSize();
}
+// static
+wxVisualAttributes
+wxScrollBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_vscrollbar_new);
+}
+
#endif
(gpointer) this );
}
+// static
+wxVisualAttributes
+wxSlider::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_vscale_new);
+}
+
#endif
return wxSize(15, 26);
}
+// static
+wxVisualAttributes
+wxSpinButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ // TODO: overload to accept functions like gtk_spin_button_new?
+ // Until then use a similar type
+ return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+}
+
#endif
return wxSize(95, ret.y);
}
+// static
+wxVisualAttributes
+wxSpinCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ // TODO: overload to accept functions like gtk_spin_button_new?
+ // Until then use a similar type
+ return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+}
+
#endif
// wxUSE_SPINCTRL
}
}
+// static
+wxVisualAttributes
+wxStaticBitmap::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ // TODO: overload to allow using gtk_pixmap_new?
+ return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+}
+
#endif // wxUSE_STATBMP
gtk_widget_set_style( m_widget, m_widgetStyle );
}
+// static
+wxVisualAttributes
+wxStaticBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_frame_new);
+}
+
#endif // wxUSE_STATBOX
return TRUE;
}
+// static
+wxVisualAttributes
+wxStaticLine::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_vseparator_new);
+}
+
#endif
return true;
}
+// static
+wxVisualAttributes
+wxStaticText::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+}
+
#endif // wxUSE_STATTEXT
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
+
+// ----------------------------------------------------------------------------
+
+// static
+wxVisualAttributes
+wxToolBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+#ifdef __WXGTK20__
+ return GetDefaultAttributesFromGTKWidget(gtk_toolbar_new);
+#else
+ wxVisualAttributes attr;
+ GtkWidget* widget = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
+ attr = GetDefaultAttributesFromGTKWidget(widget);
+ gtk_widget_destroy(widget);
+ return attr;
+#endif
+}
+
#endif // wxUSE_TOOLBAR_NATIVE
gtk_container_add( GTK_CONTAINER(m_widget), m_text );
// Global settings which can be overridden by tags, I guess.
- if (HasFlag( wxHSCROLL ))
+ if (HasFlag( wxHSCROLL ) || HasFlag( wxTE_DONTWRAP ))
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), GTK_WRAP_NONE );
else
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), GTK_WRAP_WORD );
#ifdef __WXGTK20__
else
gtk_text_view_set_editable( GTK_TEXT_VIEW( m_text), FALSE);
- }
#else
}
else
{
if (multi_line)
gtk_text_set_editable( GTK_TEXT(m_text), 1 );
- }
#endif
+ }
+
// We want to be notified about text changes.
#ifdef __WXGTK20__
if (multi_line)
}
else
#endif
+
{
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
}
- // we don't set a valid background colour, because the window
- // manager should use a default one
- m_backgroundColour = wxColour();
-
- wxColour colFg = parent->GetForegroundColour();
- SetForegroundColour( colFg );
-
m_cursor = wxCursor( wxCURSOR_IBEAM );
- wxTextAttr attrDef( colFg, m_backgroundColour, parent->GetFont() );
+ wxTextAttr attrDef(GetForegroundColour(), GetBackgroundColour(), GetFont());
SetDefaultStyle( attrDef );
return TRUE;
}
+
void wxTextCtrl::CalculateScrollbar()
{
#ifndef __WXGTK20__
void wxTextCtrl::ApplyWidgetStyle()
{
- if (m_windowStyle & wxTE_MULTILINE)
- {
- // how ?
- }
- else
+// if (m_windowStyle & wxTE_MULTILINE)
+// {
+// // how ?
+// }
+// else
{
SetWidgetStyle();
gtk_widget_set_style( m_text, m_widgetStyle );
#endif
}
+
+// static
+wxVisualAttributes
+wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+}
}
return best;
}
+
+
+// static
+wxVisualAttributes
+wxToggleBitmapButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
+}
+
+
// ------------------------------------------------------------------------
// wxToggleButton
// ------------------------------------------------------------------------
return ret;
}
+// static
+wxVisualAttributes
+wxToggleButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
+}
+
#endif // wxUSE_TOGGLEBTN