[qet] [3930] Create a common widget to edit propertie |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 3930
Author: blacksun
Date: 2015-05-03 00:25:01 +0200 (Sun, 03 May 2015)
Log Message:
-----------
Create a common widget to edit propertie
Modified Paths:
--------------
trunk/sources/qetgraphicsitem/element.cpp
trunk/sources/ui/elementinfowidget.cpp
trunk/sources/ui/elementinfowidget.h
trunk/sources/ui/masterpropertieswidget.cpp
trunk/sources/ui/masterpropertieswidget.h
Added Paths:
-----------
trunk/sources/ui/elementpropertiesdialog.cpp
trunk/sources/ui/elementpropertiesdialog.h
trunk/sources/ui/propertieseditorwidget.cpp
trunk/sources/ui/propertieseditorwidget.h
Removed Paths:
-------------
trunk/sources/ui/elementpropertieswidget.cpp
trunk/sources/ui/elementpropertieswidget.h
Modified: trunk/sources/qetgraphicsitem/element.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/element.cpp 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/qetgraphicsitem/element.cpp 2015-05-02 22:25:01 UTC (rev 3930)
@@ -22,7 +22,7 @@
#include "elementtextitem.h"
#include "diagramcommands.h"
#include <QtDebug>
-#include <ui/elementpropertieswidget.h>
+#include <elementpropertiesdialog.h>
#include "elementprovider.h"
#include "diagramposition.h"
#include "terminal.h"
@@ -51,7 +51,7 @@
void Element::editProperty() {
if (diagram())
if(!diagram()->isReadOnly()){
- elementpropertieswidget epw (this, diagram()->views().first());
+ ElementPropertiesDialog epw (this, diagram()->views().first());
connect(&epw, SIGNAL(editElementRequired(ElementsLocation)), diagram(), SIGNAL(editElementRequired(ElementsLocation)));
connect(&epw, SIGNAL(findElementRequired(ElementsLocation)), diagram(), SIGNAL(findElementRequired(ElementsLocation)));
epw.exec();
Modified: trunk/sources/ui/elementinfowidget.cpp
===================================================================
--- trunk/sources/ui/elementinfowidget.cpp 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/ui/elementinfowidget.cpp 2015-05-02 22:25:01 UTC (rev 3930)
@@ -30,7 +30,7 @@
* @param parent parent widget
*/
ElementInfoWidget::ElementInfoWidget(Element *elmt, QWidget *parent) :
- QWidget(parent),
+ PropertiesEditorWidget(parent),
ui(new Ui::ElementInfoWidget),
element_(elmt),
elmt_info(elmt->elementInformations()),
@@ -55,14 +55,11 @@
* @brief ElementInfoWidget::apply
* Apply the new information with a new undo command (got with method associatedUndo)
* pushed to the stack of element project.
- * Return true if new info change, else false.
*/
-bool ElementInfoWidget::apply() {
- if (QUndoCommand *undo = associatedUndo()) {
+void ElementInfoWidget::apply()
+{
+ if (QUndoCommand *undo = associatedUndo())
element_ -> diagram() -> undoStack().push(undo);
- return true;
- }
- return false;
}
/**
Modified: trunk/sources/ui/elementinfowidget.h
===================================================================
--- trunk/sources/ui/elementinfowidget.h 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/ui/elementinfowidget.h 2015-05-02 22:25:01 UTC (rev 3930)
@@ -20,6 +20,7 @@
#include <QWidget>
#include "diagramcontext.h"
+#include "propertieseditorwidget.h"
class Element;
class QUndoCommand;
@@ -34,7 +35,8 @@
* @brief The ElementInfoWidget class
* this class is a widget to edit an element informations.
*/
-class ElementInfoWidget : public QWidget {
+class ElementInfoWidget : public PropertiesEditorWidget
+{
Q_OBJECT
//METHODS
@@ -42,7 +44,7 @@
explicit ElementInfoWidget(Element *elmt, QWidget *parent = 0);
~ElementInfoWidget();
- bool apply();
+ void apply();
QUndoCommand* associatedUndo () const;
protected:
Added: trunk/sources/ui/elementpropertiesdialog.cpp
===================================================================
--- trunk/sources/ui/elementpropertiesdialog.cpp (rev 0)
+++ trunk/sources/ui/elementpropertiesdialog.cpp 2015-05-02 22:25:01 UTC (rev 3930)
@@ -0,0 +1,227 @@
+/*
+ Copyright 2006-2015 The QElectroTech Team
+ This file is part of QElectroTech.
+
+ QElectroTech is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ QElectroTech is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "elementpropertiesdialog.h"
+#include "ghostelement.h"
+#include "qeticons.h"
+#include "diagramposition.h"
+#include "diagram.h"
+#include "elementinfowidget.h"
+#include "masterpropertieswidget.h"
+#include "linksingleelementwidget.h"
+
+/**
+ * @brief ElementPropertiesDialog::ElementPropertiesDialog
+ * default constructor
+ * @param elmt
+ * @param parent
+ */
+ElementPropertiesDialog::ElementPropertiesDialog(Element *elmt, QWidget *parent) :
+ QDialog(parent),
+ element_ (elmt),
+ diagram_ (elmt->diagram())
+{
+ eiw_ = 0;
+ mpw_ = 0;
+ lsew_ = 0;
+ buildInterface();
+}
+
+/**
+ * @brief ElementPropertiesDialog::generalWidget
+ * build the widget for the tab général
+ * @return
+ */
+QWidget* ElementPropertiesDialog::generalWidget() {
+ CustomElement *custom_element = qobject_cast<CustomElement *>(element_);
+ GhostElement *ghost_element = qobject_cast<GhostElement *>(element_);
+
+ // type de l'element
+ QString description_string;
+ if (ghost_element) {
+ description_string += tr("Élément manquant");
+ } else {
+ description_string += tr("Élément");
+ }
+ description_string += "\n";
+
+ // some element characteristic
+ description_string += QString(tr("Nom : %1\n")).arg(element_ -> name());
+ int folio_index = diagram_ -> folioIndex();
+ if (folio_index != -1) {
+ description_string += QString(tr("Folio : %1\n")).arg(folio_index + 1);
+ }
+ description_string += QString(tr("Position : %1\n")).arg(diagram_ -> convertPosition(element_ -> scenePos()).toString());
+ description_string += QString(tr("Dimensions : %1*%2\n")).arg(element_ -> size().width()).arg(element_ -> size().height());
+ description_string += QString(tr("Bornes : %1\n")).arg(element_ -> terminals().count());
+ description_string += QString(tr("Champs de texte : %1\n")).arg(element_ -> texts().count());
+
+ if (custom_element) {
+ description_string += QString(tr("Emplacement : %1\n")).arg(custom_element -> location().toString());
+ }
+
+ // widget himself
+ QWidget *general_widget = new QWidget (tab_);
+ QVBoxLayout *vlayout_ = new QVBoxLayout (general_widget);
+ general_widget -> setLayout(vlayout_);
+
+ //widget for the text
+ vlayout_->addWidget(new QLabel (description_string, general_widget));
+
+ //widget for the pixmap
+ QLabel *pix = new QLabel(general_widget);
+ pix->setPixmap(element_->pixmap());
+ vlayout_->addWidget(pix, 0, Qt::AlignHCenter);
+ vlayout_ -> addStretch();
+
+ //button widget
+ find_in_panel = new QPushButton(QET::Icons::ZoomDraw, tr("Retrouver dans le panel"), general_widget);
+ connect(find_in_panel, SIGNAL(clicked()), this, SLOT(findInPanel()));
+ edit_element = new QPushButton(QET::Icons::ElementEdit, tr("Éditer l'élément"), general_widget);
+ connect(edit_element, SIGNAL(clicked()), this, SLOT(editElement()));
+ QHBoxLayout *hlayout_ = new QHBoxLayout;
+ hlayout_->addWidget(find_in_panel);
+ hlayout_->addWidget(edit_element);
+
+ vlayout_->addLayout(hlayout_);
+ return general_widget;
+}
+
+/**
+ * @brief ElementPropertiesDialog::buildInterface
+ *build the interface of this dialog, the main tab can have
+ *different tab according to the edited element
+ */
+void ElementPropertiesDialog::buildInterface() {
+
+ setWindowTitle(tr("Propriétés de l'élément"));
+ tab_ = new QTabWidget(this);
+
+ //Add tab according to the element
+ switch (element_ -> linkType()) {
+ case Element::Simple:
+ eiw_ = new ElementInfoWidget(element_, this);
+ tab_ -> addTab(eiw_, tr("Information"));
+ break;
+ case Element::NextReport:
+ lsew_ = new LinkSingleElementWidget(element_, this);
+ tab_ -> addTab(lsew_, tr("Report de folio"));
+ break;
+ case Element::PreviousReport:
+ lsew_ = new LinkSingleElementWidget(element_, this);
+ tab_ -> addTab(lsew_, tr("Report de folio"));
+ break;
+ case Element::Master:
+ mpw_ = new MasterPropertiesWidget(element_, this);
+ tab_ -> addTab(mpw_, tr("Référence croisée (maitre)"));
+ eiw_ = new ElementInfoWidget(element_, this);
+ tab_ -> addTab(eiw_, tr("Informations"));
+ break;
+ case Element::Slave:
+ lsew_ = new LinkSingleElementWidget(element_, this);
+ tab_ -> addTab(lsew_, tr("Référence croisée (esclave)"));
+ break;
+ case Element::Terminale:
+ break;
+ default:
+ break;
+ }
+
+ tab_ -> addTab(generalWidget(), tr("Général"));
+
+ dbb = new QDialogButtonBox(QDialogButtonBox::Apply | QDialogButtonBox::Cancel | QDialogButtonBox::Reset,
+ Qt::Horizontal, this);
+ connect(dbb, SIGNAL(clicked(QAbstractButton*)), this, SLOT(standardButtonClicked(QAbstractButton*)));
+
+ QVBoxLayout *main_layout = new QVBoxLayout(this);
+ main_layout -> addWidget(tab_);
+ main_layout -> addWidget(dbb);
+ setLayout(main_layout);
+}
+
+/**
+ * @brief ElementPropertiesDialog::standardButtonClicked
+ * apply action when click in the dialog standard button box
+ * @param button
+ * the cliked button
+ */
+void ElementPropertiesDialog::standardButtonClicked(QAbstractButton *button) {
+ int answer = dbb -> buttonRole(button);
+ bool accept = false;
+
+ switch (answer) {
+ case QDialogButtonBox::ResetRole:
+ if (mpw_) mpw_->reset();
+ break;
+ case QDialogButtonBox::ApplyRole:
+ accept = true;
+ break;
+ case QDialogButtonBox::RejectRole:
+ this -> reject();
+ break;
+ default:
+ this -> reject();
+ break;
+ }
+
+ if (accept) {
+ QUndoCommand *a = nullptr;
+ QUndoCommand *b = nullptr;
+
+ if (eiw_) a = eiw_ -> associatedUndo();
+ if (mpw_) b = mpw_ -> associatedUndo();
+ if (lsew_) lsew_ -> apply();
+
+ //If two undo, we push it in a macro
+ if (a && b) {
+ QUndoStack &stack = element_ -> diagram() -> undoStack();
+ stack.beginMacro(a -> text() + " + " + b -> text());
+ stack.push(a);
+ stack.push(b);
+ stack.endMacro();
+ }
+ else {
+ if (a) element_ -> diagram() -> undoStack().push(a);
+ if (b) element_ -> diagram() -> undoStack().push(b);
+ }
+
+ this -> accept();
+ }
+}
+
+/**
+ * @brief ElementPropertiesDialog::findInPanel
+ * Slot
+ */
+void ElementPropertiesDialog::findInPanel() {
+ if (CustomElement *custom_element = qobject_cast<CustomElement *>(element_)) {
+ emit findElementRequired(custom_element->location());
+ }
+ reject();
+}
+
+/**
+ * @brief ElementPropertiesDialog::editElement
+ * Slot
+ */
+void ElementPropertiesDialog::editElement() {
+ if (CustomElement *custom_element = qobject_cast<CustomElement *>(element_)) {
+ emit findElementRequired(custom_element->location());
+ emit editElementRequired(custom_element->location());
+ }
+ reject();
+}
Added: trunk/sources/ui/elementpropertiesdialog.h
===================================================================
--- trunk/sources/ui/elementpropertiesdialog.h (rev 0)
+++ trunk/sources/ui/elementpropertiesdialog.h 2015-05-02 22:25:01 UTC (rev 3930)
@@ -0,0 +1,66 @@
+/*
+ Copyright 2006-2015 The QElectroTech Team
+ This file is part of QElectroTech.
+
+ QElectroTech is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ QElectroTech is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef ELEMENTPROPERTIESWIDGET_H
+#define ELEMENTPROPERTIESWIDGET_H
+
+#include <QDialog>
+
+class Diagram;
+class Element;
+class ElementsLocation;
+class ElementInfoWidget;
+class MasterPropertiesWidget;
+class LinkSingleElementWidget;
+class QAbstractButton;
+class QDialogButtonBox;
+class QTabWidget;
+
+class ElementPropertiesDialog : public QDialog {
+ Q_OBJECT
+
+ public:
+ explicit ElementPropertiesDialog(Element *elmt, QWidget *parent = 0);
+
+ private:
+ QWidget* generalWidget();
+ void buildInterface();
+
+ signals:
+ /// Signal emitted when users wish to locate an element from the diagram within elements collection
+ void findElementRequired(const ElementsLocation &);
+ /// Signal emitted when users wish to edit an element from the diagram
+ void editElementRequired(const ElementsLocation &);
+
+ public slots:
+ void standardButtonClicked (QAbstractButton *);
+ void findInPanel ();
+ void editElement ();
+
+ private:
+ Element *element_;
+ Diagram *diagram_;
+ QTabWidget *tab_;
+ QPushButton *find_in_panel,
+ *edit_element;
+ QDialogButtonBox *dbb;
+ ElementInfoWidget *eiw_;
+ MasterPropertiesWidget *mpw_;
+ LinkSingleElementWidget *lsew_;
+};
+
+#endif // ELEMENTPROPERTIESWIDGET_H
Deleted: trunk/sources/ui/elementpropertieswidget.cpp
===================================================================
--- trunk/sources/ui/elementpropertieswidget.cpp 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/ui/elementpropertieswidget.cpp 2015-05-02 22:25:01 UTC (rev 3930)
@@ -1,227 +0,0 @@
-/*
- Copyright 2006-2015 The QElectroTech Team
- This file is part of QElectroTech.
-
- QElectroTech is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- QElectroTech is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "elementpropertieswidget.h"
-#include "ghostelement.h"
-#include "qeticons.h"
-#include "diagramposition.h"
-#include "diagram.h"
-#include "elementinfowidget.h"
-#include "masterpropertieswidget.h"
-#include "linksingleelementwidget.h"
-
-/**
- * @brief elementpropertieswidget::elementpropertieswidget
- * default constructor
- * @param elmt
- * @param parent
- */
-elementpropertieswidget::elementpropertieswidget(Element *elmt, QWidget *parent) :
- QDialog(parent),
- element_ (elmt),
- diagram_ (elmt->diagram())
-{
- eiw_ = 0;
- mpw_ = 0;
- lsew_ = 0;
- buildInterface();
-}
-
-/**
- * @brief elementpropertieswidget::generalWidget
- * build the widget for the tab général
- * @return
- */
-QWidget* elementpropertieswidget::generalWidget() {
- CustomElement *custom_element = qobject_cast<CustomElement *>(element_);
- GhostElement *ghost_element = qobject_cast<GhostElement *>(element_);
-
- // type de l'element
- QString description_string;
- if (ghost_element) {
- description_string += tr("Élément manquant");
- } else {
- description_string += tr("Élément");
- }
- description_string += "\n";
-
- // some element characteristic
- description_string += QString(tr("Nom : %1\n")).arg(element_ -> name());
- int folio_index = diagram_ -> folioIndex();
- if (folio_index != -1) {
- description_string += QString(tr("Folio : %1\n")).arg(folio_index + 1);
- }
- description_string += QString(tr("Position : %1\n")).arg(diagram_ -> convertPosition(element_ -> scenePos()).toString());
- description_string += QString(tr("Dimensions : %1*%2\n")).arg(element_ -> size().width()).arg(element_ -> size().height());
- description_string += QString(tr("Bornes : %1\n")).arg(element_ -> terminals().count());
- description_string += QString(tr("Champs de texte : %1\n")).arg(element_ -> texts().count());
-
- if (custom_element) {
- description_string += QString(tr("Emplacement : %1\n")).arg(custom_element -> location().toString());
- }
-
- // widget himself
- QWidget *general_widget = new QWidget (tab_);
- QVBoxLayout *vlayout_ = new QVBoxLayout (general_widget);
- general_widget -> setLayout(vlayout_);
-
- //widget for the text
- vlayout_->addWidget(new QLabel (description_string, general_widget));
-
- //widget for the pixmap
- QLabel *pix = new QLabel(general_widget);
- pix->setPixmap(element_->pixmap());
- vlayout_->addWidget(pix, 0, Qt::AlignHCenter);
- vlayout_ -> addStretch();
-
- //button widget
- find_in_panel = new QPushButton(QET::Icons::ZoomDraw, tr("Retrouver dans le panel"), general_widget);
- connect(find_in_panel, SIGNAL(clicked()), this, SLOT(findInPanel()));
- edit_element = new QPushButton(QET::Icons::ElementEdit, tr("Éditer l'élément"), general_widget);
- connect(edit_element, SIGNAL(clicked()), this, SLOT(editElement()));
- QHBoxLayout *hlayout_ = new QHBoxLayout;
- hlayout_->addWidget(find_in_panel);
- hlayout_->addWidget(edit_element);
-
- vlayout_->addLayout(hlayout_);
- return general_widget;
-}
-
-/**
- * @brief elementpropertieswidget::buildInterface
- *build the interface of this dialog, the main tab can have
- *different tab according to the edited element
- */
-void elementpropertieswidget::buildInterface() {
-
- setWindowTitle(tr("Propriétés de l'élément"));
- tab_ = new QTabWidget(this);
-
- //Add tab according to the element
- switch (element_ -> linkType()) {
- case Element::Simple:
- eiw_ = new ElementInfoWidget(element_, this);
- tab_ -> addTab(eiw_, tr("Information"));
- break;
- case Element::NextReport:
- lsew_ = new LinkSingleElementWidget(element_, this);
- tab_ -> addTab(lsew_, tr("Report de folio"));
- break;
- case Element::PreviousReport:
- lsew_ = new LinkSingleElementWidget(element_, this);
- tab_ -> addTab(lsew_, tr("Report de folio"));
- break;
- case Element::Master:
- mpw_ = new MasterPropertiesWidget(element_, this);
- tab_ -> addTab(mpw_, tr("Référence croisée (maitre)"));
- eiw_ = new ElementInfoWidget(element_, this);
- tab_ -> addTab(eiw_, tr("Informations"));
- break;
- case Element::Slave:
- lsew_ = new LinkSingleElementWidget(element_, this);
- tab_ -> addTab(lsew_, tr("Référence croisée (esclave)"));
- break;
- case Element::Terminale:
- break;
- default:
- break;
- }
-
- tab_ -> addTab(generalWidget(), tr("Général"));
-
- dbb = new QDialogButtonBox(QDialogButtonBox::Apply | QDialogButtonBox::Cancel | QDialogButtonBox::Reset,
- Qt::Horizontal, this);
- connect(dbb, SIGNAL(clicked(QAbstractButton*)), this, SLOT(standardButtonClicked(QAbstractButton*)));
-
- QVBoxLayout *main_layout = new QVBoxLayout(this);
- main_layout -> addWidget(tab_);
- main_layout -> addWidget(dbb);
- setLayout(main_layout);
-}
-
-/**
- * @brief elementpropertieswidget::standardButtonClicked
- * apply action when click in the dialog standard button box
- * @param button
- * the cliked button
- */
-void elementpropertieswidget::standardButtonClicked(QAbstractButton *button) {
- int answer = dbb -> buttonRole(button);
- bool accept = false;
-
- switch (answer) {
- case QDialogButtonBox::ResetRole:
- if (mpw_) mpw_->reset();
- break;
- case QDialogButtonBox::ApplyRole:
- accept = true;
- break;
- case QDialogButtonBox::RejectRole:
- this -> reject();
- break;
- default:
- this -> reject();
- break;
- }
-
- if (accept) {
- QUndoCommand *a = nullptr;
- QUndoCommand *b = nullptr;
-
- if (eiw_) a = eiw_ -> associatedUndo();
- if (mpw_) b = mpw_ -> associatedUndo();
- if (lsew_) lsew_ -> apply();
-
- //If two undo, we push it in a macro
- if (a && b) {
- QUndoStack &stack = element_ -> diagram() -> undoStack();
- stack.beginMacro(a -> text() + " + " + b -> text());
- stack.push(a);
- stack.push(b);
- stack.endMacro();
- }
- else {
- if (a) element_ -> diagram() -> undoStack().push(a);
- if (b) element_ -> diagram() -> undoStack().push(b);
- }
-
- this -> accept();
- }
-}
-
-/**
- * @brief elementpropertieswidget::findInPanel
- * Slot
- */
-void elementpropertieswidget::findInPanel() {
- if (CustomElement *custom_element = qobject_cast<CustomElement *>(element_)) {
- emit findElementRequired(custom_element->location());
- }
- reject();
-}
-
-/**
- * @brief elementpropertieswidget::editElement
- * Slot
- */
-void elementpropertieswidget::editElement() {
- if (CustomElement *custom_element = qobject_cast<CustomElement *>(element_)) {
- emit findElementRequired(custom_element->location());
- emit editElementRequired(custom_element->location());
- }
- reject();
-}
Deleted: trunk/sources/ui/elementpropertieswidget.h
===================================================================
--- trunk/sources/ui/elementpropertieswidget.h 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/ui/elementpropertieswidget.h 2015-05-02 22:25:01 UTC (rev 3930)
@@ -1,66 +0,0 @@
-/*
- Copyright 2006-2015 The QElectroTech Team
- This file is part of QElectroTech.
-
- QElectroTech is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- QElectroTech is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
-*/
-#ifndef ELEMENTPROPERTIESWIDGET_H
-#define ELEMENTPROPERTIESWIDGET_H
-
-#include <QDialog>
-
-class Diagram;
-class Element;
-class ElementsLocation;
-class ElementInfoWidget;
-class MasterPropertiesWidget;
-class LinkSingleElementWidget;
-class QAbstractButton;
-class QDialogButtonBox;
-class QTabWidget;
-
-class elementpropertieswidget : public QDialog {
- Q_OBJECT
-
- public:
- explicit elementpropertieswidget(Element *elmt, QWidget *parent = 0);
-
- private:
- QWidget* generalWidget();
- void buildInterface();
-
- signals:
- /// Signal emitted when users wish to locate an element from the diagram within elements collection
- void findElementRequired(const ElementsLocation &);
- /// Signal emitted when users wish to edit an element from the diagram
- void editElementRequired(const ElementsLocation &);
-
- public slots:
- void standardButtonClicked (QAbstractButton *);
- void findInPanel ();
- void editElement ();
-
- private:
- Element *element_;
- Diagram *diagram_;
- QTabWidget *tab_;
- QPushButton *find_in_panel,
- *edit_element;
- QDialogButtonBox *dbb;
- ElementInfoWidget *eiw_;
- MasterPropertiesWidget *mpw_;
- LinkSingleElementWidget *lsew_;
-};
-
-#endif // ELEMENTPROPERTIESWIDGET_H
Modified: trunk/sources/ui/masterpropertieswidget.cpp
===================================================================
--- trunk/sources/ui/masterpropertieswidget.cpp 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/ui/masterpropertieswidget.cpp 2015-05-02 22:25:01 UTC (rev 3930)
@@ -31,7 +31,7 @@
* @param parent
*/
MasterPropertiesWidget::MasterPropertiesWidget(Element *elmt, QWidget *parent) :
- QWidget(parent),
+ PropertiesEditorWidget(parent),
ui(new Ui::MasterPropertiesWidget),
element_(elmt)
{
@@ -58,12 +58,9 @@
* pushed to the stack of element project.
* Return true if link change, else false
*/
-bool MasterPropertiesWidget::apply() {
- if (QUndoCommand *undo = associatedUndo()) {
+void MasterPropertiesWidget::apply() {
+ if (QUndoCommand *undo = associatedUndo())
element_ -> diagram() -> undoStack().push(undo);
- return true;
- }
- return false;
}
/**
Modified: trunk/sources/ui/masterpropertieswidget.h
===================================================================
--- trunk/sources/ui/masterpropertieswidget.h 2015-04-29 16:00:33 UTC (rev 3929)
+++ trunk/sources/ui/masterpropertieswidget.h 2015-05-02 22:25:01 UTC (rev 3930)
@@ -20,6 +20,7 @@
#include <QWidget>
#include <QHash>
+#include <propertieseditorwidget.h>
class QListWidgetItem;
class Element;
@@ -35,7 +36,7 @@
* This class embenddedthe undo/redo command when apply new connection.
*/
-class MasterPropertiesWidget : public QWidget
+class MasterPropertiesWidget : public PropertiesEditorWidget
{
Q_OBJECT
@@ -43,7 +44,7 @@
explicit MasterPropertiesWidget(Element *elmt, QWidget *parent = 0);
~MasterPropertiesWidget();
- bool apply();
+ void apply();
void reset();
QUndoCommand* associatedUndo() const;
Added: trunk/sources/ui/propertieseditorwidget.cpp
===================================================================
--- trunk/sources/ui/propertieseditorwidget.cpp (rev 0)
+++ trunk/sources/ui/propertieseditorwidget.cpp 2015-05-02 22:25:01 UTC (rev 3930)
@@ -0,0 +1,37 @@
+/*
+ Copyright 2006-2015 The QElectroTech Team
+ This file is part of QElectroTech.
+
+ QElectroTech is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ QElectroTech is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "propertieseditorwidget.h"
+#include <QUndoCommand>
+
+/**
+ * @brief PropertiesEditorWidget::PropertiesEditorWidget
+ * Constructor
+ * @param parent : parent widget
+ */
+PropertiesEditorWidget::PropertiesEditorWidget(QWidget *parent) :
+ QWidget(parent)
+{}
+
+/**
+ * @brief PropertiesEditorWidget::assosiatedUndo
+ * By default, return an empty undo command
+ * @return an empty undo command
+ */
+QUndoCommand *PropertiesEditorWidget::assosiatedUndo() {
+ return new QUndoCommand();
+}
Added: trunk/sources/ui/propertieseditorwidget.h
===================================================================
--- trunk/sources/ui/propertieseditorwidget.h (rev 0)
+++ trunk/sources/ui/propertieseditorwidget.h 2015-05-02 22:25:01 UTC (rev 3930)
@@ -0,0 +1,41 @@
+/*
+ Copyright 2006-2015 The QElectroTech Team
+ This file is part of QElectroTech.
+
+ QElectroTech is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ QElectroTech is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef PROPERTIESEDITORWIDGET_H
+#define PROPERTIESEDITORWIDGET_H
+
+#include <QWidget>
+
+class QUndoCommand;
+
+/**
+ * @brief The PropertiesEditorWidget class
+ * This class extend QWidget method for have common way
+ * to edit propertie.
+ */
+class PropertiesEditorWidget : public QWidget
+{
+ Q_OBJECT
+ public:
+ explicit PropertiesEditorWidget(QWidget *parent = 0);
+
+ void apply() {}
+ void reset() {}
+ virtual QUndoCommand *assosiatedUndo ();
+};
+
+#endif // PROPERTIESEDITORWIDGET_H