wxFrame::CreateToolBar() stuff
wxDC::SetBackground from Chris Breeze zillions of compile fixes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include "wx/postscrp.h"
|
||||
#include "wx/intl.h"
|
||||
#include "wx/log.h"
|
||||
#include "wx/memory.h"
|
||||
|
||||
#include "unistd.h"
|
||||
|
||||
@@ -285,6 +286,18 @@ int wxEntry( int argc, char *argv[] )
|
||||
|
||||
wxClassInfo::InitializeClasses();
|
||||
|
||||
#if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
|
||||
|
||||
#if !defined(_WINDLL)
|
||||
streambuf* sBuf = new wxDebugStreamBuf;
|
||||
#else
|
||||
streambuf* sBuf = NULL;
|
||||
#endif
|
||||
ostream* oStr = new ostream(sBuf) ;
|
||||
wxDebugContext::SetStream(oStr, sBuf);
|
||||
|
||||
#endif
|
||||
|
||||
if (!wxTheApp)
|
||||
{
|
||||
if (!wxApp::GetInitializerFunction())
|
||||
@@ -347,6 +360,20 @@ int wxEntry( int argc, char *argv[] )
|
||||
|
||||
wxApp::CommonCleanUp();
|
||||
|
||||
#if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
|
||||
// At this point we want to check if there are any memory
|
||||
// blocks that aren't part of the wxDebugContext itself,
|
||||
// as a special case. Then when dumping we need to ignore
|
||||
// wxDebugContext, too.
|
||||
if (wxDebugContext::CountObjectsLeft() > 0)
|
||||
{
|
||||
wxTrace("There were memory leaks.\n");
|
||||
wxDebugContext::Dump();
|
||||
wxDebugContext::PrintStatistics();
|
||||
}
|
||||
wxDebugContext::SetStream(NULL, NULL);
|
||||
#endif
|
||||
|
||||
return retValue;
|
||||
};
|
||||
|
||||
|
@@ -649,6 +649,46 @@ void wxPaintDC::SetBrush( const wxBrush &brush )
|
||||
};
|
||||
};
|
||||
|
||||
// CMB 21/7/98: Added SetBackground. Sets background brush
|
||||
// for Clear() and bg colour for shapes filled with cross-hatch brush
|
||||
void wxPaintDC::SetBackground( const wxBrush &brush )
|
||||
{
|
||||
if (!Ok()) return;
|
||||
|
||||
if (m_backgroundBrush == brush) return;
|
||||
|
||||
m_backgroundBrush = brush;
|
||||
|
||||
if (!m_backgroundBrush.Ok()) return;
|
||||
|
||||
m_backgroundBrush.GetColour().CalcPixel( m_cmap );
|
||||
gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() );
|
||||
gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() );
|
||||
|
||||
GdkFill fillStyle = GDK_SOLID;
|
||||
switch (m_backgroundBrush.GetStyle())
|
||||
{
|
||||
case wxSOLID:
|
||||
case wxTRANSPARENT:
|
||||
break;
|
||||
default:
|
||||
fillStyle = GDK_STIPPLED;
|
||||
};
|
||||
|
||||
gdk_gc_set_fill( m_bgGC, fillStyle );
|
||||
|
||||
if (m_backgroundBrush.GetStyle() == wxSTIPPLE)
|
||||
{
|
||||
gdk_gc_set_stipple( m_bgGC, m_backgroundBrush.GetStipple()->GetPixmap() );
|
||||
};
|
||||
|
||||
if (IS_HATCH(m_backgroundBrush.GetStyle()))
|
||||
{
|
||||
int num = m_backgroundBrush.GetStyle() - wxBDIAGONAL_HATCH;
|
||||
gdk_gc_set_stipple( m_bgGC, hatches[num] );
|
||||
};
|
||||
};
|
||||
|
||||
void wxPaintDC::SetLogicalFunction( int function )
|
||||
{
|
||||
if (m_logicalFunction == function) return;
|
||||
@@ -693,6 +733,14 @@ void wxPaintDC::SetTextBackground( const wxColour &col )
|
||||
void wxPaintDC::SetBackgroundMode( int mode )
|
||||
{
|
||||
m_backgroundMode = mode;
|
||||
|
||||
// CMB 21/7/98: fill style of cross-hatch brushes is affected by
|
||||
// transparent/solid background mode
|
||||
if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT)
|
||||
{
|
||||
gdk_gc_set_fill( m_brushGC,
|
||||
(m_backgroundMode == wxTRANSPARENT) ? GDK_STIPPLED : GDK_OPAQUE_STIPPLED);
|
||||
}
|
||||
};
|
||||
|
||||
void wxPaintDC::SetPalette( const wxPalette& WXUNUSED(palette) )
|
||||
|
@@ -77,7 +77,9 @@ wxFrame::wxFrame()
|
||||
m_doingOnSize = FALSE;
|
||||
m_frameMenuBar = NULL;
|
||||
m_frameStatusBar = NULL;
|
||||
m_frameToolBar = NULL;
|
||||
m_sizeSet = FALSE;
|
||||
m_addPrivateChild = FALSE;
|
||||
wxTopLevelWindows.Insert( this );
|
||||
};
|
||||
|
||||
@@ -85,7 +87,12 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
const wxPoint &pos, const wxSize &size,
|
||||
long style, const wxString &name )
|
||||
{
|
||||
m_doingOnSize = FALSE;
|
||||
m_frameMenuBar = NULL;
|
||||
m_frameStatusBar = NULL;
|
||||
m_frameToolBar = NULL;
|
||||
m_sizeSet = FALSE;
|
||||
m_addPrivateChild = FALSE;
|
||||
Create( parent, id, title, pos, size, style, name );
|
||||
wxTopLevelWindows.Insert( this );
|
||||
};
|
||||
@@ -131,9 +138,6 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
|
||||
gtk_container_add( GTK_CONTAINER(m_mainWindow), m_wxwindow );
|
||||
|
||||
m_frameMenuBar = NULL;
|
||||
m_frameStatusBar = NULL;
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate",
|
||||
GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this );
|
||||
|
||||
@@ -195,6 +199,12 @@ void wxFrame::GetClientSize( int *width, int *height ) const
|
||||
{
|
||||
if (m_frameMenuBar) (*height) -= wxMENU_HEIGHT;
|
||||
if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT;
|
||||
if (m_frameToolBar)
|
||||
{
|
||||
int y = 0;
|
||||
m_frameToolBar->GetSize( NULL, &y );
|
||||
(*height) -= y;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -236,6 +246,12 @@ void wxFrame::GtkOnSize( int x, int y, int width, int height )
|
||||
main_height -= wxMENU_HEIGHT;
|
||||
};
|
||||
|
||||
int toolbar_height = 0;
|
||||
if (m_frameToolBar) m_frameToolBar->GetSize( NULL, &toolbar_height );
|
||||
|
||||
main_y += toolbar_height;
|
||||
main_height -= toolbar_height;
|
||||
|
||||
gtk_widget_set_uposition( GTK_WIDGET(m_wxwindow), main_x, main_y );
|
||||
gtk_widget_set_usize( GTK_WIDGET(m_wxwindow), main_width, main_height );
|
||||
|
||||
@@ -245,6 +261,12 @@ void wxFrame::GtkOnSize( int x, int y, int width, int height )
|
||||
gtk_widget_set_usize( m_frameMenuBar->m_widget, width-2, wxMENU_HEIGHT-2 );
|
||||
};
|
||||
|
||||
if (m_frameToolBar)
|
||||
{
|
||||
gtk_widget_set_uposition( m_frameToolBar->m_widget, 1, wxMENU_HEIGHT );
|
||||
gtk_widget_set_usize( m_frameToolBar->m_widget, width-2, toolbar_height );
|
||||
};
|
||||
|
||||
if (m_frameStatusBar)
|
||||
{
|
||||
m_frameStatusBar->SetSize( 0, main_height-wxSTATUS_HEIGHT, width, wxSTATUS_HEIGHT );
|
||||
@@ -265,7 +287,7 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
// no child: go out !
|
||||
if (!GetChildren()->First())
|
||||
return;
|
||||
|
||||
|
||||
// do we have exactly one child?
|
||||
wxWindow *child = NULL;
|
||||
for(wxNode *node = GetChildren()->First(); node; node = node->Next())
|
||||
@@ -273,8 +295,9 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
wxWindow *win = (wxWindow *)node->Data();
|
||||
if (!win->IsKindOf(CLASSINFO(wxFrame)) &&
|
||||
!win->IsKindOf(CLASSINFO(wxDialog))
|
||||
#if 0 // not in m_children anyway
|
||||
#if 0 // not in m_children anyway
|
||||
&& (win != m_frameMenuBar) &&
|
||||
(win != m_frameToolBar) &&
|
||||
(win != m_frameStatusBar)
|
||||
#endif
|
||||
)
|
||||
@@ -293,6 +316,25 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
}
|
||||
};
|
||||
|
||||
void wxFrame::AddChild( wxWindow *child )
|
||||
{
|
||||
if (m_addPrivateChild)
|
||||
{
|
||||
gtk_myfixed_put( GTK_MYFIXED(m_mainWindow), child->m_widget, child->m_x, child->m_y );
|
||||
|
||||
gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_children.Append( child );
|
||||
|
||||
if (m_wxwindow)
|
||||
gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), child->m_widget, child->m_x, child->m_y );
|
||||
|
||||
gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
|
||||
}
|
||||
};
|
||||
|
||||
static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
|
||||
{
|
||||
menu->SetInvokingWindow( win );
|
||||
@@ -329,6 +371,27 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar )
|
||||
}
|
||||
};
|
||||
|
||||
wxMenuBar *wxFrame::GetMenuBar(void)
|
||||
{
|
||||
return m_frameMenuBar;
|
||||
};
|
||||
|
||||
wxToolBar *wxFrame::CreateToolBar( int style, int WXUNUSED(orientation), int WXUNUSED(rowsOrColumns) )
|
||||
{
|
||||
m_addPrivateChild = TRUE;
|
||||
|
||||
m_frameToolBar = new wxToolBar( this, -1, wxDefaultPosition, wxDefaultSize, style );
|
||||
|
||||
m_addPrivateChild = FALSE;
|
||||
|
||||
return m_frameToolBar;
|
||||
};
|
||||
|
||||
wxToolBar *wxFrame::GetToolBar(void)
|
||||
{
|
||||
return m_frameToolBar;
|
||||
};
|
||||
|
||||
bool wxFrame::CreateStatusBar( int number )
|
||||
{
|
||||
if (m_frameStatusBar)
|
||||
@@ -350,25 +413,20 @@ void wxFrame::SetStatusWidths( int n, int *width )
|
||||
if (m_frameStatusBar) m_frameStatusBar->SetStatusWidths( n, width );
|
||||
};
|
||||
|
||||
wxStatusBar *wxFrame::GetStatusBar()
|
||||
wxStatusBar *wxFrame::GetStatusBar(void)
|
||||
{
|
||||
return m_frameStatusBar;
|
||||
};
|
||||
|
||||
wxMenuBar *wxFrame::GetMenuBar()
|
||||
{
|
||||
return m_frameMenuBar;
|
||||
};
|
||||
|
||||
void wxFrame::SetTitle( const wxString &title )
|
||||
{
|
||||
m_title = title;
|
||||
gtk_window_set_title( GTK_WINDOW(m_widget), title );
|
||||
};
|
||||
|
||||
void wxFrame::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW)
|
||||
void wxFrame::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW) )
|
||||
{
|
||||
// VZ: I don't know a way to set the max size for the window in GTK and have
|
||||
// no idea about what incW might be
|
||||
gtk_widget_set_usize(m_widget, minW, minH);
|
||||
if (m_wxwindow)
|
||||
gdk_window_set_hints( m_wxwindow->window, -1, -1,
|
||||
minW, minH, maxW, maxH, GDK_HINT_MIN_SIZE | GDK_HINT_MIN_SIZE );
|
||||
}
|
||||
|
@@ -69,7 +69,6 @@ wxMDIParentFrame::wxMDIParentFrame(void)
|
||||
m_clientWindow = NULL;
|
||||
m_currentChild = NULL;
|
||||
m_parentFrameActive = TRUE;
|
||||
m_toolBar = NULL;
|
||||
};
|
||||
|
||||
wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent,
|
||||
@@ -80,7 +79,6 @@ wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent,
|
||||
m_clientWindow = NULL;
|
||||
m_currentChild = NULL;
|
||||
m_parentFrameActive = TRUE;
|
||||
m_toolBar = NULL;
|
||||
Create( parent, id, title, pos, size, style, name );
|
||||
};
|
||||
|
||||
@@ -132,16 +130,6 @@ void wxMDIParentFrame::GetClientSize(int *width, int *height ) const
|
||||
wxFrame::GetClientSize( width, height );
|
||||
};
|
||||
|
||||
void wxMDIParentFrame::SetToolBar( wxToolBar *toolbar )
|
||||
{
|
||||
m_toolBar = toolbar;
|
||||
};
|
||||
|
||||
wxWindow *wxMDIParentFrame::GetToolBar(void) const
|
||||
{
|
||||
return m_toolBar;
|
||||
};
|
||||
|
||||
wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const
|
||||
{
|
||||
return m_currentChild;
|
||||
@@ -250,7 +238,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
|
||||
while (node)
|
||||
{
|
||||
wxMenuItem *menuitem = (wxMenuItem*)node->Data();
|
||||
if (menuitem->GetSubMenu()) SetInvokingWindow( menuitem->GetSubMenu(), win );
|
||||
if (menuitem->IsSubMenu())
|
||||
SetInvokingWindow( menuitem->GetSubMenu(), win );
|
||||
node = node->Next();
|
||||
};
|
||||
};
|
||||
@@ -346,7 +335,7 @@ void wxMDIClientWindow::AddChild( wxWindow *child )
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate",
|
||||
GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child );
|
||||
|
||||
|
||||
gtk_notebook_append_page( GTK_NOTEBOOK(m_widget), child->m_widget, label_widget );
|
||||
|
||||
mdi_child->m_page = (GtkNotebookPage*) (g_list_last(GTK_NOTEBOOK(m_widget)->children)->data);
|
||||
|
@@ -106,9 +106,17 @@ bool wxToolBar::Create( wxWindow *parent, wxWindowID id,
|
||||
|
||||
bool wxToolBar::OnLeftClick( int toolIndex, bool toggleDown )
|
||||
{
|
||||
wxCommandEvent event( wxEVENT_TYPE_MENU_COMMAND, toolIndex );
|
||||
event.SetEventObject( this );
|
||||
event.SetInt( toolIndex );
|
||||
event.SetExtraLong( (long) toggleDown);
|
||||
|
||||
/*
|
||||
wxCommandEvent event(wxEVT_COMMAND_TOOL_CLICKED, toolIndex);
|
||||
event.SetEventObject(this);
|
||||
event.SetInt( toolIndex );
|
||||
event.SetExtraLong((long) toggleDown);
|
||||
*/
|
||||
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
|
||||
@@ -117,8 +125,9 @@ bool wxToolBar::OnLeftClick( int toolIndex, bool toggleDown )
|
||||
|
||||
void wxToolBar::OnRightClick( int toolIndex, float WXUNUSED(x), float WXUNUSED(y) )
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_TOOL_RCLICKED, toolIndex);
|
||||
event.SetEventObject(this);
|
||||
wxCommandEvent event( wxEVENT_TYPE_MENU_COMMAND, toolIndex );
|
||||
event.SetEventObject( this );
|
||||
event.SetInt( toolIndex );
|
||||
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
};
|
||||
@@ -127,6 +136,7 @@ void wxToolBar::OnMouseEnter( int toolIndex )
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_TOOL_ENTER, toolIndex);
|
||||
event.SetEventObject(this);
|
||||
event.SetInt( toolIndex );
|
||||
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
};
|
||||
@@ -169,6 +179,29 @@ void wxToolBar::ClearTools(void)
|
||||
{
|
||||
};
|
||||
|
||||
void wxToolBar::Layout(void)
|
||||
{
|
||||
m_x = 0;
|
||||
m_y = 0;
|
||||
m_width = 100;
|
||||
m_height = 0;
|
||||
|
||||
wxNode *node = m_tools.First();
|
||||
while (node)
|
||||
{
|
||||
wxToolBarTool *tool = (wxToolBarTool*)node->Data();
|
||||
if (tool->m_bitmap1.Ok())
|
||||
{
|
||||
int tool_height = tool->m_bitmap1.GetHeight();
|
||||
if (tool_height > m_height) m_height = tool_height;
|
||||
};
|
||||
|
||||
node = node->Next();
|
||||
};
|
||||
|
||||
m_height += 10;
|
||||
};
|
||||
|
||||
void wxToolBar::EnableTool(int toolIndex, bool enable)
|
||||
{
|
||||
};
|
||||
|
@@ -308,7 +308,7 @@ void wxTextCtrl::OnChar( wxKeyEvent &WXUNUSED(event) )
|
||||
{
|
||||
};
|
||||
|
||||
int wxTextCtrl::overflow(int c)
|
||||
int wxTextCtrl::overflow( int WXUNUSED(c) )
|
||||
{
|
||||
int len = pptr() - pbase();
|
||||
char *txt = new char[len+1];
|
||||
|
@@ -1417,7 +1417,6 @@ void wxWindow::SetFocus(void)
|
||||
|
||||
bool wxWindow::OnClose(void)
|
||||
{
|
||||
printf( "OnClose event.\n" );
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
@@ -1431,6 +1430,21 @@ void wxWindow::AddChild( wxWindow *child )
|
||||
// for wxFrame, wxDialog, wxWindow and
|
||||
// wxMDIParentFrame.
|
||||
|
||||
// wxFrame and wxDialog as children aren't placed into the parents
|
||||
|
||||
if (child->IsKindOf(CLASSINFO(wxFrame)) || child->IsKindOf(CLASSINFO(wxDialog)))
|
||||
{
|
||||
m_children.Append( child );
|
||||
|
||||
if ((child->m_x != -1) && (child->m_y != -1))
|
||||
gtk_widget_set_uposition( child->m_widget, child->m_x, child->m_y );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// In the case of an wxMDIChildFrame descendant, we use the
|
||||
// client windows's AddChild()
|
||||
|
||||
if (IsKindOf(CLASSINFO(wxMDIParentFrame)))
|
||||
{
|
||||
if (child->IsKindOf(CLASSINFO(wxMDIChildFrame)))
|
||||
@@ -1440,30 +1454,32 @@ void wxWindow::AddChild( wxWindow *child )
|
||||
{
|
||||
client->AddChild( child );
|
||||
return;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// wxNotebooks are very special, so they have their own AddChild
|
||||
// wxNotebook is very special, so it has a private AddChild()
|
||||
|
||||
if (IsKindOf(CLASSINFO(wxNotebook)))
|
||||
{
|
||||
wxNotebook *tab = (wxNotebook*)this;
|
||||
tab->AddChild( child );
|
||||
return;
|
||||
};
|
||||
}
|
||||
|
||||
// wxFrame has a private AddChild
|
||||
|
||||
if (IsKindOf(CLASSINFO(wxFrame)))
|
||||
{
|
||||
wxFrame *frame = (wxFrame*)this;
|
||||
frame->AddChild( child );
|
||||
return;
|
||||
}
|
||||
|
||||
// All the rest
|
||||
|
||||
m_children.Append( child );
|
||||
if (child->IsKindOf(CLASSINFO(wxFrame)) || child->IsKindOf(CLASSINFO(wxDialog)))
|
||||
{
|
||||
if ((child->m_x != -1) && (child->m_y != -1))
|
||||
gtk_widget_set_uposition( child->m_widget, child->m_x, child->m_y );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_wxwindow)
|
||||
gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), child->m_widget, child->m_x, child->m_y );
|
||||
};
|
||||
if (m_wxwindow) gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), child->m_widget, child->m_x, child->m_y );
|
||||
gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user