mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Les modifications apportees aux proprietes des conducteurs sont desormais annulables
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@152 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
eb3ed0f99a
commit
bb00094c0a
@ -1024,6 +1024,7 @@ QString Conducer::text() const {
|
||||
*/
|
||||
void Conducer::setText(const QString &t) {
|
||||
text_item -> setPlainText(t);
|
||||
text_item -> previous_text = t;
|
||||
}
|
||||
|
||||
|
||||
|
@ -472,3 +472,46 @@ void ChangeBorderCommand::undo() {
|
||||
void ChangeBorderCommand::redo() {
|
||||
applyChanges(1);
|
||||
}
|
||||
|
||||
ChangeConducerPropertiesCommand::ChangeConducerPropertiesCommand(Conducer *c, QUndoCommand *parent) :
|
||||
QUndoCommand(QObject::tr("modifier les propri\351t\351s d'un conducteur"), parent),
|
||||
conducer(c),
|
||||
old_settings_set(false),
|
||||
new_settings_set(false)
|
||||
{
|
||||
}
|
||||
|
||||
ChangeConducerPropertiesCommand::~ChangeConducerPropertiesCommand() {
|
||||
}
|
||||
|
||||
void ChangeConducerPropertiesCommand::setOldSettings(bool single, const QString &text, const SingleLineProperties &slp) {
|
||||
old_is_single_line = single;
|
||||
old_conducer_text = text;
|
||||
old_slp = slp;
|
||||
old_settings_set = true;
|
||||
}
|
||||
|
||||
void ChangeConducerPropertiesCommand::setNewSettings(bool single, const QString &text, const SingleLineProperties &slp) {
|
||||
new_is_single_line = single;
|
||||
new_conducer_text = text;
|
||||
new_slp = slp;
|
||||
new_settings_set = true;
|
||||
}
|
||||
|
||||
void ChangeConducerPropertiesCommand::undo() {
|
||||
if (old_settings_set && new_settings_set) {
|
||||
conducer -> setSingleLine(old_is_single_line);
|
||||
conducer -> setText(old_conducer_text);
|
||||
conducer -> singleLineProperties = old_slp;
|
||||
conducer -> update();
|
||||
}
|
||||
}
|
||||
|
||||
void ChangeConducerPropertiesCommand::redo() {
|
||||
if (old_settings_set && new_settings_set) {
|
||||
conducer -> setSingleLine(new_is_single_line);
|
||||
conducer -> setText(new_conducer_text);
|
||||
conducer -> singleLineProperties = new_slp;
|
||||
conducer -> update();
|
||||
}
|
||||
}
|
||||
|
@ -297,4 +297,38 @@ class ChangeBorderCommand : public QUndoCommand {
|
||||
/// Delta pour la hauteur des entetes des colonnes
|
||||
qreal headersHeightDifference;
|
||||
};
|
||||
|
||||
/**
|
||||
Cette classe represente l'action de modifier les proprietes d'un conducteur
|
||||
*/
|
||||
class ChangeConducerPropertiesCommand : public QUndoCommand {
|
||||
// constructeurs, destructeur
|
||||
public:
|
||||
ChangeConducerPropertiesCommand(Conducer *, QUndoCommand * = 0);
|
||||
virtual ~ChangeConducerPropertiesCommand();
|
||||
private:
|
||||
ChangeConducerPropertiesCommand(const ChangeConducerPropertiesCommand &);
|
||||
|
||||
// methodes
|
||||
public:
|
||||
virtual void undo();
|
||||
virtual void redo();
|
||||
virtual void setOldSettings(bool, const QString &, const SingleLineProperties &);
|
||||
virtual void setNewSettings(bool, const QString &, const SingleLineProperties &);
|
||||
|
||||
// attributs
|
||||
private:
|
||||
/// Conducteur modifie
|
||||
Conducer *conducer;
|
||||
/// anciennes proprietes
|
||||
bool old_is_single_line;
|
||||
QString old_conducer_text;
|
||||
SingleLineProperties old_slp;
|
||||
/// nouvelles proprietes
|
||||
bool new_is_single_line;
|
||||
QString new_conducer_text;
|
||||
SingleLineProperties new_slp;
|
||||
bool old_settings_set;
|
||||
bool new_settings_set;
|
||||
};
|
||||
#endif
|
||||
|
@ -618,8 +618,13 @@ void DiagramView::editConducer() {
|
||||
cpw -> setConducerText(edited_conducer -> text());
|
||||
cpw -> setSingleLineProperties(edited_conducer -> singleLineProperties);
|
||||
|
||||
// initialise egalement l'objet UndoCommand correspondant
|
||||
ChangeConducerPropertiesCommand *ccpc = new ChangeConducerPropertiesCommand(edited_conducer);
|
||||
ccpc -> setOldSettings(edited_conducer -> isSingleLine(), edited_conducer -> text(), edited_conducer -> singleLineProperties);
|
||||
|
||||
// l'insere dans un dialogue
|
||||
QDialog conducer_dialog;
|
||||
conducer_dialog.setWindowTitle(tr("\311diter les propri\351t\351s d'un conducteur"));
|
||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&conducer_dialog);
|
||||
dialog_layout -> addWidget(cpw);
|
||||
QDialogButtonBox *dbb = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
@ -629,9 +634,9 @@ void DiagramView::editConducer() {
|
||||
|
||||
// execute le dialogue et met a jour le conducteur
|
||||
if (conducer_dialog.exec() == QDialog::Accepted) {
|
||||
edited_conducer -> setSingleLine(cpw -> isSingleLine());
|
||||
edited_conducer -> setText(cpw -> conducerText());
|
||||
edited_conducer -> singleLineProperties = cpw -> singleLineProperties();
|
||||
edited_conducer -> update();
|
||||
ccpc -> setNewSettings(cpw -> isSingleLine(), cpw -> conducerText(), cpw -> singleLineProperties());
|
||||
diagram() -> undoStack().push(ccpc);
|
||||
} else {
|
||||
delete ccpc;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user