Go to the documentation of this file.00001 #include "vgui_qt_window.h"
00002
00003 #include <vgui/vgui.h>
00004 #include <vgui/vgui_menu.h>
00005
00006 #include "vgui_qt_adaptor.h"
00007 #include "vgui_qt_menu.h"
00008 #include "vgui_qt_statusbar.h"
00009
00010 #include <QMenuBar>
00011 #include <QLayout>
00012 #include <QFrame>
00013
00014
00015 void vgui_qt_window::setup_widget(int w, int h, const char* title)
00016 {
00017 this->setWindowTitle(title);
00018 this->resize(w,h);
00019
00020
00021
00022
00023 QFrame* frame = new QFrame (this);
00024 QHBoxLayout* hlayout = new QHBoxLayout;
00025 hlayout->setMargin(2);
00026 frame->setLayout(hlayout);
00027 frame->setFrameStyle (QFrame::Sunken | QFrame::StyledPanel);
00028
00029
00030 adaptor = new vgui_qt_adaptor(frame);
00031 hlayout->addWidget(adaptor);
00032
00033 setCentralWidget(frame);
00034
00035
00036 #ifndef __SGI_CC // SGI's iostream does not allow re-initialising
00037 vgui::out.rdbuf(statusbar.statusbuf);
00038 #endif
00039 }
00040
00041
00042 vgui_qt_window::vgui_qt_window(int w, int h, const char* title)
00043 : QMainWindow(),
00044 statusbar (this),
00045 use_menubar(false),
00046 use_statusbar(true)
00047 {
00048 setup_widget(w, h, title);
00049 }
00050
00051
00052
00053 vgui_qt_window::vgui_qt_window(int w, int h, const vgui_menu& menu, const char* title)
00054 : QMainWindow(),
00055 statusbar (this),
00056 use_menubar(true),
00057 use_statusbar(true)
00058 {
00059 setup_widget(w, h, title);
00060 set_menubar(menu);
00061 }
00062
00063
00064
00065 void vgui_qt_window::set_menubar(const vgui_menu &menu)
00066 {
00067 use_menubar = true;
00068
00069 for (unsigned int i=0; i < menu.size(); ++i)
00070 {
00071 if (menu[i].is_separator())
00072 {
00073 menuBar()->addSeparator();
00074 }
00075 else if (menu[i].is_command())
00076 {
00077 QAction* action = menuBar()->addAction(menu[i].name.c_str());
00078 action->setShortcut(vgui_key_to_qt(menu[i].short_cut.key,
00079 menu[i].short_cut.mod));
00080
00081 }
00082 else if (menu[i].is_submenu())
00083 {
00084 vgui_qt_menu* qm = new vgui_qt_menu(*(menu[i].menu));
00085 qm->setTitle(menu[i].name.c_str());
00086 menuBar()->addMenu((QMenu*)qm);
00087 }
00088 }
00089 }