diff --git a/misc/launch_qet.sh b/misc/launch_qet.sh
index 1a7c4d8b6..2f626542d 100755
--- a/misc/launch_qet.sh
+++ b/misc/launch_qet.sh
@@ -38,4 +38,4 @@ fi
# launching
${QET_EXE} ${OPTIONS} $*
-cd -
+cd - > /dev/null 2>&1
diff --git a/sources/editor/qetelementeditor.cpp b/sources/editor/qetelementeditor.cpp
index 1dc137a34..24561b299 100644
--- a/sources/editor/qetelementeditor.cpp
+++ b/sources/editor/qetelementeditor.cpp
@@ -107,6 +107,11 @@ void QETElementEditor::setupActions() {
add_arc = new QAction(QET::Icons::PartArc, tr("Ajouter un arc de cercle"), this);
add_terminal = new QAction(QET::Icons::Terminal, tr("Ajouter une borne"), this);
add_textfield = new QAction(QET::Icons::PartTextField, tr("Ajouter un champ de texte"), this);
+ fullscreen = new QAction(this);
+ slot_updateFullScreenAction();
+ configure = new QAction(QET::Icons::Configure, tr("&Configurer QElectroTech"), this);
+ about_qet = new QAction(QET::Icons::QETLogo, tr("\300 &propos de QElectroTech"), this);
+ about_qt = new QAction(QET::Icons::QtLogo, tr("\300 propos de &Qt"), this);
QString add_status_tip = tr("Maintenez la touche Shift enfonc\351e pour effectuer plusieurs ajouts d'affil\351e");
add_line -> setStatusTip(add_status_tip);
@@ -117,7 +122,10 @@ void QETElementEditor::setupActions() {
add_arc -> setStatusTip(add_status_tip);
add_terminal -> setStatusTip(add_status_tip);
add_textfield -> setStatusTip(add_status_tip);
- add_polygon -> setStatusTip(tr("Utilisez le bouton droit de la souris pour poser le dernier point du polygone"));
+ add_polygon -> setStatusTip(tr("Utilisez le bouton droit de la souris pour poser le dernier point du polygone"));
+ configure -> setStatusTip(tr("Permet de r\351gler diff\351rents param\350tres de QElectroTech", "status bar tip"));
+ about_qet -> setStatusTip(tr("Affiche des informations sur QElectroTech", "status bar tip"));
+ about_qt -> setStatusTip(tr("Affiche des informations sur la biblioth\350que Qt", "status bar tip"));
undo = ce_scene -> undoStack().createUndoAction(this, tr("Annuler"));
redo = ce_scene -> undoStack().createRedoAction(this, tr("Refaire"));
@@ -147,6 +155,8 @@ void QETElementEditor::setupActions() {
zoom_fit -> setShortcut(QKeySequence(tr("Ctrl+9")));
zoom_reset -> setShortcut(QKeySequence(tr("Ctrl+0")));
+ fullscreen -> setShortcut(QKeySequence(tr("Ctrl+Shift+F")));
+
edit_names -> setShortcut(QKeySequence(tr("Ctrl+E")));
edit_size_hs -> setShortcut(QKeySequence(tr("Ctrl+R")));
edit_ori -> setShortcut(QKeySequence(tr("Ctrl+T")));
@@ -156,6 +166,8 @@ void QETElementEditor::setupActions() {
edit_backward -> setShortcut(QKeySequence(tr("Ctrl+Shift+End")));
edit_forward -> setShortcut(QKeySequence(tr("Ctrl+Shift+Home")));
+ QETApp *qet_app = QETApp::instance();
+
connect(new_element, SIGNAL(triggered()), this, SLOT(slot_new()));
connect(open, SIGNAL(triggered()), this, SLOT(slot_open()));
connect(open_file, SIGNAL(triggered()), this, SLOT(slot_openFile()));
@@ -178,6 +190,8 @@ void QETElementEditor::setupActions() {
connect(edit_delete, SIGNAL(triggered()), ce_scene, SLOT(slot_delete()));
connect(edit_size_hs, SIGNAL(triggered()), ce_scene, SLOT(slot_editSizeHotSpot()));
connect(edit_names, SIGNAL(triggered()), ce_scene, SLOT(slot_editNames()));
+ connect(fullscreen, SIGNAL(triggered()), this, SLOT(toggleFullScreen()));
+ connect(configure, SIGNAL(triggered()), qet_app, SLOT(configureQET()));
connect(edit_ori, SIGNAL(triggered()), ce_scene, SLOT(slot_editOrientations()));
connect(edit_forward, SIGNAL(triggered()), ce_scene, SLOT(slot_bringForward()));
connect(edit_raise, SIGNAL(triggered()), ce_scene, SLOT(slot_raise()));
@@ -205,6 +219,9 @@ void QETElementEditor::setupActions() {
connect(add_terminal, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
connect(add_textfield, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
+ connect(about_qet, SIGNAL(triggered()), qet_app, SLOT(aboutQET()));
+ connect(about_qt, SIGNAL(triggered()), qet_app, SLOT(aboutQt()));
+
connect(ce_scene, SIGNAL(needNormalMode()), this, SLOT(slot_setNormalMode()));
move -> setCheckable(true);
@@ -292,16 +309,18 @@ void QETElementEditor::setupActions() {
Met en place les menus.
*/
void QETElementEditor::setupMenus() {
- file_menu = new QMenu(tr("Fichier"), this);
- edit_menu = new QMenu(tr("\311dition"), this);
- display_menu = new QMenu(tr("Affichage"), this);
- tools_menu = new QMenu(tr("Outils"), this);
- help_menu = new QMenu(tr("Aide"), this);
+ file_menu = new QMenu(tr("Fichier"), this);
+ edit_menu = new QMenu(tr("\311dition"), this);
+ display_menu = new QMenu(tr("Affichage"), this);
+ tools_menu = new QMenu(tr("Outils"), this);
+ config_menu = new QMenu(tr("&Configuration"), this);
+ help_menu = new QMenu(tr("Aide"), this);
file_menu -> setTearOffEnabled(true);
edit_menu -> setTearOffEnabled(true);
display_menu -> setTearOffEnabled(true);
tools_menu -> setTearOffEnabled(true);
+ config_menu -> setTearOffEnabled(true);
help_menu -> setTearOffEnabled(true);
file_menu -> addAction(new_element);
@@ -340,20 +359,29 @@ void QETElementEditor::setupMenus() {
edit_menu -> addAction(edit_lower);
edit_menu -> addAction(edit_backward);
- // menu Affichage > Afficher
+ display_menu -> addAction(zoom_in);
+ display_menu -> addAction(zoom_out);
+ display_menu -> addAction(zoom_fit);
+ display_menu -> addAction(zoom_reset);
+
+ // menu Configurer > Afficher
QMenu *display_toolbars = createPopupMenu();
display_toolbars -> setTearOffEnabled(true);
display_toolbars -> setTitle(tr("Afficher"));
- display_menu -> addMenu(display_toolbars);
+
+ config_menu -> addMenu(display_toolbars);
+ config_menu -> addAction(fullscreen);
+ config_menu -> addAction(configure);
+
+ help_menu -> addAction(about_qet);
+ help_menu -> addAction(about_qt);
menuBar() -> addMenu(file_menu);
menuBar() -> addMenu(edit_menu);
menuBar() -> addMenu(display_menu);
-
- /*
- menuBar() -> addMenu(tools_menu);
+ //menuBar() -> addMenu(tools_menu);
+ menuBar() -> addMenu(config_menu);
menuBar() -> addMenu(help_menu);
- */
}
/**
@@ -374,6 +402,23 @@ void QETElementEditor::slot_updateMenus() {
edit_lower -> setEnabled(selected_items);
edit_backward -> setEnabled(selected_items);
save -> setEnabled(!ce_scene -> undoStack().isClean());
+
+ slot_updateFullScreenAction();
+}
+
+/**
+ Gere l'action permettant de passer en plein ecran ou d'en sortir
+*/
+void QETElementEditor::slot_updateFullScreenAction() {
+ if (windowState() & Qt::WindowFullScreen) {
+ fullscreen -> setText(tr("Sortir du &mode plein \351cran"));
+ fullscreen -> setIcon(QET::Icons::FullScreenExit);
+ fullscreen -> setStatusTip(tr("Affiche QElectroTech en mode fen\352tr\351", "status bar tip"));
+ } else {
+ fullscreen -> setText(tr("Passer en &mode plein \351cran"));
+ fullscreen -> setIcon(QET::Icons::FullScreenEnter);
+ fullscreen -> setStatusTip(tr("Affiche QElectroTech en mode plein \351cran", "status bar tip"));
+ }
}
/**
@@ -970,6 +1015,19 @@ void QETElementEditor::closeEvent(QCloseEvent *qce) {
} else qce -> ignore();
}
+/**
+ Gere les evenements du l'editeur d'element
+ Reimplemente ici pour :
+ * mettre a jour l'action permettant d'entrer en mode plein ecran ou d'en sortir
+ @param e Evenement
+*/
+bool QETElementEditor::event(QEvent *e) {
+ if (e -> type() == QEvent::WindowStateChange) {
+ slot_updateFullScreenAction();
+ }
+ return(QMainWindow::event(e));
+}
+
/**
Remplit la liste des parties
*/
@@ -1032,6 +1090,13 @@ void QETElementEditor::slot_updateSelectionFromPartsList() {
slot_updateMenus();
}
+/**
+ Fait passer la fenetre du mode plein ecran au mode normal et vice-versa
+*/
+void QETElementEditor::toggleFullScreen() {
+ setWindowState(windowState() ^ Qt::WindowFullScreen);
+}
+
/// Lit les parametres de l'editeur d'element
void QETElementEditor::readSettings() {
QSettings &settings = QETApp::settings();
diff --git a/sources/editor/qetelementeditor.h b/sources/editor/qetelementeditor.h
index 3b32923e5..767bd0769 100644
--- a/sources/editor/qetelementeditor.h
+++ b/sources/editor/qetelementeditor.h
@@ -43,7 +43,7 @@ class QETElementEditor : public QMainWindow {
/// booleen indiquant si l'editeur est en mode "lecture seule" ou non
bool read_only;
/// menus
- QMenu *file_menu, *edit_menu, *display_menu, *tools_menu, *help_menu;
+ QMenu *file_menu, *edit_menu, *display_menu, *tools_menu, *config_menu, *help_menu;
/// vue sur la scene d'edition
ElementView *ce_view;
/// scene d'edition
@@ -68,9 +68,16 @@ class QETElementEditor : public QMainWindow {
QAction *selectall, *deselectall, *inv_select;
QAction *cut, *copy, *paste, *paste_in_area;
QAction *undo, *redo;
- QAction *zoom_in, *zoom_out, *zoom_fit, *zoom_reset;
QAction *edit_delete, *edit_size_hs, *edit_names, *edit_ori;
QAction *edit_raise, *edit_lower, *edit_backward, *edit_forward;
+ /// actions du menu affichage
+ QAction *zoom_in, *zoom_out, *zoom_fit, *zoom_reset;
+ /// actions du menu configurer
+ QAction *fullscreen; ///< Passe en mode plein ecran ou en sort
+ QAction *configure; ///< Lance le dialogue de configuration de QElectroTech
+ /// actions du menu aide
+ QAction *about_qet; ///< Lance le dialogue "A propos de QElectroTech"
+ QAction *about_qt; ///< Lance le dialogue "A propos de Qt"
/// barres d'outils
QToolBar *parts_toolbar, *main_toolbar, *view_toolbar, *depth_toolbar, *element_toolbar;
/// actions de la barre d'outils
@@ -113,6 +120,7 @@ class QETElementEditor : public QMainWindow {
protected:
void closeEvent(QCloseEvent *);
+ virtual bool event(QEvent *);
private:
void setupActions();
@@ -136,10 +144,12 @@ class QETElementEditor : public QMainWindow {
void slot_setNormalMode();
void slot_updateInformations();
void slot_updateMenus();
+ void slot_updateFullScreenAction();
void slot_updateTitle();
void slot_createPartsList();
void slot_updatePartsList();
void slot_updateSelectionFromPartsList();
+ void toggleFullScreen();
void xmlPreview();
bool checkElement();
};
diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp
index e4d8a619a..e40cc624f 100644
--- a/sources/qetapp.cpp
+++ b/sources/qetapp.cpp
@@ -16,6 +16,8 @@
along with QElectroTech. If not, see .
*/
#include "qetapp.h"
+#include "aboutqet.h"
+#include "configdialog.h"
#include "qetdiagrameditor.h"
#include "qetelementeditor.h"
#include "elementscollectionitem.h"
@@ -37,6 +39,7 @@ QMap QETApp::registered_projects_ = QMap
uint QETApp::next_project_id = 0;
RecentFiles *QETApp::projects_recent_files_ = 0;
RecentFiles *QETApp::elements_recent_files_ = 0;
+AboutQET *QETApp::about_dialog_ = 0;
/**
Constructeur
@@ -99,6 +102,9 @@ QETApp::~QETApp() {
projects_recent_files_ -> save();
delete elements_recent_files_;
delete projects_recent_files_;
+ if (about_dialog_) {
+ delete about_dialog_;
+ }
delete qsti;
delete custom_collection;
delete common_collection;
@@ -727,6 +733,61 @@ void QETApp::openElementFiles(const QStringList &files_list) {
}
}
+/**
+ Permet a l'utilisateur de configurer QET en lancant un dialogue approprie.
+ @see ConfigDialog
+*/
+void QETApp::configureQET() {
+ // determine le widget parent a utiliser pour le dialogue
+#ifdef Q_WS_MAC
+ QWidget *parent_widget = 0;
+#else
+ QWidget *parent_widget = activeWindow();
+#endif
+
+ // cree le dialogue
+ ConfigDialog cd;
+
+ // associe le dialogue a un eventuel widget parent
+ if (parent_widget) {
+ cd.setParent(parent_widget, cd.windowFlags());
+ }
+
+ // affiche le dialogue puis evite de le lier a un quelconque widget parent
+ cd.exec();
+ cd.setParent(0, cd.windowFlags());
+}
+
+/**
+ Dialogue "A propos de QElectroTech"
+ Le dialogue en question est cree lors du premier appel de cette fonction.
+ En consequence, sa premiere apparition n'est pas immediate. Par la suite,
+ le dialogue n'a pas a etre recree et il apparait instantanement. Il est
+ detruit en meme temps que l'application.
+*/
+void QETApp::aboutQET() {
+ // determine le widget parent a utiliser pour le dialogue
+#ifdef Q_WS_MAC
+ QWidget *parent_widget = 0;
+#else
+ QWidget *parent_widget = activeWindow();
+#endif
+
+ // cree le dialogue si cela n'a pas deja ete fait
+ if (!about_dialog_) {
+ about_dialog_ = new AboutQET();
+ }
+
+ // associe le dialogue a un eventuel widget parent
+ if (parent_widget) {
+ about_dialog_ -> setParent(parent_widget, about_dialog_ -> windowFlags());
+ }
+
+ // affiche le dialogue puis evite de le lier a un quelconque widget parent
+ about_dialog_ -> exec();
+ about_dialog_ -> setParent(0, about_dialog_ -> windowFlags());
+}
+
/**
@param window fenetre dont il faut trouver les barres d'outils et dock flottants
@return les barres d'outils et dock flottants de la fenetre
diff --git a/sources/qetapp.h b/sources/qetapp.h
index c59d65dd5..901600a89 100644
--- a/sources/qetapp.h
+++ b/sources/qetapp.h
@@ -22,6 +22,7 @@
#include
#include "elementslocation.h"
#include "qetarguments.h"
+class AboutQET;
class QETDiagramEditor;
class QETElementEditor;
class ElementsCollection;
@@ -136,6 +137,7 @@ class QETApp : public QETSingleApplication {
static uint next_project_id;
static RecentFiles *projects_recent_files_;
static RecentFiles *elements_recent_files_;
+ static AboutQET *about_dialog_;
public slots:
void systray(QSystemTrayIcon::ActivationReason);
@@ -157,6 +159,8 @@ class QETApp : public QETSingleApplication {
void openFiles(const QETArguments &);
void openProjectFiles(const QStringList &);
void openElementFiles(const QStringList &);
+ void configureQET();
+ void aboutQET();
// methodes privees
private slots:
diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp
index 274291867..7a8d067ed 100644
--- a/sources/qetdiagrameditor.cpp
+++ b/sources/qetdiagrameditor.cpp
@@ -20,9 +20,7 @@
#include "diagramview.h"
#include "diagram.h"
#include "elementspanelwidget.h"
-#include "aboutqet.h"
#include "conductorpropertieswidget.h"
-#include "configdialog.h"
#include "qetproject.h"
#include "projectview.h"
#include "recentfiles.h"
@@ -168,18 +166,6 @@ void QETDiagramEditor::toggleFullScreen() {
setWindowState(windowState() ^ Qt::WindowFullScreen);
}
-/**
- Dialogue "A propos de QElectroTech"
- Le dialogue en question est cree lors du premier appel de cette fonction.
- En consequence, sa premiere apparition n'est pas immediate. Par la suite,
- le dialogue n'a pas a etre recree et il apparait instantanement. Il est
- detruit en meme temps que son parent (ici, le QETDiagramEditor).
-*/
-void QETDiagramEditor::aboutQET() {
- static AboutQET *apqet = new AboutQET(this);
- apqet -> exec();
-}
-
/**
Mise en place des actions
*/
@@ -353,6 +339,8 @@ void QETDiagramEditor::actions() {
grp_view_mode -> addAction(tabbed_view_mode);
grp_view_mode -> setExclusive(true);
+ QETApp *qet_app = QETApp::instance();
+
// connexion a des slots
connect(quit_editor, SIGNAL(triggered()), this, SLOT(close()) );
connect(select_all, SIGNAL(triggered()), this, SLOT(slot_selectAll()) );
@@ -361,13 +349,13 @@ void QETDiagramEditor::actions() {
connect(delete_selection, SIGNAL(triggered()), this, SLOT(slot_delete()) );
connect(rotate_selection, SIGNAL(triggered()), this, SLOT(slot_rotate()) );
connect(fullscreen, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) );
- connect(configure, SIGNAL(triggered()), this, SLOT(configureQET()) );
+ connect(configure, SIGNAL(triggered()), qet_app, SLOT(configureQET()) );
connect(windowed_view_mode, SIGNAL(triggered()), this, SLOT(setWindowedMode()) );
connect(tabbed_view_mode, SIGNAL(triggered()), this, SLOT(setTabbedMode()) );
connect(mode_selection, SIGNAL(triggered()), this, SLOT(slot_setSelectionMode()) );
connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode()) );
- connect(about_qet, SIGNAL(triggered()), this, SLOT(aboutQET()) );
- connect(about_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) );
+ connect(about_qet, SIGNAL(triggered()), qet_app, SLOT(aboutQET()) );
+ connect(about_qt, SIGNAL(triggered()), qet_app, SLOT(aboutQt()) );
connect(prj_edit_prop, SIGNAL(triggered()), this, SLOT(editCurrentProjectProperties()));
connect(prj_add_diagram, SIGNAL(triggered()), this, SLOT(addDiagramToProject()) );
connect(prj_del_diagram, SIGNAL(triggered()), this, SLOT(removeDiagramFromProject()) );
@@ -1712,15 +1700,6 @@ void QETDiagramEditor::findElementInPanel(const ElementsLocation &location) {
}
}
-/**
- Permet a l'utilisateur de configurer QET en lancant un dialogue approprie.
- @see ConfigDialog
-*/
-void QETDiagramEditor::configureQET() {
- ConfigDialog cd(this);
- cd.exec();
-}
-
/**
@return Les proprietes par defaut pour le cartouche d'un schema
*/
diff --git a/sources/qetdiagrameditor.h b/sources/qetdiagrameditor.h
index 0ffeca817..db65ba209 100644
--- a/sources/qetdiagrameditor.h
+++ b/sources/qetdiagrameditor.h
@@ -78,8 +78,6 @@ class QETDiagramEditor : public QMainWindow {
public slots:
void toggleFullScreen();
- void configureQET();
- void aboutQET();
void printDialog();
void exportDialog();
bool saveAsDialog();