[qet] [845] Ajout d'un champ "informations" dans le format . elmt afin de stocker diverses informations complementaires, a commencer par l'auteur et la licence de l'element. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
- To: qet@xxxxxxxxxxxxxxxxxxx
- Subject: [qet] [845] Ajout d'un champ "informations" dans le format . elmt afin de stocker diverses informations complementaires, a commencer par l'auteur et la licence de l'element.
- From: subversion@xxxxxxxxxxxxx
- Date: Sun, 07 Feb 2010 18:07:23 +0100
Revision: 845
Author: xavier
Date: 2010-02-07 18:07:22 +0100 (Sun, 07 Feb 2010)
Log Message:
-----------
Ajout d'un champ "informations" dans le format .elmt afin de stocker diverses informations complementaires, a commencer par l'auteur et la licence de l'element.
Modified Paths:
--------------
trunk/qelectrotech.qrc
trunk/sources/editor/editorcommands.cpp
trunk/sources/editor/editorcommands.h
trunk/sources/editor/elementscene.cpp
trunk/sources/editor/elementscene.h
trunk/sources/editor/qetelementeditor.cpp
trunk/sources/editor/qetelementeditor.h
trunk/sources/qeticons.cpp
trunk/sources/qeticons.h
Added Paths:
-----------
trunk/ico/16x16/preferences-desktop-user.png
trunk/ico/22x22/preferences-desktop-user.png
Added: trunk/ico/16x16/preferences-desktop-user.png
===================================================================
(Binary files differ)
Property changes on: trunk/ico/16x16/preferences-desktop-user.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/ico/22x22/preferences-desktop-user.png
===================================================================
(Binary files differ)
Property changes on: trunk/ico/22x22/preferences-desktop-user.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/qelectrotech.qrc
===================================================================
--- trunk/qelectrotech.qrc 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/qelectrotech.qrc 2010-02-07 17:07:22 UTC (rev 845)
@@ -55,6 +55,7 @@
<file>ico/16x16/object-rotate-right.png</file>
<file>ico/16x16/orientations.png</file>
<file>ico/16x16/phase.png</file>
+ <file>ico/16x16/preferences-desktop-user.png</file>
<file>ico/16x16/project.png</file>
<file>ico/16x16/qet.png</file>
<file>ico/16x16/remove_col.png</file>
@@ -129,6 +130,7 @@
<file>ico/22x22/object-unlocked.png</file>
<file>ico/22x22/polygon.png</file>
<file>ico/22x22/portrait.png</file>
+ <file>ico/22x22/preferences-desktop-user.png</file>
<file>ico/22x22/raise.png</file>
<file>ico/22x22/rectangle.png</file>
<file>ico/22x22/restaurer.png</file>
Modified: trunk/sources/editor/editorcommands.cpp
===================================================================
--- trunk/sources/editor/editorcommands.cpp 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/editor/editorcommands.cpp 2010-02-07 17:07:22 UTC (rev 845)
@@ -590,3 +590,32 @@
void AllowInternalConnectionsCommand::redo() {
element -> setInternalConnections(ic);
}
+
+/**
+ Constructeur
+ @param elmt ElementScene concernee
+ @param old_infos Informations complementaires precedentes
+ @param old_infos Nouvelles informations complementaires
+ @param parent QUndoCommand parent
+*/
+ChangeInformationsCommand::ChangeInformationsCommand(ElementScene *elmt, const QString &old_infos, const QString &new_infos, QUndoCommand *parent) :
+ QUndoCommand(QObject::tr("modification informations complementaires", "undo caption"), parent),
+ element(elmt),
+ old_informations_(old_infos),
+ new_informations_(new_infos)
+{
+}
+
+/// Destructeur
+ChangeInformationsCommand::~ChangeInformationsCommand() {
+}
+
+/// Annule le changement d'autorisation pour les connexions internes
+void ChangeInformationsCommand::undo() {
+ element -> setInformations(old_informations_);
+}
+
+/// Refait le changement d'autorisation pour les connexions internes
+void ChangeInformationsCommand::redo() {
+ element -> setInformations(new_informations_);
+}
Modified: trunk/sources/editor/editorcommands.h
===================================================================
--- trunk/sources/editor/editorcommands.h 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/editor/editorcommands.h 2010-02-07 17:07:22 UTC (rev 845)
@@ -356,4 +356,31 @@
/// autorisation des connexions internes apres modification
bool ic;
};
+
+/**
+ Cette classe represente l'action de changer les informations
+ complementaires d'un element.
+*/
+class ChangeInformationsCommand : public QUndoCommand {
+ // constructeurs, destructeur
+ public:
+ ChangeInformationsCommand(ElementScene *, const QString &, const QString &, QUndoCommand * = 0);
+ virtual ~ChangeInformationsCommand();
+ private:
+ ChangeInformationsCommand(const ChangeInformationsCommand &);
+
+ // methodes
+ public:
+ virtual void undo();
+ virtual void redo();
+
+ // attributs
+ private:
+ /// Element edite auquel il faut appliquer les modifications
+ ElementScene *element;
+ /// Informations avant modification
+ QString old_informations_;
+ /// Informations apres modification
+ QString new_informations_;
+};
#endif
Modified: trunk/sources/editor/elementscene.cpp
===================================================================
--- trunk/sources/editor/elementscene.cpp 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/editor/elementscene.cpp 2010-02-07 17:07:22 UTC (rev 845)
@@ -559,6 +559,11 @@
// noms de l'element
root.appendChild(_names.toXml(xml_document));
+ // informations complementaires de l'element
+ QDomElement informations_element = xml_document.createElement("informations");
+ root.appendChild(informations_element);
+ informations_element.appendChild(xml_document.createTextNode(informations()));
+
QDomElement description = xml_document.createElement("description");
// description de l'element
foreach(QGraphicsItem *qgi, zItems(true)) {
@@ -888,6 +893,50 @@
}
/**
+ Lance un dialogue pour editer les informations complementaires de cet
+ element. Concretement, ce champ libre est destine a accueillir des informations
+ sur l'auteur de l'element, sa licence, etc.
+*/
+void ElementScene::slot_editAuthorInformations() {
+
+ // cree un dialogue
+ QDialog dialog_author(element_editor);
+ dialog_author.setModal(true);
+#ifdef Q_WS_MAC
+ dialog_author.setWindowFlags(Qt::Sheet);
+#endif
+ dialog_author.setMinimumSize(400, 260);
+ dialog_author.setWindowTitle(tr("\311diter les informations sur l'auteur", "window title"));
+ QVBoxLayout *dialog_layout = new QVBoxLayout(&dialog_author);
+
+ // ajoute un champ explicatif au dialogue
+ QLabel *information_label = new QLabel(tr("Vous pouvez utiliser ce champ libre pour mentionner les auteurs de l'\351l\351ment, sa licence, ou tout autre renseignement que vous jugerez utile."));
+ information_label -> setAlignment(Qt::AlignJustify | Qt::AlignVCenter);
+ information_label -> setWordWrap(true);
+ dialog_layout -> addWidget(information_label);
+
+ // ajoute un QTextEdit au dialogue
+ QTextEdit *text_field = new QTextEdit();
+ text_field -> setAcceptRichText(false);
+ text_field -> setPlainText(informations());
+ dialog_layout -> addWidget(text_field);
+
+ // ajoute deux boutons au dialogue
+ QDialogButtonBox *dialog_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ dialog_layout -> addWidget(dialog_buttons);
+ connect(dialog_buttons, SIGNAL(accepted()), &dialog_author, SLOT(accept()));
+ connect(dialog_buttons, SIGNAL(rejected()), &dialog_author, SLOT(reject()));
+
+ // lance le dialogue
+ if (dialog_author.exec() == QDialog::Accepted) {
+ QString new_infos = text_field -> toPlainText();
+ if (new_infos != informations()) {
+ undoStack().push(new ChangeInformationsCommand(this, informations(), new_infos));
+ }
+ }
+}
+
+/**
Lance un dialogue pour editer les noms de cet element
*/
void ElementScene::slot_editNames() {
@@ -1044,7 +1093,7 @@
/**
Applique les informations (dimensions, hostpot, orientations, connexions
- internes et noms) contenu dans un document XML.
+ internes, noms et informations complementaires) contenu dans un document XML.
@param xml_document Document XML a analyser
@param error_message pointeur vers une QString ; si error_message est
different de 0, un message d'erreur sera stocke dedans si necessaire
@@ -1093,6 +1142,16 @@
// extrait les noms de la definition XML
_names.fromXml(root);
+ // extrait les informations complementaires
+ for (QDomNode node = root.firstChild() ; !node.isNull() ; node = node.nextSibling()) {
+ QDomElement elmt = node.toElement();
+ if (elmt.isNull()) continue;
+ if (elmt.tagName() == "informations") {
+ setInformations(elmt.text());
+ break;
+ }
+ }
+
return(true);
}
Modified: trunk/sources/editor/elementscene.h
===================================================================
--- trunk/sources/editor/elementscene.h 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/editor/elementscene.h 2010-02-07 17:07:22 UTC (rev 845)
@@ -64,6 +64,8 @@
OrientationSet ori;
/// booleen indiquant si les bornes de l'element peuvent etre reliees a des bornes de ce meme element
bool internal_connections;
+ /// Chaine contenant les informations complementaires de l'element
+ QString informations_;
/// Gestionnaire de QGraphicsItem
QGIManager qgi_manager;
/// Pile des actions annulables
@@ -114,6 +116,8 @@
void setOrientations(const OrientationSet &);
bool internalConnections();
void setInternalConnections(bool);
+ QString informations() const;
+ void setInformations(const QString &);
virtual int xGrid() const;
virtual int yGrid() const;
virtual void setGrid(int, int);
@@ -175,6 +179,7 @@
void slot_editSizeHotSpot();
void slot_editNames();
void slot_editOrientations();
+ void slot_editAuthorInformations();
void slot_bringForward();
void slot_raise();
void slot_lower();
@@ -284,4 +289,18 @@
internal_connections = ic;
}
+/**
+ @return les informations complementaires de cet element
+*/
+inline QString ElementScene::informations() const {
+ return(informations_);
+}
+
+/**
+ @param infos les nouvelles informations complementaires de cet element
+*/
+inline void ElementScene::setInformations(const QString &infos) {
+ informations_ = infos;
+}
+
#endif
Modified: trunk/sources/editor/qetelementeditor.cpp
===================================================================
--- trunk/sources/editor/qetelementeditor.cpp 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/editor/qetelementeditor.cpp 2010-02-07 17:07:22 UTC (rev 845)
@@ -96,6 +96,7 @@
edit_size_hs = new QAction(QET::Icons::HotSpot, tr("\311diter la taille et le point de saisie"), this);
edit_names = new QAction(QET::Icons::Names, tr("\311diter les noms"), this);
edit_ori = new QAction(QET::Icons::Orientations, tr("\311diter les orientations"), this);
+ edit_author = new QAction(QET::Icons::UserInformations, tr("\311diter les informations sur l'auteur"), this);
edit_raise = new QAction(QET::Icons::Raise, tr("Rapprocher"), this);
edit_lower = new QAction(QET::Icons::Lower, tr("\311loigner"), this);
edit_backward = new QAction(QET::Icons::SendBackward, tr("Envoyer au fond"), this);
@@ -167,6 +168,7 @@
edit_names -> setShortcut(QKeySequence(tr("Ctrl+E")));
edit_size_hs -> setShortcut(QKeySequence(tr("Ctrl+R")));
edit_ori -> setShortcut(QKeySequence(tr("Ctrl+T")));
+ edit_author -> setShortcut(tr("Ctrl+Y"));
edit_raise -> setShortcut(QKeySequence(tr("Ctrl+Shift+Up")));
edit_lower -> setShortcut(QKeySequence(tr("Ctrl+Shift+Down")));
@@ -202,6 +204,7 @@
connect(fullscreen, SIGNAL(triggered()), this, SLOT(toggleFullScreen()));
connect(configure, SIGNAL(triggered()), qet_app, SLOT(configureQET()));
connect(edit_ori, SIGNAL(triggered()), ce_scene, SLOT(slot_editOrientations()));
+ connect(edit_author, SIGNAL(triggered()), ce_scene, SLOT(slot_editAuthorInformations()));
connect(edit_forward, SIGNAL(triggered()), ce_scene, SLOT(slot_bringForward()));
connect(edit_raise, SIGNAL(triggered()), ce_scene, SLOT(slot_raise()));
connect(edit_lower, SIGNAL(triggered()), ce_scene, SLOT(slot_lower()));
@@ -368,6 +371,7 @@
edit_menu -> addAction(edit_names);
edit_menu -> addAction(edit_size_hs);
edit_menu -> addAction(edit_ori);
+ edit_menu -> addAction(edit_author);
edit_menu -> addSeparator();
edit_menu -> addAction(edit_forward);
edit_menu -> addAction(edit_raise);
@@ -417,6 +421,7 @@
edit_size_hs -> setEnabled(!read_only);
edit_names -> setEnabled(!read_only);
edit_ori -> setEnabled(!read_only);
+ edit_author -> setEnabled(!read_only);
parts_list -> setEnabled(!read_only);
// actions dependant de la presence de parties selectionnees
Modified: trunk/sources/editor/qetelementeditor.h
===================================================================
--- trunk/sources/editor/qetelementeditor.h 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/editor/qetelementeditor.h 2010-02-07 17:07:22 UTC (rev 845)
@@ -68,7 +68,7 @@
QAction *selectall, *deselectall, *inv_select;
QAction *cut, *copy, *paste, *paste_in_area, *paste_from_file, *paste_from_elmt;
QAction *undo, *redo;
- QAction *edit_delete, *edit_size_hs, *edit_names, *edit_ori;
+ QAction *edit_delete, *edit_size_hs, *edit_names, *edit_ori, *edit_author;
QAction *edit_raise, *edit_lower, *edit_backward, *edit_forward;
/// actions du menu affichage
QAction *zoom_in, *zoom_out, *zoom_fit, *zoom_reset;
Modified: trunk/sources/qeticons.cpp
===================================================================
--- trunk/sources/qeticons.cpp 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/qeticons.cpp 2010-02-07 17:07:22 UTC (rev 845)
@@ -126,6 +126,7 @@
QIcon South;
QIcon Start;
QIcon Terminal;
+ QIcon UserInformations;
QIcon ViewFitWidth;
QIcon ViewFitWindow;
QIcon ViewMove;
@@ -297,6 +298,8 @@
South .addFile(":/ico/16x16/south.png");
Start .addFile(":/ico/22x22/start.png");
Terminal .addFile(":/ico/22x22/terminal.png");
+ UserInformations .addFile(":/ico/16x16/preferences-desktop-user.png");
+ UserInformations .addFile(":/ico/22x22/preferences-desktop-user.png");
ViewFitWidth .addFile(":/ico/22x22/view_fit_width.png");
ViewFitWindow .addFile(":/ico/22x22/view_fit_window.png");
ViewMove .addFile(":/ico/22x22/move.png");
Modified: trunk/sources/qeticons.h
===================================================================
--- trunk/sources/qeticons.h 2010-01-21 22:41:40 UTC (rev 844)
+++ trunk/sources/qeticons.h 2010-02-07 17:07:22 UTC (rev 845)
@@ -136,6 +136,7 @@
extern QIcon South;
extern QIcon Start;
extern QIcon Terminal;
+ extern QIcon UserInformations;
extern QIcon ViewFitWidth;
extern QIcon ViewFitWindow;
extern QIcon ViewMove;