core/vgui/impl/qt4/vgui_qt_window.cxx
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    //QWidget* mainwidget = new QWidget(this);
00021 
00022    //Create a frame to store the GL widget
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    //Create the GL widget and put it in the frame
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          //commands_[action] = menu[i].cmnd;
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 }