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

diagramcommands.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 DIAGRAM_COMMANDS_H
#define DIAGRAM_COMMANDS_H
#include "qet.h"
#include "diagram.h"
#include "diagramcontent.h"
#include "diagramtextitem.h"
#include "conductor.h"
#include "borderproperties.h"
#include "conductorproperties.h"
#include "insetproperties.h"
#include <QtGui>
/**
      Cette classe represente l'action d'ajouter un element au schema
*/
00032 class AddElementCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      AddElementCommand(Diagram *, Element *, const QPointF &, QUndoCommand * = 0);
      virtual ~AddElementCommand();
      private:
      AddElementCommand(const AddElementCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// element ajoute
00048       Element *element;
      /// schema sur lequel on ajoute l'element
00050       Diagram *diagram;
      /// position de l'element sur le schema
00052       QPointF position;
};

/**
      Cette classe represente l'action d'ajouter du texte au schema
*/
00058 class AddTextCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      AddTextCommand(Diagram *, DiagramTextItem *, const QPointF &, QUndoCommand * = 0);
      virtual ~AddTextCommand();
      private:
      AddTextCommand(const AddTextCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// texte ajoute
00074       DiagramTextItem *textitem;
      /// schema sur lequel on ajoute le texte
00076       Diagram *diagram;
      /// position du texte sur le schema
00078       QPointF position;
};

/**
      Cette classe represente l'action d'ajouter un conducteur au schema
*/
00084 class AddConductorCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      AddConductorCommand(Diagram *, Conductor *, QUndoCommand * = 0);
      virtual ~AddConductorCommand();
      private:
      AddConductorCommand(const AddConductorCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// conducteur ajoute
00100       Conductor *conductor;
      /// schema auquel on ajoute le conducteur
00102       Diagram *diagram;
};

/**
      Cette classe represente l'action de supprimer des elements et / ou
      conducteurs d'un schema
*/
00109 class DeleteElementsCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      DeleteElementsCommand(Diagram *, const DiagramContent &, QUndoCommand * = 0);
      virtual ~DeleteElementsCommand();
      private:
      DeleteElementsCommand(const DeleteElementsCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// contenu enleve
00125       DiagramContent removed_content;
      /// schema dont on supprime des elements et conducteurs
00127       Diagram *diagram;
};

/**
      Cette classe represente l'action de coller quelque chose sur un schema
*/
00133 class PasteDiagramCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      PasteDiagramCommand(Diagram *, const DiagramContent &, QUndoCommand * = 0);
      virtual ~PasteDiagramCommand();
      private:
      PasteDiagramCommand(const PasteDiagramCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// contenu  ajoute
00149       DiagramContent content;
      /// schema sur lequel on colle les elements et conducteurs
00151       Diagram *diagram;
      /// entien pour filtrer le contenu du schema
00153       int filter;
      /// booleen pour empecher le premier appel a redo
00155       bool first_redo;
};

/**
      Cette classe represente l'action de supprimer des elements et / ou
      conducteurs d'un schema
*/
00162 class CutDiagramCommand : public DeleteElementsCommand {
      // constructeurs, destructeur
      public:
      CutDiagramCommand(Diagram *, const DiagramContent &, QUndoCommand * = 0);
      virtual ~CutDiagramCommand();
      private:
      CutDiagramCommand(const CutDiagramCommand &);
};

/**
      Cette classe represente l'action de deplacer des elements et des
      conducteurs sur un schema
*/
00175 class MoveElementsCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      MoveElementsCommand(Diagram *, const DiagramContent &, const QPointF &m, QUndoCommand * = 0);
      virtual ~MoveElementsCommand();
      private:
      MoveElementsCommand(const MoveElementsCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      virtual void move(const QPointF &);
      
      // attributs
      private:
      /// schema sur lequel on deplace les elements
00192       Diagram *diagram;
      /// contenu a deplacer
00194       DiagramContent content_to_move;
      /// mouvement effectue
00196       QPointF movement;
      /// booleen pour ne pas executer le premier redo()
00198       bool first_redo;
};

