mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 22:00:35 +01:00
Les modifications concernant la taille du schema sont desormais annulables
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@143 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -421,3 +421,54 @@ void ChangeInsetCommand::undo() {
|
|||||||
void ChangeInsetCommand::redo() {
|
void ChangeInsetCommand::redo() {
|
||||||
diagram -> border_and_inset.importInset(new_inset);
|
diagram -> border_and_inset.importInset(new_inset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructeur
|
||||||
|
@param dia Schema modifie
|
||||||
|
@param parent QUndoCommand parent
|
||||||
|
*/
|
||||||
|
ChangeBorderCommand::ChangeBorderCommand(Diagram *dia, QUndoCommand *parent) :
|
||||||
|
QUndoCommand(QObject::tr("modifier les dimensions du sch\351ma"), parent),
|
||||||
|
diagram(dia),
|
||||||
|
columnsCountDifference(0),
|
||||||
|
columnsHeightDifference(0.0),
|
||||||
|
columnsWidthDifference(0.0),
|
||||||
|
headersHeightDifference(0.0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Destructeur
|
||||||
|
ChangeBorderCommand::~ChangeBorderCommand() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Applique les changements au schema
|
||||||
|
@param coeff comme les changements s'expriment sous forme de nombres dont
|
||||||
|
il suffit d'inverser le signe pour les annuler, ces valeurs sont ici
|
||||||
|
multipliees par le coefficient passe en parametre avant d'etre appliquees.
|
||||||
|
Pour resumer : 1 pour refaire, -1 pour annuler.
|
||||||
|
*/
|
||||||
|
void ChangeBorderCommand::applyChanges(int coeff) {
|
||||||
|
// reference vers l'objet border_and_inset du schema
|
||||||
|
BorderInset &border = diagram -> border_and_inset;
|
||||||
|
if (columnsCountDifference) {
|
||||||
|
border.setNbColumns(border.nbColumn() + (columnsCountDifference * coeff));
|
||||||
|
}
|
||||||
|
if (columnsHeightDifference) {
|
||||||
|
border.setColumnsHeight(border.columnsHeight() + (columnsHeightDifference * coeff));
|
||||||
|
}
|
||||||
|
if (columnsWidthDifference) {
|
||||||
|
border.setColumnsWidth(border.columnsWidth() + (columnsWidthDifference * coeff));
|
||||||
|
}
|
||||||
|
if (headersHeightDifference) {
|
||||||
|
border.setColumnsHeaderHeight(border.columnsHeaderHeight() + (headersHeightDifference * coeff));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChangeBorderCommand::undo() {
|
||||||
|
applyChanges(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChangeBorderCommand::redo() {
|
||||||
|
applyChanges(1);
|
||||||
|
}
|
||||||
|
|||||||
@@ -253,11 +253,48 @@ class ChangeInsetCommand : public QUndoCommand {
|
|||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
/// DiagramTextItem modifie
|
/// Schema modifie
|
||||||
Diagram *diagram;
|
Diagram *diagram;
|
||||||
/// texte avant changement
|
/// proprietes avant changement
|
||||||
InsetProperties old_inset;
|
InsetProperties old_inset;
|
||||||
/// texte apres changement
|
/// proprietes apres changement
|
||||||
InsetProperties new_inset;
|
InsetProperties new_inset;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Cette classe represente l'action de modifier :
|
||||||
|
-le nombre de colonnes d'un schema
|
||||||
|
-la hauteur des colonnes
|
||||||
|
-la largeur des colonnes
|
||||||
|
-la hauteur des en-tetes des colonnes
|
||||||
|
*/
|
||||||
|
class ChangeBorderCommand : public QUndoCommand {
|
||||||
|
// constructeurs, destructeur
|
||||||
|
public:
|
||||||
|
ChangeBorderCommand(Diagram *, QUndoCommand * = 0);
|
||||||
|
virtual ~ChangeBorderCommand();
|
||||||
|
private:
|
||||||
|
ChangeBorderCommand(const ChangeBorderCommand &);
|
||||||
|
|
||||||
|
// methodes
|
||||||
|
public:
|
||||||
|
virtual void undo();
|
||||||
|
virtual void redo();
|
||||||
|
private:
|
||||||
|
virtual void applyChanges(int = 1);
|
||||||
|
|
||||||
|
// attributs
|
||||||
|
private:
|
||||||
|
/// Diagram modifie
|
||||||
|
Diagram *diagram;
|
||||||
|
public:
|
||||||
|
/// Nombre de colonnes ajoutees / enlevees
|
||||||
|
int columnsCountDifference;
|
||||||
|
/// Delta pour la hauteur des colonnes
|
||||||
|
qreal columnsHeightDifference;
|
||||||
|
/// Delta pour la largeur des colonnes
|
||||||
|
qreal columnsWidthDifference;
|
||||||
|
/// Delta pour la hauteur des entetes des colonnes
|
||||||
|
qreal headersHeightDifference;
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -524,30 +524,36 @@ bool DiagramView::hasSelectedItems() {
|
|||||||
Ajoute une colonne au schema.
|
Ajoute une colonne au schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::addColumn() {
|
void DiagramView::addColumn() {
|
||||||
scene -> border_and_inset.addColumn();
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
|
cbc -> columnsCountDifference = 1;
|
||||||
|
scene -> undoStack().push(cbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Enleve une colonne au schema.
|
Enleve une colonne au schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::removeColumn() {
|
void DiagramView::removeColumn() {
|
||||||
scene -> border_and_inset.removeColumn();
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
|
cbc -> columnsCountDifference = -1;
|
||||||
|
scene -> undoStack().push(cbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Agrandit le schema en hauteur
|
Agrandit le schema en hauteur
|
||||||
*/
|
*/
|
||||||
void DiagramView::expand() {
|
void DiagramView::expand() {
|
||||||
qreal new_height = scene -> border_and_inset.columnsHeight() + 20.0;
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
scene -> border_and_inset.setColumnsHeight(new_height);
|
cbc -> columnsHeightDifference = 20.0;
|
||||||
|
scene -> undoStack().push(cbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Retrecit le schema en hauteur
|
Retrecit le schema en hauteur
|
||||||
*/
|
*/
|
||||||
void DiagramView::shrink() {
|
void DiagramView::shrink() {
|
||||||
qreal new_height = scene -> border_and_inset.columnsHeight() - 20.0;
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
scene -> border_and_inset.setColumnsHeight(new_height);
|
cbc -> columnsHeightDifference = 20.0;
|
||||||
|
scene -> undoStack().push(cbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user