My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
qucs_init.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qucs_init.cpp
3  ---------------
4  begin : Sat May 1 2004
5  copyright : (C) 2004 by Michael Margraf
6  email : michael.margraf@alumni.tu-berlin.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifdef HAVE_CONFIG_H
19 # include <config.h>
20 #endif
21 
22 #include <qaction.h>
23 #include <qaccel.h>
24 #include <qmenubar.h>
25 #include <qstatusbar.h>
26 #include <qlabel.h>
27 #include <qtimer.h>
28 #include <qimage.h>
29 #include <qwhatsthis.h>
30 #include <qmessagebox.h>
31 
32 #include "main.h"
33 #include "qucs.h"
35 #include "octave_window.h"
36 
37 // ----------------------------------------------------------
38 // initializes all QActions of the application
39 void QucsApp::initActions()
40 {
41  // to connect more than one key to an action
42  mainAccel = new QAccel(this);
43 
44  activeAction = 0; // no active action
45 
46  // note: first argument of QAction() for backward compatibility Qt < 3.2
47 
48  fileNew = new QAction(tr("New"),
49  QIconSet(QImage(QucsSettings.BitmapDir + "filenew.png")),
50  tr("&New"), CTRL+Key_N, this);
51  fileNew->setStatusTip(tr("Creates a new document"));
52  fileNew->setWhatsThis(
53  tr("New\n\nCreates a new schematic or data display document"));
54  connect(fileNew, SIGNAL(activated()), SLOT(slotFileNew()));
55 
56  textNew = new QAction(tr("New Text"),
57  QIconSet(QImage(QucsSettings.BitmapDir + "textnew.png")),
58  tr("New &Text"), CTRL+SHIFT+Key_V, this);
59  textNew->setStatusTip(tr("Creates a new text document"));
60  textNew->setWhatsThis(tr("New Text\n\nCreates a new text document"));
61  connect(textNew, SIGNAL(activated()), SLOT(slotTextNew()));
62 
63  fileOpen = new QAction(tr("Open"),
64  QIconSet(QImage(QucsSettings.BitmapDir + "fileopen.png")),
65  tr("&Open..."), CTRL+Key_O, this);
66  fileOpen->setStatusTip(tr("Opens an existing document"));
67  fileOpen->setWhatsThis(tr("Open File\n\nOpens an existing document"));
68  connect(fileOpen, SIGNAL(activated()), SLOT(slotFileOpen()));
69 
70  fileSave = new QAction(tr("Save"),
71  QIconSet(QImage(QucsSettings.BitmapDir + "filesave.png")),
72  tr("&Save"), CTRL+Key_S, this);
73  fileSave->setStatusTip(tr("Saves the current document"));
74  fileSave->setWhatsThis(tr("Save File\n\nSaves the current document"));
75  connect(fileSave, SIGNAL(activated()), SLOT(slotFileSave()));
76 
77  fileSaveAs = new QAction("Save as...",
78  tr("Save as..."), CTRL+Key_Minus, this);
79  fileSaveAs->setStatusTip(
80  tr("Saves the current document under a new filename"));
81  fileSaveAs->setWhatsThis(
82  tr("Save As\n\nSaves the current document under a new filename"));
83  connect(fileSaveAs, SIGNAL(activated()), SLOT(slotFileSaveAs()));
84 
85  fileSaveAll = new QAction(tr("Save All"),
86  QIconSet(QImage(QucsSettings.BitmapDir + "filesaveall.png")),
87  tr("Save &All"), CTRL+Key_Plus, this);
88  fileSaveAll->setStatusTip(tr("Saves all open documents"));
89  fileSaveAll->setWhatsThis(tr("Save All Files\n\nSaves all open documents"));
90  connect(fileSaveAll, SIGNAL(activated()), SLOT(slotFileSaveAll()));
91 
92  fileClose = new QAction(tr("Close"),
93  QIconSet(QImage(QucsSettings.BitmapDir + "fileclose.png")),
94  tr("&Close"), CTRL+Key_W, this);
95  fileClose->setStatusTip(tr("Closes the current document"));
96  fileClose->setWhatsThis(tr("Close File\n\nCloses the current document"));
97  connect(fileClose, SIGNAL(activated()), SLOT(slotFileClose()));
98 
99  symEdit = new QAction("Edit Circuit Symbol",
100  tr("&Edit Circuit Symbol"), Key_F9, this);
101  symEdit->setStatusTip(tr("Edits the symbol for this schematic"));
102  symEdit->setWhatsThis(
103  tr("Edit Circuit Symbol\n\nEdits the symbol for this schematic"));
104  connect(symEdit, SIGNAL(activated()), SLOT(slotSymbolEdit()));
105 
106  fileSettings = new QAction("Document Settings...",
107  tr("&Document Settings..."), CTRL+Key_Period, this);
108  fileSettings->setStatusTip(tr("Document Settings"));
109  fileSettings->setWhatsThis(tr("Settings\n\nSets properties of the file"));
110  connect(fileSettings, SIGNAL(activated()), SLOT(slotFileSettings()));
111 
112  filePrint = new QAction(tr("Print..."),
113  QIconSet(QImage(QucsSettings.BitmapDir + "fileprint.png")),
114  tr("&Print..."), CTRL+Key_P, this);
115  filePrint->setStatusTip(tr("Prints the current document"));
116  filePrint->setWhatsThis(tr("Print File\n\nPrints the current document"));
117  connect(filePrint, SIGNAL(activated()), SLOT(slotFilePrint()));
118 
119  filePrintFit = new QAction("Print Fit to Page...",
120  tr("Print Fit to Page..."), CTRL+SHIFT+Key_P, this);
121  filePrintFit->setStatusTip(tr("Print Fit to Page"));
122  filePrintFit->setWhatsThis(
123  tr("Print Fit to Page\n\n"
124  "Print and fit content to the page size"));
125  connect(filePrintFit, SIGNAL(activated()), SLOT(slotFilePrintFit()));
126 
127  fileQuit = new QAction("Exit", tr("E&xit"), CTRL+Key_Q, this);
128  fileQuit->setStatusTip(tr("Quits the application"));
129  fileQuit->setWhatsThis(tr("Exit\n\nQuits the application"));
130  connect(fileQuit, SIGNAL(activated()), SLOT(slotFileQuit()));
131 
132  applSettings = new QAction("Application Settings...",
133  tr("Application Settings..."), CTRL+Key_Comma, this);
134  applSettings->setStatusTip(tr("Application Settings"));
135  applSettings->setWhatsThis(
136  tr("Qucs Settings\n\nSets properties of the application"));
137  connect(applSettings, SIGNAL(activated()), SLOT(slotApplSettings()));
138 
139  alignTop = new QAction("Align top", tr("Align top"), CTRL+Key_T, this);
140  alignTop->setStatusTip(tr("Align top selected elements"));
141  alignTop->setWhatsThis(
142  tr("Align top\n\nAlign selected elements to their upper edge"));
143  connect(alignTop, SIGNAL(activated()), SLOT(slotAlignTop()));
144 
145  alignBottom = new QAction("Align bottom", tr("Align bottom"), 0, this);
146  alignBottom->setStatusTip(tr("Align bottom selected elements"));
147  alignBottom->setWhatsThis(
148  tr("Align bottom\n\nAlign selected elements to their lower edge"));
149  connect(alignBottom, SIGNAL(activated()), SLOT(slotAlignBottom()));
150 
151  alignLeft = new QAction("Align left", tr("Align left"), 0, this);
152  alignLeft->setStatusTip(tr("Align left selected elements"));
153  alignLeft->setWhatsThis(
154  tr("Align left\n\nAlign selected elements to their left edge"));
155  connect(alignLeft, SIGNAL(activated()), SLOT(slotAlignLeft()));
156 
157  alignRight = new QAction("Align right", tr("Align right"), 0, this);
158  alignRight->setStatusTip(tr("Align right selected elements"));
159  alignRight->setWhatsThis(
160  tr("Align right\n\nAlign selected elements to their right edge"));
161  connect(alignRight, SIGNAL(activated()), SLOT(slotAlignRight()));
162 
163  distrHor = new QAction("Distribute horizontally",
164  tr("Distribute horizontally"), 0, this);
165  distrHor->setStatusTip(tr("Distribute equally horizontally"));
166  distrHor->setWhatsThis(
167  tr("Distribute horizontally\n\n"
168  "Distribute horizontally selected elements"));
169  connect(distrHor, SIGNAL(activated()), SLOT(slotDistribHoriz()));
170 
171  distrVert = new QAction("Distribute vertically",
172  tr("Distribute vertically"), 0, this);
173  distrVert->setStatusTip(tr("Distribute equally vertically"));
174  distrVert->setWhatsThis(
175  tr("Distribute vertically\n\n"
176  "Distribute vertically selected elements"));
177  connect(distrVert, SIGNAL(activated()), SLOT(slotDistribVert()));
178 
179  centerHor = new QAction("Center horizontally",
180  tr("Center horizontally"), 0, this);
181  centerHor->setStatusTip(tr("Center horizontally selected elements"));
182  centerHor->setWhatsThis(
183  tr("Center horizontally\n\nCenter horizontally selected elements"));
184  connect(centerHor, SIGNAL(activated()), SLOT(slotCenterHorizontal()));
185 
186  centerVert = new QAction("Center vertically",
187  tr("Center vertically"), 0, this);
188  centerVert->setStatusTip(tr("Center vertically selected elements"));
189  centerVert->setWhatsThis(
190  tr("Center vertically\n\nCenter vertically selected elements"));
191  connect(centerVert, SIGNAL(activated()), SLOT(slotCenterVertical()));
192 
193  onGrid = new QAction("Set on Grid", tr("Set on Grid"), CTRL+Key_U, this);
194  onGrid->setStatusTip(tr("Sets selected elements on grid"));
195  onGrid->setWhatsThis(
196  tr("Set on Grid\n\nSets selected elements on grid"));
197  onGrid->setToggleAction(true);
198  connect(onGrid, SIGNAL(toggled(bool)), SLOT(slotOnGrid(bool)));
199 
200  moveText = new QAction("Move Component Text",
201  tr("Move Component Text"), CTRL+Key_K, this);
202  moveText->setStatusTip(tr("Moves the property text of components"));
203  moveText->setWhatsThis(
204  tr("Move Component Text\n\nMoves the property text of components"));
205  moveText->setToggleAction(true);
206  connect(moveText, SIGNAL(toggled(bool)), SLOT(slotMoveText(bool)));
207 
208  changeProps = new QAction("Replace...", tr("Replace..."), Key_F7, this);
209  changeProps->setStatusTip(tr("Replace component properties or VHDL code"));
210  changeProps->setWhatsThis(
211  tr("Replace\n\nChange component properties\nor\ntext in VHDL code"));
212  connect(changeProps, SIGNAL(activated()), SLOT(slotChangeProps()));
213 
214  editCut = new QAction(tr("Cut"),
215  QIconSet(QImage(QucsSettings.BitmapDir + "editcut.png")),
216  tr("Cu&t"), CTRL+Key_X, this);
217  editCut->setStatusTip(
218  tr("Cuts out the selection and puts it into the clipboard"));
219  editCut->setWhatsThis(
220  tr("Cut\n\nCuts out the selection and puts it into the clipboard"));
221  connect(editCut, SIGNAL(activated()), SLOT(slotEditCut()));
222 
223  editCopy = new QAction(tr("Copy"),
224  QIconSet(QImage(QucsSettings.BitmapDir + "editcopy.png")),
225  tr("&Copy"), CTRL+Key_C, this);
226  editCopy->setStatusTip(
227  tr("Copies the selection into the clipboard"));
228  editCopy->setWhatsThis(
229  tr("Copy\n\nCopies the selection into the clipboard"));
230  connect(editCopy, SIGNAL(activated()), SLOT(slotEditCopy()));
231 
232  editPaste = new QAction(tr("Paste"),
233  QIconSet(QImage(QucsSettings.BitmapDir + "editpaste.png")),
234  tr("&Paste"), CTRL+Key_V, this);
235  editPaste->setStatusTip(
236  tr("Pastes the clipboard contents to the cursor position"));
237  editPaste->setWhatsThis(
238  tr("Paste\n\nPastes the clipboard contents to the cursor position"));
239  editPaste->setToggleAction(true);
240  connect(editPaste, SIGNAL(toggled(bool)), SLOT(slotEditPaste(bool)));
241 
242  editDelete = new QAction(tr("Delete"),
243  QIconSet(QImage(QucsSettings.BitmapDir + "editdelete.png")),
244  tr("&Delete"), Key_Delete, this);
245  editDelete->setStatusTip(tr("Deletes the selected components"));
246  editDelete->setWhatsThis(tr("Delete\n\nDeletes the selected components"));
247  editDelete->setToggleAction(true);
248  connect(editDelete, SIGNAL(toggled(bool)), SLOT(slotEditDelete(bool)));
249 
250  editFind = new QAction("Find...", tr("Find..."), CTRL+Key_F, this);
251  editFind->setStatusTip(tr("Find a piece of text"));
252  editFind->setWhatsThis(tr("Find\n\nSearches for a piece of text"));
253  connect(editFind, SIGNAL(activated()), SLOT(slotEditFind()));
254 
255  editFindAgain = new QAction("Find Again", tr("Find Again"), Key_F3, this);
256  editFindAgain->setStatusTip(tr("Find same text again"));
257  editFindAgain->setWhatsThis(
258  tr("Find\n\nSearches for the same piece of text again"));
259  connect(editFindAgain, SIGNAL(activated()), SLOT(slotEditFindAgain()));
260 
261  // to ease usage with notebooks, backspace can also be used to delete
262  mainAccel->connectItem(mainAccel->insertItem(Key_Backspace),
263  editDelete, SLOT(toggle()) );
264 
265  // cursor left/right to move marker on a graph
266  mainAccel->connectItem(mainAccel->insertItem(Key_Left),
267  this, SLOT(slotCursorLeft()));
268  mainAccel->connectItem(mainAccel->insertItem(Key_Right),
269  this, SLOT(slotCursorRight()));
270  mainAccel->connectItem(mainAccel->insertItem(Key_Up),
271  this, SLOT(slotCursorUp()));
272  mainAccel->connectItem(mainAccel->insertItem(Key_Down),
273  this, SLOT(slotCursorDown()));
274  mainAccel->connectItem(mainAccel->insertItem(Key_Tab),
275  this, SLOT(slotNextTab()));
276 
277  undo = new QAction(tr("Undo"),
278  QIconSet(QImage(QucsSettings.BitmapDir + "undo.png")),
279  tr("&Undo"), CTRL+Key_Z, this);
280  undo->setStatusTip(tr("Undoes the last command"));
281  undo->setWhatsThis(tr("Undo\n\nMakes the last action undone"));
282  connect(undo, SIGNAL(activated()), SLOT(slotEditUndo()));
283 
284  redo = new QAction(tr("Redo"),
285  QIconSet(QImage(QucsSettings.BitmapDir + "redo.png")),
286  tr("&Redo"), CTRL+Key_Y, this);
287  redo->setStatusTip(tr("Redoes the last command"));
288  redo->setWhatsThis(tr("Redo\n\nRepeats the last action once more"));
289  connect(redo, SIGNAL(activated()), SLOT(slotEditRedo()));
290 
291  projNew = new QAction("New Project...",
292  tr("&New Project..."), CTRL+SHIFT+Key_N, this);
293  projNew->setStatusTip(tr("Creates a new project"));
294  projNew->setWhatsThis(tr("New Project\n\nCreates a new project"));
295  connect(projNew, SIGNAL(activated()), SLOT(slotProjNewButt()));
296 
297  projOpen = new QAction("Open Project...", tr("&Open Project..."),
298  CTRL+SHIFT+Key_O, this);
299  projOpen->setStatusTip(tr("Opens an existing project"));
300  projOpen->setWhatsThis(tr("Open Project\n\nOpens an existing project"));
301  connect(projOpen, SIGNAL(activated()), SLOT(slotMenuOpenProject()));
302 
303  projDel = new QAction("Delete Project...",
304  tr("&Delete Project..."), CTRL+SHIFT+Key_D, this);
305  projDel->setStatusTip(tr("Deletes an existing project"));
306  projDel->setWhatsThis(tr("Delete Project\n\nDeletes an existing project"));
307  connect(projDel, SIGNAL(activated()), SLOT(slotMenuDelProject()));
308 
309  projClose = new QAction("Close Project",
310  tr("&Close Project"), CTRL+SHIFT+Key_W, this);
311  projClose->setStatusTip(tr("Closes the current project"));
312  projClose->setWhatsThis(tr("Close Project\n\nCloses the current project"));
313  connect(projClose, SIGNAL(activated()), SLOT(slotMenuCloseProject()));
314 
315  addToProj = new QAction("Add Files to Project...",
316  tr("&Add Files to Project..."), CTRL+SHIFT+Key_A, this);
317  addToProj->setStatusTip(tr("Copies files to project directory"));
318  addToProj->setWhatsThis(
319  tr("Add Files to Project\n\nCopies files to project directory"));
320  connect(addToProj, SIGNAL(activated()), SLOT(slotAddToProject()));
321 
322  createLib = new QAction("Create Library...",
323  tr("Create &Library..."), CTRL+SHIFT+Key_L, this);
324  createLib->setStatusTip(tr("Create Library from Subcircuits"));
325  createLib->setWhatsThis(
326  tr("Create Library\n\nCreate Library from Subcircuits"));
327  connect(createLib, SIGNAL(activated()), SLOT(slotCreateLib()));
328 
329  createPkg = new QAction("Create Package...",
330  tr("Create &Package..."), CTRL+SHIFT+Key_Z, this);
331  createPkg->setStatusTip(tr("Create compressed Package from Projects"));
332  createPkg->setWhatsThis(
333  tr("Create Package\n\nCreate compressed Package from complete Projects"));
334  connect(createPkg, SIGNAL(activated()), SLOT(slotCreatePackage()));
335 
336  extractPkg = new QAction("Extract Package...",
337  tr("E&xtract Package..."), CTRL+SHIFT+Key_X, this);
338  extractPkg->setStatusTip(tr("Install Content of a Package"));
339  extractPkg->setWhatsThis(
340  tr("Extract Package\n\nInstall Content of a Package"));
341  connect(extractPkg, SIGNAL(activated()), SLOT(slotExtractPackage()));
342 
343  importData = new QAction("Import/Export Data...",
344  tr("&Import/Export Data..."), CTRL+SHIFT+Key_I, this);
345  importData->setStatusTip(tr("Convert data file"));
346  importData->setWhatsThis(
347  tr("Import/Export Data\n\nConvert data file to various file formats"));
348  connect(importData, SIGNAL(activated()), SLOT(slotImportData()));
349 
350  graph2csv = new QAction("Export to CSV...",
351  tr("Export to &CSV..."), CTRL+SHIFT+Key_C, this);
352  graph2csv->setStatusTip(tr("Convert graph data to CSV file"));
353  graph2csv->setWhatsThis(
354  tr("Export to CSV\n\nConvert graph data to CSV file"));
355  connect(graph2csv, SIGNAL(activated()), SLOT(slotExportGraphAsCsv()));
356 
357  magAll = new QAction(tr("View All"),
358  QIconSet(QImage(QucsSettings.BitmapDir + "viewmagfit.png")),
359  tr("View All"), Key_0, this);
360  magAll->setStatusTip(tr("Show the whole page"));
361  magAll->setWhatsThis(tr("View All\n\nShows the whole page content"));
362  connect(magAll, SIGNAL(activated()), SLOT(slotShowAll()));
363 
364  magOne = new QAction(tr("View 1:1"),
365  QIconSet(QImage(QucsSettings.BitmapDir + "viewmag1.png")),
366  tr("View 1:1"), Key_1, this);
367  magOne->setStatusTip(tr("Views without magnification"));
368  magOne->setWhatsThis(
369  tr("View 1:1\n\nShows the page content without magnification"));
370  connect(magOne, SIGNAL(activated()), SLOT(slotShowOne()));
371 
372  magPlus = new QAction(tr("Zoom in"),
373  QIconSet(QImage(QucsSettings.BitmapDir + "viewmag+.png")),
374  tr("Zoom in"), Key_Plus, this);
375  magPlus->setStatusTip(tr("Zooms into the current view"));
376  magPlus->setWhatsThis(tr("Zoom in\n\nZooms the current view"));
377  magPlus->setToggleAction(true);
378  connect(magPlus, SIGNAL(toggled(bool)), SLOT(slotZoomIn(bool)));
379 
380  magMinus = new QAction(tr("Zoom out"),
381  QIconSet(QImage(QucsSettings.BitmapDir + "viewmag-.png")),
382  tr("Zoom out"), Key_Minus, this);
383  magMinus->setStatusTip(tr("Zooms out the current view"));
384  magMinus->setWhatsThis(tr("Zoom out\n\nZooms out the current view"));
385  connect(magMinus, SIGNAL(activated()), SLOT(slotZoomOut()));
386 
387  select = new QAction(tr("Select"),
388  QIconSet(QImage(QucsSettings.BitmapDir + "pointer.png")),
389  tr("Select"), Key_Escape, this);
390  select->setStatusTip(tr("Activate select mode"));
391  select->setWhatsThis(tr("Select\n\nActivates select mode"));
392  select->setToggleAction(true);
393  connect(select, SIGNAL(toggled(bool)), SLOT(slotSelect(bool)));
394 
395  selectAll = new QAction("Select All", tr("Select All"), CTRL+Key_A, this);
396  selectAll->setStatusTip(tr("Selects all elements"));
397  selectAll->setWhatsThis(
398  tr("Select All\n\nSelects all elements of the document"));
399  connect(selectAll, SIGNAL(activated()), SLOT(slotSelectAll()));
400 
401  selectMarker = new QAction("Select Markers", tr("Select Markers"), CTRL+SHIFT+Key_M, this);
402  selectMarker->setStatusTip(tr("Selects all markers"));
403  selectMarker->setWhatsThis(
404  tr("Select Markers\n\nSelects all diagram markers of the document"));
405  connect(selectMarker, SIGNAL(activated()), SLOT(slotSelectMarker()));
406 
407  editRotate = new QAction(tr("Rotate"),
408  QIconSet(QImage(QucsSettings.BitmapDir + "rotate_ccw.png")),
409  tr("Rotate"), CTRL+Key_R, this);
410  editRotate->setStatusTip(tr("Rotates the selected component by 90°"));
411  editRotate->setWhatsThis(
412  tr("Rotate\n\nRotates the selected component by 90° counter-clockwise"));
413  editRotate->setToggleAction(true);
414  connect(editRotate, SIGNAL(toggled(bool)), SLOT(slotEditRotate(bool)));
415 
416  editMirror = new QAction(tr("Mirror about X Axis"),
417  QIconSet(QImage(QucsSettings.BitmapDir + "mirror.png")),
418  tr("Mirror about X Axis"), CTRL+Key_J, this);
419  editMirror->setStatusTip(tr("Mirrors the selected item about X Axis"));
420  editMirror->setWhatsThis(
421  tr("Mirror about X Axis\n\nMirrors the selected item about X Axis"));
422  editMirror->setToggleAction(true);
423  connect(editMirror, SIGNAL(toggled(bool)), SLOT(slotEditMirrorX(bool)));
424 
425  editMirrorY = new QAction(tr("Mirror about Y Axis"),
426  QIconSet(QImage(QucsSettings.BitmapDir + "mirrory.png")),
427  tr("Mirror about Y Axis"), CTRL+Key_M, this);
428  editMirrorY->setStatusTip(tr("Mirrors the selected item about Y Axis"));
429  editMirrorY->setWhatsThis(
430  tr("Mirror about Y Axis\n\nMirrors the selected item about Y Axis"));
431  editMirrorY->setToggleAction(true);
432  connect(editMirrorY, SIGNAL(toggled(bool)), SLOT(slotEditMirrorY(bool)));
433 
434  intoH = new QAction(tr("Go into Subcircuit"),
435  QIconSet(QImage(QucsSettings.BitmapDir + "bottom.png")),
436  tr("Go into Subcircuit"), CTRL+Key_I, this);
437  intoH->setStatusTip(tr("Goes inside the selected subcircuit"));
438  intoH->setWhatsThis(
439  tr("Go into Subcircuit\n\nGoes inside the selected subcircuit"));
440  connect(intoH, SIGNAL(activated()), SLOT(slotIntoHierarchy()));
441 
442  popH = new QAction(tr("Pop out"),
443  QIconSet(QImage(QucsSettings.BitmapDir + "top.png")),
444  tr("Pop out"), CTRL+Key_H, this);
445  popH->setStatusTip(tr("Pop outside subcircuit"));
446  popH->setWhatsThis(
447  tr("Pop out\n\nGoes up one hierarchy level, i.e. leaves subcircuit"));
448  connect(popH, SIGNAL(activated()), SLOT(slotPopHierarchy()));
449  popH->setEnabled(false); // only enabled if useful !!!!
450 
451  editActivate = new QAction(tr("Deactivate/Activate"),
452  QIconSet(QImage(QucsSettings.BitmapDir + "deactiv.png")),
453  tr("Deactivate/Activate"), CTRL+Key_D, this);
454  editActivate->setStatusTip(tr("Deactivate/Activate selected components"));
455  editActivate->setWhatsThis(
456  tr("Deactivate/Activate\n\nDeactivate/Activate the selected components"));
457  editActivate->setToggleAction(true);
458  connect(editActivate, SIGNAL(toggled(bool)), SLOT(slotEditActivate(bool)));
459 
460  insEquation = new QAction(tr("Insert Equation"),
461  QIconSet(QImage(QucsSettings.BitmapDir + "equation.png")),
462  tr("Insert Equation"), CTRL+Key_Less, this);
463  insEquation->setStatusTip(tr("Inserts an equation"));
464  insEquation->setWhatsThis(
465  tr("Insert Equation\n\nInserts a user defined equation"));
466  insEquation->setToggleAction(true);
467  connect(insEquation, SIGNAL(toggled(bool)), SLOT(slotInsertEquation(bool)));
468 
469  insGround = new QAction(tr("Insert Ground"),
470  QIconSet(QImage(QucsSettings.BitmapDir + "ground.png")),
471  tr("Insert Ground"), CTRL+Key_G, this);
472  insGround->setStatusTip(tr("Inserts a ground symbol"));
473  insGround->setWhatsThis(tr("Insert Ground\n\nInserts a ground symbol"));
474  insGround->setToggleAction(true);
475  connect(insGround, SIGNAL(toggled(bool)), SLOT(slotInsertGround(bool)));
476 
477  insPort = new QAction(tr("Insert Port"),
478  QIconSet(QImage(QucsSettings.BitmapDir + "port.png")),
479  tr("Insert Port"), 0, this);
480  insPort->setStatusTip(tr("Inserts a port symbol"));
481  insPort->setWhatsThis(tr("Insert Port\n\nInserts a port symbol"));
482  insPort->setToggleAction(true);
483  connect(insPort, SIGNAL(toggled(bool)), SLOT(slotInsertPort(bool)));
484 
485  insWire = new QAction(tr("Wire"),
486  QIconSet(QImage(QucsSettings.BitmapDir + "wire.png")),
487  tr("Wire"), CTRL+Key_E, this);
488  insWire->setStatusTip(tr("Inserts a wire"));
489  insWire->setWhatsThis(tr("Wire\n\nInserts a wire"));
490  insWire->setToggleAction(true);
491  connect(insWire, SIGNAL(toggled(bool)), SLOT(slotSetWire(bool)));
492 
493  insLabel = new QAction(tr("Wire Label"),
494  QIconSet(QImage(QucsSettings.BitmapDir + "nodename.png")),
495  tr("Wire Label"), CTRL+Key_L, this);
496  insLabel->setStatusTip(tr("Inserts a wire or pin label"));
497  insLabel->setWhatsThis(tr("Wire Label\n\nInserts a wire or pin label"));
498  insLabel->setToggleAction(true);
499  connect(insLabel, SIGNAL(toggled(bool)), SLOT(slotInsertLabel(bool)));
500 
501  insEntity = new QAction("VHDL entity",
502  tr("VHDL entity"), CTRL+Key_Space, this);
503  insEntity->setStatusTip(tr("Inserts skeleton of VHDL entity"));
504  insEntity->setWhatsThis(
505  tr("VHDL entity\n\nInserts the skeleton of a VHDL entity"));
506  connect(insEntity, SIGNAL(activated()), SLOT(slotInsertEntity()));
507 
508  callEditor = new QAction("Text Editor", tr("Text Editor"), CTRL+Key_1, this);
509  callEditor->setStatusTip(tr("Starts the Qucs text editor"));
510  callEditor->setWhatsThis(tr("Text editor\n\nStarts the Qucs text editor"));
511  connect(callEditor, SIGNAL(activated()), SLOT(slotCallEditor()));
512 
513  callFilter = new QAction("Filter synthesis",
514  tr("Filter synthesis"), CTRL+Key_2, this);
515  callFilter->setStatusTip(tr("Starts QucsFilter"));
516  callFilter->setWhatsThis(tr("Filter synthesis\n\nStarts QucsFilter"));
517  connect(callFilter, SIGNAL(activated()), SLOT(slotCallFilter()));
518 
519  callLine = new QAction("Line calculation",
520  tr("Line calculation"), CTRL+Key_3, this);
521  callLine->setStatusTip(tr("Starts QucsTrans"));
522  callLine->setWhatsThis(
523  tr("Line calculation\n\nStarts transmission line calculator"));
524  connect(callLine, SIGNAL(activated()), SLOT(slotCallLine()));
525 
526  callLib = new QAction("Component Library",
527  tr("Component Library"), CTRL+Key_4, this);
528  callLib->setStatusTip(tr("Starts QucsLib"));
529  callLib->setWhatsThis(
530  tr("Component Library\n\nStarts component library program"));
531  connect(callLib, SIGNAL(activated()), SLOT(slotCallLibrary()));
532 
533  callMatch = new QAction("Matching Circuit",
534  tr("Matching Circuit"), CTRL+Key_5, this);
535  callMatch->setStatusTip(tr("Creates Matching Circuit"));
536  callMatch->setWhatsThis(
537  tr("Matching Circuit\n\nDialog for Creating Matching Circuit"));
538  connect(callMatch, SIGNAL(activated()), SLOT(slotCallMatch()));
539 
540  callAtt = new QAction("Attenuator synthesis",
541  tr("Attenuator synthesis"), CTRL+Key_6, this);
542  callAtt->setStatusTip(tr("Starts QucsAttenuator"));
543  callAtt->setWhatsThis(
544  tr("Attenuator synthesis\n\nStarts attenuator calculation program"));
545  connect(callAtt, SIGNAL(activated()), SLOT(slotCallAtt()));
546 
547  simulate = new QAction(tr("Simulate"),
548  QIconSet(QImage(QucsSettings.BitmapDir + "gear.png")),
549  tr("Simulate"), Key_F2, this);
550  simulate->setStatusTip(tr("Simulates the current schematic"));
551  simulate->setWhatsThis(tr("Simulate\n\nSimulates the current schematic"));
552  connect(simulate, SIGNAL(activated()), SLOT(slotSimulate()));
553 
554  dpl_sch = new QAction(tr("View Data Display/Schematic"),
555  QIconSet(QImage(QucsSettings.BitmapDir + "rebuild.png")),
556  tr("View Data Display/Schematic"), Key_F4, this);
557  dpl_sch->setStatusTip(tr("Changes to data display or schematic page"));
558  dpl_sch->setWhatsThis(
559  tr("View Data Display/Schematic\n\n")+
560  tr("Changes to data display or schematic page"));
561  connect(dpl_sch, SIGNAL(activated()), SLOT(slotToPage()));
562 
563  dcbias = new QAction("Calculate DC bias",
564  tr("Calculate DC bias"), Key_F8, this);
565  dcbias->setStatusTip(tr("Calculates DC bias and shows it"));
566  dcbias->setWhatsThis(
567  tr("Calculate DC bias\n\nCalculates DC bias and shows it"));
568  connect(dcbias, SIGNAL(activated()), SLOT(slotDCbias()));
569 
570  setMarker = new QAction(tr("Set Marker on Graph"),
571  QIconSet(QImage(QucsSettings.BitmapDir + "marker.png")),
572  tr("Set Marker on Graph"), CTRL+Key_B, this);
573  setMarker->setStatusTip(tr("Sets a marker on a diagram's graph"));
574  setMarker->setWhatsThis(
575  tr("Set Marker\n\nSets a marker on a diagram's graph"));
576  setMarker->setToggleAction(true);
577  connect(setMarker, SIGNAL(toggled(bool)), SLOT(slotSetMarker(bool)));
578 
579  showMsg = new QAction("Show Last Messages",
580  tr("Show Last Messages"), Key_F5, this);
581  showMsg->setStatusTip(tr("Shows last simulation messages"));
582  showMsg->setWhatsThis(
583  tr("Show Last Messages\n\nShows the messages of the last simulation"));
584  connect(showMsg, SIGNAL(activated()), SLOT(slotShowLastMsg()));
585 
586  showNet = new QAction("Show Last Netlist",
587  tr("Show Last Netlist"), Key_F6, this);
588  showNet->setStatusTip(tr("Shows last simulation netlist"));
589  showNet->setWhatsThis(
590  tr("Show Last Netlist\n\nShows the netlist of the last simulation"));
591  connect(showNet, SIGNAL(activated()), SLOT(slotShowLastNetlist()));
592 
593  viewToolBar = new QAction("Toolbar", tr("Tool&bar"), 0, this);
594  viewToolBar->setToggleAction(true);
595  viewToolBar->setStatusTip(tr("Enables/disables the toolbar"));
596  viewToolBar->setWhatsThis(tr("Toolbar\n\nEnables/disables the toolbar"));
597  connect(viewToolBar, SIGNAL(toggled(bool)), SLOT(slotViewToolBar(bool)));
598 
599  viewStatusBar = new QAction("Statusbar", tr("&Statusbar"), 0, this);
600  viewStatusBar->setToggleAction(true);
601  viewStatusBar->setStatusTip(tr("Enables/disables the statusbar"));
602  viewStatusBar->setWhatsThis(
603  tr("Statusbar\n\nEnables/disables the statusbar"));
604  connect(viewStatusBar, SIGNAL(toggled(bool)), SLOT(slotViewStatusBar(bool)));
605 
606  viewBrowseDock = new QAction("Dock Window", tr("&Dock Window"), 0, this);
607  viewBrowseDock->setToggleAction(true);
608  viewBrowseDock->setStatusTip(tr("Enables/disables the browse dock window"));
609  viewBrowseDock->setWhatsThis(
610  tr("Browse Window\n\nEnables/disables the browse dock window"));
611  connect(viewBrowseDock, SIGNAL(toggled(bool)), SLOT(slotViewBrowseDock(bool)));
612 
613  viewOctaveDock = new QAction(tr("&Octave Window"), 0, this, 0);
614  viewOctaveDock->setToggleAction(true);
615  viewOctaveDock->setStatusTip(tr("Shows/hides the Octave dock window"));
616  viewOctaveDock->setWhatsThis(
617  tr("Octave Window\n\nShows/hides the Octave dock window"));
618  connect(viewOctaveDock, SIGNAL(toggled(bool)), SLOT(slotViewOctaveDock(bool)));
619 
620  helpIndex = new QAction("Help Index...", tr("Help Index..."), Key_F1, this);
621  helpIndex->setStatusTip(tr("Index of Qucs Help"));
622  helpIndex->setWhatsThis(tr("Help Index\n\nIndex of intern Qucs help"));
623  connect(helpIndex, SIGNAL(activated()), SLOT(slotHelpIndex()));
624 
625  helpGetStart = new QAction("Getting Started...",
626  tr("Getting Started..."), 0, this);
627  helpGetStart->setStatusTip(tr("Getting Started with Qucs"));
628  helpGetStart->setWhatsThis(
629  tr("Getting Started\n\nShort introduction into Qucs"));
630  connect(helpGetStart, SIGNAL(activated()), SLOT(slotGettingStarted()));
631 
632  helpAboutApp = new QAction("About Qucs...", tr("&About Qucs..."), 0, this);
633  helpAboutApp->setStatusTip(tr("About the application"));
634  helpAboutApp->setWhatsThis(tr("About\n\nAbout the application"));
635  connect(helpAboutApp, SIGNAL(activated()), SLOT(slotHelpAbout()));
636 
637  helpAboutQt = new QAction("About Qt...", tr("About Qt..."), 0, this);
638  helpAboutQt->setStatusTip(tr("About Qt"));
639  helpAboutQt->setWhatsThis(tr("About Qt\n\nAbout Qt by Trolltech"));
640  connect(helpAboutQt, SIGNAL(activated()), SLOT(slotHelpAboutQt()));
641 }
642 
643 // ----------------------------------------------------------
644 void QucsApp::initMenuBar()
645 {
646  fileMenu = new QPopupMenu(); // menuBar entry fileMenu
647  fileNew->addTo(fileMenu);
648  textNew->addTo(fileMenu);
649  fileOpen->addTo(fileMenu);
650  fileClose->addTo(fileMenu);
651  fileMenu->insertSeparator();
652  fileSave->addTo(fileMenu);
653  fileSaveAll->addTo(fileMenu);
654  fileSaveAs->addTo(fileMenu);
655  filePrint->addTo(fileMenu);
656  filePrintFit->addTo(fileMenu);
657  fileMenu->insertSeparator();
658  fileSettings->addTo(fileMenu);
659  symEdit->addTo(fileMenu);
660  fileMenu->insertSeparator();
661  applSettings->addTo(fileMenu);
662  fileMenu->insertSeparator();
663  fileQuit->addTo(fileMenu);
664 
665  editMenu = new QPopupMenu(); // menuBar entry editMenu
666  undo->addTo(editMenu);
667  redo->addTo(editMenu);
668  editMenu->insertSeparator();
669  editCut->addTo(editMenu);
670  editCopy->addTo(editMenu);
671  editPaste->addTo(editMenu);
672  editDelete->addTo(editMenu);
673  editMenu->insertSeparator();
674  select->addTo(editMenu);
675  selectAll->addTo(editMenu);
676  selectMarker->addTo(editMenu);
677  editFind->addTo(editMenu);
678  editFindAgain->addTo(editMenu);
679  changeProps->addTo(editMenu);
680  editRotate->addTo(editMenu);
681  editMirror->addTo(editMenu);
682  editMirrorY->addTo(editMenu);
683  editActivate->addTo(editMenu);
684  editMenu->insertSeparator();
685  intoH->addTo(editMenu);
686  popH->addTo(editMenu);
687 
688  alignMenu = new QPopupMenu(); // menuBar entry alignMenu
689  moveText->addTo(alignMenu);
690  onGrid->addTo(alignMenu);
691  alignMenu->insertSeparator();
692  centerHor->addTo(alignMenu);
693  centerVert->addTo(alignMenu);
694  alignMenu->insertSeparator();
695  alignTop->addTo(alignMenu);
696  alignBottom->addTo(alignMenu);
697  alignLeft->addTo(alignMenu);
698  alignRight->addTo(alignMenu);
699  alignMenu->insertSeparator();
700  distrHor->addTo(alignMenu);
701  distrVert->addTo(alignMenu);
702 
703  insMenu = new QPopupMenu(); // menuBar entry insMenu
704  insWire->addTo(insMenu);
705  insLabel->addTo(insMenu);
706  insEquation->addTo(insMenu);
707  insGround->addTo(insMenu);
708  insPort->addTo(insMenu);
709  setMarker->addTo(insMenu);
710  insEntity->addTo(insMenu);
711 
712  projMenu = new QPopupMenu(); // menuBar entry projMenu
713  projNew->addTo(projMenu);
714  projOpen->addTo(projMenu);
715  addToProj->addTo(projMenu);
716  projClose->addTo(projMenu);
717  projDel->addTo(projMenu);
718  projMenu->insertSeparator();
719  createLib->addTo(projMenu);
720  createPkg->addTo(projMenu);
721  extractPkg->addTo(projMenu);
722  projMenu->insertSeparator();
723  importData->addTo(projMenu);
724  graph2csv->addTo(projMenu);
725 
726  toolMenu = new QPopupMenu(); // menuBar entry toolMenu
727  callEditor->addTo(toolMenu);
728  callFilter->addTo(toolMenu);
729  callLine->addTo(toolMenu);
730  callLib->addTo(toolMenu);
731  callMatch->addTo(toolMenu);
732  callAtt->addTo(toolMenu);
733 
734  simMenu = new QPopupMenu(); // menuBar entry simMenu
735  simulate->addTo(simMenu);
736  dpl_sch->addTo(simMenu);
737  dcbias->addTo(simMenu);
738  showMsg->addTo(simMenu);
739  showNet->addTo(simMenu);
740 
741  viewMenu = new QPopupMenu(); // menuBar entry viewMenu
742  magAll->addTo(viewMenu);
743  magOne->addTo(viewMenu);
744  magPlus->addTo(viewMenu);
745  magMinus->addTo(viewMenu);
746  viewMenu->insertSeparator();
747  viewMenu->setCheckable(true);
748  viewToolBar->addTo(viewMenu);
749  viewStatusBar->addTo(viewMenu);
750  viewBrowseDock->addTo(viewMenu);
751  viewOctaveDock->addTo(viewMenu);
752 
753  helpMenu = new QPopupMenu(); // menuBar entry helpMenu
754  helpIndex->addTo(helpMenu);
755  helpGetStart->addTo(helpMenu);
756  helpMenu->insertSeparator();
757  helpAboutApp->addTo(helpMenu);
758  helpAboutQt->addTo(helpMenu);
759 
760  menuBar()->insertItem(tr("&File"), fileMenu); // MENUBAR CONFIGURATION
761  menuBar()->insertItem(tr("&Edit"), editMenu);
762  menuBar()->insertItem(tr("P&ositioning"), alignMenu);
763  menuBar()->insertItem(tr("&Insert"), insMenu);
764  menuBar()->insertItem(tr("&Project"), projMenu);
765  menuBar()->insertItem(tr("&Tools"), toolMenu);
766  menuBar()->insertItem(tr("&Simulation"), simMenu);
767  menuBar()->insertItem(tr("&View"), viewMenu);
768  menuBar()->insertSeparator();
769  menuBar()->insertItem(tr("&Help"), helpMenu);
770 
771 }
772 
773 // ----------------------------------------------------------
774 void QucsApp::initToolBar()
775 {
776  fileToolbar = new QToolBar(this);
777  fileNew->addTo(fileToolbar);
778  textNew->addTo(fileToolbar);
779  fileOpen->addTo(fileToolbar);
780  fileSave->addTo(fileToolbar);
781  fileSaveAll->addTo(fileToolbar);
782  fileClose->addTo(fileToolbar);
783  filePrint->addTo(fileToolbar);
784 
785  editToolbar = new QToolBar(this);
786  editCut->addTo(editToolbar);
787  editCopy->addTo(editToolbar);
788  editPaste->addTo(editToolbar);
789  editDelete->addTo(editToolbar);
790  undo->addTo(editToolbar);
791  redo->addTo(editToolbar);
792 
793  viewToolbar = new QToolBar(this);
794  magAll->addTo(viewToolbar);
795  magOne->addTo(viewToolbar);
796  magPlus->addTo(viewToolbar);
797  magMinus->addTo(viewToolbar);
798 
799  workToolbar = new QToolBar(this);
800  select->addTo(workToolbar);
801  editActivate->addTo(workToolbar);
802  editMirror->addTo(workToolbar);
803  editMirrorY->addTo(workToolbar);
804  editRotate->addTo(workToolbar);
805  intoH->addTo(workToolbar);
806  popH->addTo(workToolbar);
807  insWire->addTo(workToolbar);
808  insLabel->addTo(workToolbar);
809  insEquation->addTo(workToolbar);
810  insGround->addTo(workToolbar);
811  insPort->addTo(workToolbar);
812  simulate->addTo(workToolbar);
813  dpl_sch->addTo(workToolbar);
814  setMarker->addTo(workToolbar);
815  workToolbar->addSeparator(); // <<<=======================
816  QWhatsThis::whatsThisButton(workToolbar);
817 
818 }
819 
820 // ----------------------------------------------------------
821 void QucsApp::initStatusBar()
822 {
823  // To reserve enough space, insert the longest text and rewrite it afterwards.
824  WarningLabel = new QLabel(tr("no warnings"), statusBar());
825  statusBar()->addWidget(WarningLabel, 0, true);
826 
827  PositionLabel = new QLabel("0 : 0", statusBar());
828  PositionLabel->setAlignment(Qt::AlignRight);
829  statusBar()->addWidget(PositionLabel, 0, true);
830 
831  statusBar()->message(tr("Ready."), 2000);
832 }
833 
834 // ----------------------------------------------------------
836 {
837  static int ResultState = 0;
838 
839  if(ResultState == 0) {
840  QFont f = WarningLabel->font();
841  f.setWeight(QFont::DemiBold);
842  WarningLabel->setFont(f);
843  WarningLabel->setText(tr("Warnings in last simulation! Press F5"));
844  }
845 
846  ResultState++;
847  if(ResultState & 1)
848  WarningLabel->setPaletteForegroundColor(Qt::red);
849  else
850  WarningLabel->setPaletteForegroundColor(Qt::black);
851 
852  if(ResultState < 9)
853  QTimer::singleShot(500, this, SLOT(slotShowWarnings()));
854  else
855  ResultState = 0;
856 }
857 
858 // ----------------------------------------------------------
860 {
861  QFont f = WarningLabel->font(); // reset warning label
862  f.setWeight(QFont::Normal);
863  WarningLabel->setFont(f);
864  WarningLabel->setPaletteForegroundColor(Qt::black);
865  WarningLabel->setText(tr("no warnings"));
866 }
867 
868 // ----------------------------------------------------------
870 {
871  PositionLabel->setText(QString::number(x)+" : "+QString::number(y));
872  PositionLabel->setMinimumWidth(PositionLabel->width());
873 }
874 
875 // ----------------------------------------------------------
876 // turn Toolbar on or off
877 void QucsApp::slotViewToolBar(bool toggle)
878 {
879  if (toggle== false) {
880  fileToolbar->hide();
881  editToolbar->hide();
882  viewToolbar->hide();
883  workToolbar->hide();
884  }
885  else {
886  fileToolbar->show();
887  editToolbar->show();
888  viewToolbar->show();
889  workToolbar->show();
890  }
891 }
892 
893 // ----------------------------------------------------------
894 // turn Statusbar on or off
895 void QucsApp::slotViewStatusBar(bool toggle)
896 {
897  if (toggle == false)
898  statusBar()->hide();
899  else
900  statusBar()->show();
901 }
902 
903 // ----------------------------------------------------------
904 // turn Brwose Dock Window on or off
905 void QucsApp::slotViewBrowseDock(bool toggle)
906 {
907  if (toggle == false)
908  dock->hide();
909  else
910  dock->show();
911 }
912 
913 // ----------------------------------------------------------
914 void QucsApp::slotToggleDock(bool on)
915 {
916  viewBrowseDock->blockSignals(true);
917  viewBrowseDock->setOn(on);
918  viewBrowseDock->blockSignals(false);
919 }
920 
921 // ----------------------------------------------------------
922 // turn Octave Dock Window on or off
923 void QucsApp::slotViewOctaveDock(bool toggle)
924 {
925  if(toggle) {
926  octDock->show();
927  octave->startOctave();
928  }
929  else
930  octDock->hide();
931 }
932 
933 // ----------------------------------------------------------
934 void QucsApp::slotToggleOctave(bool on)
935 {
936  viewOctaveDock->blockSignals(true);
937  viewOctaveDock->setOn(on);
938  viewOctaveDock->blockSignals(false);
939 }
940 
941 // ----------------------------------------------------------
942 void QucsApp::slotHelpAbout()
943 {
944  QMessageBox::about(this, tr("About..."),
945  tr("Qucs Version")+" "+PACKAGE_VERSION+"\n"+
946  tr("Quite Universal Circuit Simulator")+"\n"+
947  tr("Copyright (C)")+" 2003-2009 "+
948  tr("by Michael Margraf")+"\n"+
949  "\nThis is free software; see the source for copying conditions."
950  "\nThere is NO warranty; not even for MERCHANTABILITY or "
951  "\nFITNESS FOR A PARTICULAR PURPOSE.\n\n"+
952  tr("Simulator by Stefan Jahn")+"\n"+
953  tr("VHDL simulator 'FreeHDL' by Edwin Naroska and Marius Vollmer")+"\n"+
954  tr("Special thanks to Jens Flucke and Raimund Jacob")+"\n"+
955  tr("Many thanks to Mike Brinson for correcting the VHDL output")+"\n"+
956  tr("GUI improvements by Gopala Krishna A")+"\n"+
957  tr("Verilog-AMS interface by Helene Parruitte")+"\n\n"+
958  tr("Translations:")+"\n"+
959  tr("German by Stefan Jahn")+"\n"+
960  tr("Polish by Dariusz Pienkowski")+"\n"+
961  tr("Romanian by Radu Circa")+"\n"+
962  tr("French by Vincent Habchi, F5RCS")+"\n"+
963  tr("Portuguese by Luciano Franca and Helio de Sousa")+"\n"+
964  tr("Spanish by Jose L. Redrejo Rodriguez")+"\n"+
965  tr("Japanese by Toyoyuki Ishikawa")+"\n"+
966  tr("Italian by Giorgio Luparia and Claudio Girardi")+"\n"+
967  tr("Hebrew by Dotan Nahum")+"\n"+
968  tr("Swedish by Peter Landgren")+"\n"+
969  tr("Turkish by Onur and Ozgur Cobanoglu")+"\n"+
970  tr("Hungarian by Jozsef Bus")+"\n"+
971  tr("Russian by Igor Gorbounov")+"\n"+
972  tr("Czech by Marek Straka")+"\n"+
973  tr("Catalan by Antoni Subirats")+"\n"+
974  tr("Arabic by Chabane Noureddine")+"\n"+
975  tr("Kazakh by Erbol Keshubaev"));
976 }
977 
978 // ----------------------------------------------------------
979 void QucsApp::slotHelpAboutQt()
980 {
981  QMessageBox::aboutQt(this, tr("About Qt"));
982 }