/* main.cc */ // #include "inf.h" #include "palette.h" #include "tree.h" #include "view.h" #include "edit.h" #include "table.h" #include "prop.h" #include "QApplication" #include "QMainWindow" #include "QMenuBar" #include "QToolBar" #include "QStatusBar" #include "QAction" #include "QPushButton" #include "QTextEdit" #include "QSplitter" #include "QHBoxLayout" #if QT_VERSION >= 0x040300 #define QT_4_3 #endif #if QT_VERSION >= 0x040500 #define QT_4_5 #endif #if QT_VERSION >= 0x040600 #define QT_4_6 #endif // #define UI #ifdef UI #include "QUiLoader" #include "QFormBuilder" #include "QFile" #endif #ifdef UI QWidget * load_form () { QUiLoader loader; QFile file ("win.ui"); file.open (QFile::ReadOnly); QWidget * widget = loader.load (&file); file.close(); return widget; } QWidget * form_builder () { QFormBuilder loader; QFile file ("win.ui"); file.open (QFile::ReadOnly); QWidget * widget = loader.load (&file); file.close(); return widget; } #endif extern "C" int main (int argc, char * * argv) { // finch::set_error_handlers (); QApplication app (argc, argv); QMainWindow * win = new QMainWindow (); QMenuBar * mainMenu = new QMenuBar (); QToolBar * toolbar = new QToolBar (); QStatusBar * statusBar = new QStatusBar (); MyPalette * palette = new MyPalette (); MyTree * tree = new MyTree (); MyView * view = new MyView (); MyEdit * edit = new MyEdit (); MyTable * table = new MyTable (); MyProp * prop = new MyProp (); /* tab widget */ QTabWidget * tab = new QTabWidget (); #ifdef QT_4_5 tab->setMovable (true); #endif // tab->setTabsClosable (true); // tab->setUsesScrollButtons (true); tab->addTab (view, "view"); tab->addTab (edit, "edit"); tab->addTab (table, "table"); #ifdef UI tab->addTab (load_form (), "form"); tab->addTab (form_builder (), "form builder"); #endif /* info */ QTextEdit * info = new QTextEdit (); QTextCursor cursor (info->document ()); cursor.insertText ("Hello "); info->setTextColor(Qt::red); info->append ("red "); info->setTextColor(Qt::blue); info->append ("blue"); info->setTextColor(Qt::green); /* layout */ QSplitter * splitter = new QSplitter (); splitter->addWidget (tree); splitter->addWidget (tab); splitter->addWidget (prop); QSplitter * center = new QSplitter (); center->setOrientation (Qt::Vertical); center->addWidget (splitter); center->addWidget (info); /* QVBoxLayout *layout = new QVBoxLayout; layout->addWidget (splitter); win->setLayout (layout); */ win->setMenuBar (mainMenu); win->addToolBar (toolbar); win->setCentralWidget (center); win->setStatusBar (statusBar); /* actions */ QAction * quit = new QAction (NULL); quit->setText ("&Quit"); quit->setShortcut (Qt::CTRL + Qt::Key_Q); #ifdef QT_4_6 quit->setIcon (QIcon::fromTheme ("application-exit")); #endif QObject::connect (quit, SIGNAL(triggered()), win, SLOT(close())); QAction * show_info = new QAction (NULL); show_info->setText ("info"); show_info->setCheckable (true); show_info->setChecked (true); QObject::connect (show_info, SIGNAL(triggered(bool)), info, SLOT(setVisible(bool))); // toolbar->addAction (show_info); QAction * execute_script = new QAction (NULL); execute_script->setText ("execute script"); execute_script->setShortcut (Qt::CTRL + Qt::Key_R); QObject::connect (execute_script, SIGNAL(triggered()), edit, SLOT(execute())); #ifndef QT_4_3 execute_script->setEnabled (false); #endif /* menu */ QMenu * fileMenu = mainMenu->addMenu ("&File"); fileMenu->addAction (quit); QMenu * editMenu = mainMenu->addMenu ("&Edit"); editMenu->addAction (execute_script); QMenu * viewMenu = mainMenu->addMenu ("&View"); viewMenu->addAction (show_info); /* toolbar */ toolbar->addAction (quit); QAction * hint = new QAction (NULL); #ifdef QT_4_6 hint->setIcon (QIcon::fromTheme ("window-new")); #endif toolbar->addAction (hint); toolbar->addWidget (palette); /* show window */ win->show (); view->example (); view->getRoot()->updateConnections (); tree->setRoot (view->getRoot ()); prop->display (view->getRoot ()->getFirstItem ()); edit->setInfo (info); return app.exec(); }