MenuBar.cc 11.3 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
88
89
90
91
92
93
94
95
96
97
98

  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);
  }

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
114
115
116
117
  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");
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
127
  //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");
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
136
137
138
139
140
141
142
  //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);
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
159
160
161
162
  //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);
163

Jan Möbius's avatar
 
Jan Möbius committed
164
165
166
167
168
169
170
171
  //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);
172
173
174
175
176
177
178
179
180
181
182

  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);
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);

  // ======================================================================
  // Plugins Menu
  // ======================================================================
  pluginsMenu_ = new QMenu(tr("&Plugins"));
  menuBar()->addMenu(pluginsMenu_);
212

Jan Möbius's avatar
 
Jan Möbius committed
213
214
215
216
217
218
219
220
  //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);
221

Jan Möbius's avatar
 
Jan Möbius committed
222
223
224
225
226
227
228
229
  //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);
230

Jan Möbius's avatar
 
Jan Möbius committed
231
  pluginsMenu_->addSeparator();
232

Jan Möbius's avatar
 
Jan Möbius committed
233
234
235
236
237
  // ======================================================================
  // help Menu
  // ======================================================================
  helpMenu_ = new QMenu(tr("&Help"));
  menuBar()->addMenu(helpMenu_);
238

Jan Möbius's avatar
 
Jan Möbius committed
239
240
241
242
243
244
245
246
  //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);
247

Jan Möbius's avatar
 
Jan Möbius committed
248
249
250
251
252
253
254
255
  //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);
256

Jan Möbius's avatar
 
Jan Möbius committed
257
258
259
260
261
  //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);
262

Jan Möbius's avatar
 
Jan Möbius committed
263
  helpMenu_->addSeparator();
264

Jan Möbius's avatar
 
Jan Möbius committed
265
266
267
268
269
270
271
272
  //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>");
//   connect(AC_HelpBrowser, SIGNAL(triggered()), this, SIGNAL(showHelpBrowser()));
  helpMenu_->addAction(AC_About);
273

Jan Möbius's avatar
 
Jan Möbius committed
274
275
276
277
278
279
280
281
282
  // 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);
283

Jan Möbius's avatar
 
Jan Möbius committed
284
285
286
}

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