mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Le systray reduit ou restaure desormais toutes les fenetres
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@130 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -66,7 +66,7 @@ void QETElementEditor::setupActions() {
|
||||
connect(open, SIGNAL(triggered()), this, SLOT(slot_open()));
|
||||
connect(save, SIGNAL(triggered()), this, SLOT(slot_save()));
|
||||
connect(save_as, SIGNAL(triggered()), this, SLOT(slot_saveAs()));
|
||||
connect(quit, SIGNAL(triggered()), this, SLOT(slot_quit()));
|
||||
connect(quit, SIGNAL(triggered()), this, SLOT(close()));
|
||||
connect(selectall, SIGNAL(triggered()), ce_scene, SLOT(slot_selectAll()));
|
||||
connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll()));
|
||||
connect(inv_select, SIGNAL(triggered()), ce_scene, SLOT(slot_invertSelection()));
|
||||
@@ -119,6 +119,7 @@ void QETElementEditor::setupActions() {
|
||||
parts -> setExclusive(true);
|
||||
|
||||
parts_toolbar = new QToolBar(tr("Parties"), this);
|
||||
parts_toolbar -> setObjectName("parts");
|
||||
foreach (QAction *action, parts -> actions()) parts_toolbar -> addAction(action);
|
||||
move -> setChecked(true);
|
||||
parts_toolbar -> setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
|
||||
@@ -205,6 +206,7 @@ void QETElementEditor::setupInterface() {
|
||||
|
||||
// panel sur le cote pour editer les parties
|
||||
tools_dock = new QDockWidget(tr("Informations"), this);
|
||||
tools_dock -> setObjectName("informations");
|
||||
tools_dock -> setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
tools_dock -> setFeatures(QDockWidget::AllDockWidgetFeatures);
|
||||
tools_dock -> setMinimumWidth(290);
|
||||
@@ -215,6 +217,7 @@ void QETElementEditor::setupInterface() {
|
||||
|
||||
// panel sur le cote pour les annulations
|
||||
undo_dock = new QDockWidget(tr("Annulations"), this);
|
||||
undo_dock -> setObjectName("undo");
|
||||
undo_dock -> setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
undo_dock -> setFeatures(QDockWidget::AllDockWidgetFeatures);
|
||||
undo_dock -> setMinimumWidth(290);
|
||||
@@ -429,14 +432,7 @@ bool QETElementEditor::slot_saveAs() {
|
||||
return(result_save);
|
||||
}
|
||||
|
||||
void QETElementEditor::slot_quit(QCloseEvent *event) {
|
||||
if (close()) {
|
||||
if (event != NULL) event -> accept();
|
||||
delete(this);
|
||||
} else if (event != NULL) event -> ignore();
|
||||
}
|
||||
|
||||
bool QETElementEditor::close() {
|
||||
bool QETElementEditor::canClose() {
|
||||
if (ce_scene -> undoStack().isClean()) return(true);
|
||||
// demande d'abord a l'utilisateur s'il veut enregistrer l'element en cours
|
||||
QMessageBox::StandardButton answer = QMessageBox::question(
|
||||
@@ -460,5 +456,8 @@ bool QETElementEditor::close() {
|
||||
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
|
||||
*/
|
||||
void QETElementEditor::closeEvent(QCloseEvent *qce) {
|
||||
slot_quit(qce);
|
||||
if (canClose()) {
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
qce -> accept();
|
||||
} else qce -> ignore();
|
||||
}
|
||||
|
||||
@@ -71,14 +71,13 @@ class QETElementEditor : public QMainWindow {
|
||||
void setupActions();
|
||||
void setupMenus();
|
||||
void setupInterface();
|
||||
bool close();
|
||||
bool canClose();
|
||||
|
||||
public slots:
|
||||
void slot_new();
|
||||
void slot_open();
|
||||
bool slot_save();
|
||||
bool slot_saveAs();
|
||||
void slot_quit(QCloseEvent * = NULL);
|
||||
void slot_setRubberBandToView();
|
||||
void slot_setNoDragToView();
|
||||
void slot_setNormalMode();
|
||||
|
||||
2
main.cpp
2
main.cpp
@@ -1,5 +1,5 @@
|
||||
#include "qetapp.h"
|
||||
|
||||
#include "qetdiagrameditor.h"
|
||||
/**
|
||||
Fonction principale du programme QElectroTech
|
||||
@param argc nombre de parametres
|
||||
|
||||
23
qetapp.cpp
23
qetapp.cpp
@@ -9,7 +9,7 @@
|
||||
QETApp::QETApp(int &argc, char **argv) : QApplication(argc, argv) {
|
||||
// QET se loge dans le systray et ne doit donc pas quitter des que toutes
|
||||
// les fenetres sont cachees
|
||||
setQuitOnLastWindowClosed(false);
|
||||
//setQuitOnLastWindowClosed(false);
|
||||
|
||||
// selectionne le langage du systeme
|
||||
QString system_language = QLocale::system().name().left(2);
|
||||
@@ -22,9 +22,9 @@ QETApp::QETApp(int &argc, char **argv) : QApplication(argc, argv) {
|
||||
quitter_qet -> setStatusTip(tr("Ferme l'application QElectroTech"));
|
||||
reduce_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
|
||||
restore_appli -> setToolTip(tr("Restaurer QElectroTech"));
|
||||
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(quit()) );
|
||||
connect(reduce_appli, SIGNAL(triggered()), this, SLOT(systrayReduce()) );
|
||||
connect(restore_appli, SIGNAL(triggered()), this, SLOT(systrayRestore()) );
|
||||
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(closeEveryEditor()));
|
||||
connect(reduce_appli, SIGNAL(triggered()), this, SLOT(systrayReduce()));
|
||||
connect(restore_appli, SIGNAL(triggered()), this, SLOT(systrayRestore()));
|
||||
if (QSystemTrayIcon::isSystemTrayAvailable()) {
|
||||
qsti = new QSystemTrayIcon(QIcon(":/ico/qet.png"), this);
|
||||
qsti -> setToolTip(tr("QElectroTech"));
|
||||
@@ -35,6 +35,7 @@ QETApp::QETApp(int &argc, char **argv) : QApplication(argc, argv) {
|
||||
menu_systray -> addAction(quitter_qet);
|
||||
qsti -> setContextMenu(menu_systray);
|
||||
qsti -> show();
|
||||
every_editor_reduced = false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -78,7 +79,7 @@ void QETApp::systray(QSystemTrayIcon::ActivationReason reason) {
|
||||
case QSystemTrayIcon::DoubleClick:
|
||||
case QSystemTrayIcon::Trigger:
|
||||
// reduction ou restauration de l'application
|
||||
//if (isVisible()) systrayReduce(); else systrayRestore();
|
||||
if (every_editor_reduced) systrayRestore(); else systrayReduce();
|
||||
break;
|
||||
case QSystemTrayIcon::Unknown:
|
||||
default: // ne rien faire
|
||||
@@ -95,6 +96,7 @@ void QETApp::systrayReduce() {
|
||||
// on ajoute le menu "Restaurer" et on enleve le menu "Masquer"
|
||||
menu_systray -> insertAction(reduce_appli, restore_appli);
|
||||
menu_systray -> removeAction(reduce_appli);
|
||||
every_editor_reduced = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,6 +108,7 @@ void QETApp::systrayRestore() {
|
||||
// on ajoute le menu "Masquer" et on enleve le menu "Restaurer"
|
||||
menu_systray -> insertAction(restore_appli, reduce_appli);
|
||||
menu_systray -> removeAction(restore_appli);
|
||||
every_editor_reduced = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -188,6 +191,16 @@ QString QETApp::languagesPath() {
|
||||
return(QDir::current().path() + "/lang/");
|
||||
}
|
||||
|
||||
/**
|
||||
Ferme tous les editeurs
|
||||
*/
|
||||
void QETApp::closeEveryEditor() {
|
||||
// s'assure que toutes les fenetres soient visibles avant de quitter
|
||||
systrayRestore();
|
||||
foreach(QETDiagramEditor *e, diagramEditors()) e -> close();
|
||||
foreach(QETElementEditor *e, elementEditors()) e -> close();
|
||||
}
|
||||
|
||||
/**
|
||||
Nettoie certaines choses avant que l'application ne quitte
|
||||
*/
|
||||
|
||||
2
qetapp.h
2
qetapp.h
@@ -47,11 +47,13 @@ class QETApp : public QApplication {
|
||||
QAction *quitter_qet;
|
||||
QHash<QMainWindow *, QByteArray> window_geometries;
|
||||
QHash<QMainWindow *, QByteArray> window_states;
|
||||
bool every_editor_reduced;
|
||||
|
||||
public slots:
|
||||
void systray(QSystemTrayIcon::ActivationReason);
|
||||
void systrayReduce();
|
||||
void systrayRestore();
|
||||
void closeEveryEditor();
|
||||
|
||||
// methodes privees
|
||||
private slots:
|
||||
|
||||
@@ -60,6 +60,7 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) {
|
||||
|
||||
// ajout du panel d'Appareils en tant que QDockWidget
|
||||
qdw_pa = new QDockWidget(tr("Panel d'appareils"), this);
|
||||
qdw_pa -> setObjectName("elements panel");
|
||||
qdw_pa -> setAllowedAreas(Qt::AllDockWidgetAreas);
|
||||
qdw_pa -> setFeatures(QDockWidget::AllDockWidgetFeatures);
|
||||
qdw_pa -> setMinimumWidth(160);
|
||||
@@ -75,18 +76,6 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) {
|
||||
// mise en place des menus
|
||||
menus();
|
||||
|
||||
// systray de l'application
|
||||
if (QSystemTrayIcon::isSystemTrayAvailable()) {
|
||||
qsti = new QSystemTrayIcon(QIcon(":/ico/qet.png"), this);
|
||||
qsti -> setToolTip(tr("QElectroTech"));
|
||||
connect(qsti, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systray(QSystemTrayIcon::ActivationReason)));
|
||||
menu_systray = new QMenu(tr("QElectroTech"));
|
||||
menu_systray -> addAction(reduce_appli);
|
||||
menu_systray -> addAction(quitter_qet);
|
||||
qsti -> setContextMenu(menu_systray);
|
||||
qsti -> show();
|
||||
}
|
||||
|
||||
// la fenetre est maximisee par defaut
|
||||
setMinimumWidth(500);
|
||||
setMinimumHeight(350);
|
||||
@@ -103,67 +92,11 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) {
|
||||
QETDiagramEditor::~QETDiagramEditor() {
|
||||
}
|
||||
|
||||
/**
|
||||
Gere les evenements relatifs au QSystemTrayIcon
|
||||
@param raison un entier representant l'evenement survenu sur le systray
|
||||
*/
|
||||
void QETDiagramEditor::systray(QSystemTrayIcon::ActivationReason reason) {
|
||||
if (!QSystemTrayIcon::isSystemTrayAvailable()) return;
|
||||
switch(reason) {
|
||||
case QSystemTrayIcon::Context:
|
||||
// affichage du menu
|
||||
(qsti -> contextMenu()) -> show();
|
||||
break;
|
||||
case QSystemTrayIcon::DoubleClick:
|
||||
case QSystemTrayIcon::Trigger:
|
||||
// reduction ou restauration de l'application
|
||||
if (isVisible()) systrayReduce(); else systrayRestore();
|
||||
break;
|
||||
case QSystemTrayIcon::Unknown:
|
||||
default: // ne rien faire
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Reduit l'application dans le systray
|
||||
*/
|
||||
void QETDiagramEditor::systrayReduce() {
|
||||
// on sauvegarde la position et les dimensions de l'application
|
||||
wg = saveGeometry();
|
||||
// on cache l'application
|
||||
hide();
|
||||
// on ajoute le menu "Restaurer" et on enleve le menu "Masquer"
|
||||
menu_systray -> insertAction(reduce_appli, restore_appli);
|
||||
menu_systray -> removeAction(reduce_appli);
|
||||
}
|
||||
|
||||
/**
|
||||
Restaure l'application reduite dans le systray
|
||||
*/
|
||||
void QETDiagramEditor::systrayRestore() {
|
||||
// on restaure la position et les dimensions de l'application
|
||||
restoreGeometry(wg);
|
||||
// on affiche l'application
|
||||
show();
|
||||
// on ajoute le menu "Masquer" et on enleve le menu "Restaurer"
|
||||
menu_systray -> insertAction(restore_appli, reduce_appli);
|
||||
menu_systray -> removeAction(restore_appli);
|
||||
}
|
||||
|
||||
/**
|
||||
Permet de quitter l'application lors de la fermeture de la fenetre principale
|
||||
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
|
||||
*/
|
||||
void QETDiagramEditor::closeEvent(QCloseEvent *qce) {
|
||||
quit(qce);
|
||||
}
|
||||
|
||||
/**
|
||||
Gere la sortie de l'application
|
||||
@param e Le QCloseEvent correspondant a l'evenement de fermeture
|
||||
*/
|
||||
void QETDiagramEditor::quit(QCloseEvent *e) {
|
||||
// quitte directement s'il n'y a aucun schema ouvert
|
||||
bool peut_quitter = true;
|
||||
if (diagramEnCours()) {
|
||||
@@ -173,15 +106,15 @@ void QETDiagramEditor::quit(QCloseEvent *e) {
|
||||
workspace.setActiveWindow(fenetre);
|
||||
if (!fermer()) {
|
||||
peut_quitter = false;
|
||||
if (e != NULL) e -> ignore();
|
||||
qce -> ignore();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (peut_quitter) {
|
||||
if (QSystemTrayIcon::isSystemTrayAvailable()) qsti -> hide();
|
||||
qApp -> quit();
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
qce -> accept();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,13 +189,6 @@ void QETDiagramEditor::actions() {
|
||||
a_propos_de_qet = new QAction(QIcon(":/ico/qet.png"), tr("\300 &propos de QElectroTech"), this);
|
||||
a_propos_de_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this);
|
||||
|
||||
reduce_appli = new QAction(QIcon(":/ico/masquer.png"), tr("&Masquer"), this);
|
||||
restore_appli = new QAction(QIcon(":/ico/restaurer.png"), tr("&Restaurer"), this);
|
||||
|
||||
// info-bulles
|
||||
reduce_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
|
||||
restore_appli -> setToolTip(tr("Restaurer QElectroTech"));
|
||||
|
||||
// raccourcis clavier
|
||||
nouveau_fichier -> setShortcut(QKeySequence::New);
|
||||
ouvrir_fichier -> setShortcut(QKeySequence::Open);
|
||||
@@ -354,7 +280,7 @@ void QETDiagramEditor::actions() {
|
||||
grp_visu_sel -> setExclusive(true);
|
||||
|
||||
// connexion a des slots
|
||||
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(quit()) );
|
||||
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(close()) );
|
||||
connect(sel_tout, SIGNAL(triggered()), this, SLOT(slot_selectAll()) );
|
||||
connect(sel_rien, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) );
|
||||
connect(sel_inverse, SIGNAL(triggered()), this, SLOT(slot_selectInvert()) );
|
||||
@@ -366,8 +292,6 @@ void QETDiagramEditor::actions() {
|
||||
connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode()));
|
||||
connect(a_propos_de_qet, SIGNAL(triggered()), this, SLOT(aPropos()) );
|
||||
connect(a_propos_de_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) );
|
||||
connect(reduce_appli, SIGNAL(triggered()), this, SLOT(systrayReduce()) );
|
||||
connect(restore_appli, SIGNAL(triggered()), this, SLOT(systrayRestore()) );
|
||||
connect(zoom_avant, SIGNAL(triggered()), this, SLOT(slot_zoomPlus()) );
|
||||
connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) );
|
||||
connect(zoom_adapte, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) );
|
||||
@@ -487,6 +411,7 @@ void QETDiagramEditor::menus() {
|
||||
*/
|
||||
void QETDiagramEditor::toolbar() {
|
||||
barre_outils = new QToolBar(tr("Outils"), this);
|
||||
barre_outils -> setObjectName("toolbar");
|
||||
|
||||
// Modes selection / visualisation
|
||||
barre_outils -> addAction(mode_selection);
|
||||
|
||||
@@ -35,10 +35,6 @@ class QETDiagramEditor : public QMainWindow {
|
||||
void toolbar();
|
||||
|
||||
public slots:
|
||||
void systray(QSystemTrayIcon::ActivationReason);
|
||||
void systrayReduce();
|
||||
void systrayRestore();
|
||||
void quit(QCloseEvent * = NULL);
|
||||
void toggleFullScreen();
|
||||
void aPropos();
|
||||
void dialog_print();
|
||||
@@ -101,8 +97,6 @@ class QETDiagramEditor : public QMainWindow {
|
||||
QAction *expand_diagram;
|
||||
QAction *shrink_diagram;
|
||||
QAction *poser_fil;
|
||||
QAction *reduce_appli;
|
||||
QAction *restore_appli;
|
||||
QAction *zoom_avant;
|
||||
QAction *zoom_arriere;
|
||||
QAction *zoom_adapte;
|
||||
@@ -117,7 +111,6 @@ class QETDiagramEditor : public QMainWindow {
|
||||
QAction *f_reorganise;
|
||||
QAction *f_prec;
|
||||
QAction *f_suiv;
|
||||
QAction *menu_systray_masquer_restaurer;
|
||||
|
||||
private:
|
||||
QWorkspace workspace;
|
||||
@@ -126,15 +119,7 @@ class QETDiagramEditor : public QMainWindow {
|
||||
QDockWidget *qdw_pa;
|
||||
/// Panel d'Appareils
|
||||
ElementsPanelWidget *pa;
|
||||
/// Elements de menus pour l'icone du systray
|
||||
QMenu *menu_systray;
|
||||
QAction *systray_masquer;
|
||||
QAction * config_fullscreen;
|
||||
QMenu *menu_fenetres;
|
||||
/// Icone dans le systray
|
||||
QSystemTrayIcon *qsti;
|
||||
/// Geometrie de la fenetre principale
|
||||
QByteArray wg;
|
||||
QToolBar *barre_outils;
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user