2007-12-01 10:47:15 +00:00
/*
2009-04-03 19:30:25 +00:00
Copyright 2006 - 2009 Xavier Guerrin
2007-12-01 10:47:15 +00:00
This file is part of QElectroTech .
QElectroTech is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 2 of the License , or
( at your option ) any later version .
QElectroTech is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with QElectroTech . If not , see < http : //www.gnu.org/licenses/>.
*/
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"
2007-10-14 10:09:46 +00:00
# include "conductorpropertieswidget.h"
2009-04-03 19:30:25 +00:00
# include "qetproject.h"
# include "projectview.h"
2008-07-30 11:51:27 +00:00
# include "recentfiles.h"
2009-05-01 14:41:33 +00:00
# include "qeticons.h"
2009-07-08 09:41:20 +00:00
# include "qetelementeditor.h"
2009-08-09 16:02:14 +00:00
# include "qetmessagebox.h"
2008-08-14 22:51:08 +00:00
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
*/
2009-04-03 19:30:25 +00:00
QETDiagramEditor : : QETDiagramEditor ( const QStringList & files , QWidget * parent ) :
QMainWindow ( parent ) ,
2009-07-13 00:59:46 +00:00
open_dialog_dir ( QDesktopServices : : storageLocation ( QDesktopServices : : DesktopLocation ) ) ,
2009-04-03 19:30:25 +00:00
can_update_actions ( true )
{
2006-10-27 15:47:22 +00:00
// mise en place de l'interface MDI au centre de l'application
setCentralWidget ( & workspace ) ;
2009-05-24 17:46:44 +00:00
// nomme l'objet afin qu'il soit reperable par les feuilles de style
2009-04-03 19:30:25 +00:00
workspace . setBackground ( QBrush ( Qt : : NoBrush ) ) ;
workspace . setObjectName ( " mdiarea " ) ;
2006-10-27 15:47:22 +00:00
// mise en place du signalmapper
2009-04-03 19:30:25 +00:00
connect ( & windowMapper , SIGNAL ( mapped ( QWidget * ) ) , this , SLOT ( activateWidget ( QWidget * ) ) ) ;
2006-10-27 15:47:22 +00:00
// titre de la fenetre
2009-04-03 19:30:25 +00:00
setWindowTitle ( tr ( " QElectroTech " , " window title " ) ) ;
2006-10-27 15:47:22 +00:00
// icone de la fenetre
2009-05-01 14:41:33 +00:00
setWindowIcon ( QET : : Icons : : QETLogo ) ;
2006-10-27 15:47:22 +00:00
// barre de statut de la fenetre
2009-04-03 19:30:25 +00:00
statusBar ( ) - > showMessage ( tr ( " QElectroTech " , " status bar message " ) ) ;
2006-10-27 15:47:22 +00:00
2007-12-30 19:10:51 +00:00
// ajout du panel d'Elements en tant que QDockWidget
2009-04-03 19:30:25 +00:00
qdw_pa = new QDockWidget ( tr ( " Panel d' \351 l \351 ments " , " dock title " ) , this ) ;
2007-09-21 18:07:05 +00:00
qdw_pa - > setObjectName ( " elements panel " ) ;
2009-04-03 19:30:25 +00:00
qdw_pa - > setAllowedAreas ( Qt : : LeftDockWidgetArea | Qt : : RightDockWidgetArea ) ;
2006-10-27 15:47:22 +00:00
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 ) ) ;
2009-04-03 19:30:25 +00:00
connect ( & ( pa - > elementsPanel ( ) ) , SIGNAL ( requestForDiagram ( Diagram * ) ) , this , SLOT ( activateDiagram ( Diagram * ) ) ) ;
connect ( & ( pa - > elementsPanel ( ) ) , SIGNAL ( requestForProject ( QETProject * ) ) , this , SLOT ( activateProject ( QETProject * ) ) ) ;
connect ( pa , SIGNAL ( requestForProjectClosing ( QETProject * ) ) , this , SLOT ( closeProject ( QETProject * ) ) ) ;
connect ( pa , SIGNAL ( requestForProjectPropertiesEdition ( QETProject * ) ) , this , SLOT ( editProjectProperties ( QETProject * ) ) ) ;
connect ( pa , SIGNAL ( requestForDiagramPropertiesEdition ( Diagram * ) ) , this , SLOT ( editDiagramProperties ( Diagram * ) ) ) ;
connect ( pa , SIGNAL ( requestForNewDiagram ( QETProject * ) ) , this , SLOT ( addDiagramToProject ( QETProject * ) ) ) ;
connect ( pa , SIGNAL ( requestForDiagramDeletion ( Diagram * ) ) , this , SLOT ( removeDiagram ( Diagram * ) ) ) ;
2007-11-09 15:16:54 +00:00
2009-04-03 19:30:25 +00:00
qdw_undo = new QDockWidget ( tr ( " Annulations " , " dock title " ) ) ;
2007-11-09 15:16:54 +00:00
qdw_undo - > setObjectName ( " diagram_undo " ) ;
2009-04-03 19:30:25 +00:00
qdw_pa - > setAllowedAreas ( Qt : : LeftDockWidgetArea | Qt : : RightDockWidgetArea ) ;
2007-11-09 15:16:54 +00:00
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
2009-04-03 19:30:25 +00:00
connect ( & workspace , SIGNAL ( subWindowActivated ( QMdiSubWindow * ) ) , this , SLOT ( slot_updateWindowsMenu ( ) ) ) ;
connect ( & workspace , SIGNAL ( subWindowActivated ( QMdiSubWindow * ) ) , 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-11-12 15:21:14 +00:00
// lecture des parametres
readSettings ( ) ;
2007-09-22 13:27:14 +00:00
// affichage
show ( ) ;
2008-08-23 12:54:16 +00:00
// si des chemins de fichiers valides sont passes en arguments
2009-04-03 19:30:25 +00:00
uint opened_projects = 0 ;
if ( files . count ( ) ) {
2008-08-23 12:54:16 +00:00
// alors on ouvre ces fichiers
foreach ( QString file , files ) {
2009-04-03 19:30:25 +00:00
bool project_opening = openAndAddProject ( file , false ) ;
if ( project_opening ) {
+ + opened_projects ;
}
2008-08-23 12:54:16 +00:00
}
}
// si aucun schema n'a ete ouvert jusqu'a maintenant, on ouvre un nouveau schema
2009-04-03 19:30:25 +00:00
if ( ! opened_projects ) newProject ( ) ;
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 ) {
2009-04-03 19:30:25 +00:00
// quitte directement s'il n'y a aucun projet ouvert
2007-09-29 12:54:01 +00:00
bool can_quit = true ;
2009-04-03 19:30:25 +00:00
if ( openedProjects ( ) . count ( ) ) {
// s'assure que la fenetre soit visible s'il y a des projets a fermer
if ( ! isVisible ( ) | | isMinimized ( ) ) {
if ( isMaximized ( ) ) showMaximized ( ) ;
else showNormal ( ) ;
}
// sinon demande la permission de fermer chaque projet
foreach ( ProjectView * project , openedProjects ( ) ) {
if ( ! closeProject ( project ) ) {
can_quit = false ;
qce - > ignore ( ) ;
break ;
2006-10-27 15:47:22 +00:00
}
}
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 ) ;
}
/**
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
2009-05-01 14:41:33 +00:00
new_file = new QAction ( QET : : Icons : : DocumentNew , tr ( " &Nouveau " ) , this ) ;
open_file = new QAction ( QET : : Icons : : DocumentOpen , tr ( " &Ouvrir " ) , this ) ;
close_file = new QAction ( QET : : Icons : : DocumentClose , tr ( " &Fermer " ) , this ) ;
save_file = new QAction ( QET : : Icons : : DocumentSave , tr ( " &Enregistrer " ) , this ) ;
save_file_sous = new QAction ( QET : : Icons : : DocumentSaveAs , tr ( " Enregistrer sous " ) , this ) ;
save_all = new QAction ( QET : : Icons : : DocumentSaveAll , tr ( " &Enregistrer tous les sch \351 mas " ) , this ) ;
import_diagram = new QAction ( QET : : Icons : : DocumentImport , tr ( " &Importer " ) , this ) ;
export_diagram = new QAction ( QET : : Icons : : DocumentExport , tr ( " E&xporter " ) , this ) ;
print = new QAction ( QET : : Icons : : DocumentPrint , tr ( " Imprimer " ) , this ) ;
quit_editor = new QAction ( QET : : Icons : : ApplicationExit , tr ( " &Quitter " ) , this ) ;
2007-09-29 12:54:01 +00:00
undo = undo_group . createUndoAction ( this , tr ( " Annuler " ) ) ;
2009-05-01 14:41:33 +00:00
undo - > setIcon ( QET : : Icons : : EditUndo ) ;
2007-09-29 12:54:01 +00:00
redo = undo_group . createRedoAction ( this , tr ( " Refaire " ) ) ;
2009-05-01 14:41:33 +00:00
redo - > setIcon ( QET : : Icons : : EditRedo ) ;
cut = new QAction ( QET : : Icons : : EditCut , tr ( " Co&uper " ) , this ) ;
copy = new QAction ( QET : : Icons : : EditCopy , tr ( " Cop&ier " ) , this ) ;
paste = new QAction ( QET : : Icons : : EditPaste , tr ( " C&oller " ) , this ) ;
select_all = new QAction ( QET : : Icons : : EditSelectAll , 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 ( QET : : Icons : : EditDelete , tr ( " Supprimer " ) , this ) ;
rotate_selection = new QAction ( QET : : Icons : : ObjectRotateRight , tr ( " Pivoter " ) , this ) ;
2009-05-17 02:13:40 +00:00
selection_prop = new QAction ( QET : : Icons : : DialogInformation , tr ( " Propri \351 t \351 s de la s \351 lection " ) , this ) ;
2009-05-01 14:41:33 +00:00
conductor_reset = new QAction ( QET : : Icons : : ConductorSettings , tr ( " R \351 initialiser les conducteurs " ) , this ) ;
conductor_default = new QAction ( QET : : Icons : : DefaultConductor , tr ( " Conducteurs par d \351 faut " ) , this ) ;
infos_diagram = new QAction ( QET : : Icons : : DialogInformation , tr ( " Propri \351 t \351 s du sch \351 ma " ) , this ) ;
add_text = new QAction ( QET : : Icons : : PartTextField , tr ( " Ajouter un champ de texte " ) , this ) ;
add_column = new QAction ( QET : : Icons : : AddColumn , tr ( " Ajouter une colonne " ) , this ) ;
remove_column = new QAction ( QET : : Icons : : RemoveColumn , tr ( " Enlever une colonne " ) , this ) ;
add_row = new QAction ( QET : : Icons : : AddRow , tr ( " Ajouter une ligne " ) , this ) ;
remove_row = new QAction ( QET : : Icons : : RemoveRow , tr ( " Enlever une ligne " ) , this ) ;
prj_edit_prop = new QAction ( QET : : Icons : : DialogInformation , tr ( " Propri \351 t \351 s du projet " ) , this ) ;
prj_add_diagram = new QAction ( QET : : Icons : : DiagramAdd , tr ( " Ajouter un sch \351 ma " ) , this ) ;
prj_del_diagram = new QAction ( QET : : Icons : : DiagramDelete , tr ( " Supprimer le sch \351 ma " ) , this ) ;
prj_clean = new QAction ( QET : : Icons : : EditClear , tr ( " Nettoyer le projet " ) , this ) ;
zoom_in = new QAction ( QET : : Icons : : ZoomIn , tr ( " Zoom avant " ) , this ) ;
zoom_out = new QAction ( QET : : Icons : : ZoomOut , tr ( " Zoom arri \350 re " ) , this ) ;
zoom_fit = new QAction ( QET : : Icons : : ZoomFitBest , tr ( " Zoom adapt \351 " ) , this ) ;
zoom_reset = new QAction ( QET : : Icons : : ZoomOriginal , tr ( " Pas de zoom " ) , this ) ;
tabbed_view_mode = new QAction ( tr ( " en utilisant des onglets " ) , this ) ;
windowed_view_mode = new QAction ( tr ( " en utilisant des fen \352 tres " ) , this ) ;
mode_selection = new QAction ( QET : : Icons : : PartSelect , tr ( " Mode Selection " ) , this ) ;
mode_visualise = new QAction ( QET : : Icons : : ViewMove , tr ( " Mode Visualisation " ) , this ) ;
2007-01-29 00:41:12 +00:00
2009-04-03 19:30:25 +00:00
fullscreen = new QAction ( this ) ;
slot_updateFullScreenAction ( ) ;
2009-05-01 14:41:33 +00:00
configure = new QAction ( QET : : Icons : : Configure , tr ( " &Configurer QElectroTech " ) , this ) ;
2007-01-29 00:41:12 +00:00
2009-05-01 14:41:33 +00:00
tile_window = new QAction ( tr ( " &Mosa \357 que " ) , this ) ;
cascade_window = new QAction ( tr ( " &Cascade " ) , this ) ;
next_window = new QAction ( tr ( " Projet suivant " ) , this ) ;
prev_window = new QAction ( tr ( " Projet pr \351 c \351 dent " ) , this ) ;
2007-01-29 00:41:12 +00:00
2009-05-01 14:41:33 +00:00
about_qet = new QAction ( QET : : Icons : : QETLogo , tr ( " \300 &propos de QElectroTech " ) , this ) ;
about_qt = new QAction ( QET : : Icons : : QtLogo , tr ( " \300 propos de &Qt " ) , this ) ;
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 " ) ) ) ;
2009-08-15 15:20:53 +00:00
# ifndef Q_WS_MAC
2007-10-03 23:09:05 +00:00
delete_selection - > setShortcut ( QKeySequence ( tr ( " Suppr " ) ) ) ;
2009-08-15 15:20:53 +00:00
# else
delete_selection - > setShortcut ( QKeySequence ( tr ( " Backspace " ) ) ) ;
# endif
2007-09-29 12:54:01 +00:00
rotate_selection - > setShortcut ( QKeySequence ( tr ( " Ctrl+R " ) ) ) ;
2009-05-17 02:13:40 +00:00
selection_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
2009-04-03 19:30:25 +00:00
prj_add_diagram - > setShortcut ( QKeySequence ( tr ( " Ctrl+T " ) ) ) ;
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 " ) ) ) ;
2009-04-03 19:30:25 +00:00
fullscreen - > 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
2009-04-03 19:30:25 +00:00
new_file - > setStatusTip ( tr ( " Cr \351 e un nouveau sch \351 ma " , " status bar tip " ) ) ;
open_file - > setStatusTip ( tr ( " Ouvre un sch \351 ma existant " , " status bar tip " ) ) ;
close_file - > setStatusTip ( tr ( " Ferme le sch \351 ma courant " , " status bar tip " ) ) ;
save_file - > setStatusTip ( tr ( " Enregistre le sch \351 ma courant " , " status bar tip " ) ) ;
save_file_sous - > setStatusTip ( tr ( " Enregistre le sch \351 ma courant avec un autre nom de fichier " , " status bar tip " ) ) ;
save_all - > setStatusTip ( tr ( " Enregistre tous les sch \351 mas du projet courant " , " status bar tip " ) ) ;
import_diagram - > setStatusTip ( tr ( " Importe un sch \351 ma dans le sch \351 ma courant " , " status bar tip " ) ) ;
export_diagram - > setStatusTip ( tr ( " Exporte le sch \351 ma courant dans un autre format " , " status bar tip " ) ) ;
print - > setStatusTip ( tr ( " Imprime le sch \351 ma courant " , " status bar tip " ) ) ;
quit_editor - > setStatusTip ( tr ( " Ferme l'application QElectroTech " , " status bar tip " ) ) ;
undo - > setStatusTip ( tr ( " Annule l'action pr \351 c \351 dente " , " status bar tip " ) ) ;
redo - > setStatusTip ( tr ( " Restaure l'action annul \351 e " , " status bar tip " ) ) ;
cut - > setStatusTip ( tr ( " Transf \350 re les \351 l \351 ments s \351 lectionn \351 s dans le presse-papier " , " status bar tip " ) ) ;
copy - > setStatusTip ( tr ( " Copie les \351 l \351 ments s \351 lectionn \351 s dans le presse-papier " , " status bar tip " ) ) ;
paste - > setStatusTip ( tr ( " Place les \351 l \351 ments du presse-papier sur le sch \351 ma " , " status bar tip " ) ) ;
select_all - > setStatusTip ( tr ( " S \351 lectionne tous les \351 l \351 ments du sch \351 ma " , " status bar tip " ) ) ;
select_nothing - > setStatusTip ( tr ( " D \351 s \351 lectionne tous les \351 l \351 ments du sch \351 ma " , " status bar tip " ) ) ;
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 " , " status bar tip " ) ) ;
delete_selection - > setStatusTip ( tr ( " Enl \350 ve les \351 l \351 ments s \351 lectionn \351 s du sch \351 ma " , " status bar tip " ) ) ;
rotate_selection - > setStatusTip ( tr ( " Pivote les \351 l \351 ments s \351 lectionn \351 s " , " status bar tip " ) ) ;
2009-05-17 02:13:40 +00:00
selection_prop - > setStatusTip ( tr ( " \311 dite les propri \351 t \351 s des objets s \351 lectionn \351 " , " status bar tip " ) ) ;
2009-04-03 19:30:25 +00:00
conductor_reset - > setStatusTip ( tr ( " Recalcule les chemins des conducteurs sans tenir compte des modifications " , " status bar tip " ) ) ;
conductor_default - > setStatusTip ( tr ( " Sp \351 cifie les propri \351 t \351 s par d \351 faut des conducteurs " , " status bar tip " ) ) ;
infos_diagram - > setStatusTip ( tr ( " \311 dite les informations affich \351 es par le cartouche " , " status bar tip " ) ) ;
add_column - > setStatusTip ( tr ( " Ajoute une colonne au sch \351 ma " , " status bar tip " ) ) ;
remove_column - > setStatusTip ( tr ( " Enl \350 ve une colonne au sch \351 ma " , " status bar tip " ) ) ;
add_row - > setStatusTip ( tr ( " Agrandit le sch \351 ma en hauteur " , " status bar tip " ) ) ;
remove_row - > setStatusTip ( tr ( " R \351 tr \351 cit le sch \351 ma en hauteur " , " status bar tip " ) ) ;
zoom_in - > setStatusTip ( tr ( " Agrandit le sch \351 ma " , " status bar tip " ) ) ;
zoom_out - > setStatusTip ( tr ( " R \351 tr \351 cit le sch \351 ma " , " status bar tip " ) ) ;
zoom_fit - > setStatusTip ( tr ( " Adapte la taille du sch \351 ma afin qu'il soit enti \350 rement visible " , " status bar tip " ) ) ;
zoom_reset - > setStatusTip ( tr ( " Restaure le zoom par d \351 faut " , " status bar tip " ) ) ;
windowed_view_mode - > setStatusTip ( tr ( " Pr \351 sente les diff \351 rents projets ouverts dans des sous-fen \352 tres " , " status bar tip " ) ) ;
tabbed_view_mode - > setStatusTip ( tr ( " Pr \351 sente les diff \351 rents projets ouverts des onglets " , " status bar tip " ) ) ;
mode_selection - > setStatusTip ( tr ( " Permet de s \351 lectionner les \351 l \351 ments " , " status bar tip " ) ) ;
mode_visualise - > setStatusTip ( tr ( " Permet de visualiser le sch \351 ma sans pouvoir le modifier " , " status bar tip " ) ) ;
configure - > setStatusTip ( tr ( " Permet de r \351 gler diff \351 rents param \350 tres de QElectroTech " , " status bar tip " ) ) ;
tile_window - > setStatusTip ( tr ( " Dispose les fen \352 tres en mosa \357 que " , " status bar tip " ) ) ;
cascade_window - > setStatusTip ( tr ( " Dispose les fen \352 tres en cascade " , " status bar tip " ) ) ;
2009-04-06 03:56:56 +00:00
next_window - > setStatusTip ( tr ( " Active le projet suivant " , " status bar tip " ) ) ;
prev_window - > setStatusTip ( tr ( " Active le projet pr \351 c \351 dent " , " status bar tip " ) ) ;
2009-04-03 19:30:25 +00:00
about_qet - > setStatusTip ( tr ( " Affiche des informations sur QElectroTech " , " status bar tip " ) ) ;
about_qt - > setStatusTip ( tr ( " Affiche des informations sur la biblioth \350 que Qt " , " status bar tip " ) ) ;
2006-11-11 13:56:40 +00:00
2006-10-27 15:47:22 +00:00
// traitements speciaux
2009-04-03 19:30:25 +00:00
add_text - > setCheckable ( true ) ;
windowed_view_mode - > setCheckable ( true ) ;
tabbed_view_mode - > setCheckable ( true ) ;
mode_selection - > setCheckable ( true ) ;
mode_visualise - > setCheckable ( true ) ;
mode_selection - > setChecked ( true ) ;
2006-10-27 15:47:22 +00:00
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 ) ;
2009-04-03 19:30:25 +00:00
grp_view_mode = new QActionGroup ( this ) ;
grp_view_mode - > addAction ( windowed_view_mode ) ;
grp_view_mode - > addAction ( tabbed_view_mode ) ;
grp_view_mode - > setExclusive ( true ) ;
2009-06-19 19:31:48 +00:00
QETApp * qet_app = QETApp : : instance ( ) ;
2006-10-27 15:47:22 +00:00
// connexion a des slots
2009-04-03 19:30:25 +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 , SIGNAL ( triggered ( ) ) , this , SLOT ( toggleFullScreen ( ) ) ) ;
2009-06-19 19:31:48 +00:00
connect ( configure , SIGNAL ( triggered ( ) ) , qet_app , SLOT ( configureQET ( ) ) ) ;
2009-04-03 19:30:25 +00:00
connect ( windowed_view_mode , SIGNAL ( triggered ( ) ) , this , SLOT ( setWindowedMode ( ) ) ) ;
connect ( tabbed_view_mode , SIGNAL ( triggered ( ) ) , this , SLOT ( setTabbedMode ( ) ) ) ;
connect ( mode_selection , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_setSelectionMode ( ) ) ) ;
connect ( mode_visualise , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_setVisualisationMode ( ) ) ) ;
2009-06-19 19:31:48 +00:00
connect ( about_qet , SIGNAL ( triggered ( ) ) , qet_app , SLOT ( aboutQET ( ) ) ) ;
connect ( about_qt , SIGNAL ( triggered ( ) ) , qet_app , SLOT ( aboutQt ( ) ) ) ;
2009-04-03 19:30:25 +00:00
connect ( prj_edit_prop , SIGNAL ( triggered ( ) ) , this , SLOT ( editCurrentProjectProperties ( ) ) ) ;
connect ( prj_add_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( addDiagramToProject ( ) ) ) ;
connect ( prj_del_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( removeDiagramFromProject ( ) ) ) ;
connect ( prj_clean , SIGNAL ( triggered ( ) ) , this , SLOT ( cleanCurrentProject ( ) ) ) ;
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 ( ) ) ) ;
connect ( zoom_reset , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_zoomReset ( ) ) ) ;
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 ( save_all , SIGNAL ( triggered ( ) ) , this , SLOT ( saveAll ( ) ) ) ;
connect ( new_file , SIGNAL ( triggered ( ) ) , this , SLOT ( newProject ( ) ) ) ;
connect ( open_file , SIGNAL ( triggered ( ) ) , this , SLOT ( openProject ( ) ) ) ;
connect ( close_file , SIGNAL ( triggered ( ) ) , this , SLOT ( closeCurrentProject ( ) ) ) ;
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 ( tileSubWindows ( ) ) ) ;
connect ( cascade_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( cascadeSubWindows ( ) ) ) ;
connect ( next_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( activateNextSubWindow ( ) ) ) ;
connect ( prev_window , SIGNAL ( triggered ( ) ) , & workspace , SLOT ( activatePreviousSubWindow ( ) ) ) ;
2009-05-17 02:13:40 +00:00
connect ( selection_prop , SIGNAL ( triggered ( ) ) , this , SLOT ( editSelectionProperties ( ) ) ) ;
2009-04-03 19:30:25 +00:00
connect ( conductor_reset , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_resetConductors ( ) ) ) ;
connect ( conductor_default , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_editDefaultConductors ( ) ) ) ;
connect ( infos_diagram , SIGNAL ( triggered ( ) ) , this , SLOT ( editCurrentDiagramProperties ( ) ) ) ;
connect ( add_text , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_addText ( ) ) ) ;
connect ( add_column , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_addColumn ( ) ) ) ;
connect ( remove_column , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_removeColumn ( ) ) ) ;
connect ( add_row , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_addRow ( ) ) ) ;
connect ( remove_row , SIGNAL ( triggered ( ) ) , this , SLOT ( slot_removeRow ( ) ) ) ;
}
/**
Gere les evenements du l ' editeur de schema
Reimplemente ici pour :
* eviter un conflit sur le raccourci clavier " Ctrl+W " ( QKeySequence : : Close )
* mettre a jour l ' action permettant d ' entrer en mode plein ecran ou d ' en sortir
@ param e Evenement
*/
bool QETDiagramEditor : : event ( QEvent * e ) {
if ( e - > type ( ) = = QEvent : : ShortcutOverride ) {
QKeyEvent * shortcut_event = static_cast < QKeyEvent * > ( e ) ;
if ( shortcut_event & & shortcut_event - > matches ( QKeySequence : : Close ) ) {
close_file - > trigger ( ) ;
e - > accept ( ) ;
return ( true ) ;
}
} else if ( e - > type ( ) = = QEvent : : WindowStateChange ) {
slot_updateFullScreenAction ( ) ;
}
return ( QMainWindow : : event ( e ) ) ;
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 " ) ) ;
2009-04-03 19:30:25 +00:00
QMenu * menu_project = menuBar ( ) - > addMenu ( tr ( " &Projet " ) ) ;
2006-10-27 15:47:22 +00:00
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 ) ;
2009-04-03 19:30:25 +00:00
menu_project - > setTearOffEnabled ( true ) ;
2006-10-27 15:47:22 +00:00
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 ) ;
2008-07-30 11:51:27 +00:00
menu_fichier - > addMenu ( QETApp : : projectsRecentFiles ( ) - > menu ( ) ) ;
connect ( QETApp : : projectsRecentFiles ( ) , SIGNAL ( fileOpeningRequested ( const QString & ) ) , this , SLOT ( openRecentFile ( const QString & ) ) ) ;
2007-09-29 12:54:01 +00:00
menu_fichier - > addAction ( save_file ) ;
menu_fichier - > addAction ( save_file_sous ) ;
2009-04-03 19:30:25 +00:00
menu_fichier - > addAction ( save_all ) ;
2007-09-29 12:54:01 +00:00
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 ) ;
2009-05-17 02:13:40 +00:00
menu_edition - > addAction ( selection_prop ) ;
2006-11-19 18:40:03 +00:00
menu_edition - > addSeparator ( ) ;
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 ) ;
2008-08-10 15:07:59 +00:00
menu_edition - > addAction ( add_row ) ;
menu_edition - > addAction ( remove_row ) ;
2006-10-27 15:47:22 +00:00
2009-04-03 19:30:25 +00:00
// menu Projet
menu_project - > addAction ( prj_edit_prop ) ;
menu_project - > addAction ( prj_add_diagram ) ;
menu_project - > addAction ( prj_del_diagram ) ;
menu_project - > addAction ( prj_clean ) ;
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 " ) ) ;
2009-05-01 14:41:33 +00:00
display_toolbars - > setIcon ( QET : : Icons : : ConfigureToolbars ) ;
2007-11-09 15:16:54 +00:00
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
2009-04-03 19:30:25 +00:00
QMenu * projects_view_mode = menu_affichage - > addMenu ( tr ( " Afficher les projets " ) ) ;
projects_view_mode - > setTearOffEnabled ( true ) ;
projects_view_mode - > addAction ( windowed_view_mode ) ;
projects_view_mode - > addAction ( tabbed_view_mode ) ;
menu_affichage - > addSeparator ( ) ;
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 ) ;
2009-04-03 19:30:25 +00:00
menu_config - > addAction ( fullscreen ) ;
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 ) ;
2009-04-03 19:30:25 +00:00
main_bar - > addAction ( save_all ) ;
2007-10-13 17:04:52 +00:00
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 ) ;
2009-05-17 02:13:40 +00:00
main_bar - > addAction ( selection_prop ) ;
2007-10-13 17:04:52 +00:00
// 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_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 ( ) {
2009-04-03 19:30:25 +00:00
ProjectView * current_project = currentProject ( ) ;
if ( ! current_project ) return ;
current_project - > printProject ( ) ;
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 ( ) {
2009-04-03 19:30:25 +00:00
ProjectView * current_project = currentProject ( ) ;
if ( ! current_project ) return ;
current_project - > exportProject ( ) ;
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 ( ) {
2009-04-03 19:30:25 +00:00
if ( ProjectView * project_view = currentProject ( ) ) {
bool save_file = project_view - > save ( ) ;
if ( save_file ) {
QETApp : : projectsRecentFiles ( ) - > fileWasOpened ( project_view - > project ( ) - > filePath ( ) ) ;
}
return ( save_file ) ;
}
return ( false ) ;
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 ( ) {
2009-04-03 19:30:25 +00:00
if ( ProjectView * project_view = currentProject ( ) ) {
bool save_file = project_view - > saveAs ( ) ;
2008-08-23 18:17:00 +00:00
if ( save_file ) {
2009-04-03 19:30:25 +00:00
QETApp : : projectsRecentFiles ( ) - > fileWasOpened ( project_view - > project ( ) - > filePath ( ) ) ;
2008-08-23 18:17:00 +00:00
}
return ( save_file ) ;
}
2009-04-03 19:30:25 +00:00
return ( false ) ;
2006-10-27 15:47:22 +00:00
}
/**
2009-04-03 19:30:25 +00:00
Methode enregistrant tous les schemas .
@ return true si l ' enregistrement a reussi , false sinon
2006-10-27 15:47:22 +00:00
*/
2009-04-03 19:30:25 +00:00
bool QETDiagramEditor : : saveAll ( ) {
if ( ProjectView * project_view = currentProject ( ) ) {
bool save_file = project_view - > saveAll ( ) ;
if ( save_file ) {
QETApp : : projectsRecentFiles ( ) - > fileWasOpened ( project_view - > project ( ) - > filePath ( ) ) ;
}
return ( save_file ) ;
}
return ( false ) ;
}
/**
Cree un nouveau projet vide
*/
bool QETDiagramEditor : : newProject ( ) {
// cree un nouveau projet sans schema
QETProject * new_project = new QETProject ( 0 ) ;
// transmet les proprietes par defaut des nouveaux schemas
new_project - > setDefaultBorderProperties ( defaultBorderProperties ( ) ) ;
new_project - > setDefaultConductorProperties ( defaultConductorProperties ( ) ) ;
new_project - > setDefaultInsetProperties ( defaultInsetProperties ( ) ) ;
// ajoute un schema au projet
new_project - > addNewDiagram ( ) ;
return ( addProject ( new_project ) ) ;
2006-10-27 15:47:22 +00:00
}
2008-07-30 11:51:27 +00:00
/**
Slot utilise pour ouvrir un fichier recent .
Transfere filepath au slot openAndAddDiagram seulement si cet editeur est
actif
@ param filepath Fichier a ouvrir
@ see openAndAddDiagram
*/
bool QETDiagramEditor : : openRecentFile ( const QString & filepath ) {
if ( qApp - > activeWindow ( ) ! = this ) return ( false ) ;
2009-04-03 19:30:25 +00:00
return ( openAndAddProject ( filepath ) ) ;
2008-07-30 11:51:27 +00:00
}
2006-10-27 15:47:22 +00:00
/**
Cette fonction demande un nom de fichier a ouvrir a l ' utilisateur
@ return true si l ' ouverture a reussi , false sinon
*/
2009-04-03 19:30:25 +00:00
bool QETDiagramEditor : : openProject ( ) {
// demande un chemin de fichier a ouvrir a l'utilisateur
QString filepath = QFileDialog : : getOpenFileName (
2006-10-27 15:47:22 +00:00
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
) ;
2009-04-03 19:30:25 +00:00
if ( filepath . isEmpty ( ) ) return ( false ) ;
// retient le dossier contenant le dernier projet ouvert
open_dialog_dir = QDir ( filepath ) ;
2008-07-17 19:25:57 +00:00
2009-04-03 19:30:25 +00:00
// ouvre le fichier
return ( openAndAddProject ( filepath ) ) ;
}
/**
Ferme un projet
@ param project_view Projet a fermer
@ return true si la fermeture du projet a reussi , false sinon
Note : cette methode renvoie true si project est nul
*/
bool QETDiagramEditor : : closeProject ( ProjectView * project_view ) {
if ( project_view ) {
activateProject ( project_view ) ;
if ( QMdiSubWindow * sub_window = subWindowForWidget ( project_view ) ) {
return ( sub_window - > close ( ) ) ;
}
}
return ( true ) ;
}
/**
Ferme un projet
@ param project projet a fermer
@ return true si la fermeture du fichier a reussi , false sinon
Note : cette methode renvoie true si project est nul
*/
bool QETDiagramEditor : : closeProject ( QETProject * project ) {
if ( ProjectView * project_view = findProject ( project ) ) {
return ( closeProject ( project_view ) ) ;
}
return ( true ) ;
2008-07-17 19:25:57 +00:00
}
/**
2009-04-03 19:30:25 +00:00
Ferme le projet courant
@ return true si la fermeture du fichier a reussi , false sinon
Note : cette methode renvoie true s ' il n ' y a pas de projet courant
*/
bool QETDiagramEditor : : closeCurrentProject ( ) {
if ( ProjectView * project_view = currentProject ( ) ) {
return ( closeProject ( project_view ) ) ;
}
return ( true ) ;
}
/**
Ouvre un projet depuis un fichier et l ' ajoute a cet editeur
@ param filepath Chemin du projet a ouvrir
@ param interactive true pour afficher des messages a l ' utilisateur , false sinon
2008-07-17 19:25:57 +00:00
@ return true si l ' ouverture a reussi , false sinon
*/
2009-04-03 19:30:25 +00:00
bool QETDiagramEditor : : openAndAddProject ( const QString & filepath , bool interactive ) {
if ( filepath . isEmpty ( ) ) return ( false ) ;
2006-10-27 15:47:22 +00:00
2009-04-03 19:30:25 +00:00
QFileInfo filepath_info ( filepath ) ;
// verifie que le projet n'est pas deja ouvert dans un editeur
QString my_filepath = filepath_info . canonicalFilePath ( ) ;
if ( QETDiagramEditor * diagram_editor = QETApp : : diagramEditorForFile ( filepath ) ) {
2008-07-20 11:37:31 +00:00
if ( diagram_editor = = this ) {
2009-04-03 19:30:25 +00:00
if ( ProjectView * project_view = viewForFile ( filepath ) ) {
activateWidget ( project_view ) ;
2008-07-20 11:37:31 +00:00
show ( ) ;
activateWindow ( ) ;
}
2006-10-27 15:47:22 +00:00
return ( false ) ;
2008-07-20 11:37:31 +00:00
} else {
// demande a l'autre editeur d'afficher le fichier
2009-04-03 19:30:25 +00:00
return ( diagram_editor - > openAndAddProject ( filepath ) ) ;
2006-10-27 15:47:22 +00:00
}
}
2009-04-03 19:30:25 +00:00
// verifie que le fichier est accessible en lecture
if ( ! filepath_info . isReadable ( ) ) {
if ( interactive ) {
2009-08-09 16:02:14 +00:00
QET : : MessageBox : : critical (
2009-04-03 19:30:25 +00:00
this ,
tr ( " Impossible d'ouvrir le fichier " ) ,
tr ( " Il semblerait que le fichier que vous essayez d'ouvrir ne "
" soit pas accessible en lecture. Il est donc impossible de "
" l'ouvrir. Veuillez v \351 rifier les permissions du fichier. " )
) ;
}
return ( false ) ;
}
// gere le fait que le fichier puisse etre en lecture seule
if ( ! filepath_info . isWritable ( ) ) {
if ( interactive ) {
2009-08-09 16:02:14 +00:00
QET : : MessageBox : : warning (
2009-04-03 19:30:25 +00:00
this ,
tr ( " Ouverture du projet en lecture seule " ) ,
tr ( " Il semblerait que le projet que vous essayez d'ouvrir ne "
" soit pas accessible en \351 criture. Il sera donc ouvert en "
" lecture seule. " )
) ;
}
}
// cree le projet a partir du fichier
QETProject * project = new QETProject ( filepath ) ;
if ( project - > state ( ) ! = QETProject : : Ok ) {
if ( interactive ) {
2009-08-09 16:02:14 +00:00
QET : : MessageBox : : warning (
2009-04-03 19:30:25 +00:00
this ,
tr ( " \311 chec de l'ouverture du projet " , " message box title " ) ,
QString (
tr (
" Il semblerait que le fichier %1 ne soit pas un fichier "
" projet QElectroTech. Il ne peut donc \352 tre ouvert. " ,
" message box content "
)
) . arg ( filepath )
) ;
2006-10-27 15:47:22 +00:00
}
return ( false ) ;
}
2009-04-03 19:30:25 +00:00
// a ce stade, l'ouverture du fichier a reussi
// on l'ajoute a la liste des fichiers recents
QETApp : : projectsRecentFiles ( ) - > fileWasOpened ( filepath ) ;
// ... et on l'ajoute dans l'application
return ( addProject ( project ) ) ;
2006-10-27 15:47:22 +00:00
}
/**
2009-04-03 19:30:25 +00:00
Ajoute un projet
@ param project projet a ajouter
2006-10-27 15:47:22 +00:00
*/
2009-04-03 19:30:25 +00:00
bool QETDiagramEditor : : addProject ( QETProject * project ) {
// enregistre le projet
QETApp : : registerProject ( project ) ;
// cree un ProjectView pour visualiser le projet
ProjectView * project_view = new ProjectView ( project ) ;
addProjectView ( project_view ) ;
// met a jour le panel d'elements
pa - > elementsPanel ( ) . projectWasOpened ( project ) ;
return ( true ) ;
}
/**
@ return la liste des projets ouverts dans cette fenetre
*/
QList < ProjectView * > QETDiagramEditor : : openedProjects ( ) const {
QList < ProjectView * > result ;
QList < QMdiSubWindow * > window_list ( workspace . subWindowList ( ) ) ;
foreach ( QMdiSubWindow * window , window_list ) {
if ( ProjectView * project_view = qobject_cast < ProjectView * > ( window - > widget ( ) ) ) {
result < < project_view ;
}
}
return ( result ) ;
}
/**
@ return Le projet actuellement edite ( = qui a le focus dans l ' interface
MDI ) ou 0 s ' il n ' y en a pas
*/
ProjectView * QETDiagramEditor : : currentProject ( ) const {
QMdiSubWindow * current_window = workspace . activeSubWindow ( ) ;
if ( ! current_window ) return ( 0 ) ;
QWidget * current_widget = current_window - > widget ( ) ;
if ( ! current_widget ) return ( 0 ) ;
if ( ProjectView * project_view = qobject_cast < ProjectView * > ( current_widget ) ) {
return ( project_view ) ;
}
return ( 0 ) ;
2006-10-27 15:47:22 +00:00
}
/**
2009-04-03 19:30:25 +00:00
@ return Le schema actuellement edite ( = l ' onglet ouvert dans le projet
courant ) ou 0 s ' il n ' y en a pas
2006-10-27 15:47:22 +00:00
*/
2007-09-25 23:24:36 +00:00
DiagramView * QETDiagramEditor : : currentDiagram ( ) const {
2009-04-03 19:30:25 +00:00
if ( ProjectView * project_view = currentProject ( ) ) {
return ( project_view - > currentDiagram ( ) ) ;
}
return ( 0 ) ;
}
/**
Cette methode permet de retrouver le projet contenant un schema donne .
@ param diagram_view Schema dont il faut retrouver
@ return la vue sur le projet contenant ce schema ou 0 s ' il n ' y en a pas
*/
ProjectView * QETDiagramEditor : : findProject ( DiagramView * diagram_view ) const {
foreach ( ProjectView * project_view , openedProjects ( ) ) {
if ( project_view - > diagrams ( ) . contains ( diagram_view ) ) {
return ( project_view ) ;
}
}
return ( 0 ) ;
}
/**
Cette methode permet de retrouver le projet contenant un schema donne .
@ param diagram Schema dont il faut retrouver
@ return la vue sur le projet contenant ce schema ou 0 s ' il n ' y en a pas
*/
ProjectView * QETDiagramEditor : : findProject ( Diagram * diagram ) const {
foreach ( ProjectView * project_view , openedProjects ( ) ) {
foreach ( DiagramView * diagram_view , project_view - > diagrams ( ) ) {
if ( diagram_view - > diagram ( ) = = diagram ) {
return ( project_view ) ;
}
}
}
return ( 0 ) ;
}
/**
@ param project Projet dont il faut trouver la vue
@ return la vue du projet passe en parametre
*/
ProjectView * QETDiagramEditor : : findProject ( QETProject * project ) const {
foreach ( ProjectView * opened_project , openedProjects ( ) ) {
if ( opened_project - > project ( ) = = project ) {
return ( opened_project ) ;
}
}
return ( 0 ) ;
}
/**
@ param filepath Chemin de fichier d ' un projet
@ return le ProjectView correspondant au chemin passe en parametre , ou 0 si
celui - ci n ' a pas ete trouve
*/
ProjectView * QETDiagramEditor : : findProject ( const QString & filepath ) const {
foreach ( ProjectView * opened_project , openedProjects ( ) ) {
if ( QETProject * project = opened_project - > project ( ) ) {
if ( project - > filePath ( ) = = filepath ) {
return ( opened_project ) ;
}
}
}
return ( 0 ) ;
}
/**
@ param widget Widget a rechercher dans la zone MDI
@ return La sous - fenetre accueillant le widget passe en parametre , ou 0 si
celui - ci n ' a pas ete trouve .
*/
QMdiSubWindow * QETDiagramEditor : : subWindowForWidget ( QWidget * widget ) const {
foreach ( QMdiSubWindow * sub_window , workspace . subWindowList ( ) ) {
if ( sub_window - > widget ( ) = = widget ) {
return ( sub_window ) ;
}
}
return ( 0 ) ;
}
/**
@ param widget Widget a activer
*/
void QETDiagramEditor : : activateWidget ( QWidget * widget ) {
QMdiSubWindow * sub_window = subWindowForWidget ( widget ) ;
if ( sub_window ) {
workspace . setActiveSubWindow ( sub_window ) ;
}
}
/**
@ param project_view Projet concerne
@ param from Index de l ' onglet avant le deplacement
@ param to Index de l ' onglet apres le deplacement
*/
void QETDiagramEditor : : diagramOrderChanged ( ProjectView * project_view , int from , int to ) {
if ( ! project_view ) return ;
QETProject * project = project_view - > project ( ) ;
if ( ! project ) return ;
pa - > elementsPanel ( ) . diagramOrderChanged ( project , from , to ) ;
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 ( ) {
2009-04-03 19:30:25 +00:00
DiagramView * dv = currentDiagram ( ) ;
ProjectView * pv = currentProject ( ) ;
bool opened_project = pv ;
bool opened_diagram = dv ;
bool editable_project = ( pv & & ! pv - > project ( ) - > isReadOnly ( ) ) ;
bool editable_diagram = ( dv & & ! dv - > diagram ( ) - > isReadOnly ( ) ) ;
2006-10-27 15:47:22 +00:00
// actions ayant juste besoin d'un document ouvert
2009-04-03 19:30:25 +00:00
close_file - > setEnabled ( opened_project ) ;
save_file - > setEnabled ( opened_project & & editable_project ) ;
save_file_sous - > setEnabled ( opened_project ) ;
save_all - > setEnabled ( opened_diagram & & editable_diagram ) ;
prj_edit_prop - > setEnabled ( editable_project ) ;
prj_add_diagram - > setEnabled ( editable_project ) ;
prj_del_diagram - > setEnabled ( editable_project ) ;
prj_clean - > setEnabled ( editable_project ) ;
import_diagram - > setEnabled ( editable_project ) ;
export_diagram - > setEnabled ( opened_diagram ) ;
print - > setEnabled ( opened_diagram ) ;
select_all - > setEnabled ( opened_diagram ) ;
select_nothing - > setEnabled ( opened_diagram ) ;
select_invert - > setEnabled ( opened_diagram ) ;
zoom_in - > setEnabled ( opened_diagram ) ;
zoom_out - > setEnabled ( opened_diagram ) ;
zoom_fit - > setEnabled ( opened_diagram ) ;
zoom_reset - > setEnabled ( opened_diagram ) ;
conductor_default - > setEnabled ( editable_diagram ) ;
infos_diagram - > setEnabled ( editable_diagram ) ;
add_text - > setEnabled ( editable_diagram ) ;
add_column - > setEnabled ( editable_diagram ) ;
remove_column - > setEnabled ( editable_diagram ) ;
add_row - > setEnabled ( editable_diagram ) ;
remove_row - > setEnabled ( editable_diagram ) ;
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
2009-04-03 19:30:25 +00:00
if ( dv ) {
if ( can_update_actions ) {
undo_group . setActiveStack ( & ( dv - > diagram ( ) - > undoStack ( ) ) ) ;
2009-04-26 14:44:58 +00:00
undo - > setEnabled ( undo_group . canUndo ( ) ) ;
redo - > setEnabled ( undo_group . canRedo ( ) ) ;
2009-04-03 19:30:25 +00:00
}
} 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
2009-04-03 19:30:25 +00:00
slot_updateFullScreenAction ( ) ;
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 ( ) ;
2009-04-03 19:30:25 +00:00
bool editable_diagram = ( dv & & ! dv - > diagram ( ) - > isReadOnly ( ) ) ;
2007-10-28 00:16:32 +00:00
// nombre de conducteurs selectionnes
2009-04-03 19:30:25 +00:00
int selected_conductors_count = dv ? dv - > diagram ( ) - > selectedConductors ( ) . count ( ) : 0 ;
conductor_reset - > setEnabled ( editable_diagram & & selected_conductors_count ) ;
2007-10-28 00:16:32 +00:00
2006-10-27 15:47:22 +00:00
// actions ayant aussi besoin d'elements selectionnes
2009-04-03 19:30:25 +00:00
bool selected_elements = dv ? ( dv - > hasSelectedItems ( ) ) : false ;
cut - > setEnabled ( editable_diagram & & selected_elements ) ;
2007-09-29 12:54:01 +00:00
copy - > setEnabled ( selected_elements ) ;
2009-04-03 19:30:25 +00:00
delete_selection - > setEnabled ( editable_diagram & & selected_elements ) ;
2009-06-16 22:37:15 +00:00
rotate_selection - > setEnabled ( editable_diagram & & selected_elements & & dv - > diagram ( ) - > canRotateSelection ( ) ) ;
2009-05-17 02:13:40 +00:00
selection_prop - > setEnabled ( editable_diagram & & selected_elements ) ;
2009-04-03 19:30:25 +00:00
}
/**
Gere l ' action permettant de passer en plein ecran ou d ' en sortir
*/
void QETDiagramEditor : : slot_updateFullScreenAction ( ) {
if ( windowState ( ) & Qt : : WindowFullScreen ) {
fullscreen - > setText ( tr ( " Sortir du &mode plein \351 cran " ) ) ;
2009-05-01 14:41:33 +00:00
fullscreen - > setIcon ( QET : : Icons : : FullScreenExit ) ;
2009-04-03 19:30:25 +00:00
fullscreen - > setStatusTip ( tr ( " Affiche QElectroTech en mode fen \352 tr \351 " , " status bar tip " ) ) ;
} else {
fullscreen - > setText ( tr ( " Passer en &mode plein \351 cran " ) ) ;
2009-05-01 14:41:33 +00:00
fullscreen - > setIcon ( QET : : Icons : : FullScreenEnter ) ;
2009-04-03 19:30:25 +00:00
fullscreen - > setStatusTip ( tr ( " Affiche QElectroTech en mode plein \351 cran " , " status bar tip " ) ) ;
}
2007-10-28 00:16:32 +00:00
}
/**
2009-04-03 19:30:25 +00:00
Gere les actions relatives au mode du schema
2007-10-28 00:16:32 +00:00
*/
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 ( ) {
2009-04-03 19:30:25 +00:00
DiagramView * dv = currentDiagram ( ) ;
bool editable_diagram = ( dv & & ! dv - > diagram ( ) - > isReadOnly ( ) ) ;
2007-11-03 20:20:34 +00:00
// pour coller, il faut un schema ouvert et un schema dans le presse-papier
2009-04-03 19:30:25 +00:00
paste - > setEnabled ( editable_diagram & & Diagram : : clipboardMayContainDiagram ( ) ) ;
2006-10-27 15:47:22 +00:00
}
2006-11-11 13:56:40 +00:00
/**
2009-04-03 19:30:25 +00:00
Ajoute un projet dans l ' espace de travail
@ param project_view Le projet a ajouter dans l ' espace de travail
2006-11-11 13:56:40 +00:00
*/
2009-04-03 19:30:25 +00:00
void QETDiagramEditor : : addProjectView ( ProjectView * project_view ) {
if ( ! project_view ) return ;
2007-01-29 00:41:12 +00:00
// on maximise la nouvelle fenetre si la fenetre en cours est inexistante ou bien maximisee
2009-04-03 19:30:25 +00:00
QWidget * current_window = workspace . activeSubWindow ( ) ;
bool maximise = ( ( ! current_window ) | | ( current_window - > windowState ( ) & Qt : : WindowMaximized ) ) ;
2007-01-29 00:41:12 +00:00
// ajoute la fenetre
2009-04-03 19:30:25 +00:00
QMdiSubWindow * sub_window = workspace . addSubWindow ( project_view ) ;
sub_window - > setWindowIcon ( project_view - > windowIcon ( ) ) ;
// lie les schemas du projet a l'editeur :
// quand on change de schemas a l'interieur d'un projet, on met a jour les menus
connect ( project_view , SIGNAL ( diagramActivated ( DiagramView * ) ) , this , SLOT ( slot_updateWindowsMenu ( ) ) ) ;
connect ( project_view , SIGNAL ( diagramActivated ( DiagramView * ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
foreach ( DiagramView * dv , project_view - > diagrams ( ) ) {
diagramWasAdded ( dv ) ;
}
2007-01-29 00:41:12 +00:00
2009-04-03 19:30:25 +00:00
// gere la fermeture du projet
connect ( project_view , SIGNAL ( projectClosed ( ProjectView * ) ) , this , SLOT ( projectWasClosed ( ProjectView * ) ) ) ;
// gere l'ajout et le retrait de schema du projet
connect ( project_view , SIGNAL ( diagramAdded ( DiagramView * ) ) , this , SLOT ( diagramWasAdded ( DiagramView * ) ) ) ;
connect ( project_view , SIGNAL ( diagramAdded ( DiagramView * ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
connect ( project_view , SIGNAL ( diagramAboutToBeRemoved ( DiagramView * ) ) , this , SLOT ( diagramIsAboutToBeRemoved ( DiagramView * ) ) ) ;
connect ( project_view , SIGNAL ( diagramRemoved ( DiagramView * ) ) , this , SLOT ( diagramWasRemoved ( DiagramView * ) ) ) ;
connect ( project_view , SIGNAL ( diagramRemoved ( DiagramView * ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
if ( QETProject * project = project_view - > project ( ) ) {
connect ( project , SIGNAL ( diagramAdded ( QETProject * , Diagram * ) ) , & ( pa - > elementsPanel ( ) ) , SLOT ( diagramWasAdded ( QETProject * , Diagram * ) ) ) ;
connect ( project , SIGNAL ( diagramRemoved ( QETProject * , Diagram * ) ) , & ( pa - > elementsPanel ( ) ) , SLOT ( diagramWasRemoved ( QETProject * , Diagram * ) ) ) ;
// on met aussi les menus a jour quand un projet passe en lecture seule ou non
connect ( project , SIGNAL ( readOnlyChanged ( QETProject * , bool ) ) , this , SLOT ( slot_updateActions ( ) ) ) ;
2008-07-20 11:37:31 +00:00
}
2009-04-03 19:30:25 +00:00
// gere les changements de l'ordre des schemas dans le projet
connect ( project_view , SIGNAL ( diagramOrderChanged ( ProjectView * , int , int ) ) , this , SLOT ( diagramOrderChanged ( ProjectView * , int , int ) ) ) ;
2009-05-19 19:00:37 +00:00
// gere les demandes consistant a retrouver un element dans le panel
connect ( project_view , SIGNAL ( findElementRequired ( const ElementsLocation & ) ) , this , SLOT ( findElementInPanel ( const ElementsLocation & ) ) ) ;
2009-07-08 09:41:20 +00:00
// gere les demandes pour l'edition d'un element
connect ( project_view , SIGNAL ( editElementRequired ( const ElementsLocation & ) ) , this , SLOT ( editElementInEditor ( const ElementsLocation & ) ) ) ;
2009-04-03 19:30:25 +00:00
// affiche la fenetre
if ( maximise ) project_view - > showMaximized ( ) ;
else project_view - > show ( ) ;
2008-07-20 11:37:31 +00:00
}
/**
@ return la liste des fichiers edites par cet editeur de schemas
*/
QList < QString > QETDiagramEditor : : editedFiles ( ) const {
QList < QString > edited_files_list ;
2009-04-03 19:30:25 +00:00
foreach ( ProjectView * project_view , openedProjects ( ) ) {
QString diagram_file ( project_view - > project ( ) - > filePath ( ) ) ;
2008-07-20 11:37:31 +00:00
if ( ! diagram_file . isEmpty ( ) ) {
edited_files_list < < QFileInfo ( diagram_file ) . canonicalFilePath ( ) ;
}
}
return ( edited_files_list ) ;
}
/**
@ param filepath Un chemin de fichier
Note : si filepath est une chaine vide , cette methode retourne 0.
2009-04-03 19:30:25 +00:00
@ return le ProjectView editant le fichier filepath , ou 0 si ce fichier n ' est
2008-07-20 11:37:31 +00:00
pas edite par cet editeur de schemas .
*/
2009-04-03 19:30:25 +00:00
ProjectView * QETDiagramEditor : : viewForFile ( const QString & filepath ) const {
2008-07-20 11:37:31 +00:00
if ( filepath . isEmpty ( ) ) return ( 0 ) ;
QString searched_can_file_path = QFileInfo ( filepath ) . canonicalFilePath ( ) ;
2009-04-03 19:30:25 +00:00
foreach ( ProjectView * project_view , openedProjects ( ) ) {
QString project_can_file_path = QFileInfo ( project_view - > project ( ) - > filePath ( ) ) . canonicalFilePath ( ) ;
if ( project_can_file_path = = searched_can_file_path ) {
return ( project_view ) ;
2008-07-20 11:37:31 +00:00
}
}
return ( 0 ) ;
}
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 ) ;
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
2009-04-03 19:30:25 +00:00
QList < ProjectView * > windows = openedProjects ( ) ;
2007-09-29 12:54:01 +00:00
2009-04-03 19:30:25 +00:00
tile_window - > setEnabled ( ! windows . isEmpty ( ) & & workspace . viewMode ( ) = = QMdiArea : : SubWindowView ) ;
cascade_window - > setEnabled ( ! windows . isEmpty ( ) & & workspace . viewMode ( ) = = QMdiArea : : SubWindowView ) ;
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 ) ;
2009-04-03 19:30:25 +00:00
foreach ( ProjectView * project_view , windows ) {
QString pv_title = project_view - > windowTitle ( ) ;
QAction * action = windows_menu - > addAction ( pv_title ) ;
2007-11-01 23:56:19 +00:00
windows_actions - > addAction ( action ) ;
2009-04-06 03:56:56 +00:00
action - > setStatusTip ( QString ( tr ( " Active le projet \253 \240 %1 \240 \273 " ) ) . arg ( pv_title ) ) ;
2006-10-27 15:47:22 +00:00
action - > setCheckable ( true ) ;
2009-04-03 19:30:25 +00:00
action - > setChecked ( project_view = = currentProject ( ) ) ;
2006-10-27 15:47:22 +00:00
connect ( action , SIGNAL ( triggered ( ) ) , & windowMapper , SLOT ( map ( ) ) ) ;
2009-04-03 19:30:25 +00:00
windowMapper . setMapping ( action , project_view ) ;
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
*/
2009-04-03 19:30:25 +00:00
void QETDiagramEditor : : editCurrentDiagramProperties ( ) {
if ( ProjectView * project_view = currentProject ( ) ) {
activateProject ( project_view ) ;
project_view - > editCurrentDiagramProperties ( ) ;
}
}
/**
Edite les proprietes du schema diagram
@ param diagram_view schema dont il faut editer les proprietes
*/
void QETDiagramEditor : : editDiagramProperties ( DiagramView * diagram_view ) {
if ( ProjectView * project_view = findProject ( diagram_view ) ) {
activateProject ( project_view ) ;
project_view - > editDiagramProperties ( diagram_view ) ;
}
}
/**
Edite les proprietes du schema diagram
@ param diagram schema dont il faut editer les proprietes
*/
void QETDiagramEditor : : editDiagramProperties ( Diagram * diagram ) {
if ( ProjectView * project_view = findProject ( diagram ) ) {
activateProject ( project_view ) ;
project_view - > editDiagramProperties ( diagram ) ;
2008-08-10 15:07:59 +00:00
}
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 ( ) {
2008-08-10 15:07:59 +00:00
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > 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 ( ) {
2008-08-10 15:07:59 +00:00
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > removeColumn ( ) ;
}
2007-01-28 00:53:17 +00:00
}
2007-02-03 02:00:18 +00:00
/**
Allonge le schema en cours en hauteur
*/
2008-08-10 15:07:59 +00:00
void QETDiagramEditor : : slot_addRow ( ) {
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > addRow ( ) ;
}
2007-02-03 02:00:18 +00:00
}
/**
Retrecit le schema en cours en hauteur
*/
2008-08-10 15:07:59 +00:00
void QETDiagramEditor : : slot_removeRow ( ) {
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > removeRow ( ) ;
}
2007-02-03 02:00:18 +00:00
}
2007-10-03 13:11:47 +00:00
2009-05-17 02:13:40 +00:00
/**
Edite les proprietes des objets selectionnes
*/
void QETDiagramEditor : : editSelectionProperties ( ) {
if ( DiagramView * dv = currentDiagram ( ) ) {
dv - > editSelectionProperties ( ) ;
}
}
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
2009-04-03 19:30:25 +00:00
/**
Affiche les projets dans des fenetres .
*/
void QETDiagramEditor : : setWindowedMode ( ) {
workspace . setViewMode ( QMdiArea : : SubWindowView ) ;
windowed_view_mode - > setChecked ( true ) ;
slot_updateWindowsMenu ( ) ;
}
/**
Affiche les projets dans des onglets .
*/
void QETDiagramEditor : : setTabbedMode ( ) {
workspace . setViewMode ( QMdiArea : : TabbedView ) ;
tabbed_view_mode - > setChecked ( true ) ;
slot_updateWindowsMenu ( ) ;
}
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 ( ) ) ;
2009-04-03 19:30:25 +00:00
// gestion des projets (onglets ou fenetres)
2009-04-05 12:33:20 +00:00
bool tabbed = settings . value ( " diagrameditor/viewmode " , " tabbed " ) = = " tabbed " ;
2009-04-03 19:30:25 +00:00
if ( tabbed ) {
setTabbedMode ( ) ;
} else {
setWindowedMode ( ) ;
}
2007-11-12 15:21:14 +00:00
}
/// 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
2009-04-03 19:30:25 +00:00
/**
Active le schema passe en parametre
@ param diagram Schema a activer
*/
void QETDiagramEditor : : activateDiagram ( Diagram * diagram ) {
if ( QETProject * project = diagram - > project ( ) ) {
if ( ProjectView * project_view = findProject ( project ) ) {
activateWidget ( project_view ) ;
project_view - > showDiagram ( diagram ) ;
}
} else {
/// @todo gerer ce cas
}
}
/**
Active le projet passe en parametre
@ param project Projet a activer
*/
void QETDiagramEditor : : activateProject ( QETProject * project ) {
activateProject ( findProject ( project ) ) ;
}
/**
Active le projet passe en parametre
@ param project_view Projet a activer
*/
void QETDiagramEditor : : activateProject ( ProjectView * project_view ) {
if ( ! project_view ) return ;
activateWidget ( project_view ) ;
}
/**
Gere la fermeture d ' une ProjectView
@ param project_view ProjectView fermee
*/
void QETDiagramEditor : : projectWasClosed ( ProjectView * project_view ) {
QETProject * project = project_view - > project ( ) ;
if ( project ) {
pa - > elementsPanel ( ) . projectWasClosed ( project ) ;
QETApp : : unregisterProject ( project ) ;
}
project_view - > deleteLater ( ) ;
project - > deleteLater ( ) ;
}
/**
Edite les proprietes du projet courant .
*/
void QETDiagramEditor : : editCurrentProjectProperties ( ) {
editProjectProperties ( currentProject ( ) ) ;
}
/**
Edite les proprietes du projet project_view .
@ param project_view Vue sur le projet dont il faut editer les proprietes
*/
void QETDiagramEditor : : editProjectProperties ( ProjectView * project_view ) {
if ( ! project_view ) return ;
activateProject ( project_view ) ;
project_view - > editProjectProperties ( ) ;
}
/**
Edite les proprietes du projet project .
@ param project Projet dont il faut editer les proprietes
*/
void QETDiagramEditor : : editProjectProperties ( QETProject * project ) {
editProjectProperties ( findProject ( project ) ) ;
}
/**
Ajoute un nouveau schema au projet courant
*/
void QETDiagramEditor : : addDiagramToProject ( ) {
if ( ProjectView * current_project = currentProject ( ) ) {
current_project - > addNewDiagram ( ) ;
}
}
/**
Ajoute un nouveau schema a un projet
@ param project Projet auquel il faut ajouter un schema
*/
void QETDiagramEditor : : addDiagramToProject ( QETProject * project ) {
if ( ! project ) return ;
// recupere le ProjectView visualisant ce projet
if ( ProjectView * project_view = findProject ( project ) ) {
// affiche le projet en question
activateProject ( project ) ;
// ajoute un schema au projet
project_view - > addNewDiagram ( ) ;
}
}
/**
Supprime un schema de son projet
@ param diagram Schema a supprimer
*/
void QETDiagramEditor : : removeDiagram ( Diagram * diagram ) {
if ( ! diagram ) return ;
// recupere le projet contenant le schema
if ( QETProject * diagram_project = diagram - > project ( ) ) {
// recupere la vue sur ce projet
if ( ProjectView * project_view = findProject ( diagram_project ) ) {
// affiche le schema en question
project_view - > showDiagram ( diagram ) ;
// supprime le schema
project_view - > removeDiagram ( diagram ) ;
}
}
}
/**
Nettoie le projet courant
*/
void QETDiagramEditor : : cleanCurrentProject ( ) {
if ( ProjectView * current_project = currentProject ( ) ) {
int clean_count = current_project - > cleanProject ( ) ;
if ( clean_count ) pa - > reloadAndFilter ( ) ;
}
}
/**
Supprime le schema courant du projet courant
*/
void QETDiagramEditor : : removeDiagramFromProject ( ) {
if ( ProjectView * current_project = currentProject ( ) ) {
if ( DiagramView * current_diagram = current_project - > currentDiagram ( ) ) {
can_update_actions = false ;
current_project - > removeDiagram ( current_diagram ) ;
}
}
}
/**
Gere l ' ajout d ' un schema dans un projet
@ param dv DiagramView concerne
*/
void QETDiagramEditor : : diagramWasAdded ( DiagramView * dv ) {
// quand on change qqc a l'interieur d'un schema, on met a jour les menus
undo_group . addStack ( & ( dv - > diagram ( ) - > undoStack ( ) ) ) ;
2009-04-18 15:30:44 +00:00
connect ( dv , SIGNAL ( selectionChanged ( ) ) , this , SLOT ( slot_updateComplexActions ( ) ) ) ;
2009-04-03 19:30:25 +00:00
connect ( dv , SIGNAL ( modeChanged ( ) ) , this , SLOT ( slot_updateModeActions ( ) ) ) ;
connect ( dv , SIGNAL ( textAdded ( bool ) ) , add_text , SLOT ( setChecked ( bool ) ) ) ;
connect ( dv , SIGNAL ( titleChanged ( DiagramView * , const QString & ) ) , this , SLOT ( diagramTitleChanged ( DiagramView * ) ) ) ;
}
/**
Gere le retrait d ' un schema dans un projet avant que le retrait ne soit effectif
@ param dv DiagramView concerne
*/
void QETDiagramEditor : : diagramIsAboutToBeRemoved ( DiagramView * dv ) {
undo_group . removeStack ( & ( dv - > diagram ( ) - > undoStack ( ) ) ) ;
can_update_actions = false ;
}
/**
Gere le retrait d ' un schema dans un projet apres que le retrait soit effectif
@ param dv DiagramView concerne
*/
void QETDiagramEditor : : diagramWasRemoved ( DiagramView * ) {
can_update_actions = true ;
}
/**
Gere le changement de titre d ' un schema dans un projet
@ param dv DiagramView concerne
*/
void QETDiagramEditor : : diagramTitleChanged ( DiagramView * dv ) {
if ( Diagram * diagram = dv - > diagram ( ) ) {
if ( QETProject * project = diagram - > project ( ) ) {
pa - > elementsPanel ( ) . diagramTitleChanged ( project , diagram ) ;
}
}
}
2009-05-19 19:00:37 +00:00
/**
@ param location Emplacement de l ' element a retrouver dans le panel
d ' elements .
*/
void QETDiagramEditor : : findElementInPanel ( const ElementsLocation & location ) {
bool element_found = pa - > elementsPanel ( ) . scrollToElement ( location ) ;
if ( ! element_found ) {
// l'element n'a pas ete trouve
ElementsCollectionItem * element = QETApp : : collectionItem ( location ) ;
if ( element ) {
// mais il semble exister tout de meme
// peut-etre vient-il d'un projet ouvert dans un autre editeur ?
if ( location . project ( ) & & ! findProject ( location . project ( ) ) ) {
statusBar ( ) - > showMessage (
tr ( " Impossible de retrouver cet \351 l \351 ment dans le panel car il semble \351 dit \351 dans une autre fen \352 tre " ) ,
10000
) ;
} else {
// il devrait etre affiche : on tente de recharger le panel
statusBar ( ) - > showMessage (
tr ( " Impossible de retrouver cet \351 l \351 ment dans le panel... rechargement du panel... " ) ,
10000
) ;
pa - > reloadAndFilter ( ) ;
statusBar ( ) - > clearMessage ( ) ;
element_found = pa - > elementsPanel ( ) . scrollToElement ( location ) ;
}
}
}
if ( ! element_found ) {
statusBar ( ) - > showMessage (
tr ( " Impossible de retrouver cet \351 l \351 ment dans le panel " ) ,
10000
) ;
}
}
2009-07-08 09:41:20 +00:00
/**
Lance l ' editeur d ' element pour l ' element filename
@ param location Emplacement de l ' element a editer
*/
void QETDiagramEditor : : editElementInEditor ( const ElementsLocation & location ) {
QETElementEditor * editor = new QETElementEditor ( ) ;
editor - > fromLocation ( location ) ;
editor - > show ( ) ;
}
2007-12-01 10:29:03 +00:00
/**
@ return Les proprietes par defaut pour le cartouche d ' un schema
*/
InsetProperties QETDiagramEditor : : defaultInsetProperties ( ) {
// accede a la configuration de l'application
QSettings & settings = QETApp : : settings ( ) ;
InsetProperties def ;
2009-04-03 19:30:25 +00:00
// lit le cartouche par defaut dans la configuration
def . fromSettings ( settings , " diagrameditor/default " ) ;
2007-12-01 10:29:03 +00:00
return ( def ) ;
}
2008-08-14 22:51:08 +00:00
/**
@ return Les dimensions par defaut d ' un schema
*/
BorderProperties QETDiagramEditor : : defaultBorderProperties ( ) {
// accede a la configuration de l'application
QSettings & settings = QETApp : : settings ( ) ;
BorderProperties def ;
2009-04-03 19:30:25 +00:00
// lit les dimensions par defaut dans la configuration
def . fromSettings ( settings , " diagrameditor/default " ) ;
return ( def ) ;
}
/**
@ return Les proprietes par defaut d ' un conducteur
*/
ConductorProperties QETDiagramEditor : : defaultConductorProperties ( ) {
// accede a la configuration de l'application
QSettings & settings = QETApp : : settings ( ) ;
ConductorProperties def ;
// lit les caracteristiques des conducteurs par defaut dans la configuration
def . fromSettings ( settings , " diagrameditor/defaultconductor " ) ;
2008-08-14 22:51:08 +00:00
return ( def ) ;
}
2009-08-09 12:51:02 +00:00
/**
@ return Les parametres d ' export par defaut pour un schema
*/
ExportProperties QETDiagramEditor : : defaultExportProperties ( ) {
// accede a la configuration de l'application
QSettings & settings = QETApp : : settings ( ) ;
ExportProperties def ;
// lit les caracteristiques des conducteurs par defaut dans la configuration
def . fromSettings ( settings , " export/default " ) ;
return ( def ) ;
}