private:
void UpdatePosition();
- wxMenu* fileMenu;
- wxMenuBar* menuBar;
- MyCanvas* m_leftCanvas;
- MyCanvas* m_rightCanvas;
+ wxScrolledWindow *m_left, *m_right;
+
MySplitterWindow* m_splitter;
-DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
class MyCanvas: public wxScrolledWindow
CreateStatusBar(2);
// Make a menubar
- fileMenu = new wxMenu;
+ wxMenu *fileMenu = new wxMenu;
fileMenu->Append(SPLIT_VERTICAL, "Split &Vertically\tCtrl-V", "Split vertically");
fileMenu->Append(SPLIT_HORIZONTAL, "Split &Horizontally\tCtrl-H", "Split horizontally");
fileMenu->Append(SPLIT_UNSPLIT, "&Unsplit\tCtrl-U", "Unsplit");
fileMenu->AppendSeparator();
fileMenu->Append(SPLIT_QUIT, "E&xit\tAlt-X", "Exit");
- menuBar = new wxMenuBar;
+ wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(fileMenu, "&File");
SetMenuBar(menuBar);
m_splitter = new MySplitterWindow(this, SPLITTER_WINDOW);
-#if 0
- wxSize sz( m_splitter->GetSize() );
- wxLogMessage( "Initial splitter size: %d %d\n", (int)sz.x, (int)sz.y );
-#endif // 0
-
- m_leftCanvas = new MyCanvas(m_splitter, CANVAS1, wxPoint(0, 0), wxSize(400, 400), "Test1" );
- m_leftCanvas->SetBackgroundColour(*wxRED);
- m_leftCanvas->SetScrollbars(20, 20, 50, 50);
- m_leftCanvas->SetCursor(wxCursor(wxCURSOR_MAGNIFIER));
-
- m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, wxPoint(0, 0), wxSize(400, 400), "Test2" );
- m_rightCanvas->SetBackgroundColour(*wxCYAN);
- m_rightCanvas->SetScrollbars(20, 20, 50, 50);
+#if 1
+ m_left = new MyCanvas(m_splitter, CANVAS1, wxPoint(0, 0), wxSize(400, 400), "Test1" );
+ m_left->SetBackgroundColour(*wxRED);
+ m_left->SetScrollbars(20, 20, 50, 50);
+ m_left->SetCursor(wxCursor(wxCURSOR_MAGNIFIER));
+
+ m_right = new MyCanvas(m_splitter, CANVAS2, wxPoint(0, 0), wxSize(400, 400), "Test2" );
+ m_right->SetBackgroundColour(*wxCYAN);
+ m_right->SetScrollbars(20, 20, 50, 50);
+#else // for testing kbd navigation inside the splitter
+ m_left = new wxTextCtrl(m_splitter, -1, "first text");
+ m_right = new wxTextCtrl(m_splitter, -1, "second text");
+#endif
// you can also do this to start with a single window
#if 0
- m_rightCanvas->Show(FALSE);
- m_splitter->Initialize(m_leftCanvas);
+ m_right->Show(FALSE);
+ m_splitter->Initialize(m_left);
#else
- m_splitter->SplitVertically(m_leftCanvas, m_rightCanvas, 100);
+ m_splitter->SplitVertically(m_left, m_right, 100);
#endif
SetStatusText("Min pane size = 0", 1);
{
if ( m_splitter->IsSplit() )
m_splitter->Unsplit();
- m_leftCanvas->Show(TRUE);
- m_rightCanvas->Show(TRUE);
- m_splitter->SplitHorizontally( m_leftCanvas, m_rightCanvas );
+ m_left->Show(TRUE);
+ m_right->Show(TRUE);
+ m_splitter->SplitHorizontally( m_left, m_right );
UpdatePosition();
}
{
if ( m_splitter->IsSplit() )
m_splitter->Unsplit();
- m_leftCanvas->Show(TRUE);
- m_rightCanvas->Show(TRUE);
- m_splitter->SplitVertically( m_leftCanvas, m_rightCanvas );
+ m_left->Show(TRUE);
+ m_right->Show(TRUE);
+ m_splitter->SplitVertically( m_left, m_right );
UpdatePosition();
}
void MyFrame::UpdateUIHorizontal(wxUpdateUIEvent& event)
{
- event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_HORIZONTAL) ) );
+ bool foo = ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_HORIZONTAL) );
+ if( !foo )
+ event.Enable( foo );
}
void MyFrame::UpdateUIVertical(wxUpdateUIEvent& event)