/**
      Cette classe represente la modification d'un champ de texte
*/
00204 class ChangeDiagramTextCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      ChangeDiagramTextCommand(DiagramTextItem *, const QString &before, const QString &after, QUndoCommand * = 0);
      virtual ~ChangeDiagramTextCommand();
      private:
      ChangeDiagramTextCommand(const ChangeDiagramTextCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// DiagramTextItem modifie
00220       DiagramTextItem *text_item;
      /// texte avant changement
00222       QString text_before;
      /// texte apres changement
00224       QString text_after;
      /// booleen pour ne pas executer le premier redo()
00226       bool first_redo;
};

/**
      Cette classe represente l'action de pivoter plusieurs elements
*/
00232 class RotateElementsCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      RotateElementsCommand(const QHash<Element *, QET::Orientation> &elements, QUndoCommand * = 0);
      virtual ~RotateElementsCommand();
      private:
      RotateElementsCommand(const RotateElementsCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// elements pivotes associes a leur ancienne orientation
00248       QHash<Element *, QET::Orientation> elements_to_rotate;
};

/**
      Cette classe represente l'action de modifier un conducteur
*/
00254 class ChangeConductorCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      ChangeConductorCommand(Conductor *, const ConductorProfile &, const ConductorProfile &, Qt::Corner, QUndoCommand * = 0);
      virtual ~ChangeConductorCommand();
      private:
      ChangeConductorCommand(const ChangeConductorCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// conducteur modifie
00270       Conductor *conductor;
      /// profil avant changement
00272       ConductorProfile old_profile;
      /// profil apres changement
00274       ConductorProfile new_profile;
      /// Type de trajet
00276       Qt::Corner path_type;
      /// booleen pour ne pas executer le premier redo()
00278       bool first_redo;
};

/**
      Cette classe represente l'action de reinitialiser des conducteurs
*/
00284 class ResetConductorCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      ResetConductorCommand(const QHash<Conductor *, ConductorProfilesGroup> &, QUndoCommand * = 0);
      virtual ~ResetConductorCommand();
      private:
      ResetConductorCommand(const ResetConductorCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// conducteurs reinitialises associes a leur ancien profil
00300       QHash<Conductor *, ConductorProfilesGroup> conductors_profiles;
};

/**
      Cette classe represente l'action de modifier les informations du cartouche d'un schema
*/
00306 class ChangeInsetCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      ChangeInsetCommand(Diagram *, const InsetProperties &, const InsetProperties &, QUndoCommand * = 0);
      virtual ~ChangeInsetCommand();
      private:
      ChangeInsetCommand(const ChangeInsetCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// schema modifie
00322       Diagram *diagram;
      /// proprietes avant changement
00324       InsetProperties old_inset;
      /// proprietes apres changement
00326       InsetProperties new_inset;
};

/**
      Cette classe represente l'action de modifier les dimensions d'un schema
*/
00332 class ChangeBorderCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      ChangeBorderCommand(Diagram *, const BorderProperties &, const BorderProperties &, QUndoCommand * = 0);
      virtual ~ChangeBorderCommand();
      private:
      ChangeBorderCommand(const ChangeBorderCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      
      // attributs
      private:
      /// schema modifie
00348       Diagram *diagram;
      public:
      /// anciennes dimensions du schema
00351       BorderProperties old_properties;
      /// nouvelles dimensions du schema
00353       BorderProperties new_properties;
};

/**
      Cette classe represente l'action de modifier les proprietes d'un conducteur
*/
00359 class ChangeConductorPropertiesCommand : public QUndoCommand {
      // constructeurs, destructeur
      public:
      ChangeConductorPropertiesCommand(Conductor *, QUndoCommand * = 0);
      virtual ~ChangeConductorPropertiesCommand();
      private:
      ChangeConductorPropertiesCommand(const ChangeConductorPropertiesCommand &);
      
      // methodes
      public:
      virtual void undo();
      virtual void redo();
      virtual void setOldSettings(const ConductorProperties &);
      virtual void setNewSettings(const ConductorProperties &);
      
      // attributs
      private:
      /// conducteur modifie
00377       Conductor *conductor;
      /// anciennes proprietes
00379       ConductorProperties old_properties;
      /// nouvelles proprietes
00381       ConductorProperties new_properties;
      /// booleens indiquant si les proprietes ont ete definies ou non
00383       bool old_settings_set;
      bool new_settings_set;
};
#endif

Generated by  Doxygen 1.6.0   Back to index