Ajout d'une action "Recharger" dans l'editeur d'element

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@228 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2007-12-09 12:00:11 +00:00
parent 2e77efce00
commit 289827cc56
4 changed files with 47 additions and 1 deletions

View File

@@ -722,3 +722,17 @@ QList<QGraphicsItem *> ElementScene::zItems(bool include_terminals) const {
if (include_terminals) all_items_list += terminals; if (include_terminals) all_items_list += terminals;
return(all_items_list); 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);
}
}

View File

@@ -98,6 +98,7 @@ class ElementScene : public QGraphicsScene {
void setInternalConnections(bool); void setInternalConnections(bool);
virtual const QDomDocument toXml() const; virtual const QDomDocument toXml() const;
virtual void fromXml(const QDomDocument &); virtual void fromXml(const QDomDocument &);
virtual void reset();
virtual QList<QGraphicsItem *> zItems(bool = false) const; virtual QList<QGraphicsItem *> zItems(bool = false) const;
QRectF sceneContent() const; QRectF sceneContent() const;
QUndoStack &undoStack(); QUndoStack &undoStack();

View File

@@ -55,6 +55,7 @@ void QETElementEditor::setupActions() {
open = new QAction(QIcon(":/ico/open.png"), tr("&Ouvrir"), this); open = new QAction(QIcon(":/ico/open.png"), tr("&Ouvrir"), this);
save = new QAction(QIcon(":/ico/save.png"), tr("&Enregistrer"), this); save = new QAction(QIcon(":/ico/save.png"), tr("&Enregistrer"), this);
save_as = new QAction(QIcon(":/ico/saveas.png"), tr("Enregistrer sous"), 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); quit = new QAction(QIcon(":/ico/exit.png"), tr("&Quitter"), this);
selectall = new QAction( tr("Tout s\351lectionner"), this); selectall = new QAction( tr("Tout s\351lectionner"), this);
deselectall = new QAction( tr("D\351s\351lectionner tout"), this); deselectall = new QAction( tr("D\351s\351lectionner tout"), this);
@@ -87,6 +88,7 @@ void QETElementEditor::setupActions() {
new_element -> setShortcut(QKeySequence::New); new_element -> setShortcut(QKeySequence::New);
open -> setShortcut(QKeySequence::Open); open -> setShortcut(QKeySequence::Open);
save -> setShortcut(QKeySequence::Save); save -> setShortcut(QKeySequence::Save);
reload -> setShortcut(QKeySequence::Refresh);
quit -> setShortcut(QKeySequence(tr("Ctrl+Q"))); quit -> setShortcut(QKeySequence(tr("Ctrl+Q")));
selectall -> setShortcut(QKeySequence::SelectAll); selectall -> setShortcut(QKeySequence::SelectAll);
deselectall -> setShortcut(QKeySequence(tr("Ctrl+Shift+A"))); deselectall -> setShortcut(QKeySequence(tr("Ctrl+Shift+A")));
@@ -105,6 +107,7 @@ void QETElementEditor::setupActions() {
connect(open, SIGNAL(triggered()), this, SLOT(slot_open())); connect(open, SIGNAL(triggered()), this, SLOT(slot_open()));
connect(save, SIGNAL(triggered()), this, SLOT(slot_save())); connect(save, SIGNAL(triggered()), this, SLOT(slot_save()));
connect(save_as, SIGNAL(triggered()), this, SLOT(slot_saveAs())); 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(quit, SIGNAL(triggered()), this, SLOT(close()));
connect(selectall, SIGNAL(triggered()), ce_scene, SLOT(slot_selectAll())); connect(selectall, SIGNAL(triggered()), ce_scene, SLOT(slot_selectAll()));
connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll())); connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll()));
@@ -199,6 +202,8 @@ void QETElementEditor::setupMenus() {
file_menu -> addAction(save); file_menu -> addAction(save);
file_menu -> addAction(save_as); file_menu -> addAction(save_as);
file_menu -> addSeparator(); file_menu -> addSeparator();
file_menu -> addAction(reload);
file_menu -> addSeparator();
file_menu -> addAction(quit); file_menu -> addAction(quit);
edit_menu -> addAction(undo); edit_menu -> addAction(undo);
@@ -483,6 +488,31 @@ void QETElementEditor::slot_open() {
cee -> show(); 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() { bool QETElementEditor::slot_save() {
// si on ne connait pas le nom du fichier en cours, enregistrer revient a enregistrer sous // si on ne connait pas le nom du fichier en cours, enregistrer revient a enregistrer sous
if (_filename.isEmpty()) return(slot_saveAs()); if (_filename.isEmpty()) return(slot_saveAs());

View File

@@ -55,7 +55,7 @@ class QETElementEditor : public QMainWindow {
/// Liste des parties /// Liste des parties
QListWidget *parts_list; QListWidget *parts_list;
/// actions du menu fichier /// 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 /// actions du menu edition
QAction *selectall, *deselectall, *inv_select; QAction *selectall, *deselectall, *inv_select;
QAction *undo, *redo; QAction *undo, *redo;
@@ -105,6 +105,7 @@ class QETElementEditor : public QMainWindow {
public slots: public slots:
void slot_new(); void slot_new();
void slot_open(); void slot_open();
void slot_reload();
bool slot_save(); bool slot_save();
bool slot_saveAs(); bool slot_saveAs();
void slot_setRubberBandToView(); void slot_setRubberBandToView();