Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "vgui_wx_window.h"
00011 #include "vgui_wx_adaptor.h"
00012 #include "vgui_wx_menu.h"
00013 #include "vgui_wx_statusbar.h"
00014
00015 #include <vgui/vgui.h>
00016
00017 #include <wx/frame.h>
00018 #include <wx/statusbr.h>
00019
00020 #include <vcl_cassert.h>
00021
00022
00023
00024
00025
00026 vgui_wx_window::vgui_wx_window(int width, int height, const char* title)
00027 : frame_(new wxFrame(0, wxID_ANY, wxString(title,wxConvUTF8)))
00028 , menu_(0)
00029 {
00030 init_window();
00031 frame_->SetClientSize(width+3, height+3);
00032 }
00033
00034
00035 vgui_wx_window::vgui_wx_window(int width,
00036 int height,
00037 const vgui_menu& menubar,
00038 const char* title)
00039 : frame_(new wxFrame(0, wxID_ANY, wxString(title,wxConvUTF8), wxDefaultPosition, wxSize(width, height)))
00040 , menu_(0)
00041 {
00042 init_window();
00043 set_menubar(menubar);
00044 }
00045
00046
00047 vgui_wx_window::~vgui_wx_window(void)
00048 {
00049 delete statusbar_;
00050
00051 if (menu_)
00052 {
00053 frame_->PopEventHandler(true);
00054
00055
00056
00057 }
00058 }
00059
00060
00061 void vgui_wx_window::init_window(void)
00062 {
00063 adaptor_ = new vgui_wx_adaptor(frame_);
00064
00065 statusbar_ = new vgui_wx_statusbar;
00066 statusbar_->set_widget(frame_->CreateStatusBar());
00067
00068
00069
00070
00071
00072
00073 vgui::out.rdbuf(statusbar_->statusbuf());
00074 }
00075
00076
00077
00078
00079 void vgui_wx_window::set_menubar(const vgui_menu& menubar)
00080 {
00081 if (menu_)
00082 {
00083 frame_->PopEventHandler(true);
00084 menu_ = 0;
00085
00086
00087
00088 }
00089
00090 menu_ = new vgui_wx_menu;
00091 frame_->SetMenuBar(menu_->create_wx_menubar(menubar));
00092 frame_->PushEventHandler(menu_);
00093 }
00094
00095
00096 void vgui_wx_window::set_statusbar(bool activate)
00097 {
00098 activate ? frame_->GetStatusBar()->Show() : frame_->GetStatusBar()->Hide();
00099 }
00100
00101
00102
00103
00104 void vgui_wx_window::set_adaptor(vgui_adaptor* adaptor)
00105 {
00106
00107
00108 frame_->RemoveChild(adaptor_);
00109 adaptor_ = new vgui_wx_adaptor(frame_);
00110
00111
00112 }
00113
00114
00115 vgui_adaptor* vgui_wx_window::get_adaptor(void)
00116 {
00117 return adaptor_;
00118 }
00119
00120
00121 vgui_statusbar* vgui_wx_window::get_statusbar(void)
00122 {
00123 return statusbar_;
00124 }
00125
00126
00127 void vgui_wx_window::enable_hscrollbar(bool show)
00128 {
00129 if (show)
00130 {
00131 frame_->SetScrollbar(wxHORIZONTAL, 0, 1, 100);
00132 }
00133 else
00134 {
00135
00136 assert(false);
00137 }
00138 }
00139
00140
00141 void vgui_wx_window::enable_vscrollbar(bool show)
00142 {
00143 if (show)
00144 {
00145 frame_->SetScrollbar(wxVERTICAL, 0, 1, 100);
00146 }
00147 else
00148 {
00149
00150 assert(false);
00151 }
00152 }
00153
00154
00155 void vgui_wx_window::reshape(unsigned width, unsigned height)
00156 {
00157
00158
00159 frame_->SetClientSize(width, height);
00160 }
00161
00162
00163 void vgui_wx_window::reposition(int x, int y)
00164 {
00165 frame_->SetSize(x, y, -1, -1);
00166 }
00167
00168
00169 void vgui_wx_window::set_title(vcl_string const& title)
00170 {
00171 frame_->SetTitle( wxString(title.c_str(), wxConvUTF8) );
00172 }
00173
00174
00175 int vgui_wx_window::set_hscrollbar(int pos)
00176 {
00177 int temp = frame_->GetScrollPos(wxHORIZONTAL);
00178 frame_->SetScrollPos(wxHORIZONTAL, pos);
00179 return temp;
00180 }
00181
00182
00183 int vgui_wx_window::set_vscrollbar(int pos)
00184 {
00185 int temp = frame_->GetScrollPos(wxVERTICAL);
00186 frame_->SetScrollPos(wxVERTICAL, pos);
00187 return temp;
00188 }