#include "wx/intl.h"
#include "wx/log.h"
#include "wx/bitmap.h"
+#include "wx/fontutil.h"
#include "wx/gtk/private.h"
#include "wx/gtk/win_gtk.h"
#include <gdk/gdkkeysyms.h>
+#include "wx/msgdlg.h"
+
// ----------------------------------------------------------------------------
// events
// ----------------------------------------------------------------------------
class wxGtkNotebookPage: public wxObject
{
public:
- wxGtkNotebookPage()
- {
- m_image = -1;
- m_page = (GtkNotebookPage *) NULL;
- m_box = (GtkWidget *) NULL;
- }
-
- wxString m_text;
- int m_image;
- GtkNotebookPage *m_page;
- GtkLabel *m_label;
- GtkWidget *m_box; // in which the label and image are packed
+ wxGtkNotebookPage()
+ {
+ m_image = -1;
+ m_page = (GtkNotebookPage *) NULL;
+ m_box = (GtkWidget *) NULL;
+ }
+
+ bool SetFont(const wxFont& font);
+
+ wxString m_text;
+ int m_image;
+ GtkNotebookPage *m_page;
+ GtkLabel *m_label;
+ GtkWidget *m_box; // in which the label and image are packed
};
+
+bool wxGtkNotebookPage::SetFont(const wxFont& font)
+{
+ if (!m_label)
+ return false;
+
+#ifdef __WXGTK20__
+ gtk_widget_modify_font(GTK_WIDGET(m_label),
+ font.GetNativeFontInfo()->description);
+#else
+ GtkRcStyle *style = gtk_rc_style_new();
+ style->fontset_name =
+ g_strdup(font.GetNativeFontInfo()->GetXFontName().c_str());
+ gtk_widget_modify_style(GTK_WIDGET(m_label), style);
+ gtk_rc_style_unref(style);
+#endif
+
+ return true;
+}
+
+
#include "wx/listimpl.cpp"
WX_DEFINE_LIST(wxGtkNotebookPagesList);
+
//-----------------------------------------------------------------------------
// "switch_page"
//-----------------------------------------------------------------------------
{
// Hack alert! We manually set the child window
// parent field so that GTK can query the
- // notebook's style and font.
+ // notebook's style and font. Without that, GetBestSize could return
+ // incorrect size, see bug #901694 for details
+ // (http://sourceforge.net/tracker/?func=detail&aid=901694&group_id=9863&atid=109863)
child->m_widget->parent = parent->m_widget;
}
gtk_signal_connect( GTK_OBJECT(m_widget), "key_press_event",
GTK_SIGNAL_FUNC(gtk_notebook_key_press_callback), (gpointer)this );
- PostCreation();
-
- SetFont( parent->GetFont() );
+ PostCreation(size);
gtk_signal_connect( GTK_OBJECT(m_widget), "realize",
GTK_SIGNAL_FUNC(gtk_notebook_realized_callback), (gpointer) this );
- Show( TRUE );
-
return TRUE;
}
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
+ InvalidateBestSize();
return wxNotebookBase::DeleteAllPages();
}
}
/* set the label text */
+
nb_page->m_text = text;
if (nb_page->m_text.IsEmpty()) nb_page->m_text = wxT("");
gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page",
GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), (gpointer)this );
+ InvalidateBestSize();
return TRUE;
}
#endif
-void wxNotebook::ApplyWidgetStyle()
+void wxNotebook::DoApplyWidgetStyle(GtkRcStyle *style)
{
// TODO, font for labels etc
-
- SetWidgetStyle();
- gtk_widget_set_style( m_widget, m_widgetStyle );
+ gtk_widget_modify_style( m_widget, style );
}
bool wxNotebook::IsOwnGtkWindow( GdkWindow *window )
(NOTEBOOK_PANEL(m_widget) == window));
}
+bool wxNotebook::SetFont(const wxFont& font)
+{
+ bool rc=wxNotebookBase::SetFont(font);
+
+ if (rc)
+ {
+ size_t i;
+ for (i=0 ; i < m_pagesData.GetCount() ; i++)
+ GetNotebookPage(i)->SetFont(font);
+ }
+ return rc;
+}
+
+// static
+wxVisualAttributes
+wxNotebook::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_notebook_new);
+}
+
//-----------------------------------------------------------------------------
// wxNotebookEvent
//-----------------------------------------------------------------------------