MenuBar.cc 10.6 KB
Newer Older
Jan Möbius's avatar
 
Jan Möbius committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
//=============================================================================
//
//                               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.
15
//
Jan Möbius's avatar
 
Jan Möbius committed
16 17 18 19
//  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.
20
//
Jan Möbius's avatar
 
Jan Möbius committed
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
//  You should have received a copy of the GNU Lesser General Public License
//  along with OpenFlipper.  If not, see <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
//
//   $Revision$
//   $Author$
//   $Date$
//
//=============================================================================




//=============================================================================
//
//  CLASS CoreWidget - IMPLEMENTATION
//
//=============================================================================


//== INCLUDES =================================================================

// -------------------- mview
#include "CoreWidget.hh"
#include <OpenFlipper/common/GlobalOptions.hh>

48
//== IMPLEMENTATION ==========================================================
Jan Möbius's avatar
 
Jan Möbius committed
49 50 51 52



void CoreWidget::slotAddMenu( QMenu* _menu , MenuType _type ) {
53

Jan Möbius's avatar
 
Jan Möbius committed
54
  switch (_type) {
55
    case TOPLEVELMENU :
Jan Möbius's avatar
 
Jan Möbius committed
56 57 58 59 60 61 62 63 64 65
      // 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( );
66 67
      break;

Jan Möbius's avatar
 
Jan Möbius committed
68
  }
69

Jan Möbius's avatar
 
Jan Möbius committed
70 71 72 73 74 75 76 77 78 79 80 81 82
}


//=============================================================================


void CoreWidget::setupMenuBar()
{
  // ======================================================================
  // File Menu
  // ======================================================================
  fileMenu_ = new QMenu(tr("&File"));
  menuBar()->addMenu(fileMenu_ );
83

Jan Möbius's avatar
 
Jan Möbius committed
84 85
  viewMenu_ = new QMenu(tr("&View"));
  menuBar()->addMenu(viewMenu_ );
86

87
  if (examiner_widgets_[0]->getDrawMenu() != NULL) {
88

89 90
    examiner_widgets_[0]->getDrawMenu()->setTitle("&DrawModes");
    QAction* drawMenuAction = viewMenu_->addMenu(examiner_widgets_[0]->getDrawMenu() );
91 92 93 94 95

    QIcon icon;
    icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"drawModes.png");
    drawMenuAction->setIcon(icon);

96
    examiner_widgets_[0]->getDrawMenu()->setTearOffEnabled(true);
97 98
  }

Jan Möbius's avatar
 
Jan Möbius committed
99
  QIcon icon;
100

Jan Möbius's avatar
 
Jan Möbius committed
101 102 103 104 105 106 107 108
  //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);
109

Jan Möbius's avatar
 
Jan Möbius committed
110
  fileMenu_->addSeparator();
111 112

  //Load object
Jan Möbius's avatar
 
Jan Möbius committed
113
  QAction* AC_Load = new QAction(tr("&Load Object"), this);
Dirk Wilden's avatar
Dirk Wilden committed
114
//   AC_Load->setShortcut (Qt::CTRL + Qt::Key_O);
Jan Möbius's avatar
 
Jan Möbius committed
115 116 117
  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");
118 119
  AC_Load->setIcon(icon);

Jan Möbius's avatar
 
Jan Möbius committed
120 121
  connect(AC_Load, SIGNAL(triggered()), this, SIGNAL(loadMenu()));
  fileMenu_->addAction(AC_Load);
122

Jan Möbius's avatar
 
Jan Möbius committed
123 124 125 126
  //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");
Jan Möbius's avatar
 
Jan Möbius committed
127
  icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"add-empty-object.png");
128
  AC_AddEmpty->setIcon(icon);
Jan Möbius's avatar
 
Jan Möbius committed
129 130
  connect(AC_AddEmpty, SIGNAL(triggered()), this, SIGNAL(addEmptyObjectMenu()));
  fileMenu_->addAction(AC_AddEmpty);
131

Jan Möbius's avatar
 
Jan Möbius committed
132
  fileMenu_->addSeparator();
133

Jan Möbius's avatar
 
Jan Möbius committed
134 135
  //Save object
  QAction* AC_Save = new QAction(tr("&Save Object"), this);
Dirk Wilden's avatar
Dirk Wilden committed
136
//   AC_Save->setShortcut (Qt::CTRL + Qt::Key_S);
Dirk Wilden's avatar
Dirk Wilden committed
137
  AC_Save->setStatusTip(tr("Save currently selected objects"));
Jan Möbius's avatar
 
Jan Möbius committed
138 139 140 141 142
  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);
143

