00001 #include <gui/MessageBox.h>
00002 #include <gui/MessageQueue.h>
00003 #include <gui/Button.h>
00004 #include <gui/Splitter.h>
00005 #include <gui/TopView.h>
00006 #include <gui/Exceptions.h>
00007 #include <gui/Window.h>
00008 #include <gui/StringView.h>
00009 #include <gui/ApplicationWindow.h>
00010 #include <gui/Application.h>
00011 #include <gui/Menu.h>
00012 #include <gui/TextView.h>
00013 #include <gui/StatusBar.h>
00014 #include <gui/CheckBox.h>
00015 #include <iostream>
00016
00017 using namespace SkyGI;
00018
00019 class MySplitter : public View
00020 {
00021 public:
00022 MySplitter(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags);
00023 Splitter *pSplitter;
00024 Button *pToggle;
00025 void Toggle();
00026 };
00027
00028 void MySplitter::Toggle()
00029 {
00030 if (pSplitter->GetOrientation() == SPLITTER_ORIENTATION_HORIZONTAL)
00031 pSplitter->SetOrientation(SPLITTER_ORIENTATION_VERTICAL);
00032 else
00033 pSplitter->SetOrientation(SPLITTER_ORIENTATION_HORIZONTAL);
00034
00035 pSplitter->ReLayout();
00036 }
00037
00038 MySplitter::MySplitter(Window *pParent, const Rect &rFrame, unsigned int nWindowLayoutFlags) : View(pParent, rFrame, nWindowLayoutFlags)
00039 {
00040 printf("height: %d\n", rFrame.Height());
00041
00042 pSplitter = new Splitter(this, Rect(0,0,0,Height() - 40), SPLITTER_ORIENTATION_HORIZONTAL, WINDOW_LAYOUT_SAME_WIDTH | WINDOW_LAYOUT_FOLLOW_BOTTOM);
00043 pToggle = new Button(this, Rect(10, Height() - 30, 150, Height() - 30), "Toggle Orientation", WINDOW_LAYOUT_FOLLOW_V);
00044 pToggle->SetRect(Point(10, Height() - 30), Point(120, pToggle->GetPreferredSize().y));
00045 pToggle->Clicked.Connect(this, &MySplitter::Toggle);
00046
00047 pSplitter->SetRatio(0.7);
00048 TextView *pTextView1 = new TextView(pSplitter, Rect(0,0,0,0), WINDOW_LAYOUT_SAME_SIZE);
00049 TextView *pTextView2 = new TextView(pSplitter, Rect(0,0,0,0), WINDOW_LAYOUT_SAME_SIZE);
00050
00051 pSplitter->Attach(SPLITTER_POSITION_LEFT , pTextView1);
00052 pSplitter->Attach(SPLITTER_POSITION_RIGHT, pTextView2);
00053 pSplitter->ReLayout();
00054 }
00055
00056 void SplitterTest()
00057 {
00058 Rect r(Point(100, 100), Point(400, 440));
00059
00060 ApplicationWindow* pApplicationWindow = new ApplicationWindow(r, "Splitter", WINDOW_LAYOUT_NOTHING, APPLICATION_WINDOW_NO_VIEW);
00061
00062 pApplicationWindow->GetTitleWindow()->SetFlags( (TitleWindowFlags)(pApplicationWindow->GetTitleWindow()->GetFlags() ));
00063 pApplicationWindow->AttachView(new MySplitter(pApplicationWindow, pApplicationWindow->GetClientRect(), WINDOW_LAYOUT_NOTHING));
00064 pApplicationWindow->Show();
00065 }
00066