2007-09-21 12:35:28 +00:00
# include "qetdiagrameditor.h"
2007-09-21 13:22:18 +00:00
# include "qetapp.h"
2007-01-29 00:41:12 +00:00
# include "diagramview.h"
2007-02-26 22:42:46 +00:00
# include "elementspanelwidget.h"
2006-10-27 15:47:22 +00:00
# include "aboutqet.h"
/**
constructeur
@ param parent le widget parent de la fenetre principale
*/
2007-09-21 12:35:28 +00:00
QETDiagramEditor : : QETDiagramEditor ( QWidget * parent ) : QMainWindow ( parent ) {
2007-07-16 15:16:58 +00:00
// cree les dossiers de configuration si necessaire
2007-09-21 13:22:18 +00:00
QDir config_dir ( QETApp : : configDir ( ) ) ;
if ( ! config_dir . exists ( ) ) config_dir . mkpath ( QETApp : : configDir ( ) ) ;
2007-07-16 15:16:58 +00:00
2007-09-21 13:22:18 +00:00
QDir custom_elements_dir ( QETApp : : customElementsDir ( ) ) ;
if ( ! custom_elements_dir . exists ( ) ) custom_elements_dir . mkpath ( QETApp : : customElementsDir ( ) ) ;
2007-07-16 15:16:58 +00:00
2006-10-27 15:47:22 +00:00
// mise en place de l'interface MDI au centre de l'application
setCentralWidget ( & workspace ) ;
// mise en place du signalmapper
connect ( & windowMapper , SIGNAL ( mapped ( QWidget * ) ) , & workspace , SLOT ( setActiveWindow ( QWidget * ) ) ) ;
// recupere les arguments passes au programme
QStringList args = QCoreApplication : : arguments ( ) ;
// recupere les chemins de fichiers parmi les arguments
2007-01-29 00:41:12 +00:00
QStringList files ;
2006-10-27 15:47:22 +00:00
for ( int i = 1 ; i < args . size ( ) ; + + i ) {
2007-01-29 00:41:12 +00:00
if ( QFileInfo ( args . at ( i ) ) . exists ( ) ) files < < args . at ( i ) ;
2006-10-27 15:47:22 +00:00
}
// si des chemins de fichiers valides sont passes en arguments
2007-01-29 00:41:12 +00:00
QList < DiagramView * > diagram_views ;
if ( files . size ( ) ) {
2006-10-27 15:47:22 +00:00
// alors on ouvre ces fichiers
2007-01-29 00:41:12 +00:00
foreach ( QString file , files ) {
DiagramView * sv = new DiagramView ( this ) ;
if ( sv - > ouvrir ( file ) ) diagram_views < < sv ;
2006-10-27 15:47:22 +00:00
else delete sv ;
}
}
// si aucun schema n'a ete ouvert jusqu'a maintenant, on ouvre un nouveau schema
2007-01-29 00:41:12 +00:00
if ( ! diagram_views . size ( ) ) diagram_views < < new DiagramView ( this ) ;
2006-10-27 15:47:22 +00:00
2007-01-29 00:41:12 +00:00
// ajout de tous les DiagramView necessaires
foreach ( DiagramView * sv , diagram_views ) addDiagramView ( sv ) ;
2006-10-27 15:47:22 +00:00
// titre de la fenetre
setWindowTitle ( tr ( " QElectroTech " ) ) ;
// icone de la fenetre
setWindowIcon ( QIcon ( " :/ico/qet.png " ) ) ;
// barre de statut de la fenetre
statusBar ( ) - > showMessage ( tr ( " QElectrotech " ) ) ;
// ajout du panel d'Appareils en tant que QDockWidget
qdw_pa = new QDockWidget ( tr ( " Panel d'appareils " ) , this ) ;
qdw_pa - > setAllowedAreas ( Qt : : AllDockWidgetAreas ) ;
qdw_pa - > setFeatures ( QDockWidget : : AllDockWidgetFeatures ) ;
qdw_pa - > setMinimumWidth ( 160 ) ;
2007-02-26 22:42:46 +00:00
qdw_pa - > setWidget ( pa = new ElementsPanelWidget ( qdw_pa ) ) ;
2006-10-27 15:47:22 +00:00
addDockWidget ( Qt : : LeftDockWidgetArea , qdw_pa ) ;
// mise en place des actions
actions ( ) ;
// mise en place de la barre d'outils
toolbar ( ) ;
// 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 " ) ) ;
2007-01-29 00:41:12 +00:00
menu_systray - > addAction ( reduce_appli ) ;
2006-10-27 15:47:22 +00:00
menu_systray - > addAction ( quitter_qet ) ;
qsti - > setContextMenu ( menu_systray ) ;
qsti - > show ( ) ;
}
// la fenetre est maximisee par defaut
setMinimumWidth ( 500 ) ;
setMinimumHeight ( 350 ) ;
setWindowState ( Qt : : WindowMaximized ) ;
// connexions signaux / slots pour une interface sensee
2007-01-29 00:41:12 +00:00
connect ( & workspace , SIGNAL ( windowActivated ( QWidget * ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
connect ( QApplication : : clipboard ( ) , SIGNAL ( dataChanged ( ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
2006-10-27 15:47:22 +00:00
}
2007-04-12 03:13:13 +00:00
/**
Destructeur
*/
2007-09-21 12:35:28 +00:00
QETDiagramEditor : : ~ QETDiagramEditor ( ) {
2007-04-12 03:13:13 +00:00
}
2006-10-27 15:47:22 +00:00
/**
Gere les evenements relatifs au QSystemTrayIcon
@ param raison un entier representant l ' evenement survenu sur le systray
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : systray ( QSystemTrayIcon : : ActivationReason reason ) {
2006-10-27 15:47:22 +00:00
if ( ! QSystemTrayIcon : : isSystemTrayAvailable ( ) ) return ;
2007-01-29 00:41:12 +00:00
switch ( reason ) {
2006-10-27 15:47:22 +00:00
case QSystemTrayIcon : : Context :
// affichage du menu
( qsti - > contextMenu ( ) ) - > show ( ) ;
break ;
case QSystemTrayIcon : : DoubleClick :
case QSystemTrayIcon : : Trigger :
// reduction ou restauration de l'application
2007-01-29 00:41:12 +00:00
if ( isVisible ( ) ) systrayReduce ( ) ; else systrayRestore ( ) ;
2006-10-27 15:47:22 +00:00
break ;
case QSystemTrayIcon : : Unknown :
default : // ne rien faire
break ;
}
}
/**
Reduit l ' application dans le systray
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : systrayReduce ( ) {
2006-10-27 15:47:22 +00:00
// on sauvegarde la position et les dimensions de l'application
wg = saveGeometry ( ) ;
// on cache l'application
hide ( ) ;
2007-01-29 00:41:12 +00:00
// on ajoute le menu "Restaurer" et on enleve le menu "Masquer"
menu_systray - > insertAction ( reduce_appli , restore_appli ) ;
menu_systray - > removeAction ( reduce_appli ) ;
2006-10-27 15:47:22 +00:00
}
/**
Restaure l ' application reduite dans le systray
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : systrayRestore ( ) {
2006-10-27 15:47:22 +00:00
// on restaure la position et les dimensions de l'application
restoreGeometry ( wg ) ;
// on affiche l'application
show ( ) ;
2007-01-29 00:41:12 +00:00
// on ajoute le menu "Masquer" et on enleve le menu "Restaurer"
menu_systray - > insertAction ( restore_appli , reduce_appli ) ;
menu_systray - > removeAction ( restore_appli ) ;
2006-10-27 15:47:22 +00:00
}
/**
Permet de quitter l ' application lors de la fermeture de la fenetre principale
2006-11-11 13:56:40 +00:00
@ param qce Le QCloseEvent correspondant a l ' evenement de fermeture
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : closeEvent ( QCloseEvent * qce ) {
2007-01-29 00:41:12 +00:00
quit ( qce ) ;
2006-10-27 15:47:22 +00:00
}
/**
Gere la sortie de l ' application
2006-11-11 13:56:40 +00:00
@ param e Le QCloseEvent correspondant a l ' evenement de fermeture
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : quit ( QCloseEvent * e ) {
2006-11-11 13:56:40 +00:00
// quitte directement s'il n'y a aucun schema ouvert
2006-11-16 19:27:29 +00:00
bool peut_quitter = true ;
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) {
2006-11-11 13:56:40 +00:00
// sinon demande la permission de fermer chaque schema
2006-10-27 15:47:22 +00:00
foreach ( QWidget * fenetre , workspace . windowList ( ) ) {
2007-01-29 00:41:12 +00:00
if ( qobject_cast < DiagramView * > ( fenetre ) ) {
2006-10-27 15:47:22 +00:00
workspace . setActiveWindow ( fenetre ) ;
if ( ! fermer ( ) ) {
peut_quitter = false ;
2006-10-28 11:17:14 +00:00
if ( e ! = NULL ) e - > ignore ( ) ;
2006-10-27 15:47:22 +00:00
break ;
}
}
}
2006-11-16 19:27:29 +00:00
}
if ( peut_quitter ) {
if ( QSystemTrayIcon : : isSystemTrayAvailable ( ) ) qsti - > hide ( ) ;
qApp - > quit ( ) ;
2006-10-27 15:47:22 +00:00
}
}
/**
2006-11-11 13:56:40 +00:00
Fait passer la fenetre du mode plein ecran au mode normal et vice - versa
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : toggleFullScreen ( ) {
2006-10-27 15:47:22 +00:00
setWindowState ( windowState ( ) ^ Qt : : WindowFullScreen ) ;
}
/**
Dialogue <EFBFBD> A propos de QElectroTech <EFBFBD>
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
2007-09-21 12:35:28 +00:00
detruit en meme temps que son parent ( ici , la QETDiagramEditor ) .
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : aPropos ( ) {
2006-10-27 15:47:22 +00:00
static AboutQET * apqet = new AboutQET ( this ) ;
apqet - > exec ( ) ;
}
/**
Mise en place des actions
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : actions ( ) {
2006-10-27 15:47:22 +00:00
// icones et labels
2007-01-29 00:41:12 +00:00
nouveau_fichier = new QAction ( QIcon ( " :/ico/new.png " ) , tr ( " &Nouveau " ) , this ) ;
ouvrir_fichier = new QAction ( QIcon ( " :/ico/open.png " ) , tr ( " &Ouvrir " ) , this ) ;
fermer_fichier = new QAction ( QIcon ( " :/ico/fileclose.png " ) , tr ( " &Fermer " ) , this ) ;
enr_fichier = new QAction ( QIcon ( " :/ico/save.png " ) , tr ( " &Enregistrer " ) , this ) ;
enr_fichier_sous = new QAction ( QIcon ( " :/ico/saveas.png " ) , tr ( " Enregistrer sous " ) , this ) ;
importer = new QAction ( QIcon ( " :/ico/import.png " ) , tr ( " &Importer " ) , this ) ;
exporter = new QAction ( QIcon ( " :/ico/export.png " ) , tr ( " E&xporter " ) , this ) ;
imprimer = new QAction ( QIcon ( " :/ico/print.png " ) , tr ( " Imprimer " ) , this ) ;
quitter_qet = new QAction ( QIcon ( " :/ico/exit.png " ) , tr ( " &Quitter " ) , this ) ;
annuler = new QAction ( QIcon ( " :/ico/undo.png " ) , tr ( " Annu&ler " ) , this ) ;
refaire = new QAction ( QIcon ( " :/ico/redo.png " ) , tr ( " Re&faire " ) , this ) ;
couper = new QAction ( QIcon ( " :/ico/cut.png " ) , tr ( " Co&uper " ) , this ) ;
copier = new QAction ( QIcon ( " :/ico/copy.png " ) , tr ( " Cop&ier " ) , this ) ;
coller = new QAction ( QIcon ( " :/ico/paste.png " ) , tr ( " C&oller " ) , this ) ;
sel_tout = new QAction ( tr ( " Tout s \351 lectionner " ) , this ) ;
sel_rien = new QAction ( tr ( " D \351 s \351 lectionner tout " ) , this ) ;
sel_inverse = new QAction ( tr ( " Inverser la s \351 lection " ) , this ) ;
supprimer = new QAction ( QIcon ( " :/ico/delete.png " ) , tr ( " Supprimer " ) , this ) ;
pivoter = new QAction ( QIcon ( " :/ico/pivoter.png " ) , tr ( " Pivoter " ) , this ) ;
2007-02-03 02:00:18 +00:00
infos_diagram = new QAction ( QIcon ( " :/ico/info.png " ) , tr ( " Informations sur le sch \351 ma " ) , this ) ;
2007-06-30 17:41:07 +00:00
add_column = new QAction ( QIcon ( " :/ico/add_col.png " ) , tr ( " Ajouter une colonne " ) , this ) ;
remove_column = new QAction ( QIcon ( " :/ico/remove_col.png " ) , tr ( " Enlever une colonne " ) , this ) ;
2007-02-03 02:00:18 +00:00
expand_diagram = new QAction ( tr ( " Agrandir le sch \351 ma " ) , this ) ;
shrink_diagram = new QAction ( tr ( " R \351 tr \351 cir le sch \351 ma " ) , this ) ;
2007-01-29 00:41:12 +00:00
zoom_avant = new QAction ( QIcon ( " :/ico/viewmag+.png " ) , tr ( " Zoom avant " ) , this ) ;
zoom_arriere = new QAction ( QIcon ( " :/ico/viewmag-.png " ) , tr ( " Zoom arri \350 re " ) , this ) ;
zoom_adapte = new QAction ( QIcon ( " :/ico/viewmagfit.png " ) , tr ( " Zoom adapt \351 " ) , this ) ;
zoom_reset = new QAction ( QIcon ( " :/ico/viewmag.png " ) , tr ( " Pas de zoom " ) , this ) ;
mode_selection = new QAction ( QIcon ( " :/ico/select.png " ) , tr ( " Mode Selection " ) , this ) ;
mode_visualise = new QAction ( QIcon ( " :/ico/move.png " ) , tr ( " Mode Visualisation " ) , this ) ;
entrer_pe = new QAction ( QIcon ( " :/ico/entrer_fs.png " ) , tr ( " Passer en &mode plein \351 cran " ) , this ) ;
sortir_pe = new QAction ( QIcon ( " :/ico/sortir_fs.png " ) , tr ( " Sortir du &mode plein \351 cran " ) , this ) ;
configurer = new QAction ( QIcon ( " :/ico/configure.png " ) , tr ( " &Configurer QElectroTech " ) , this ) ;
f_mosaique = new QAction ( tr ( " &Mosa \357 que " ) , this ) ;
f_cascade = new QAction ( tr ( " &Cascade " ) , this ) ;
f_reorganise = new QAction ( tr ( " Arranger les fen \352 tres r \351 duites " ) , this ) ;
f_suiv = new QAction ( tr ( " Fen \352 tre suivante " ) , this ) ;
f_prec = new QAction ( tr ( " Fen \352 tre pr \351 c \351 dente " ) , this ) ;
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 ) ;
2006-10-27 15:47:22 +00:00
2006-11-11 13:56:40 +00:00
// info-bulles
2007-01-29 00:41:12 +00:00
reduce_appli - > setToolTip ( tr ( " Reduire QElectroTech dans le systray " ) ) ;
restore_appli - > setToolTip ( tr ( " Restaurer QElectroTech " ) ) ;
2006-10-27 15:47:22 +00:00
// raccourcis clavier
nouveau_fichier - > setShortcut ( QKeySequence : : New ) ;
ouvrir_fichier - > setShortcut ( QKeySequence : : Open ) ;
fermer_fichier - > setShortcut ( QKeySequence : : Close ) ;
enr_fichier - > setShortcut ( QKeySequence : : Save ) ;
importer - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+I " ) ) ) ;
exporter - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+X " ) ) ) ;
imprimer - > setShortcut ( QKeySequence ( QKeySequence : : Print ) ) ;
quitter_qet - > setShortcut ( QKeySequence ( tr ( " Ctrl+Q " ) ) ) ;
annuler - > setShortcut ( QKeySequence : : Undo ) ;
refaire - > setShortcut ( QKeySequence : : Redo ) ;
couper - > setShortcut ( QKeySequence : : Cut ) ;
copier - > setShortcut ( QKeySequence : : Copy ) ;
coller - > setShortcut ( QKeySequence : : Paste ) ;
sel_tout - > setShortcut ( QKeySequence : : SelectAll ) ;
sel_rien - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+A " ) ) ) ;
sel_inverse - > setShortcut ( QKeySequence ( tr ( " Ctrl+I " ) ) ) ;
2007-02-24 20:06:53 +00:00
supprimer - > setShortcut ( QKeySequence ( tr ( " Ctrl+Suppr " ) ) ) ;
pivoter - > setShortcut ( QKeySequence ( tr ( " Ctrl+R " ) ) ) ;
2006-10-27 15:47:22 +00:00
zoom_avant - > setShortcut ( QKeySequence : : ZoomIn ) ;
zoom_arriere - > setShortcut ( QKeySequence : : ZoomOut ) ;
zoom_adapte - > setShortcut ( QKeySequence ( tr ( " Ctrl+9 " ) ) ) ;
zoom_reset - > setShortcut ( QKeySequence ( tr ( " Ctrl+0 " ) ) ) ;
entrer_pe - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+F " ) ) ) ;
sortir_pe - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+F " ) ) ) ;
2007-08-25 04:33:32 +00:00
f_suiv - > setShortcut ( QKeySequence : : NextChild ) ;
f_prec - > setShortcut ( QKeySequence : : PreviousChild ) ;
2006-10-28 11:17:14 +00:00
// affichage dans la barre de statut
2006-11-11 13:56:40 +00:00
nouveau_fichier - > setStatusTip ( tr ( " Cr \351 e un nouveau sch \351 ma " ) ) ;
ouvrir_fichier - > setStatusTip ( tr ( " Ouvre un sch \351 ma existant " ) ) ;
fermer_fichier - > setStatusTip ( tr ( " Ferme le sch \351 ma courant " ) ) ;
enr_fichier - > setStatusTip ( tr ( " Enregistre le sch \351 ma courant " ) ) ;
enr_fichier_sous - > setStatusTip ( tr ( " Enregistre le sch \351 ma courant avec un autre nom de fichier " ) ) ;
importer - > setStatusTip ( tr ( " Importe un sch \351 ma dans le sch \351 ma courant " ) ) ;
exporter - > setStatusTip ( tr ( " Exporte le sch \351 ma courant dans un autre format " ) ) ;
imprimer - > setStatusTip ( tr ( " Imprime le sch \351 ma courant " ) ) ;
quitter_qet - > setStatusTip ( tr ( " Ferme l'application QElectroTech " ) ) ;
annuler - > setStatusTip ( tr ( " Annule l'action pr \351 c \351 dente " ) ) ;
refaire - > setStatusTip ( tr ( " Restaure l'action annul \351 e " ) ) ;
couper - > setStatusTip ( tr ( " Transf \350 re les \351 l \351 ments s \351 lectionn \351 s dans le presse-papier " ) ) ;
copier - > setStatusTip ( tr ( " Copie les \351 l \351 ments s \351 lectionn \351 s dans le presse-papier " ) ) ;
coller - > setStatusTip ( tr ( " Place les \351 l \351 ments du presse-papier sur le sch \351 ma " ) ) ;
sel_tout - > setStatusTip ( tr ( " S \351 lectionne tous les \351 l \351 ments du sch \351 ma " ) ) ;
sel_rien - > setStatusTip ( tr ( " D \351 s \351 lectionne tous les \351 l \351 ments du sch \351 ma " ) ) ;
sel_inverse - > setStatusTip ( tr ( " D \351 s \351 lectionne les \351 l \351 ments s \351 lectionn \351 s et s \351 lectionne les \351 l \351 ments non s \351 lectionn \351 s " ) ) ;
supprimer - > setStatusTip ( tr ( " Enl \350 ve les \351 l \351 ments s \351 lectionn \351 s du sch \351 ma " ) ) ;
pivoter - > setStatusTip ( tr ( " Pivote les \351 l \351 ments s \351 lectionn \351 s " ) ) ;
2007-02-03 02:00:18 +00:00
infos_diagram - > setStatusTip ( tr ( " \311 dite les informations affich \351 es par le cartouche " ) ) ;
2007-01-28 00:53:17 +00:00
add_column - > setStatusTip ( tr ( " Ajoute une colonne au sch \351 ma " ) ) ;
remove_column - > setStatusTip ( tr ( " Enl \350 ve une colonne au sch \351 ma " ) ) ;
2007-02-03 02:00:18 +00:00
expand_diagram - > setStatusTip ( tr ( " Agrandit le sch \351 ma en hauteur " ) ) ;
shrink_diagram - > setStatusTip ( tr ( " R \351 tr \351 cit le sch \351 ma en hauteur " ) ) ;
2006-11-11 13:56:40 +00:00
zoom_avant - > setStatusTip ( tr ( " Agrandit le sch \351 ma " ) ) ;
zoom_arriere - > setStatusTip ( tr ( " R \351 tr \351 cit le sch \351 ma " ) ) ;
zoom_adapte - > setStatusTip ( tr ( " Adapte la taille du sch \351 ma afin qu'il soit enti \350 rement visible " ) ) ;
zoom_reset - > setStatusTip ( tr ( " Restaure le zoom par d \351 faut " ) ) ;
mode_selection - > setStatusTip ( tr ( " Permet de s \351 lectionner les \351 l \351 ments " ) ) ;
mode_visualise - > setStatusTip ( tr ( " Permet de visualiser le sch \351 ma sans pouvoir le modifier " ) ) ;
entrer_pe - > setStatusTip ( tr ( " Affiche QElectroTech en mode plein \351 cran " ) ) ;
sortir_pe - > setStatusTip ( tr ( " Affiche QElectroTech en mode fen \352 tr \351 " ) ) ;
configurer - > setStatusTip ( tr ( " Permet de r \351 gler diff \351 rents param \350 tres de QElectroTech " ) ) ;
2006-10-27 15:47:22 +00:00
f_mosaique - > setStatusTip ( tr ( " Dispose les fen \352 tres en mosa \357 que " ) ) ;
f_cascade - > setStatusTip ( tr ( " Dispose les fen \352 tres en cascade " ) ) ;
2007-01-29 00:41:12 +00:00
f_reorganise - > setStatusTip ( tr ( " Aligne les fen \352 tres r \351 duites " ) ) ;
2006-10-27 15:47:22 +00:00
f_suiv - > setStatusTip ( tr ( " Active la fen \352 tre suivante " ) ) ;
f_prec - > setStatusTip ( tr ( " Active la fen \352 tre pr \351 c \351 dente " ) ) ;
2006-11-11 13:56:40 +00:00
a_propos_de_qet - > setStatusTip ( tr ( " Affiche des informations sur QElectroTech " ) ) ;
a_propos_de_qt - > setStatusTip ( tr ( " Affiche des informations sur la biblioth \350 que Qt " ) ) ;
2006-10-27 15:47:22 +00:00
// traitements speciaux
mode_selection - > setCheckable ( true ) ;
mode_visualise - > setCheckable ( true ) ;
mode_selection - > setChecked ( true ) ;
QActionGroup * grp_visu_sel = new QActionGroup ( this ) ;
grp_visu_sel - > addAction ( mode_selection ) ;
grp_visu_sel - > addAction ( mode_visualise ) ;
grp_visu_sel - > setExclusive ( true ) ;
// connexion a des slots
2007-01-29 00:41:12 +00:00
connect ( quitter_qet , SIGNAL ( triggered ( ) ) , this , SLOT ( quit ( ) ) ) ;
2006-10-27 15:47:22 +00:00
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 ( ) ) ) ;
connect ( supprimer , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_supprimer ( ) ) ) ;
connect ( pivoter , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_pivoter ( ) ) ) ;
connect ( entrer_pe , SIGNAL ( triggered ( ) ) , this , SLOT ( toggleFullScreen ( ) ) ) ;
connect ( sortir_pe , SIGNAL ( triggered ( ) ) , this , SLOT ( toggleFullScreen ( ) ) ) ;
connect ( mode_selection , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_setSelectionMode ( ) ) ) ;
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 ( ) ) ) ;
2007-01-29 00:41:12 +00:00
connect ( reduce_appli , SIGNAL ( triggered ( ) ) , this , SLOT ( systrayReduce ( ) ) ) ;
connect ( restore_appli , SIGNAL ( triggered ( ) ) , this , SLOT ( systrayRestore ( ) ) ) ;
2006-10-27 15:47:22 +00:00
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 ( ) ) ) ;
connect ( zoom_reset , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_zoomReset ( ) ) ) ;
2007-02-01 01:07:26 +00:00
connect ( imprimer , SIGNAL ( triggered ( ) ) , this , SLOT ( dialog_print ( ) ) ) ;
connect ( exporter , SIGNAL ( triggered ( ) ) , this , SLOT ( dialog_export ( ) ) ) ;
2006-10-27 15:47:22 +00:00
connect ( enr_fichier_sous , SIGNAL ( triggered ( ) ) , this , SLOT ( dialogue_enregistrer_sous ( ) ) ) ;
connect ( enr_fichier , SIGNAL ( triggered ( ) ) , this , SLOT ( enregistrer ( ) ) ) ;
connect ( nouveau_fichier , SIGNAL ( triggered ( ) ) , this , SLOT ( nouveau ( ) ) ) ;
connect ( ouvrir_fichier , SIGNAL ( triggered ( ) ) , this , SLOT ( ouvrir ( ) ) ) ;
connect ( fermer_fichier , SIGNAL ( triggered ( ) ) , this , SLOT ( fermer ( ) ) ) ;
connect ( couper , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_couper ( ) ) ) ;
connect ( copier , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_copier ( ) ) ) ;
connect ( coller , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_coller ( ) ) ) ;
2006-11-19 18:40:03 +00:00
connect ( f_mosaique , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( tile ( ) ) ) ;
connect ( f_cascade , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( cascade ( ) ) ) ;
connect ( f_reorganise , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( arrangeIcons ( ) ) ) ;
connect ( f_suiv , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( activateNextWindow ( ) ) ) ;
connect ( f_prec , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( activatePreviousWindow ( ) ) ) ;
2007-07-18 15:41:13 +00:00
connect ( infos_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_editInfos ( ) ) ) ;
connect ( add_column , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_addColumn ( ) ) ) ;
connect ( remove_column , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_removeColumn ( ) ) ) ;
connect ( expand_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_expand ( ) ) ) ;
connect ( shrink_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_shrink ( ) ) ) ;
2006-10-27 15:47:22 +00:00
}
/**
Mise en place des menus
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : menus ( ) {
2006-10-27 15:47:22 +00:00
QMenu * menu_fichier = menuBar ( ) - > addMenu ( tr ( " &Fichier " ) ) ;
QMenu * menu_edition = menuBar ( ) - > addMenu ( tr ( " & \311 dition " ) ) ;
QMenu * menu_affichage = menuBar ( ) - > addMenu ( tr ( " Afficha&ge " ) ) ;
QMenu * menu_outils = menuBar ( ) - > addMenu ( tr ( " O&utils " ) ) ;
QMenu * menu_config = menuBar ( ) - > addMenu ( tr ( " &Configuration " ) ) ;
menu_fenetres = menuBar ( ) - > addMenu ( tr ( " Fe&n \352 tres " ) ) ;
QMenu * menu_aide = menuBar ( ) - > addMenu ( tr ( " &Aide " ) ) ;
// tear off feature rulezz... pas ^^ mais bon...
menu_fichier - > setTearOffEnabled ( true ) ;
menu_edition - > setTearOffEnabled ( true ) ;
menu_affichage - > setTearOffEnabled ( true ) ;
menu_outils - > setTearOffEnabled ( true ) ;
menu_config - > setTearOffEnabled ( true ) ;
2007-02-24 20:06:53 +00:00
menu_fenetres - > setTearOffEnabled ( true ) ;
2006-10-27 15:47:22 +00:00
menu_aide - > setTearOffEnabled ( true ) ;
// menu Fichier
menu_fichier - > addAction ( nouveau_fichier ) ;
menu_fichier - > addAction ( ouvrir_fichier ) ;
menu_fichier - > addAction ( enr_fichier ) ;
menu_fichier - > addAction ( enr_fichier_sous ) ;
menu_fichier - > addAction ( fermer_fichier ) ;
menu_fichier - > addSeparator ( ) ;
menu_fichier - > addAction ( importer ) ;
menu_fichier - > addAction ( exporter ) ;
menu_fichier - > addSeparator ( ) ;
menu_fichier - > addAction ( imprimer ) ;
menu_fichier - > addSeparator ( ) ;
menu_fichier - > addAction ( quitter_qet ) ;
// menu Edition
menu_edition - > addAction ( annuler ) ;
menu_edition - > addAction ( refaire ) ;
menu_edition - > addSeparator ( ) ;
menu_edition - > addAction ( couper ) ;
menu_edition - > addAction ( copier ) ;
menu_edition - > addAction ( coller ) ;
menu_edition - > addSeparator ( ) ;
menu_edition - > addAction ( sel_tout ) ;
menu_edition - > addAction ( sel_rien ) ;
menu_edition - > addAction ( sel_inverse ) ;
menu_edition - > addSeparator ( ) ;
menu_edition - > addAction ( supprimer ) ;
menu_edition - > addAction ( pivoter ) ;
2006-11-19 18:40:03 +00:00
menu_edition - > addSeparator ( ) ;
2007-01-29 00:41:12 +00:00
menu_edition - > addAction ( infos_diagram ) ;
2007-01-28 00:53:17 +00:00
menu_edition - > addAction ( add_column ) ;
menu_edition - > addAction ( remove_column ) ;
2007-02-03 02:00:18 +00:00
menu_edition - > addAction ( expand_diagram ) ;
menu_edition - > addAction ( shrink_diagram ) ;
2006-10-27 15:47:22 +00:00
// menu Affichage > Afficher
QMenu * menu_aff_aff = new QMenu ( tr ( " Afficher " ) ) ;
2006-11-11 13:56:40 +00:00
menu_aff_aff - > setTearOffEnabled ( true ) ;
2006-10-27 15:47:22 +00:00
menu_aff_aff - > addAction ( barre_outils - > toggleViewAction ( ) ) ;
2006-11-11 13:56:40 +00:00
barre_outils - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non la barre d'outils " ) ) ;
2006-10-27 15:47:22 +00:00
menu_aff_aff - > addAction ( qdw_pa - > toggleViewAction ( ) ) ;
2006-11-11 13:56:40 +00:00
qdw_pa - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non le panel d'appareils " ) ) ;
2006-10-27 15:47:22 +00:00
// menu Affichage
menu_affichage - > addMenu ( menu_aff_aff ) ;
menu_affichage - > addSeparator ( ) ;
menu_affichage - > addAction ( zoom_avant ) ;
menu_affichage - > addAction ( zoom_arriere ) ;
menu_affichage - > addAction ( zoom_adapte ) ;
menu_affichage - > addAction ( zoom_reset ) ;
// menu Outils
menu_outils - > addAction ( mode_selection ) ;
menu_outils - > addAction ( mode_visualise ) ;
// menu Configuration
menu_config - > addAction ( entrer_pe ) ;
menu_config - > addAction ( configurer ) ;
2007-01-29 00:41:12 +00:00
// menu Fenetres
2006-10-27 15:47:22 +00:00
slot_updateMenuFenetres ( ) ;
// menu Aide
menu_aide - > addAction ( a_propos_de_qet ) ;
menu_aide - > addAction ( a_propos_de_qt ) ;
}
/**
Mise en place de la barre d ' outils
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : toolbar ( ) {
2006-10-27 15:47:22 +00:00
barre_outils = new QToolBar ( tr ( " Outils " ) , this ) ;
// Modes selection / visualisation
barre_outils - > addAction ( mode_selection ) ;
barre_outils - > addAction ( mode_visualise ) ;
barre_outils - > addSeparator ( ) ;
barre_outils - > addAction ( annuler ) ;
barre_outils - > addAction ( refaire ) ;
barre_outils - > addSeparator ( ) ;
barre_outils - > addAction ( couper ) ;
barre_outils - > addAction ( copier ) ;
barre_outils - > addAction ( coller ) ;
barre_outils - > addSeparator ( ) ;
barre_outils - > addAction ( supprimer ) ;
barre_outils - > addAction ( pivoter ) ;
barre_outils - > addSeparator ( ) ;
barre_outils - > addAction ( zoom_avant ) ;
barre_outils - > addAction ( zoom_arriere ) ;
barre_outils - > addAction ( zoom_adapte ) ;
barre_outils - > addAction ( zoom_reset ) ;
// ajout de la barre d'outils a la fenetre principale
addToolBar ( Qt : : TopToolBarArea , barre_outils ) ;
}
/**
2007-02-01 01:07:26 +00:00
Imprime le schema courant
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : dialog_print ( ) {
2007-02-01 01:07:26 +00:00
DiagramView * sv = diagramEnCours ( ) ;
if ( ! sv ) return ;
sv - > dialogPrint ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
2007-02-01 01:07:26 +00:00
Gere l ' export de schema sous forme d ' image
2006-11-11 13:56:40 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : dialog_export ( ) {
2007-02-01 01:07:26 +00:00
DiagramView * sv = diagramEnCours ( ) ;
if ( ! sv ) return ;
sv - > dialogExport ( ) ;
2006-10-27 15:47:22 +00:00
}
/**
Methode enregistrant le schema dans le dernier nom de fichier connu .
Si aucun nom de fichier n ' est connu , cette methode appelle la methode enregistrer_sous
@ return true si l ' enregistrement a reussi , false sinon
*/
2007-09-21 12:35:28 +00:00
bool QETDiagramEditor : : enregistrer ( ) {
2007-01-29 00:41:12 +00:00
if ( ! diagramEnCours ( ) ) return ( false ) ;
return ( diagramEnCours ( ) - > enregistrer ( ) ) ;
2006-10-27 15:47:22 +00:00
}
/**
Cette methode demande un nom de fichier a l ' utilisateur pour enregistrer le schema
Si aucun nom n ' est entre , elle renvoie faux .
Si le nom ne se termine pas par l ' extension . qet , celle - ci est ajoutee .
Si l ' enregistrement reussit , le nom du fichier est conserve et la fonction renvoie true .
Sinon , faux est renvoye .
@ return true si l ' enregistrement a reussi , false sinon
@ todo detecter le chemin du bureau automatiquement
*/
2007-09-21 12:35:28 +00:00
bool QETDiagramEditor : : dialogue_enregistrer_sous ( ) {
2007-01-29 00:41:12 +00:00
if ( ! diagramEnCours ( ) ) return ( false ) ;
return ( diagramEnCours ( ) - > enregistrer_sous ( ) ) ;
2006-10-27 15:47:22 +00:00
}
/**
Cette methode cree un nouveau schema .
@ return true si tout s ' est bien passe ; false si vous executez cette fonction dans un univers non cartesien ( en fait y ' a pas de return ( false ) : p )
*/
2007-09-21 12:35:28 +00:00
bool QETDiagramEditor : : nouveau ( ) {
2007-01-29 00:41:12 +00:00
addDiagramView ( new DiagramView ( this ) ) ;
2006-10-27 15:47:22 +00:00
return ( true ) ;
}
/**
Cette fonction demande un nom de fichier a ouvrir a l ' utilisateur
@ return true si l ' ouverture a reussi , false sinon
*/
2007-09-21 12:35:28 +00:00
bool QETDiagramEditor : : ouvrir ( ) {
2006-10-27 15:47:22 +00:00
// demande un nom de fichier a ouvrir a l'utilisateur
QString nom_fichier = QFileDialog : : getOpenFileName (
this ,
tr ( " Ouvrir un fichier " ) ,
QDir : : homePath ( ) ,
2007-02-23 01:51:13 +00:00
tr ( " Sch \351 mas QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) " )
2006-10-27 15:47:22 +00:00
) ;
if ( nom_fichier = = " " ) return ( false ) ;
// verifie que le fichier n'est pas deja ouvert
QString chemin_fichier = QFileInfo ( nom_fichier ) . canonicalFilePath ( ) ;
foreach ( QWidget * fenetre , workspace . windowList ( ) ) {
2007-01-29 00:41:12 +00:00
DiagramView * fenetre_en_cours = qobject_cast < DiagramView * > ( fenetre ) ;
2006-10-27 15:47:22 +00:00
if ( QFileInfo ( fenetre_en_cours - > nom_fichier ) . canonicalFilePath ( ) = = chemin_fichier ) {
workspace . setActiveWindow ( fenetre ) ;
return ( false ) ;
}
}
// ouvre le fichier
2007-01-29 00:41:12 +00:00
DiagramView * sv = new DiagramView ( this ) ;
2006-10-27 15:47:22 +00:00
int code_erreur ;
if ( sv - > ouvrir ( nom_fichier , & code_erreur ) ) {
2007-01-29 00:41:12 +00:00
addDiagramView ( sv ) ;
2006-10-27 15:47:22 +00:00
return ( true ) ;
} else {
QString message_erreur ;
switch ( code_erreur ) {
case 1 : message_erreur = tr ( " Ce fichier n'existe pas. " ) ; break ;
case 2 : message_erreur = tr ( " Impossible de lire ce fichier. " ) ; break ;
case 3 : message_erreur = tr ( " Ce fichier n'est pas un document XML valide. " ) ; break ;
case 4 : message_erreur = tr ( " Une erreur s'est produite lors de l'ouverture du fichier. " ) ; break ;
}
QMessageBox : : warning ( this , tr ( " Erreur " ) , message_erreur ) ;
delete sv ;
return ( false ) ;
}
}
/**
Ferme le document courant
@ return true si la fermeture du fichier a reussi , false sinon
@ todo detecter les modifications et ne demander que si besoin est
*/
2007-09-21 12:35:28 +00:00
bool QETDiagramEditor : : fermer ( ) {
2007-01-29 00:41:12 +00:00
DiagramView * sv = diagramEnCours ( ) ;
2006-10-27 15:47:22 +00:00
if ( ! sv ) return ( false ) ;
2007-09-08 19:40:27 +00:00
return ( sv - > close ( ) ) ;
2006-10-27 15:47:22 +00:00
}
/**
2007-01-29 00:41:12 +00:00
@ return Le DiagramView qui a le focus dans l ' interface MDI
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
DiagramView * QETDiagramEditor : : diagramEnCours ( ) const {
2007-01-29 00:41:12 +00:00
return ( qobject_cast < DiagramView * > ( workspace . activeWindow ( ) ) ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " couper " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_couper ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > couper ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
2007-01-29 00:41:12 +00:00
Effectue l ' action " copier " sur le diagram en cours
2006-11-11 13:56:40 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_copier ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > copier ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " coller " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_coller ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > coller ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
2007-01-29 00:41:12 +00:00
Effectue l ' action " zoom avant " sur le diagram en cours
2006-11-11 13:56:40 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_zoomPlus ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > zoomPlus ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " zoom arriere " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_zoomMoins ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > zoomMoins ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
2007-01-29 00:41:12 +00:00
Effectue l ' action " zoom arriere " sur le diagram en cours
2006-11-11 13:56:40 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_zoomFit ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > zoomFit ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " zoom par defaut " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_zoomReset ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > zoomReset ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " selectionner tout " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_selectAll ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > selectAll ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " deselectionenr tout " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_selectNothing ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > selectNothing ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " inverser la selection " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_selectInvert ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > selectInvert ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " supprimer " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_supprimer ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > supprimer ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " pivoter " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_pivoter ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > pivoter ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " mode selection " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_setSelectionMode ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > setSelectionMode ( ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Effectue l ' action " mode visualisation " sur le schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_setVisualisationMode ( ) {
2007-01-29 00:41:12 +00:00
if ( diagramEnCours ( ) ) diagramEnCours ( ) - > setVisualisationMode ( ) ;
2006-10-27 15:47:22 +00:00
}
/**
gere les actions ayant besoin d ' un document ouvert
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_updateActions ( ) {
2007-01-29 00:41:12 +00:00
DiagramView * sv = diagramEnCours ( ) ;
2006-10-27 15:47:22 +00:00
bool document_ouvert = ( sv ! = 0 ) ;
// actions ayant juste besoin d'un document ouvert
fermer_fichier - > setEnabled ( document_ouvert ) ;
enr_fichier - > setEnabled ( document_ouvert ) ;
enr_fichier_sous - > setEnabled ( document_ouvert ) ;
importer - > setEnabled ( document_ouvert ) ;
exporter - > setEnabled ( document_ouvert ) ;
imprimer - > setEnabled ( document_ouvert ) ;
sel_tout - > setEnabled ( document_ouvert ) ;
sel_rien - > setEnabled ( document_ouvert ) ;
sel_inverse - > setEnabled ( document_ouvert ) ;
zoom_avant - > setEnabled ( document_ouvert ) ;
zoom_arriere - > setEnabled ( document_ouvert ) ;
zoom_adapte - > setEnabled ( document_ouvert ) ;
zoom_reset - > setEnabled ( document_ouvert ) ;
2007-02-17 18:59:18 +00:00
infos_diagram - > setEnabled ( document_ouvert ) ;
2007-09-08 19:40:27 +00:00
add_column - > setEnabled ( document_ouvert ) ;
remove_column - > setEnabled ( document_ouvert ) ;
expand_diagram - > setEnabled ( document_ouvert ) ;
shrink_diagram - > setEnabled ( document_ouvert ) ;
2006-10-27 15:47:22 +00:00
// actions ayant aussi besoin d'un historique des actions
annuler - > setEnabled ( document_ouvert ) ;
refaire - > setEnabled ( document_ouvert ) ;
// actions ayant aussi besoin d'elements selectionnes
2007-02-01 01:07:26 +00:00
bool elements_selectionnes = document_ouvert ? ( sv - > hasSelectedItems ( ) ) : false ;
2006-10-27 15:47:22 +00:00
couper - > setEnabled ( elements_selectionnes ) ;
copier - > setEnabled ( elements_selectionnes ) ;
supprimer - > setEnabled ( elements_selectionnes ) ;
pivoter - > setEnabled ( elements_selectionnes ) ;
// action ayant aussi besoin d'un presse-papier plein
bool peut_coller = QApplication : : clipboard ( ) - > text ( ) ! = QString ( ) ;
coller - > setEnabled ( document_ouvert & & peut_coller ) ;
// actions ayant aussi besoin d'un document ouvert et de la connaissance de son mode
if ( ! document_ouvert ) {
mode_selection - > setEnabled ( false ) ;
mode_visualise - > setEnabled ( false ) ;
} else {
switch ( ( int ) ( sv - > dragMode ( ) ) ) {
case QGraphicsView : : NoDrag :
mode_selection - > setEnabled ( false ) ;
mode_visualise - > setEnabled ( false ) ;
break ;
case QGraphicsView : : ScrollHandDrag :
mode_selection - > setEnabled ( true ) ;
mode_visualise - > setEnabled ( true ) ;
mode_selection - > setChecked ( false ) ;
mode_visualise - > setChecked ( true ) ;
break ;
case QGraphicsView : : RubberBandDrag :
mode_selection - > setEnabled ( true ) ;
mode_visualise - > setEnabled ( true ) ;
mode_selection - > setChecked ( true ) ;
mode_visualise - > setChecked ( false ) ;
break ;
}
}
slot_updateMenuFenetres ( ) ;
}
2006-11-11 13:56:40 +00:00
/**
Ajoute un schema dans l ' espace de travail
2007-01-29 00:41:12 +00:00
@ param sv L ' objet DiagramView a ajouter a l ' espace de travail
2006-11-11 13:56:40 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : addDiagramView ( DiagramView * sv ) {
2006-10-27 15:47:22 +00:00
if ( ! sv ) return ;
2007-01-29 00:41:12 +00:00
// on maximise la nouvelle fenetre si la fenetre en cours est inexistante ou bien maximisee
DiagramView * s_v = diagramEnCours ( ) ;
2006-10-27 15:47:22 +00:00
bool maximise = ( ( ! s_v ) | | ( s_v - > windowState ( ) & Qt : : WindowMaximized ) ) ;
2007-01-29 00:41:12 +00:00
// ajoute la fenetre
2006-10-27 15:47:22 +00:00
QWidget * p = workspace . addWindow ( sv ) ;
connect ( sv , SIGNAL ( selectionChanged ( ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
connect ( sv , SIGNAL ( modeChanged ( ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
2007-01-29 00:41:12 +00:00
// affiche la fenetre
2006-10-27 15:47:22 +00:00
if ( maximise ) p - > showMaximized ( ) ;
else p - > show ( ) ;
}
2006-11-11 13:56:40 +00:00
/**
met a jour le menu " Fenetres "
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_updateMenuFenetres ( ) {
2006-10-27 15:47:22 +00:00
// nettoyage du menu
2007-09-08 19:09:59 +00:00
foreach ( QAction * a , menu_fenetres - > actions ( ) ) menu_fenetres - > removeAction ( a ) ;
2006-10-27 15:47:22 +00:00
// actions de fermeture
menu_fenetres - > addAction ( fermer_fichier ) ;
//menu_fenetres -> addAction(closeAllAct);
// actions de reorganisation des fenetres
menu_fenetres - > addSeparator ( ) ;
menu_fenetres - > addAction ( f_mosaique ) ;
menu_fenetres - > addAction ( f_cascade ) ;
menu_fenetres - > addAction ( f_reorganise ) ;
// actiosn de deplacement entre les fenetres
menu_fenetres - > addSeparator ( ) ;
menu_fenetres - > addAction ( f_suiv ) ;
menu_fenetres - > addAction ( f_prec ) ;
// liste des fenetres
QList < QWidget * > fenetres = workspace . windowList ( ) ;
2007-09-08 19:40:27 +00:00
f_mosaique - > setEnabled ( ! fenetres . isEmpty ( ) ) ;
f_cascade - > setEnabled ( ! fenetres . isEmpty ( ) ) ;
f_reorganise - > setEnabled ( ! fenetres . isEmpty ( ) ) ;
f_suiv - > setEnabled ( ! fenetres . isEmpty ( ) ) ;
f_prec - > setEnabled ( ! fenetres . isEmpty ( ) ) ;
2006-10-27 15:47:22 +00:00
if ( ! fenetres . isEmpty ( ) ) menu_fenetres - > addSeparator ( ) ;
for ( int i = 0 ; i < fenetres . size ( ) ; + + i ) {
2007-01-29 00:41:12 +00:00
DiagramView * sv = qobject_cast < DiagramView * > ( fenetres . at ( i ) ) ;
2006-11-11 13:56:40 +00:00
QString sv_titre = sv - > windowTitle ( ) . left ( sv - > windowTitle ( ) . length ( ) - 3 ) ;
QAction * action = menu_fenetres - > addAction ( sv_titre ) ;
action - > setStatusTip ( tr ( " Active la fen \352 tre " ) + sv_titre ) ;
2006-10-27 15:47:22 +00:00
action - > setCheckable ( true ) ;
2007-01-29 00:41:12 +00:00
action - > setChecked ( sv = = diagramEnCours ( ) ) ;
2006-10-27 15:47:22 +00:00
connect ( action , SIGNAL ( triggered ( ) ) , & windowMapper , SLOT ( map ( ) ) ) ;
windowMapper . setMapping ( action , sv ) ;
}
}
2006-10-28 19:39:43 +00:00
2007-02-01 01:07:26 +00:00
/**
Edite les informations du schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_editInfos ( ) {
2007-01-29 00:41:12 +00:00
DiagramView * sv = diagramEnCours ( ) ;
2006-11-19 18:40:03 +00:00
if ( ! sv ) return ;
2007-02-01 01:07:26 +00:00
sv - > dialogEditInfos ( ) ;
2006-11-19 18:40:03 +00:00
}
2007-01-28 00:53:17 +00:00
2007-02-01 01:07:26 +00:00
/**
Ajoute une colonne au schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_addColumn ( ) {
2007-01-29 00:41:12 +00:00
DiagramView * sv = diagramEnCours ( ) ;
2007-01-28 00:53:17 +00:00
if ( ! sv ) return ;
2007-02-01 01:07:26 +00:00
sv - > addColumn ( ) ;
2007-01-28 00:53:17 +00:00
}
2007-02-01 01:07:26 +00:00
/**
Enleve une colonne au schema en cours
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_removeColumn ( ) {
2007-01-29 00:41:12 +00:00
DiagramView * sv = diagramEnCours ( ) ;
2007-01-28 00:53:17 +00:00
if ( ! sv ) return ;
2007-02-01 01:07:26 +00:00
sv - > removeColumn ( ) ;
2007-01-28 00:53:17 +00:00
}
2007-02-03 02:00:18 +00:00
/**
Allonge le schema en cours en hauteur
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_expand ( ) {
2007-02-03 02:00:18 +00:00
DiagramView * sv = diagramEnCours ( ) ;
if ( ! sv ) return ;
sv - > expand ( ) ;
}
/**
Retrecit le schema en cours en hauteur
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_shrink ( ) {
2007-02-03 02:00:18 +00:00
DiagramView * sv = diagramEnCours ( ) ;
if ( ! sv ) return ;
sv - > shrink ( ) ;
}