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) {
|
void Conducer::setText(const QString &t) {
|
||||||
text_item -> setPlainText(t);
|
text_item -> setPlainText(t);
|
||||||
|
text_item -> previous_text = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -472,3 +472,46 @@ void ChangeBorderCommand::undo() {
|
|||||||
void ChangeBorderCommand::redo() {
|
void ChangeBorderCommand::redo() {
|
||||||
applyChanges(1);
|
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
|
/// Delta pour la hauteur des entetes des colonnes
|
||||||
qreal headersHeightDifference;
|
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
|
#endif
|
||||||
|
@ -618,8 +618,13 @@ void DiagramView::editConducer() {
|
|||||||
cpw -> setConducerText(edited_conducer -> text());
|
cpw -> setConducerText(edited_conducer -> text());
|
||||||
cpw -> setSingleLineProperties(edited_conducer -> singleLineProperties);
|
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
|
// l'insere dans un dialogue
|
||||||
QDialog conducer_dialog;
|
QDialog conducer_dialog;
|
||||||
|
conducer_dialog.setWindowTitle(tr("\311diter les propri\351t\351s d'un conducteur"));
|
||||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&conducer_dialog);
|
QVBoxLayout *dialog_layout = new QVBoxLayout(&conducer_dialog);
|
||||||
dialog_layout -> addWidget(cpw);
|
dialog_layout -> addWidget(cpw);
|
||||||
QDialogButtonBox *dbb = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *dbb = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
@ -629,9 +634,9 @@ void DiagramView::editConducer() {
|
|||||||
|
|
||||||
// execute le dialogue et met a jour le conducteur
|
// execute le dialogue et met a jour le conducteur
|
||||||
if (conducer_dialog.exec() == QDialog::Accepted) {
|
if (conducer_dialog.exec() == QDialog::Accepted) {
|
||||||
edited_conducer -> setSingleLine(cpw -> isSingleLine());
|
ccpc -> setNewSettings(cpw -> isSingleLine(), cpw -> conducerText(), cpw -> singleLineProperties());
|
||||||
edited_conducer -> setText(cpw -> conducerText());
|
diagram() -> undoStack().push(ccpc);
|
||||||
edited_conducer -> singleLineProperties = cpw -> singleLineProperties();
|
} else {
|
||||||
edited_conducer -> update();
|
delete ccpc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user