Logo Search packages:      
Sourcecode: qelectrotech version File versions  Download package

qetdiagrameditor.h

/*
      Copyright 2006-2009 Xavier Guerrin
      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/>.
*/
#ifndef QET_DIAGRAM_EDITOR_H
#define QET_DIAGRAM_EDITOR_H
#include <QtGui>
#include "borderproperties.h"
#include "conductorproperties.h"
#include "insetproperties.h"
class QETProject;
class ProjectView;
class Diagram;
class DiagramView;
class ElementsPanelWidget;
class ElementsLocation;
class RecentFiles;
/**
      Cette classe represente la fenetre principale de QElectroTech et,
      ipso facto, la plus grande partie de l'interface graphique de QElectroTech.
      Il s'agit d'un objet QMainWindow avec un QWorkSpace contenant des objets
      "DiagramView" en guise de widget central et un "Panel d'Elements" en
      guise de widget "Dock".
*/
00038 class QETDiagramEditor : public QMainWindow {
      Q_OBJECT
      
      // constructeurs, destructeur
      public:
      QETDiagramEditor(const QStringList & = QStringList(), QWidget * = 0);
      virtual ~QETDiagramEditor();
      
      private:
      QETDiagramEditor(const QETDiagramEditor &);
      
      // methodes
      public:
      void closeEvent(QCloseEvent *);
      QList<ProjectView *> openedProjects() const;
      void addProjectView(ProjectView *);
      bool openAndAddProject(const QString &, bool interactive = true);
      QList<DiagramView *> projectViews() const;
      QList<QString> editedFiles() const;
      ProjectView *viewForFile(const QString &) const;
      static InsetProperties defaultInsetProperties();
      static BorderProperties defaultBorderProperties();
      static ConductorProperties defaultConductorProperties();
      
      protected:
      void actions();
      virtual bool event(QEvent *);
      
      private:
      bool addProject(QETProject *);
      ProjectView *currentProject() const;
      DiagramView *currentDiagram() const;
      ProjectView *findProject(DiagramView *) const;
      ProjectView *findProject(Diagram *) const;
      ProjectView *findProject(QETProject *) const;
      ProjectView *findProject(const QString &) const;
      QMdiSubWindow *subWindowForWidget(QWidget *) const;
      
      void menus();
      void toolbar();
      
      public slots:
      void toggleFullScreen();
      void printDialog();
      void exportDialog();
      bool saveAsDialog();
      bool save();
      bool saveAll();
      bool newProject();
      bool openProject();
      bool openRecentFile(const QString &);
      bool closeProject(ProjectView *);
      bool closeProject(QETProject *);
      bool closeCurrentProject();
      void slot_cut();
      void slot_copy();
      void slot_paste();
      void slot_zoomIn();
      void slot_zoomOut();
      void slot_zoomFit();
      void slot_zoomReset();
      void slot_selectAll();
      void slot_selectNothing();
      void slot_selectInvert();
      void slot_delete();
      void slot_rotate();
      void slot_setSelectionMode();
      void slot_setVisualisationMode();
      void slot_updateActions();
      void slot_updateFullScreenAction();
      void slot_updateModeActions();
      void slot_updateComplexActions();
      void slot_updatePasteAction();
      void slot_updateWindowsMenu();
      void slot_addColumn();
      void slot_removeColumn();
      void slot_addRow();
      void slot_removeRow();
      void editSelectionProperties();
      void slot_editConductor();
      void slot_resetConductors();
      void slot_editDefaultConductors();
      void slot_addText();
      void setWindowedMode();
      void setTabbedMode();
      void readSettings();
      void writeSettings();
      void activateDiagram(Diagram *);
      void activateProject(QETProject *);
      void activateProject(ProjectView *);
      void activateWidget(QWidget *);
      void diagramOrderChanged(ProjectView *, int, int);
      void projectWasClosed(ProjectView *);
      void editCurrentProjectProperties();
      void editProjectProperties(ProjectView *);
      void editProjectProperties(QETProject *);
      void editCurrentDiagramProperties();
      void editDiagramProperties(DiagramView *);
      void editDiagramProperties(Diagram *);
      void addDiagramToProject();
      void addDiagramToProject(QETProject *);
      void removeDiagram(Diagram *);
      void removeDiagramFromProject();
      void cleanCurrentProject();
      void diagramWasAdded(DiagramView *);
      void diagramIsAboutToBeRemoved(DiagramView *);
      void diagramWasRemoved(DiagramView *);
      void diagramTitleChanged(DiagramView *);
      void findElementInPanel(const ElementsLocation &);
      
      // attributs
      public:
      // Actions faisables au travers de menus dans l'application QElectroTech
00151       QActionGroup *grp_visu_sel;  ///< Groupe d'actions pour les modes (edition et visualisation)
00152       QActionGroup *grp_view_mode; ///< Groupe d'actions pour l'affichage des projets (onglets ou fenetres)
00153       QAction *tabbed_view_mode;   ///< Passe les projets en mode onglets
00154       QAction *windowed_view_mode; ///< Passe les projets en mode fenetre
00155       QAction *mode_selection;     ///< Passe en mode edition
00156       QAction *mode_visualise;     ///< Passe en mode visualisation
00157       QAction *new_file;           ///< Cree un nouveau schema
00158       QAction *open_file;          ///< OUvre un fichier
00159       QAction *close_file;         ///< Ferme le fichier
00160       QAction *save_file;          ///< Enregistre le fichier
00161       QAction *save_file_sous;     ///< Enregistrer le fichier sous un nom donne
00162       QAction *save_all;           ///< Enregistre tous les schemas
00163       QAction *import_diagram;     ///< Importe un schema existant (non implemente)
00164       QAction *export_diagram;     ///< Exporte le schema sous forme d'image
00165       QAction *print;              ///< Imprime le schema
00166       QAction *quit_editor;        ///< Quitte l'editeur de schema
00167       QAction *undo;               ///< Annule la derniere action
00168       QAction *redo;               ///< Refait une action annulee
00169       QAction *cut;                ///< Coupe la selection dans le presse-papier
00170       QAction *copy;               ///< Copie la selection dans le presse-papier
00171       QAction *paste;              ///< Colle le contenu du presse-papier sur le schema
00172       QAction *select_all;         ///< Selectionne tout
00173       QAction *select_nothing;     ///< Deselectionne tout
00174       QAction *select_invert;      ///< Inverse la selection
00175       QAction *delete_selection;   ///< Supprime la selection
00176       QAction *rotate_selection;   ///< Pivote les elements selectionnes
00177       QAction *selection_prop;     ///< Lance le dialogue de description ou d'edition de la selection
00178       QAction *conductor_reset;    ///< Reinitialise les conducteurs selectionnes
00179       QAction *conductor_default;  ///< Lance le dialogue d'edition des conducteurs par defaut
00180       QAction *infos_diagram;      ///< Lance le dialogue d'edition des proprietes du schema
00181       QAction *add_text;           ///< Passe en mode "Ajout de texte"
00182       QAction *add_column;         ///< Ajoute une colonne au schema
00183       QAction *remove_column;      ///< Enleve une colonne du schema
00184       QAction *add_row;            ///< Augmente la hauteur du schema
00185       QAction *remove_row;         ///< Reduit la hauteur du schema
00186       QAction *prj_edit_prop;      ///< Edite les proprietes du projet
00187       QAction *prj_add_diagram;    ///< Ajoute un schema au projet
00188       QAction *prj_del_diagram;    ///< Supprime un schema du projet
00189       QAction *prj_clean;          ///< Nettoie un projet
00190       QAction *zoom_in;            ///< Zoome avant
00191       QAction *zoom_out;           ///< Zoome arriere
00192       QAction *zoom_fit;           ///< Ajuste le zoom de facon a voir l'integralite des elements
00193       QAction *zoom_reset;         ///< Remet le zoom 1:1
00194       QAction *about_qet;          ///< Lance le dialogue "A propos de QElectroTech"
00195       QAction *about_qt;           ///< Lance le dialogue "A propos de Qt"
00196       QAction *configure;          ///< Lance le dialogue de configuration de QElectroTech
00197       QAction *fullscreen;         ///< Passe en mode plein ecran ou en sort
00198       QAction *tile_window;        ///< Affiche les fenetre MDI en mosaique
00199       QAction *cascade_window;     ///< Affiche les fenetres MDI en cascade
00200       QAction *prev_window;        ///< Affiche la fenetre MDI precedente
00201       QAction *next_window;        ///< Affiche la fenetre MDI suivante
      
      private:
      QMdiArea workspace;
      QSignalMapper windowMapper;
      /// Dossier a utiliser pour Fichier > ouvrir
00207       QDir open_dialog_dir;
      /// Dock pour le Panel d'Elements
00209       QDockWidget *qdw_pa;
      /// Dock pour la liste des annulations
00211       QDockWidget *qdw_undo;
      /// Panel d'Elements
00213       ElementsPanelWidget *pa;
      QMenu *windows_menu;
      QToolBar *main_bar;
      QToolBar *view_bar;
      QToolBar *diagram_bar;
      QUndoGroup undo_group;
      bool can_update_actions;
};
#endif

Generated by  Doxygen 1.6.0   Back to index