DECLARE_DYNAMIC_CLASS(wxFrame)
public:
- wxFrame();
+ wxFrame() { Init(); }
wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr );
bool m_insertInClientArea; /* not from within OnCreateXXX */
protected:
+ // common part of all ctors
+ void Init();
+
virtual void DoSetSize(int x, int y,
int width, int height,
int sizeFlags = wxSIZE_AUTO);
virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1,
wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; }
virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
- virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {}
+ virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
// no size hints
const wxSize &size, long style, const wxString &name );
void PostCreation();
- void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); }
- void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); }
+ /* internal addition of child windows. differs from class
+ to class not by using virtual functions but by using
+ the m_insertCallback */
+ void DoAddChild(wxWindow *child);
/* the methods below are required because many native widgets
are composed of several subwidgets and setting a style for
virtual bool IsOwnGtkWindow( GdkWindow *window );
void ConnectWidget( GtkWidget *widget );
- // creates a new widget style if none is there
- // and sets m_widgetStyle to this value.
+ /* creates a new widget style if none is there
+ and sets m_widgetStyle to this value. */
GtkStyle *GetWidgetStyle();
- // called by SetFont() and SetXXXColour etc
+ /* called by SetFont() and SetXXXColour etc */
void SetWidgetStyle();
- // overridden in many GTK widgets
+ /* overridden in many GTK widgets */
virtual void ApplyWidgetStyle();
#if wxUSE_TOOLTIPS
int m_x, m_y;
int m_width, m_height;
- // see the docs in src/gtk/window.cpp
+ /* see the docs in src/gtk/window.cpp */
GtkWidget *m_widget;
GtkWidget *m_wxwindow;
- // scrolling stuff
+ /* scrolling stuff */
GtkAdjustment *m_hAdjust,*m_vAdjust;
float m_oldHorizontalPos;
float m_oldVerticalPos;
DECLARE_DYNAMIC_CLASS(wxFrame)
public:
- wxFrame();
+ wxFrame() { Init(); }
wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr );
bool m_insertInClientArea; /* not from within OnCreateXXX */
protected:
+ // common part of all ctors
+ void Init();
+
virtual void DoSetSize(int x, int y,
int width, int height,
int sizeFlags = wxSIZE_AUTO);
virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1,
wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; }
virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
- virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {}
+ virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
// no size hints
const wxSize &size, long style, const wxString &name );
void PostCreation();
- void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); }
- void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); }
+ /* internal addition of child windows. differs from class
+ to class not by using virtual functions but by using
+ the m_insertCallback */
+ void DoAddChild(wxWindow *child);
/* the methods below are required because many native widgets
are composed of several subwidgets and setting a style for
virtual bool IsOwnGtkWindow( GdkWindow *window );
void ConnectWidget( GtkWidget *widget );
- // creates a new widget style if none is there
- // and sets m_widgetStyle to this value.
+ /* creates a new widget style if none is there
+ and sets m_widgetStyle to this value. */
GtkStyle *GetWidgetStyle();
- // called by SetFont() and SetXXXColour etc
+ /* called by SetFont() and SetXXXColour etc */
void SetWidgetStyle();
- // overridden in many GTK widgets
+ /* overridden in many GTK widgets */
virtual void ApplyWidgetStyle();
#if wxUSE_TOOLTIPS
int m_x, m_y;
int m_width, m_height;
- // see the docs in src/gtk/window.cpp
+ /* see the docs in src/gtk/window.cpp */
GtkWidget *m_widget;
GtkWidget *m_wxwindow;
- // scrolling stuff
+ /* scrolling stuff */
GtkAdjustment *m_hAdjust,*m_vAdjust;
float m_oldHorizontalPos;
float m_oldVerticalPos;
void MyFrame::LoadFile(wxCommandEvent& WXUNUSED(event) )
{
- wxString s = wxFileSelector("Load text file", (const char *) NULL, (const char *) NULL, (const char *) NULL, "*.txt");
+ wxString s = wxFileSelector( _T("Load text file"), (const wxChar *) NULL,
+ (const wxChar *) NULL, (const wxChar *) NULL, _T("*.txt") );
if (s != "")
{
#ifdef __WXMSW__
if ( event.CanVeto() && (gs_nFrames > 0) )
{
wxString msg;
- msg.Printf("%d windows still open, close anyhow?", gs_nFrames);
+ msg.Printf(_T("%d windows still open, close anyhow?"), gs_nFrames);
if ( wxMessageBox(msg, "Please confirm",
wxICON_QUESTION | wxYES_NO) != wxYES )
{
wxDEFAULT_FRAME_STYLE);
wxString title;
- title.Printf("Canvas Frame %d", ++gs_nFrames);
+ title.Printf(_T("Canvas Frame %d"), ++gs_nFrames);
subframe->SetTitle(title);
return FALSE;
}
+//-----------------------------------------------------------------------------
+// InsertChild for wxDialog
+//-----------------------------------------------------------------------------
+
+/* Callback for wxFrame. This very strange beast has to be used because
+ * C++ has no virtual methods in a constructor. We have to emulate a
+ * virtual function here as wxWindows requires different ways to insert
+ * a child in container classes. */
+
+static void wxInsertChildInDialog( wxDialog* parent, wxWindow* child )
+{
+ gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow),
+ GTK_WIDGET(child->m_widget),
+ child->m_x,
+ child->m_y,
+ child->m_width,
+ child->m_height );
+
+ if (parent->HasFlag(wxTAB_TRAVERSAL))
+ {
+ /* we now allow a window to get the focus as long as it
+ doesn't have any children. */
+ GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS );
+ }
+}
+
//-----------------------------------------------------------------------------
// wxDialog
//-----------------------------------------------------------------------------
PreCreation( parent, id, pos, size, style, name );
+ m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog;
+
m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL );
if (!name.IsEmpty())
IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow)
-wxFrame::wxFrame()
+void wxFrame::Init()
{
m_frameMenuBar = (wxMenuBar *) NULL;
m_frameStatusBar = (wxStatusBar *) NULL;
m_mainWidget = (GtkWidget*) NULL;
m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE;
- m_insertCallback = (wxInsertChildFunction) NULL;
m_insertInClientArea = TRUE;
}
const wxPoint &pos, const wxSize &size,
long style, const wxString &name )
{
- m_frameMenuBar = (wxMenuBar *) NULL;
- m_frameStatusBar = (wxStatusBar *) NULL;
- m_frameToolBar = (wxToolBar *) NULL;
- m_sizeSet = FALSE;
- m_miniEdge = 0;
- m_miniTitle = 0;
- m_mainWidget = (GtkWidget*) NULL;
- m_menuBarDetached = FALSE;
- m_toolBarDetached = FALSE;
- m_insertCallback = (wxInsertChildFunction) NULL;
- m_insertInClientArea = TRUE;
+ Init();
+
Create( parent, id, title, pos, size, style, name );
}
m_scrollGC = (GdkGC*) NULL;
m_widgetStyle = (GtkStyle*) NULL;
- m_insertCallback = wxInsertChildInWindow;
+ m_insertCallback = (wxInsertChildFunction) NULL;
m_isStaticBox = FALSE;
m_acceptsFocus = FALSE;
{
PreCreation( parent, id, pos, size, style, name );
+ m_insertCallback = wxInsertChildInWindow;
+
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
return TRUE;
}
+void wxWindow::DoAddChild(wxWindow *child)
+{
+ wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
+
+ wxASSERT_MSG( (child != NULL), _T("invalid child window") );
+
+ wxASSERT_MSG( (m_insertCallback != NULL), _T("invalid child insertion function") );
+
+ /* add to list */
+ AddChild( child );
+
+ /* insert GTK representation */
+ (*m_insertCallback)(this, child);
+}
+
void wxWindow::Raise()
{
wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
return FALSE;
}
+//-----------------------------------------------------------------------------
+// InsertChild for wxDialog
+//-----------------------------------------------------------------------------
+
+/* Callback for wxFrame. This very strange beast has to be used because
+ * C++ has no virtual methods in a constructor. We have to emulate a
+ * virtual function here as wxWindows requires different ways to insert
+ * a child in container classes. */
+
+static void wxInsertChildInDialog( wxDialog* parent, wxWindow* child )
+{
+ gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow),
+ GTK_WIDGET(child->m_widget),
+ child->m_x,
+ child->m_y,
+ child->m_width,
+ child->m_height );
+
+ if (parent->HasFlag(wxTAB_TRAVERSAL))
+ {
+ /* we now allow a window to get the focus as long as it
+ doesn't have any children. */
+ GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS );
+ }
+}
+
//-----------------------------------------------------------------------------
// wxDialog
//-----------------------------------------------------------------------------
PreCreation( parent, id, pos, size, style, name );
+ m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog;
+
m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL );
if (!name.IsEmpty())
IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow)
-wxFrame::wxFrame()
+void wxFrame::Init()
{
m_frameMenuBar = (wxMenuBar *) NULL;
m_frameStatusBar = (wxStatusBar *) NULL;
m_mainWidget = (GtkWidget*) NULL;
m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE;
- m_insertCallback = (wxInsertChildFunction) NULL;
m_insertInClientArea = TRUE;
}
const wxPoint &pos, const wxSize &size,
long style, const wxString &name )
{
- m_frameMenuBar = (wxMenuBar *) NULL;
- m_frameStatusBar = (wxStatusBar *) NULL;
- m_frameToolBar = (wxToolBar *) NULL;
- m_sizeSet = FALSE;
- m_miniEdge = 0;
- m_miniTitle = 0;
- m_mainWidget = (GtkWidget*) NULL;
- m_menuBarDetached = FALSE;
- m_toolBarDetached = FALSE;
- m_insertCallback = (wxInsertChildFunction) NULL;
- m_insertInClientArea = TRUE;
+ Init();
+
Create( parent, id, title, pos, size, style, name );
}
m_scrollGC = (GdkGC*) NULL;
m_widgetStyle = (GtkStyle*) NULL;
- m_insertCallback = wxInsertChildInWindow;
+ m_insertCallback = (wxInsertChildFunction) NULL;
m_isStaticBox = FALSE;
m_acceptsFocus = FALSE;
{
PreCreation( parent, id, pos, size, style, name );
+ m_insertCallback = wxInsertChildInWindow;
+
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
return TRUE;
}
+void wxWindow::DoAddChild(wxWindow *child)
+{
+ wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
+
+ wxASSERT_MSG( (child != NULL), _T("invalid child window") );
+
+ wxASSERT_MSG( (m_insertCallback != NULL), _T("invalid child insertion function") );
+
+ /* add to list */
+ AddChild( child );
+
+ /* insert GTK representation */
+ (*m_insertCallback)(this, child);
+}
+
void wxWindow::Raise()
{
wxCHECK_RET( (m_widget != NULL), _T("invalid window") );