//=============================================================================
//
// OpenFlipper
// Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
// www.openflipper.org
//
//-----------------------------------------------------------------------------
//
// License
//
// OpenFlipper is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenFlipper is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenFlipper. If not, see .
//
//-----------------------------------------------------------------------------
//
// $Revision$
// $Author$
// $Date$
//
//=============================================================================
//=============================================================================
//
// CLASS CoreWidget - IMPLEMENTATION
//
//=============================================================================
//== INCLUDES =================================================================
// -------------------- mview
#include "CoreWidget.hh"
#include
//== IMPLEMENTATION ==========================================================
void CoreWidget::slotAddMenu( QMenu* _menu , MenuType _type ) {
switch (_type) {
case TOPLEVELMENU :
// Add it to the menubar as a top level Menu
menuBar()->insertMenu(helpMenu_->menuAction() ,_menu);
break;
case FILEMENU :
fileMenu_->insertSeparator(fileMenuEnd_);
fileMenu_->insertMenu( fileMenuEnd_ , _menu );
break;
case VIEWMENU :
viewMenu_->addMenu( _menu );
viewMenu_->addSeparator( );
break;
}
}
//=============================================================================
void CoreWidget::setupMenuBar()
{
// ======================================================================
// File Menu
// ======================================================================
fileMenu_ = new QMenu(tr("&File"));
menuBar()->addMenu(fileMenu_ );
viewMenu_ = new QMenu(tr("&View"));
menuBar()->addMenu(viewMenu_ );
if (examiner_widget_->getDrawMenu() != NULL) {
examiner_widget_->getDrawMenu()->setTitle("&DrawModes");
QAction* drawMenuAction = viewMenu_->addMenu(examiner_widget_->getDrawMenu() );
QIcon icon;
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"drawModes.png");
drawMenuAction->setIcon(icon);
examiner_widget_->getDrawMenu()->setTearOffEnabled(true);
}
QIcon icon;
//Clear all
QAction* AC_clear_all = new QAction(tr("&Clear All"), this);;
AC_clear_all->setStatusTip(tr("Clear all Objects"));
AC_clear_all->setWhatsThis("Close all open Objects");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-clear.png");
AC_clear_all->setIcon(icon);
connect(AC_clear_all, SIGNAL(triggered()), this, SIGNAL(clearAll()));
fileMenu_->addAction(AC_clear_all);
fileMenu_->addSeparator();
//Load object
QAction* AC_Load = new QAction(tr("&Load Object"), this);
AC_Load->setShortcut (Qt::CTRL + Qt::Key_O);
AC_Load->setStatusTip(tr("Load an object"));
AC_Load->setWhatsThis("Load a new object");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-open.png");
AC_Load->setIcon(icon);
connect(AC_Load, SIGNAL(triggered()), this, SIGNAL(loadMenu()));
fileMenu_->addAction(AC_Load);
//Add empty object
QAction* AC_AddEmpty = new QAction(tr("&Add Empty Object"), this);
AC_AddEmpty->setStatusTip(tr("Add an empty object"));
AC_AddEmpty->setWhatsThis("Creates a new empty object of a given type");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-new.png");
AC_AddEmpty->setIcon(icon);
connect(AC_AddEmpty, SIGNAL(triggered()), this, SIGNAL(addEmptyObjectMenu()));
fileMenu_->addAction(AC_AddEmpty);
fileMenu_->addSeparator();
//Save object
QAction* AC_Save = new QAction(tr("&Save Object"), this);
AC_Save->setShortcut (Qt::CTRL + Qt::Key_S);
AC_Save->setStatusTip(tr("Save objects"));
AC_Save->setWhatsThis("Saves all currently selected objects");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-save.png");
AC_Save->setIcon(icon);
connect(AC_Save, SIGNAL(triggered()), this, SIGNAL(saveMenu()));
fileMenu_->addAction(AC_Save);
//Save object to
QAction* AC_Save_to = new QAction(tr("&Save Object To"), this);
AC_Save_to->setStatusTip(tr("Save current Object(s) To"));
AC_Save_to->setWhatsThis("Saves all currently selected objects under a new name");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-save-as.png");
AC_Save_to->setIcon(icon);
connect(AC_Save_to, SIGNAL(triggered()), this, SIGNAL(saveToMenu()));
fileMenu_->addAction(AC_Save_to);
fileMenu_->addSeparator();
//Load ini
QAction* AC_load_ini = new QAction(tr("&Load Settings"), this);
AC_load_ini->setStatusTip(tr("Load Settings from INI file"));
AC_load_ini->setWhatsThis("Load a previous settings from file (objects,colors,...)");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"folder.png");
AC_load_ini->setIcon(icon);
connect(AC_load_ini, SIGNAL(triggered()), this, SIGNAL(loadIniMenu()));
fileMenu_->addAction(AC_load_ini);
//Save ini
QAction* AC_save_ini = new QAction(tr("&Save Settings"), this);
AC_save_ini->setStatusTip(tr("Save current settings to INI file"));
AC_save_ini->setWhatsThis("Save settings to file (objects,colors,...)");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"folder-txt.png");
AC_save_ini->setIcon(icon);
connect(AC_save_ini, SIGNAL(triggered()), this, SIGNAL(saveIniMenu()));
fileMenu_->addAction(AC_save_ini);
fileMenu_->addSeparator();
//Options
QAction* AC_Options = new QAction(tr("&Options"), this);
AC_Options->setStatusTip(tr("Edit OpenFlipper Options"));
AC_Options->setWhatsThis("Edit OpenFlipper Options");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"preferences-system.png");
AC_Options->setIcon(icon);
connect(AC_Options, SIGNAL(triggered()), this, SLOT(showOptionsWidget()));
fileMenu_->addAction(AC_Options);
//Remember entry of menu (required for adding File Menu entries from plugins)
fileMenuEnd_ = fileMenu_->addSeparator();
//Recent files
recentFilesMenu_ = new QMenu(tr("&Recent Files"));
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"document-open-recent.png");
recentFilesMenu_->setIcon(icon);
recentFilesMenu_->setWhatsThis("Open recent files");
connect(recentFilesMenu_,SIGNAL(triggered(QAction*)),this,SIGNAL(recentOpen(QAction*)));
fileMenu_->addMenu(recentFilesMenu_);
fileMenu_->addSeparator();
//Main Application exit menu entry
QAction* AC_exit = new QAction(tr("&Exit"), this);;
AC_exit->setShortcut (Qt::CTRL + Qt::Key_Q);
AC_exit->setStatusTip(tr("Exit Application"));
recentFilesMenu_->setWhatsThis("Close OpenFlipper");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"application-exit.png");
AC_exit->setIcon(icon);
connect(AC_exit, SIGNAL(triggered()), this, SIGNAL(exit()));
fileMenu_->addAction(AC_exit);
// ======================================================================
// Plugins Menu
// ======================================================================
pluginsMenu_ = new QMenu(tr("&Plugins"));
menuBar()->addMenu(pluginsMenu_);
//Load Plugin
QAction* AC_LoadPlug = new QAction(tr("&Load Plugin"), this);
AC_LoadPlug->setStatusTip(tr("Load an additional plugin"));
AC_LoadPlug->setWhatsThis("Load an additional plugin from file");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"network-connect.png");
AC_LoadPlug->setIcon(icon);
connect(AC_LoadPlug, SIGNAL(triggered()), this, SIGNAL(loadPlugin()));
pluginsMenu_->addAction(AC_LoadPlug);
//Unload plugin
QAction* AC_UnloadPlug = new QAction(tr("&Unload Plugin"), this);
AC_UnloadPlug->setStatusTip(tr("Unload a plugin"));
AC_UnloadPlug->setWhatsThis("Close a currently loaded plugin");
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"network-disconnect.png");
AC_UnloadPlug->setIcon(icon);
connect(AC_UnloadPlug, SIGNAL(triggered()), this, SIGNAL(unloadPlugin()));
pluginsMenu_->addAction(AC_UnloadPlug);
pluginsMenu_->addSeparator();
// ======================================================================
// help Menu
// ======================================================================
helpMenu_ = new QMenu(tr("&Help"));
menuBar()->addMenu(helpMenu_);
//Open Help Browser
QAction* AC_HelpBrowser = new QAction(tr("&User Help"), this);
AC_HelpBrowser->setStatusTip(tr("Open Help Browser with User Documentation"));
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"help-browser.png");
AC_HelpBrowser->setIcon(icon);
AC_HelpBrowser->setWhatsThis("Open the Help Browser");
connect(AC_HelpBrowser, SIGNAL(triggered()), this, SLOT(showHelpBrowserUser()));
helpMenu_->addAction(AC_HelpBrowser);
//Open Help Browser
AC_HelpBrowser = new QAction(tr("&Developer Help"), this);
AC_HelpBrowser->setStatusTip(tr("Open Help Browser with Developer Documentation"));
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"help-browser.png");
AC_HelpBrowser->setIcon(icon);
AC_HelpBrowser->setWhatsThis("Open the Help Browser");
connect(AC_HelpBrowser, SIGNAL(triggered()), this, SLOT(showHelpBrowserDeveloper()));
helpMenu_->addAction(AC_HelpBrowser);
//Switch to whats this mode
QAction* AC_Whats_this = QWhatsThis::createAction ( this );
AC_Whats_this->setStatusTip(tr("Enter What's this Mode"));
AC_Whats_this->setWhatsThis("Get information about a specific Button/Widget/...");
helpMenu_->addAction(AC_Whats_this);
helpMenu_->addSeparator();
//About Action
QAction* AC_About = new QAction(tr("&About"), this);
AC_About->setStatusTip(tr("About OpenFlipper"));
icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"help-about.png");
AC_About->setIcon(icon);
AC_About->setWhatsThis("This entry shows information about OpenFlipper");
// connect(AC_HelpBrowser, SIGNAL(triggered()), this, SIGNAL(showHelpBrowser()));
helpMenu_->addAction(AC_About);
// Add Menu entries to the main Toolbar
mainToolbar_->addAction(AC_Load);
mainToolbar_->addAction(AC_AddEmpty);
mainToolbar_->addSeparator();
mainToolbar_->addAction(AC_Save);
mainToolbar_->addAction(AC_Save_to);
mainToolbar_->addSeparator();
mainToolbar_->addAction(AC_load_ini);
mainToolbar_->addAction(AC_save_ini);
}
//=============================================================================