Jan Möbius's avatar
 
Jan Möbius committed
144 145 146 147 148 149 150 151
  //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);
152

Jan Möbius's avatar
 
Jan Möbius committed
153
  fileMenu_->addSeparator();
154

Jan Möbius's avatar
 
Jan Möbius committed
155 156 157 158
  //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,...)");
Jan Möbius's avatar
 
Jan Möbius committed
159
  icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"load-settings.png");
Jan Möbius's avatar
 
Jan Möbius committed
160 161 162
  AC_load_ini->setIcon(icon);
  connect(AC_load_ini, SIGNAL(triggered()), this, SIGNAL(loadIniMenu()));
  fileMenu_->addAction(AC_load_ini);
163

Jan Möbius's avatar
 
Jan Möbius committed
164 165 166 167
  //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,...)");
Jan Möbius's avatar
 
Jan Möbius committed
168
  icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"save-settings.png");
Jan Möbius's avatar
 
Jan Möbius committed
169 170 171
  AC_save_ini->setIcon(icon);
  connect(AC_save_ini, SIGNAL(triggered()), this, SIGNAL(saveIniMenu()));
  fileMenu_->addAction(AC_save_ini);
172 173 174 175 176 177 178

  fileMenu_->addSeparator();

  //Options
  QAction* AC_Options = new QAction(tr("&Options"), this);
  AC_Options->setStatusTip(tr("Edit OpenFlipper Options"));
  AC_Options->setWhatsThis("Edit OpenFlipper Options");
Jan Möbius's avatar
Jan Möbius committed
179
  icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"options.png");
180 181 182
  AC_Options->setIcon(icon);
  connect(AC_Options, SIGNAL(triggered()), this, SLOT(showOptionsWidget()));
  fileMenu_->addAction(AC_Options);
183 184

  //Remember entry of menu (required for adding File Menu entries from plugins)
Jan Möbius's avatar
 
Jan Möbius committed
185
  fileMenuEnd_ = fileMenu_->addSeparator();
186

Jan Möbius's avatar
 
Jan Möbius committed
187 188 189 190 191 192 193
  //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_);
194

Jan Möbius's avatar
 
Jan Möbius committed
195
  fileMenu_->addSeparator();
196

Jan Möbius's avatar
 
Jan Möbius committed
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
  //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);

  // ======================================================================
  // help Menu
  // ======================================================================
  helpMenu_ = new QMenu(tr("&Help"));
  menuBar()->addMenu(helpMenu_);
212

Jan Möbius's avatar
 
Jan Möbius committed
213 214 215 216 217 218 219 220
  //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 <b>Help Browser</b>");
  connect(AC_HelpBrowser, SIGNAL(triggered()), this, SLOT(showHelpBrowserUser()));
  helpMenu_->addAction(AC_HelpBrowser);
221

Jan Möbius's avatar
 
Jan Möbius committed
222 223 224 225 226 227 228 229
  //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 <b>Help Browser</b>");
  connect(AC_HelpBrowser, SIGNAL(triggered()), this, SLOT(showHelpBrowserDeveloper()));
  helpMenu_->addAction(AC_HelpBrowser);
230

Jan Möbius's avatar
 
Jan Möbius committed
231 232 233 234 235
  //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);
236

Jan Möbius's avatar
 
Jan Möbius committed
237
  helpMenu_->addSeparator();
238

Dirk Wilden's avatar
Dirk Wilden committed
239 240 241 242 243 244 245 246 247 248 249
  //show plugins
  QAction* AC_Plugins = new QAction(tr("&Plugins"), this);
  AC_Plugins->setStatusTip(tr("Show loaded plugins"));
  AC_Plugins->setWhatsThis("Show loaded plugins");
  icon.addFile(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"network-connect.png");
  AC_Plugins->setIcon(icon);
  connect(AC_Plugins, SIGNAL(triggered()), this, SIGNAL(showPlugins()));
  helpMenu_->addAction(AC_Plugins);

  helpMenu_->addSeparator();

Jan Möbius's avatar
 
Jan Möbius committed
250 251 252 253 254 255
  //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 <b>OpenFlipper</b>");
Jan Möbius's avatar
Jan Möbius committed
256
  connect(AC_About, SIGNAL(triggered()), this, SLOT(showAboutWidget()));
Jan Möbius's avatar
 
Jan Möbius committed
257
  helpMenu_->addAction(AC_About);
258

Jan Möbius's avatar
 
Jan Möbius committed
259 260 261 262 263 264 265 266 267
  // 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);
268

Jan Möbius's avatar
 
Jan Möbius committed
269 270 271
}

//=============================================================================