diff --git a/editor/elementscene.cpp b/editor/elementscene.cpp index f9c31e28c..000a3160e 100644 --- a/editor/elementscene.cpp +++ b/editor/elementscene.cpp @@ -722,3 +722,17 @@ QList ElementScene::zItems(bool include_terminals) const { if (include_terminals) all_items_list += terminals; return(all_items_list); } + +/** + Supprime les parties de l'element et les objets d'annulations. + Les autres caracteristiques sont conservees. +*/ +void ElementScene::reset() { + // supprime les objets d'annulation + undoStack().clear(); + // enleve les elements de la scene + foreach (QGraphicsItem *qgi, items()) { + removeItem(qgi); + qgiManager().release(qgi); + } +} diff --git a/editor/elementscene.h b/editor/elementscene.h index aecdc444e..d3fae59f6 100644 --- a/editor/elementscene.h +++ b/editor/elementscene.h @@ -98,6 +98,7 @@ class ElementScene : public QGraphicsScene { void setInternalConnections(bool); virtual const QDomDocument toXml() const; virtual void fromXml(const QDomDocument &); + virtual void reset(); virtual QList zItems(bool = false) const; QRectF sceneContent() const; QUndoStack &undoStack(); diff --git a/editor/qetelementeditor.cpp b/editor/qetelementeditor.cpp index c2a433996..56dfc1cdf 100644 --- a/editor/qetelementeditor.cpp +++ b/editor/qetelementeditor.cpp @@ -55,6 +55,7 @@ void QETElementEditor::setupActions() { open = new QAction(QIcon(":/ico/open.png"), tr("&Ouvrir"), this); save = new QAction(QIcon(":/ico/save.png"), tr("&Enregistrer"), this); save_as = new QAction(QIcon(":/ico/saveas.png"), tr("Enregistrer sous"), this); + reload = new QAction(QIcon(":/ico/reload.png"), tr("Recharger"), this); quit = new QAction(QIcon(":/ico/exit.png"), tr("&Quitter"), this); selectall = new QAction( tr("Tout s\351lectionner"), this); deselectall = new QAction( tr("D\351s\351lectionner tout"), this); @@ -87,6 +88,7 @@ void QETElementEditor::setupActions() { new_element -> setShortcut(QKeySequence::New); open -> setShortcut(QKeySequence::Open); save -> setShortcut(QKeySequence::Save); + reload -> setShortcut(QKeySequence::Refresh); quit -> setShortcut(QKeySequence(tr("Ctrl+Q"))); selectall -> setShortcut(QKeySequence::SelectAll); deselectall -> setShortcut(QKeySequence(tr("Ctrl+Shift+A"))); @@ -105,6 +107,7 @@ void QETElementEditor::setupActions() { connect(open, SIGNAL(triggered()), this, SLOT(slot_open())); connect(save, SIGNAL(triggered()), this, SLOT(slot_save())); connect(save_as, SIGNAL(triggered()), this, SLOT(slot_saveAs())); + connect(reload, SIGNAL(triggered()), this, SLOT(slot_reload())); connect(quit, SIGNAL(triggered()), this, SLOT(close())); connect(selectall, SIGNAL(triggered()), ce_scene, SLOT(slot_selectAll())); connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll())); @@ -199,6 +202,8 @@ void QETElementEditor::setupMenus() { file_menu -> addAction(save); file_menu -> addAction(save_as); file_menu -> addSeparator(); + file_menu -> addAction(reload); + file_menu -> addSeparator(); file_menu -> addAction(quit); edit_menu -> addAction(undo); @@ -483,6 +488,31 @@ void QETElementEditor::slot_open() { cee -> show(); } +/** + Recharge l'element edite +*/ +void QETElementEditor::slot_reload() { + // impossible de recharger un element non enregistre + if (_filename.isEmpty()) return; + + // s'il ya des modifications, on demande a l'utilisateur s'il est certain + // de vouloir recharger + if (!ce_scene -> undoStack().isClean()) { + QMessageBox::StandardButton answer = QMessageBox::question( + this, + tr("Recharger l'\351l\351ment"), + tr("Vous avez efffectu\351 des modifications sur cet \351l\351ment. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'\351l\351ment ?"), + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, + QMessageBox::Cancel + ); + if (answer != QMessageBox::Yes) return; + } + + // recharge l'element + ce_scene -> reset(); + fromFile(_filename); +} + bool QETElementEditor::slot_save() { // si on ne connait pas le nom du fichier en cours, enregistrer revient a enregistrer sous if (_filename.isEmpty()) return(slot_saveAs()); diff --git a/editor/qetelementeditor.h b/editor/qetelementeditor.h index e9996215c..77886f691 100644 --- a/editor/qetelementeditor.h +++ b/editor/qetelementeditor.h @@ -55,7 +55,7 @@ class QETElementEditor : public QMainWindow { /// Liste des parties QListWidget *parts_list; /// actions du menu fichier - QAction *new_element, *open, *save, *save_as, *quit; + QAction *new_element, *open, *save, *save_as, *reload, *quit; /// actions du menu edition QAction *selectall, *deselectall, *inv_select; QAction *undo, *redo; @@ -105,6 +105,7 @@ class QETElementEditor : public QMainWindow { public slots: void slot_new(); void slot_open(); + void slot_reload(); bool slot_save(); bool slot_saveAs(); void slot_setRubberBandToView();