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-09-25 23:24:36 +00:00
# include "diagram.h"
2007-02-26 22:42:46 +00:00
# include "elementspanelwidget.h"
2006-10-27 15:47:22 +00:00
# include "aboutqet.h"
2007-10-14 10:09:46 +00:00
# include "conductorpropertieswidget.h"
2007-11-18 00:22:19 +00:00
# include "configdialog.h"
2006-10-27 15:47:22 +00:00
/**
constructeur
2007-09-22 13:27:14 +00:00
@ param files Liste de fichiers a ouvrir
2006-10-27 15:47:22 +00:00
@ param parent le widget parent de la fenetre principale
*/
2007-10-21 12:53:57 +00:00
QETDiagramEditor : : QETDiagramEditor ( const QStringList & files , QWidget * parent ) : QMainWindow ( parent ) , open_dialog_dir ( QDir : : homePath ( ) ) {
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 * ) ) ) ;
// 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 ) ;
2007-09-29 12:54:01 +00:00
if ( sv - > open ( 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
// titre de la fenetre
setWindowTitle ( tr ( " QElectroTech " ) ) ;
// icone de la fenetre
setWindowIcon ( QIcon ( " :/ico/qet.png " ) ) ;
// barre de statut de la fenetre
2007-09-29 12:54:01 +00:00
statusBar ( ) - > showMessage ( tr ( " QElectroTech " ) ) ;
2006-10-27 15:47:22 +00:00
// ajout du panel d'Appareils en tant que QDockWidget
qdw_pa = new QDockWidget ( tr ( " Panel d'appareils " ) , this ) ;
2007-09-21 18:07:05 +00:00
qdw_pa - > setObjectName ( " elements panel " ) ;
2006-10-27 15:47:22 +00:00
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 ) ) ;
2007-11-09 15:16:54 +00:00
qdw_undo = new QDockWidget ( tr ( " Annulations " ) ) ;
qdw_undo - > setObjectName ( " diagram_undo " ) ;
qdw_undo - > setAllowedAreas ( Qt : : AllDockWidgetAreas ) ;
qdw_undo - > setFeatures ( QDockWidget : : AllDockWidgetFeatures ) ;
qdw_undo - > setMinimumWidth ( 160 ) ;
tabifyDockWidget ( qdw_pa , qdw_undo ) ;
QUndoView * undo_view = new QUndoView ( & undo_group , this ) ;
undo_view - > setEmptyLabel ( tr ( " Aucune modification " ) ) ;
qdw_undo - > setWidget ( undo_view ) ;
addDockWidget ( Qt : : LeftDockWidgetArea , qdw_undo ) ;
tabifyDockWidget ( qdw_undo , qdw_pa ) ;
2006-10-27 15:47:22 +00:00
// mise en place des actions
actions ( ) ;
// mise en place de la barre d'outils
toolbar ( ) ;
// mise en place des menus
menus ( ) ;
// la fenetre est maximisee par defaut
2007-11-12 15:21:14 +00:00
setMinimumSize ( QSize ( 500 , 350 ) ) ;
2006-10-27 15:47:22 +00:00
setWindowState ( Qt : : WindowMaximized ) ;
// connexions signaux / slots pour une interface sensee
2007-10-28 00:16:32 +00:00
connect ( & workspace , SIGNAL ( windowActivated ( QWidget * ) ) , this , SLOT ( slot_updateWindowsMenu ( ) ) ) ;
2007-01-29 00:41:12 +00:00
connect ( & workspace , SIGNAL ( windowActivated ( QWidget * ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
2007-10-28 00:16:32 +00:00
connect ( QApplication : : clipboard ( ) , SIGNAL ( dataChanged ( ) ) , this , SLOT ( slot_updatePasteAction ( ) ) ) ;
2007-09-22 13:27:14 +00:00
2007-10-27 13:18:17 +00:00
// ajout de tous les DiagramView necessaires
foreach ( DiagramView * sv , diagram_views ) addDiagramView ( sv ) ;
2007-11-12 15:21:14 +00:00
// lecture des parametres
readSettings ( ) ;
2007-09-22 13:27:14 +00:00
// affichage
show ( ) ;
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
/**
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 ) {
2006-11-11 13:56:40 +00:00
// quitte directement s'il n'y a aucun schema ouvert
2007-09-29 12:54:01 +00:00
bool can_quit = true ;
2007-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) {
2006-11-11 13:56:40 +00:00
// sinon demande la permission de fermer chaque schema
2007-09-29 12:54:01 +00:00
foreach ( QWidget * diagram_window , workspace . windowList ( ) ) {
if ( qobject_cast < DiagramView * > ( diagram_window ) ) {
workspace . setActiveWindow ( diagram_window ) ;
if ( ! closeDiagram ( ) ) {
can_quit = false ;
2007-09-21 18:07:05 +00:00
qce - > ignore ( ) ;
2006-10-27 15:47:22 +00:00
break ;
}
}
}
2006-11-16 19:27:29 +00:00
}
2007-09-29 12:54:01 +00:00
if ( can_quit ) {
2007-11-12 15:21:14 +00:00
writeSettings ( ) ;
2007-09-21 18:07:05 +00:00
setAttribute ( Qt : : WA_DeleteOnClose ) ;
qce - > accept ( ) ;
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-10-10 17:50:26 +00:00
detruit en meme temps que son parent ( ici , le QETDiagramEditor ) .
2006-10-27 15:47:22 +00:00
*/
2007-09-29 12:54:01 +00:00
void QETDiagramEditor : : aboutQET ( ) {
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-09-29 12:54:01 +00:00
new_file = new QAction ( QIcon ( " :/ico/new.png " ) , tr ( " &Nouveau " ) , this ) ;
open_file = new QAction ( QIcon ( " :/ico/open.png " ) , tr ( " &Ouvrir " ) , this ) ;
close_file = new QAction ( QIcon ( " :/ico/fileclose.png " ) , tr ( " &Fermer " ) , this ) ;
save_file = new QAction ( QIcon ( " :/ico/save.png " ) , tr ( " &Enregistrer " ) , this ) ;
save_file_sous = new QAction ( QIcon ( " :/ico/saveas.png " ) , tr ( " Enregistrer sous " ) , this ) ;
import_diagram = new QAction ( QIcon ( " :/ico/import.png " ) , tr ( " &Importer " ) , this ) ;
export_diagram = new QAction ( QIcon ( " :/ico/export.png " ) , tr ( " E&xporter " ) , this ) ;
print = new QAction ( QIcon ( " :/ico/print.png " ) , tr ( " Imprimer " ) , this ) ;
quit_editor = new QAction ( QIcon ( " :/ico/exit.png " ) , tr ( " &Quitter " ) , this ) ;
undo = undo_group . createUndoAction ( this , tr ( " Annuler " ) ) ;
undo - > setIcon ( QIcon ( " :/ico/undo.png " ) ) ;
redo = undo_group . createRedoAction ( this , tr ( " Refaire " ) ) ;
redo - > setIcon ( QIcon ( " :/ico/redo.png " ) ) ;
cut = new QAction ( QIcon ( " :/ico/cut.png " ) , tr ( " Co&uper " ) , this ) ;
copy = new QAction ( QIcon ( " :/ico/copy.png " ) , tr ( " Cop&ier " ) , this ) ;
paste = new QAction ( QIcon ( " :/ico/paste.png " ) , tr ( " C&oller " ) , this ) ;
select_all = new QAction ( tr ( " Tout s \351 lectionner " ) , this ) ;
select_nothing = new QAction ( tr ( " D \351 s \351 lectionner tout " ) , this ) ;
select_invert = new QAction ( tr ( " Inverser la s \351 lection " ) , this ) ;
delete_selection = new QAction ( QIcon ( " :/ico/delete.png " ) , tr ( " Supprimer " ) , this ) ;
rotate_selection = new QAction ( QIcon ( " :/ico/pivoter.png " ) , tr ( " Pivoter " ) , this ) ;
2007-10-04 17:32:41 +00:00
conductor_prop = new QAction ( QIcon ( " :/ico/conductor.png " ) , tr ( " Propri \351 t \351 s du conducteur " ) , this ) ;
2007-10-06 18:37:21 +00:00
conductor_reset = new QAction ( QIcon ( " :/ico/conductor2.png " ) , tr ( " R \351 initialiser les conducteurs " ) , this ) ;
2007-10-14 15:16:37 +00:00
conductor_default = new QAction ( QIcon ( " :/ico/conductor3.png " ) , tr ( " Conducteurs par d \351 faut " ) , this ) ;
2007-10-12 12:54:25 +00:00
infos_diagram = new QAction ( QIcon ( " :/ico/info.png " ) , tr ( " Propri \351 t \351 s du sch \351 ma " ) , this ) ;
2007-10-27 13:18:17 +00:00
add_text = new QAction ( QIcon ( " :/ico/textfield.png " ) , tr ( " Ajouter un champ de texte " ) , 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
2007-09-29 12:54:01 +00:00
zoom_in = new QAction ( QIcon ( " :/ico/viewmag+.png " ) , tr ( " Zoom avant " ) , this ) ;
zoom_out = new QAction ( QIcon ( " :/ico/viewmag-.png " ) , tr ( " Zoom arri \350 re " ) , this ) ;
zoom_fit = new QAction ( QIcon ( " :/ico/viewmagfit.png " ) , tr ( " Zoom adapt \351 " ) , this ) ;
2007-01-29 00:41:12 +00:00
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 ) ;
2007-09-29 12:54:01 +00:00
fullscreen_on = new QAction ( QIcon ( " :/ico/entrer_fs.png " ) , tr ( " Passer en &mode plein \351 cran " ) , this ) ;
fullscreen_off = new QAction ( QIcon ( " :/ico/sortir_fs.png " ) , tr ( " Sortir du &mode plein \351 cran " ) , this ) ;
configure = new QAction ( QIcon ( " :/ico/configure.png " ) , tr ( " &Configurer QElectroTech " ) , this ) ;
2007-01-29 00:41:12 +00:00
2007-09-29 12:54:01 +00:00
tile_window = new QAction ( tr ( " &Mosa \357 que " ) , this ) ;
cascade_window = new QAction ( tr ( " &Cascade " ) , this ) ;
arrange_window = new QAction ( tr ( " Arranger les fen \352 tres r \351 duites " ) , this ) ;
next_window = new QAction ( tr ( " Fen \352 tre suivante " ) , this ) ;
prev_window = new QAction ( tr ( " Fen \352 tre pr \351 c \351 dente " ) , this ) ;
2007-01-29 00:41:12 +00:00
2007-09-29 12:54:01 +00:00
about_qet = new QAction ( QIcon ( " :/ico/qet.png " ) , tr ( " \300 &propos de QElectroTech " ) , this ) ;
about_qt = new QAction ( QIcon ( " :/ico/qt.png " ) , tr ( " \300 propos de &Qt " ) , this ) ;
2007-01-29 00:41:12 +00:00
2006-10-27 15:47:22 +00:00
// raccourcis clavier
2007-09-29 12:54:01 +00:00
new_file - > setShortcut ( QKeySequence : : New ) ;
open_file - > setShortcut ( QKeySequence : : Open ) ;
close_file - > setShortcut ( QKeySequence : : Close ) ;
save_file - > setShortcut ( QKeySequence : : Save ) ;
import_diagram - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+I " ) ) ) ;
export_diagram - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+X " ) ) ) ;
print - > setShortcut ( QKeySequence ( QKeySequence : : Print ) ) ;
quit_editor - > setShortcut ( QKeySequence ( tr ( " Ctrl+Q " ) ) ) ;
undo - > setShortcut ( QKeySequence : : Undo ) ;
redo - > setShortcut ( QKeySequence : : Redo ) ;
cut - > setShortcut ( QKeySequence : : Cut ) ;
copy - > setShortcut ( QKeySequence : : Copy ) ;
paste - > setShortcut ( QKeySequence : : Paste ) ;
select_all - > setShortcut ( QKeySequence : : SelectAll ) ;
select_nothing - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+A " ) ) ) ;
select_invert - > setShortcut ( QKeySequence ( tr ( " Ctrl+I " ) ) ) ;
2007-10-03 23:09:05 +00:00
delete_selection - > setShortcut ( QKeySequence ( tr ( " Suppr " ) ) ) ;
2007-09-29 12:54:01 +00:00
rotate_selection - > setShortcut ( QKeySequence ( tr ( " Ctrl+R " ) ) ) ;
2007-10-04 17:32:41 +00:00
conductor_prop - > setShortcut ( QKeySequence ( tr ( " Ctrl+J " ) ) ) ;
2007-10-06 18:37:21 +00:00
conductor_reset - > setShortcut ( QKeySequence ( tr ( " Ctrl+K " ) ) ) ;
2007-10-12 12:54:25 +00:00
infos_diagram - > setShortcut ( QKeySequence ( tr ( " Ctrl+L " ) ) ) ;
2007-10-14 15:16:37 +00:00
conductor_default - > setShortcut ( QKeySequence ( tr ( " Ctrl+D " ) ) ) ;
2007-09-29 12:54:01 +00:00
zoom_in - > setShortcut ( QKeySequence : : ZoomIn ) ;
zoom_out - > setShortcut ( QKeySequence : : ZoomOut ) ;
zoom_fit - > setShortcut ( QKeySequence ( tr ( " Ctrl+9 " ) ) ) ;
2006-10-27 15:47:22 +00:00
zoom_reset - > setShortcut ( QKeySequence ( tr ( " Ctrl+0 " ) ) ) ;
2007-09-29 12:54:01 +00:00
fullscreen_on - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+F " ) ) ) ;
fullscreen_off - > setShortcut ( QKeySequence ( tr ( " Ctrl+Shift+F " ) ) ) ;
2006-10-27 15:47:22 +00:00
2007-09-29 12:54:01 +00:00
next_window - > setShortcut ( QKeySequence : : NextChild ) ;
prev_window - > setShortcut ( QKeySequence : : PreviousChild ) ;
2007-08-25 04:33:32 +00:00
2006-10-28 11:17:14 +00:00
// affichage dans la barre de statut
2007-09-29 12:54:01 +00:00
new_file - > setStatusTip ( tr ( " Cr \351 e un nouveau sch \351 ma " ) ) ;
open_file - > setStatusTip ( tr ( " Ouvre un sch \351 ma existant " ) ) ;
close_file - > setStatusTip ( tr ( " Ferme le sch \351 ma courant " ) ) ;
save_file - > setStatusTip ( tr ( " Enregistre le sch \351 ma courant " ) ) ;
save_file_sous - > setStatusTip ( tr ( " Enregistre le sch \351 ma courant avec un autre nom de fichier " ) ) ;
import_diagram - > setStatusTip ( tr ( " Importe un sch \351 ma dans le sch \351 ma courant " ) ) ;
export_diagram - > setStatusTip ( tr ( " Exporte le sch \351 ma courant dans un autre format " ) ) ;
print - > setStatusTip ( tr ( " Imprime le sch \351 ma courant " ) ) ;
quit_editor - > setStatusTip ( tr ( " Ferme l'application QElectroTech " ) ) ;
undo - > setStatusTip ( tr ( " Annule l'action pr \351 c \351 dente " ) ) ;
2007-10-13 17:04:52 +00:00
redo - > setStatusTip ( tr ( " Restaure l'action annul \351 e " ) ) ;
2007-09-29 12:54:01 +00:00
cut - > setStatusTip ( tr ( " Transf \350 re les \351 l \351 ments s \351 lectionn \351 s dans le presse-papier " ) ) ;
copy - > setStatusTip ( tr ( " Copie les \351 l \351 ments s \351 lectionn \351 s dans le presse-papier " ) ) ;
paste - > setStatusTip ( tr ( " Place les \351 l \351 ments du presse-papier sur le sch \351 ma " ) ) ;
select_all - > setStatusTip ( tr ( " S \351 lectionne tous les \351 l \351 ments du sch \351 ma " ) ) ;
select_nothing - > setStatusTip ( tr ( " D \351 s \351 lectionne tous les \351 l \351 ments du sch \351 ma " ) ) ;
select_invert - > 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 " ) ) ;
delete_selection - > setStatusTip ( tr ( " Enl \350 ve les \351 l \351 ments s \351 lectionn \351 s du sch \351 ma " ) ) ;
rotate_selection - > setStatusTip ( tr ( " Pivote les \351 l \351 ments s \351 lectionn \351 s " ) ) ;
2007-10-13 17:04:52 +00:00
conductor_prop - > setStatusTip ( tr ( " \311 dite les propri \351 t \351 s du conducteur s \351 lectionn \351 " ) ) ;
conductor_reset - > setStatusTip ( tr ( " Recalcule les chemins des conducteurs sans tenir compte des modifications " ) ) ;
2007-10-14 15:16:37 +00:00
conductor_default - > setStatusTip ( tr ( " Sp \351 cifie les propri \351 t \351 s par d \351 faut des conducteurs " ) ) ;
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
2007-09-29 12:54:01 +00:00
zoom_in - > setStatusTip ( tr ( " Agrandit le sch \351 ma " ) ) ;
zoom_out - > setStatusTip ( tr ( " R \351 tr \351 cit le sch \351 ma " ) ) ;
zoom_fit - > setStatusTip ( tr ( " Adapte la taille du sch \351 ma afin qu'il soit enti \350 rement visible " ) ) ;
2006-11-11 13:56:40 +00:00
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 " ) ) ;
2007-09-29 12:54:01 +00:00
fullscreen_on - > setStatusTip ( tr ( " Affiche QElectroTech en mode plein \351 cran " ) ) ;
fullscreen_off - > setStatusTip ( tr ( " Affiche QElectroTech en mode fen \352 tr \351 " ) ) ;
configure - > setStatusTip ( tr ( " Permet de r \351 gler diff \351 rents param \350 tres de QElectroTech " ) ) ;
2006-11-11 13:56:40 +00:00
2007-09-29 12:54:01 +00:00
tile_window - > setStatusTip ( tr ( " Dispose les fen \352 tres en mosa \357 que " ) ) ;
cascade_window - > setStatusTip ( tr ( " Dispose les fen \352 tres en cascade " ) ) ;
arrange_window - > setStatusTip ( tr ( " Aligne les fen \352 tres r \351 duites " ) ) ;
next_window - > setStatusTip ( tr ( " Active la fen \352 tre suivante " ) ) ;
prev_window - > setStatusTip ( tr ( " Active la fen \352 tre pr \351 c \351 dente " ) ) ;
2006-10-27 15:47:22 +00:00
2007-09-29 12:54:01 +00:00
about_qet - > setStatusTip ( tr ( " Affiche des informations sur QElectroTech " ) ) ;
about_qt - > setStatusTip ( tr ( " Affiche des informations sur la biblioth \350 que Qt " ) ) ;
2006-11-11 13:56:40 +00:00
2006-10-27 15:47:22 +00:00
// traitements speciaux
2007-10-27 13:18:17 +00:00
add_text - > setCheckable ( true ) ;
2006-10-27 15:47:22 +00:00
mode_selection - > setCheckable ( true ) ;
mode_visualise - > setCheckable ( true ) ;
mode_selection - > setChecked ( true ) ;
2007-10-28 00:16:32 +00:00
grp_visu_sel = new QActionGroup ( this ) ;
2006-10-27 15:47:22 +00:00
grp_visu_sel - > addAction ( mode_selection ) ;
grp_visu_sel - > addAction ( mode_visualise ) ;
grp_visu_sel - > setExclusive ( true ) ;
// connexion a des slots
2007-09-29 12:54:01 +00:00
connect ( quit_editor , SIGNAL ( triggered ( ) ) , this , SLOT ( close ( ) ) ) ;
connect ( select_all , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_selectAll ( ) ) ) ;
connect ( select_nothing , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_selectNothing ( ) ) ) ;
connect ( select_invert , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_selectInvert ( ) ) ) ;
connect ( delete_selection , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_delete ( ) ) ) ;
connect ( rotate_selection , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_rotate ( ) ) ) ;
connect ( fullscreen_on , SIGNAL ( triggered ( ) ) , this , SLOT ( toggleFullScreen ( ) ) ) ;
connect ( fullscreen_off , SIGNAL ( triggered ( ) ) , this , SLOT ( toggleFullScreen ( ) ) ) ;
2007-11-18 00:22:19 +00:00
connect ( configure , SIGNAL ( triggered ( ) ) , this , SLOT ( configureQET ( ) ) ) ;
2006-10-27 15:47:22 +00:00
connect ( mode_selection , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_setSelectionMode ( ) ) ) ;
connect ( mode_visualise , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_setVisualisationMode ( ) ) ) ;
2007-09-29 12:54:01 +00:00
connect ( about_qet , SIGNAL ( triggered ( ) ) , this , SLOT ( aboutQET ( ) ) ) ;
connect ( about_qt , SIGNAL ( triggered ( ) ) , qApp , SLOT ( aboutQt ( ) ) ) ;
connect ( zoom_in , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_zoomIn ( ) ) ) ;
connect ( zoom_out , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_zoomOut ( ) ) ) ;
connect ( zoom_fit , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_zoomFit ( ) ) ) ;
2006-10-27 15:47:22 +00:00
connect ( zoom_reset , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_zoomReset ( ) ) ) ;
2007-09-29 12:54:01 +00:00
connect ( print , SIGNAL ( triggered ( ) ) , this , SLOT ( printDialog ( ) ) ) ;
connect ( export_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( exportDialog ( ) ) ) ;
connect ( save_file_sous , SIGNAL ( triggered ( ) ) , this , SLOT ( saveAsDialog ( ) ) ) ;
connect ( save_file , SIGNAL ( triggered ( ) ) , this , SLOT ( save ( ) ) ) ;
connect ( new_file , SIGNAL ( triggered ( ) ) , this , SLOT ( newDiagram ( ) ) ) ;
connect ( open_file , SIGNAL ( triggered ( ) ) , this , SLOT ( openDiagram ( ) ) ) ;
connect ( close_file , SIGNAL ( triggered ( ) ) , this , SLOT ( closeDiagram ( ) ) ) ;
connect ( cut , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_cut ( ) ) ) ;
connect ( copy , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_copy ( ) ) ) ;
connect ( paste , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_paste ( ) ) ) ;
connect ( tile_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( tile ( ) ) ) ;
connect ( cascade_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( cascade ( ) ) ) ;
connect ( arrange_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( arrangeIcons ( ) ) ) ;
connect ( next_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( activateNextWindow ( ) ) ) ;
connect ( prev_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( activatePreviousWindow ( ) ) ) ;
2007-10-06 18:37:21 +00:00
connect ( conductor_prop , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_editConductor ( ) ) ) ;
connect ( conductor_reset , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_resetConductors ( ) ) ) ;
2007-10-14 15:16:37 +00:00
connect ( conductor_default , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_editDefaultConductors ( ) ) ) ;
2007-07-18 15:41:13 +00:00
connect ( infos_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_editInfos ( ) ) ) ;
2007-10-27 13:18:17 +00:00
connect ( add_text , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_addText ( ) ) ) ;
2007-07-18 15:41:13 +00:00
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 " ) ) ;
2007-10-13 17:04:52 +00:00
//QMenu *menu_outils = menuBar() -> addMenu(tr("O&utils"));
2006-10-27 15:47:22 +00:00
QMenu * menu_config = menuBar ( ) - > addMenu ( tr ( " &Configuration " ) ) ;
2007-09-29 12:54:01 +00:00
windows_menu = menuBar ( ) - > addMenu ( tr ( " Fe&n \352 tres " ) ) ;
2006-10-27 15:47:22 +00:00
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 ) ;
2007-10-13 17:04:52 +00:00
//menu_outils -> setTearOffEnabled(true);
2006-10-27 15:47:22 +00:00
menu_config - > setTearOffEnabled ( true ) ;
2007-09-29 12:54:01 +00:00
windows_menu - > setTearOffEnabled ( true ) ;
2006-10-27 15:47:22 +00:00
menu_aide - > setTearOffEnabled ( true ) ;
// menu Fichier
2007-09-29 12:54:01 +00:00
menu_fichier - > addAction ( new_file ) ;
menu_fichier - > addAction ( open_file ) ;
menu_fichier - > addAction ( save_file ) ;
menu_fichier - > addAction ( save_file_sous ) ;
menu_fichier - > addAction ( close_file ) ;
2006-10-27 15:47:22 +00:00
menu_fichier - > addSeparator ( ) ;
2007-09-29 12:54:01 +00:00
//menu_fichier -> addAction(import_diagram);
menu_fichier - > addAction ( export_diagram ) ;
2007-09-22 13:27:14 +00:00
//menu_fichier -> addSeparator();
2007-09-29 12:54:01 +00:00
menu_fichier - > addAction ( print ) ;
2006-10-27 15:47:22 +00:00
menu_fichier - > addSeparator ( ) ;
2007-09-29 12:54:01 +00:00
menu_fichier - > addAction ( quit_editor ) ;
2006-10-27 15:47:22 +00:00
// menu Edition
2007-09-29 12:54:01 +00:00
menu_edition - > addAction ( undo ) ;
menu_edition - > addAction ( redo ) ;
2006-10-27 15:47:22 +00:00
menu_edition - > addSeparator ( ) ;
2007-09-29 12:54:01 +00:00
menu_edition - > addAction ( cut ) ;
menu_edition - > addAction ( copy ) ;
menu_edition - > addAction ( paste ) ;
2006-10-27 15:47:22 +00:00
menu_edition - > addSeparator ( ) ;
2007-09-29 12:54:01 +00:00
menu_edition - > addAction ( select_all ) ;
menu_edition - > addAction ( select_nothing ) ;
menu_edition - > addAction ( select_invert ) ;
2006-10-27 15:47:22 +00:00
menu_edition - > addSeparator ( ) ;
2007-09-29 12:54:01 +00:00
menu_edition - > addAction ( delete_selection ) ;
menu_edition - > addAction ( rotate_selection ) ;
2006-11-19 18:40:03 +00:00
menu_edition - > addSeparator ( ) ;
2007-10-03 17:02:39 +00:00
menu_edition - > addAction ( conductor_prop ) ;
2007-10-06 18:37:21 +00:00
menu_edition - > addAction ( conductor_reset ) ;
2007-10-14 15:16:37 +00:00
menu_edition - > addAction ( conductor_default ) ;
2007-10-03 13:11:47 +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
2007-10-13 17:04:52 +00:00
// menu Configurer > Afficher
2007-11-09 15:16:54 +00:00
QMenu * display_toolbars = createPopupMenu ( ) ;
display_toolbars - > setTearOffEnabled ( true ) ;
display_toolbars - > setTitle ( tr ( " Afficher " ) ) ;
display_toolbars - > setIcon ( QIcon ( " :/ico/toolbars.png " ) ) ;
main_bar - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non la barre d'outils principale " ) ) ;
view_bar - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non la barre d'outils Affichage " ) ) ;
2007-10-13 17:04:52 +00:00
diagram_bar - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non la barre d'outils Sch \351 ma " ) ) ;
2007-11-09 15:16:54 +00:00
qdw_pa - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non le panel d'appareils " ) ) ;
qdw_undo - > toggleViewAction ( ) - > setStatusTip ( tr ( " Affiche ou non la liste des modifications " ) ) ;
2006-10-27 15:47:22 +00:00
// menu Affichage
2007-10-13 17:04:52 +00:00
menu_affichage - > addAction ( mode_selection ) ;
menu_affichage - > addAction ( mode_visualise ) ;
2006-10-27 15:47:22 +00:00
menu_affichage - > addSeparator ( ) ;
2007-09-29 12:54:01 +00:00
menu_affichage - > addAction ( zoom_in ) ;
menu_affichage - > addAction ( zoom_out ) ;
menu_affichage - > addAction ( zoom_fit ) ;
2006-10-27 15:47:22 +00:00
menu_affichage - > addAction ( zoom_reset ) ;
// menu Configuration
2007-11-09 15:16:54 +00:00
menu_config - > addMenu ( display_toolbars ) ;
2007-09-29 12:54:01 +00:00
menu_config - > addAction ( fullscreen_on ) ;
2007-11-18 00:22:19 +00:00
menu_config - > addAction ( configure ) ;
2006-10-27 15:47:22 +00:00
2007-01-29 00:41:12 +00:00
// menu Fenetres
2007-09-29 12:54:01 +00:00
slot_updateWindowsMenu ( ) ;
2006-10-27 15:47:22 +00:00
// menu Aide
2007-09-29 12:54:01 +00:00
menu_aide - > addAction ( about_qet ) ;
menu_aide - > addAction ( about_qt ) ;
2006-10-27 15:47:22 +00:00
}
/**
Mise en place de la barre d ' outils
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : toolbar ( ) {
2007-10-13 17:04:52 +00:00
main_bar = new QToolBar ( tr ( " Outils " ) , this ) ;
main_bar - > setObjectName ( " toolbar " ) ;
view_bar = new QToolBar ( tr ( " Affichage " ) , this ) ;
view_bar - > setObjectName ( " display " ) ;
diagram_bar = new QToolBar ( tr ( " Sch \351 ma " ) , this ) ;
diagram_bar - > setObjectName ( " diagram " ) ;
main_bar - > addAction ( new_file ) ;
main_bar - > addAction ( open_file ) ;
main_bar - > addAction ( save_file ) ;
main_bar - > addAction ( save_file_sous ) ;
main_bar - > addAction ( close_file ) ;
main_bar - > addAction ( print ) ;
main_bar - > addSeparator ( ) ;
main_bar - > addAction ( undo ) ;
main_bar - > addAction ( redo ) ;
main_bar - > addSeparator ( ) ;
main_bar - > addAction ( cut ) ;
main_bar - > addAction ( copy ) ;
main_bar - > addAction ( paste ) ;
main_bar - > addSeparator ( ) ;
main_bar - > addAction ( delete_selection ) ;
main_bar - > addAction ( rotate_selection ) ;
// Modes selection / visualisation et zoom
view_bar - > addAction ( mode_selection ) ;
view_bar - > addAction ( mode_visualise ) ;
view_bar - > addSeparator ( ) ;
view_bar - > addAction ( zoom_in ) ;
view_bar - > addAction ( zoom_out ) ;
view_bar - > addAction ( zoom_fit ) ;
view_bar - > addAction ( zoom_reset ) ;
diagram_bar - > addAction ( infos_diagram ) ;
2007-10-27 13:18:17 +00:00
diagram_bar - > addAction ( add_text ) ;
2007-10-14 15:16:37 +00:00
diagram_bar - > addAction ( conductor_default ) ;
2007-10-13 17:04:52 +00:00
diagram_bar - > addAction ( conductor_prop ) ;
diagram_bar - > addAction ( conductor_reset ) ;
2006-10-27 15:47:22 +00:00
// ajout de la barre d'outils a la fenetre principale
2007-10-13 17:04:52 +00:00
addToolBar ( Qt : : TopToolBarArea , main_bar ) ;
addToolBar ( Qt : : TopToolBarArea , view_bar ) ;
addToolBar ( Qt : : TopToolBarArea , diagram_bar ) ;
2006-10-27 15:47:22 +00:00
}
/**
2007-02-01 01:07:26 +00:00
Imprime le schema courant
2006-10-27 15:47:22 +00:00
*/
2007-09-29 12:54:01 +00:00
void QETDiagramEditor : : printDialog ( ) {
2007-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
2007-02-01 01:07:26 +00:00
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-29 12:54:01 +00:00
void QETDiagramEditor : : exportDialog ( ) {
2007-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
2007-02-01 01:07:26 +00:00
if ( ! sv ) return ;
sv - > dialogExport ( ) ;
2006-10-27 15:47:22 +00:00
}
/**
Methode enregistrant le schema dans le dernier nom de fichier connu .
@ return true si l ' enregistrement a reussi , false sinon
*/
2007-09-29 12:54:01 +00:00
bool QETDiagramEditor : : save ( ) {
2007-09-25 23:24:36 +00:00
if ( ! currentDiagram ( ) ) return ( false ) ;
2007-09-29 12:54:01 +00:00
return ( currentDiagram ( ) - > save ( ) ) ;
2006-10-27 15:47:22 +00:00
}
/**
Cette methode demande un nom de fichier a l ' utilisateur pour enregistrer le schema
@ return true si l ' enregistrement a reussi , false sinon
*/
2007-09-29 12:54:01 +00:00
bool QETDiagramEditor : : saveAsDialog ( ) {
2007-09-25 23:24:36 +00:00
if ( ! currentDiagram ( ) ) return ( false ) ;
2007-09-29 12:54:01 +00:00
return ( currentDiagram ( ) - > saveAs ( ) ) ;
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-29 12:54:01 +00:00
bool QETDiagramEditor : : newDiagram ( ) {
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-29 12:54:01 +00:00
bool QETDiagramEditor : : openDiagram ( ) {
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 " ) ,
2007-10-21 12:53:57 +00:00
open_dialog_dir . absolutePath ( ) ,
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
) ;
2007-10-21 12:53:57 +00:00
if ( nom_fichier . isEmpty ( ) ) return ( false ) ;
2006-10-27 15:47:22 +00:00
2007-10-21 12:53:57 +00:00
open_dialog_dir = QDir ( nom_fichier ) ;
2006-10-27 15:47:22 +00:00
// 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 ) ;
2007-09-29 12:54:01 +00:00
if ( QFileInfo ( fenetre_en_cours - > file_name ) . canonicalFilePath ( ) = = chemin_fichier ) {
2006-10-27 15:47:22 +00:00
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 ;
2007-09-29 12:54:01 +00:00
if ( sv - > open ( 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
*/
2007-09-29 12:54:01 +00:00
bool QETDiagramEditor : : closeDiagram ( ) {
2007-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
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-25 23:24:36 +00:00
DiagramView * QETDiagramEditor : : currentDiagram ( ) 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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_cut ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > cut ( ) ;
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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_copy ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > copy ( ) ;
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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_paste ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > paste ( ) ;
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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_zoomIn ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > zoomIn ( ) ;
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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_zoomOut ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > zoomOut ( ) ;
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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > 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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > 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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > 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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > 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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > 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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_delete ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > deleteSelection ( ) ;
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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_rotate ( ) {
if ( currentDiagram ( ) ) currentDiagram ( ) - > rotateSelection ( ) ;
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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > 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-09-25 23:24:36 +00:00
if ( currentDiagram ( ) ) currentDiagram ( ) - > setVisualisationMode ( ) ;
2006-10-27 15:47:22 +00:00
}
/**
2007-10-28 00:16:32 +00:00
gere les actions
2006-10-27 15:47:22 +00:00
*/
2007-09-21 12:35:28 +00:00
void QETDiagramEditor : : slot_updateActions ( ) {
2007-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
2007-09-29 12:54:01 +00:00
bool opened_document = ( sv ! = 0 ) ;
2006-10-27 15:47:22 +00:00
// actions ayant juste besoin d'un document ouvert
2007-09-29 12:54:01 +00:00
close_file - > setEnabled ( opened_document ) ;
save_file - > setEnabled ( opened_document ) ;
save_file_sous - > setEnabled ( opened_document ) ;
import_diagram - > setEnabled ( opened_document ) ;
export_diagram - > setEnabled ( opened_document ) ;
print - > setEnabled ( opened_document ) ;
select_all - > setEnabled ( opened_document ) ;
select_nothing - > setEnabled ( opened_document ) ;
select_invert - > setEnabled ( opened_document ) ;
zoom_in - > setEnabled ( opened_document ) ;
zoom_out - > setEnabled ( opened_document ) ;
zoom_fit - > setEnabled ( opened_document ) ;
zoom_reset - > setEnabled ( opened_document ) ;
2007-10-14 15:16:37 +00:00
conductor_default - > setEnabled ( opened_document ) ;
2007-09-29 12:54:01 +00:00
infos_diagram - > setEnabled ( opened_document ) ;
2007-10-27 13:18:17 +00:00
add_text - > setEnabled ( opened_document ) ;
2007-09-29 12:54:01 +00:00
add_column - > setEnabled ( opened_document ) ;
remove_column - > setEnabled ( opened_document ) ;
expand_diagram - > setEnabled ( opened_document ) ;
shrink_diagram - > setEnabled ( opened_document ) ;
2006-10-27 15:47:22 +00:00
2007-09-25 23:24:36 +00:00
// affiche les actions correspondant au diagram view en cours
if ( sv ) undo_group . setActiveStack ( & ( sv - > diagram ( ) - > undoStack ( ) ) ) ;
else {
2007-09-29 12:54:01 +00:00
undo - > setEnabled ( false ) ;
redo - > setEnabled ( false ) ;
2007-09-25 23:24:36 +00:00
}
2006-10-27 15:47:22 +00:00
2007-10-28 00:16:32 +00:00
slot_updateModeActions ( ) ;
slot_updatePasteAction ( ) ;
slot_updateComplexActions ( ) ;
}
/**
gere les actions ayant des besoins precis pour etre active ou non
Cette methode ne fait rien si aucun document n ' est ouvert
*/
void QETDiagramEditor : : slot_updateComplexActions ( ) {
DiagramView * dv = currentDiagram ( ) ;
bool opened_document = ( dv ! = 0 ) ;
// nombre de conducteurs selectionnes
int selected_conductors_count = opened_document ? dv - > diagram ( ) - > selectedConductors ( ) . count ( ) : 0 ;
conductor_prop - > setEnabled ( opened_document & & selected_conductors_count = = 1 ) ;
conductor_reset - > setEnabled ( opened_document & & selected_conductors_count ) ;
2006-10-27 15:47:22 +00:00
// actions ayant aussi besoin d'elements selectionnes
2007-10-28 00:16:32 +00:00
bool selected_elements = opened_document ? ( dv - > hasSelectedItems ( ) ) : false ;
2007-09-29 12:54:01 +00:00
cut - > setEnabled ( selected_elements ) ;
copy - > setEnabled ( selected_elements ) ;
delete_selection - > setEnabled ( selected_elements ) ;
rotate_selection - > setEnabled ( selected_elements ) ;
2007-10-28 00:16:32 +00:00
}
/**
Gere les actions realtives au mode du schema
*/
void QETDiagramEditor : : slot_updateModeActions ( ) {
DiagramView * dv = currentDiagram ( ) ;
2006-10-27 15:47:22 +00:00
// actions ayant aussi besoin d'un document ouvert et de la connaissance de son mode
2007-10-28 00:16:32 +00:00
if ( ! dv ) {
grp_visu_sel - > setEnabled ( false ) ;
2006-10-27 15:47:22 +00:00
} else {
2007-10-28 00:16:32 +00:00
switch ( ( int ) ( dv - > dragMode ( ) ) ) {
2006-10-27 15:47:22 +00:00
case QGraphicsView : : NoDrag :
2007-10-28 00:16:32 +00:00
grp_visu_sel - > setEnabled ( false ) ;
2006-10-27 15:47:22 +00:00
break ;
case QGraphicsView : : ScrollHandDrag :
2007-10-28 00:16:32 +00:00
grp_visu_sel - > setEnabled ( true ) ;
2006-10-27 15:47:22 +00:00
mode_visualise - > setChecked ( true ) ;
break ;
case QGraphicsView : : RubberBandDrag :
2007-10-28 00:16:32 +00:00
grp_visu_sel - > setEnabled ( true ) ;
2006-10-27 15:47:22 +00:00
mode_selection - > setChecked ( true ) ;
break ;
}
}
2007-10-28 00:16:32 +00:00
}
/**
Gere les actions ayant besoin du presse - papier
*/
void QETDiagramEditor : : slot_updatePasteAction ( ) {
2007-11-03 20:20:34 +00:00
// pour coller, il faut un schema ouvert et un schema dans le presse-papier
paste - > setEnabled ( currentDiagram ( ) & & Diagram : : clipboardMayContainDiagram ( ) ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
Ajoute un schema dans l ' espace de travail
2007-10-21 16:10:21 +00:00
@ param dv L ' objet DiagramView a ajouter a l ' espace de travail
2006-11-11 13:56:40 +00:00
*/
2007-09-25 23:24:36 +00:00
void QETDiagramEditor : : addDiagramView ( DiagramView * dv ) {
if ( ! dv ) return ;
undo_group . addStack ( & ( dv - > diagram ( ) - > undoStack ( ) ) ) ;
2007-01-29 00:41:12 +00:00
// on maximise la nouvelle fenetre si la fenetre en cours est inexistante ou bien maximisee
2007-09-25 23:24:36 +00:00
DiagramView * d_v = currentDiagram ( ) ;
bool maximise = ( ( ! d_v ) | | ( d_v - > windowState ( ) & Qt : : WindowMaximized ) ) ;
2007-01-29 00:41:12 +00:00
// ajoute la fenetre
2007-09-25 23:24:36 +00:00
QWidget * p = workspace . addWindow ( dv ) ;
2007-10-28 00:16:32 +00:00
connect ( dv - > diagram ( ) , SIGNAL ( selectionChanged ( ) ) , this , SLOT ( slot_updateComplexActions ( ) ) ) ;
connect ( dv , SIGNAL ( modeChanged ( ) ) , this , SLOT ( slot_updateModeActions ( ) ) ) ;
2007-10-27 13:18:17 +00:00
connect ( dv , SIGNAL ( textAdded ( bool ) ) , add_text , SLOT ( setChecked ( bool ) ) ) ;
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-29 12:54:01 +00:00
void QETDiagramEditor : : slot_updateWindowsMenu ( ) {
2006-10-27 15:47:22 +00:00
// nettoyage du menu
2007-09-29 12:54:01 +00:00
foreach ( QAction * a , windows_menu - > actions ( ) ) windows_menu - > removeAction ( a ) ;
2006-10-27 15:47:22 +00:00
// actions de fermeture
2007-09-29 12:54:01 +00:00
windows_menu - > addAction ( close_file ) ;
//windows_menu -> addAction(closeAllAct);
2006-10-27 15:47:22 +00:00
// actions de reorganisation des fenetres
2007-09-29 12:54:01 +00:00
windows_menu - > addSeparator ( ) ;
windows_menu - > addAction ( tile_window ) ;
windows_menu - > addAction ( cascade_window ) ;
windows_menu - > addAction ( arrange_window ) ;
2006-10-27 15:47:22 +00:00
2007-10-28 00:16:32 +00:00
// actions de deplacement entre les fenetres
2007-09-29 12:54:01 +00:00
windows_menu - > addSeparator ( ) ;
windows_menu - > addAction ( next_window ) ;
windows_menu - > addAction ( prev_window ) ;
2006-10-27 15:47:22 +00:00
// liste des fenetres
2007-09-29 12:54:01 +00:00
QList < QWidget * > windows = workspace . windowList ( ) ;
tile_window - > setEnabled ( ! windows . isEmpty ( ) ) ;
cascade_window - > setEnabled ( ! windows . isEmpty ( ) ) ;
arrange_window - > setEnabled ( ! windows . isEmpty ( ) ) ;
2007-10-28 00:16:32 +00:00
next_window - > setEnabled ( windows . count ( ) > 1 ) ;
prev_window - > setEnabled ( windows . count ( ) > 1 ) ;
2007-09-29 12:54:01 +00:00
if ( ! windows . isEmpty ( ) ) windows_menu - > addSeparator ( ) ;
2007-11-01 23:56:19 +00:00
QActionGroup * windows_actions = new QActionGroup ( this ) ;
2007-09-29 12:54:01 +00:00
for ( int i = 0 ; i < windows . size ( ) ; + + i ) {
DiagramView * dv = qobject_cast < DiagramView * > ( windows . at ( i ) ) ;
2007-10-06 18:37:21 +00:00
if ( ! dv ) continue ;
2007-09-29 12:54:01 +00:00
QString dv_title = dv - > windowTitle ( ) . left ( dv - > windowTitle ( ) . length ( ) - 3 ) ;
QAction * action = windows_menu - > addAction ( dv_title ) ;
2007-11-01 23:56:19 +00:00
windows_actions - > addAction ( action ) ;
2007-09-29 12:54:01 +00:00
action - > setStatusTip ( tr ( " Active la fen \352 tre " ) + dv_title ) ;
2006-10-27 15:47:22 +00:00
action - > setCheckable ( true ) ;
2007-09-29 12:54:01 +00:00
action - > setChecked ( dv = = currentDiagram ( ) ) ;
2006-10-27 15:47:22 +00:00
connect ( action , SIGNAL ( triggered ( ) ) , & windowMapper , SLOT ( map ( ) ) ) ;
2007-09-29 12:54:01 +00:00
windowMapper . setMapping ( action , dv ) ;
2006-10-27 15:47:22 +00:00
}
}
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-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
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-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
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-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
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-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
2007-02-03 02:00:18 +00:00
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-09-25 23:24:36 +00:00
DiagramView * sv = currentDiagram ( ) ;
2007-02-03 02:00:18 +00:00
if ( ! sv ) return ;
sv - > shrink ( ) ;
}
2007-10-03 13:11:47 +00:00
2007-10-06 18:37:21 +00:00
/**
Edite les proprietes du conducteur selectionne
*/
2007-10-03 17:02:39 +00:00
void QETDiagramEditor : : slot_editConductor ( ) {
2007-10-03 13:11:47 +00:00
if ( DiagramView * dv = currentDiagram ( ) ) {
2007-10-03 17:02:39 +00:00
dv - > editConductor ( ) ;
2007-10-03 13:11:47 +00:00
}
}
2007-10-06 18:37:21 +00:00
/**
Reinitialise les conducteurs selectionnes
*/
void QETDiagramEditor : : slot_resetConductors ( ) {
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > resetConductors ( ) ;
}
}
2007-10-14 15:16:37 +00:00
/**
Edite les proprietes par defaut des conducteurs
*/
void QETDiagramEditor : : slot_editDefaultConductors ( ) {
if ( DiagramView * dv = currentDiagram ( ) ) {
2007-10-27 13:18:17 +00:00
dv - > editDefaultConductorProperties ( ) ;
}
}
/**
Ajoute un texte au schema courant
*/
void QETDiagramEditor : : slot_addText ( ) {
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > addText ( ) ;
2007-10-14 15:16:37 +00:00
}
}
2007-11-12 15:21:14 +00:00
/// Lit les parametres de l'editeur de schemas
void QETDiagramEditor : : readSettings ( ) {
QSettings & settings = QETApp : : settings ( ) ;
// dimensions et position de la fenetre
QVariant geometry = settings . value ( " diagrameditor/geometry " ) ;
if ( geometry . isValid ( ) ) restoreGeometry ( geometry . toByteArray ( ) ) ;
// etat de la fenetre (barres d'outils, docks...)
QVariant state = settings . value ( " diagrameditor/state " ) ;
if ( state . isValid ( ) ) restoreState ( state . toByteArray ( ) ) ;
}
/// Enregistre les parametres de l'editeur de schemas
void QETDiagramEditor : : writeSettings ( ) {
QSettings & settings = QETApp : : settings ( ) ;
settings . setValue ( " diagrameditor/geometry " , saveGeometry ( ) ) ;
settings . setValue ( " diagrameditor/state " , saveState ( ) ) ;
}
2007-11-18 00:22:19 +00:00
void QETDiagramEditor : : configureQET ( ) {
ConfigDialog cd ;
cd . exec ( ) ;
}