[qet] [3222] Diagram properties dialog: the dialog is not built in DiagramView anymore, but a class itself

[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]


Revision: 3222
Author:   blacksun
Date:     2014-07-19 13:42:16 +0200 (Sat, 19 Jul 2014)
Log Message:
-----------
Diagram properties dialog: the dialog is not built in DiagramView anymore, but a class itself

Modified Paths:
--------------
    trunk/sources/diagramview.cpp

Added Paths:
-----------
    trunk/sources/ui/diagrampropertiesdialog.cpp
    trunk/sources/ui/diagrampropertiesdialog.h

Modified: trunk/sources/diagramview.cpp
===================================================================
--- trunk/sources/diagramview.cpp	2014-07-18 14:24:06 UTC (rev 3221)
+++ trunk/sources/diagramview.cpp	2014-07-19 11:42:16 UTC (rev 3222)
@@ -27,7 +27,6 @@
 #include "qetgraphicsitem/elementtextitem.h"
 #include "qetgraphicsitem/independenttextitem.h"
 #include "qetgraphicsitem/diagramimageitem.h"
-#include "titleblockpropertieswidget.h"
 #include "templatelocation.h"
 #include "qetapp.h"
 #include "qetproject.h"
@@ -42,7 +41,7 @@
 #include <QGraphicsPixmapItem>
 #include <QGraphicsSceneMouseEvent>
 #include "factory/elementfactory.h"
-#include "ui/borderpropertieswidget.h"
+#include "diagrampropertiesdialog.h"
 
 
 /**
@@ -625,83 +624,11 @@
 }
 
 /**
-	Edite les informations du schema.
-*/
+ * @brief DiagramView::editDiagramProperties
+ * Edit the properties of the viewed digram
+ */
 void DiagramView::editDiagramProperties() {
-	bool diagram_is_read_only = scene -> isReadOnly();
-	
-	// recupere le cartouche et les dimensions du schema
-	TitleBlockProperties  titleblock  = scene -> border_and_titleblock.exportTitleBlock();
-	BorderProperties border = scene -> border_and_titleblock.exportBorder();
-	ConductorProperties conductors = scene -> defaultConductorProperties;
-	
-	// construit le dialogue
-	QDialog popup(diagramEditor());
-	popup.setWindowModality(Qt::WindowModal);
-#ifdef Q_WS_MAC
-	popup.setWindowFlags(Qt::Sheet);
-#endif
-	
-	popup.setWindowTitle(tr("Propri\351t\351s du sch\351ma", "window title"));
-	
-	BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, &popup);
-	border_infos -> setReadOnly(diagram_is_read_only);
-	
-	TitleBlockPropertiesWidget  *titleblock_infos;
-	if (QETProject *parent_project = scene -> project()) {
-		titleblock_infos  = new TitleBlockPropertiesWidget(parent_project -> embeddedTitleBlockTemplatesCollection(), titleblock, false, &popup);
-		connect(titleblock_infos, SIGNAL(editTitleBlockTemplate(QString, bool)), this, SIGNAL(editTitleBlockTemplate(QString, bool)));
-	}
-	else
-		titleblock_infos = new TitleBlockPropertiesWidget(titleblock, false, &popup);
-
-	titleblock_infos -> setReadOnly(diagram_is_read_only);
-	
-	ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(conductors);
-	cpw -> setReadOnly(diagram_is_read_only);
-	
-	// boutons
-	QDialogButtonBox boutons(diagram_is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
-	connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept()));
-	connect(&boutons, SIGNAL(rejected()), &popup, SLOT(reject()));
-	
-	QGridLayout glayout(&popup);
-	glayout.addWidget(border_infos,0,0);
-	glayout.addWidget(titleblock_infos, 1, 0);
-	glayout.addWidget(cpw, 0, 1, 0 ,1, Qt::AlignTop);
-	glayout.addWidget(&boutons, 2, 1);
-
-	// if dialog is accepted
-	if (popup.exec() == QDialog::Accepted && !diagram_is_read_only) {
-		TitleBlockProperties new_titleblock   = titleblock_infos  -> properties();
-		BorderProperties new_border = border_infos -> properties();
-		ConductorProperties new_conductors = cpw -> properties();
-		
-		bool adjust_scene = false;
-		
-		// s'il y a des modifications au cartouche
-		if (new_titleblock != titleblock) {
-			scene -> undoStack().push(new ChangeTitleBlockCommand(scene, titleblock, new_titleblock));
-			adjust_scene = true;
-		}
-		
-		// s'il y a des modifications aux dimensions du schema
-		if (new_border != border) {
-			scene -> undoStack().push(new ChangeBorderCommand(scene, border, new_border));
-			adjust_scene = true;
-		}
-		
-		// if modifcations have been made to the conductors properties
-		if (new_conductors != conductors) {
-			/// TODO implement an undo command to allow the user to undo/redo this action
-			scene -> defaultConductorProperties = new_conductors;
-		}
-		// adjustSceneRect shall be called whenever the user accepts the dialog
-		// even if no changes have been made.
-		// Added so that diagram refreshes after back-ground color change.
-		//if (adjust_scene)
-			adjustSceneRect();
-	}
+	DiagramPropertiesDialog::diagramPropertiesDialog(scene, diagramEditor());
 }
 
 /**

Added: trunk/sources/ui/diagrampropertiesdialog.cpp
===================================================================
--- trunk/sources/ui/diagrampropertiesdialog.cpp	                        (rev 0)
+++ trunk/sources/ui/diagrampropertiesdialog.cpp	2014-07-19 11:42:16 UTC (rev 3222)
@@ -0,0 +1,108 @@
+/*
+	Copyright 2006-2014 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 "diagrampropertiesdialog.h"
+#include "borderpropertieswidget.h"
+#include "titleblockpropertieswidget.h"
+#include "conductorpropertieswidget.h"
+#include "diagramcommands.h"
+
+/**
+ * @brief DiagramPropertiesDialog::DiagramPropertiesDialog
+ * Deafult constructor
+ * @param diagram : diagram to edit properties
+ * @param parent : parent widget
+ */
+DiagramPropertiesDialog::DiagramPropertiesDialog(Diagram *diagram, QWidget *parent) :
+	QDialog (parent)
+{
+	bool diagram_is_read_only = diagram -> isReadOnly();
+
+	// Get some properties of edited diagram
+	TitleBlockProperties titleblock = diagram -> border_and_titleblock.exportTitleBlock();
+	BorderProperties     border     = diagram -> border_and_titleblock.exportBorder();
+	ConductorProperties  conductors = diagram -> defaultConductorProperties;
+
+	setWindowModality(Qt::WindowModal);
+#ifdef Q_WS_MAC
+	setWindowFlags(Qt::Sheet);
+#endif
+
+	setWindowTitle(tr("Propri\351t\351s du sch\351ma", "window title"));
+
+	//Border widget
+	BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, this);
+	border_infos -> setReadOnly(diagram_is_read_only);
+
+	//Title block widget
+	TitleBlockPropertiesWidget  *titleblock_infos;
+	if (QETProject *parent_project = diagram -> project()) {
+		titleblock_infos  = new TitleBlockPropertiesWidget(parent_project -> embeddedTitleBlockTemplatesCollection(), titleblock, false, this);
+		connect(titleblock_infos, SIGNAL(editTitleBlockTemplate(QString, bool)), diagram->views().first(), SIGNAL(editTitleBlockTemplate(QString, bool)));
+	}
+	else
+		titleblock_infos = new TitleBlockPropertiesWidget(titleblock, false, this);
+	titleblock_infos -> setReadOnly(diagram_is_read_only);
+
+	//Conductor widget
+	ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(conductors, this);
+	cpw -> setReadOnly(diagram_is_read_only);
+
+	// Buttons
+	QDialogButtonBox boutons(diagram_is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+	connect(&boutons, SIGNAL(accepted()), this, SLOT(accept()));
+	connect(&boutons, SIGNAL(rejected()), this, SLOT(reject()));
+	//Layout
+	QGridLayout glayout(this);
+	glayout.addWidget(border_infos,0,0);
+	glayout.addWidget(titleblock_infos, 1, 0);
+	glayout.addWidget(cpw, 0, 1, 0 ,1, Qt::AlignTop);
+	glayout.addWidget(&boutons, 2, 1);
+
+	// if dialog is accepted
+	if (this -> exec() == QDialog::Accepted && !diagram_is_read_only) {
+		TitleBlockProperties new_titleblock = titleblock_infos  -> properties();
+		BorderProperties     new_border     = border_infos -> properties();
+		ConductorProperties  new_conductors = cpw -> properties();
+
+		// Title block have change
+		if (new_titleblock != titleblock) {
+			diagram -> undoStack().push(new ChangeTitleBlockCommand(diagram, titleblock, new_titleblock));
+		}
+
+		// Border have change
+		if (new_border != border) {
+			diagram -> undoStack().push(new ChangeBorderCommand(diagram, border, new_border));
+		}
+
+		// Conducteur have change
+		if (new_conductors != conductors) {
+			/// TODO implement an undo command to allow the user to undo/redo this action
+			diagram -> defaultConductorProperties = new_conductors;
+		}
+	}
+}
+
+/**
+ * @brief DiagramPropertiesDialog::diagramPropertiesDialog
+ * Static method to get a DiagramPropertiesDialog.
+ * @param diagram : diagram to edit properties
+ * @param parent : parent widget
+ */
+void DiagramPropertiesDialog::diagramPropertiesDialog(Diagram *diagram, QWidget *parent) {
+	DiagramPropertiesDialog dialog(diagram, parent);
+}

Added: trunk/sources/ui/diagrampropertiesdialog.h
===================================================================
--- trunk/sources/ui/diagrampropertiesdialog.h	                        (rev 0)
+++ trunk/sources/ui/diagrampropertiesdialog.h	2014-07-19 11:42:16 UTC (rev 3222)
@@ -0,0 +1,35 @@
+/*
+	Copyright 2006-2014 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 DIAGRAMPROPERTIESDIALOG_H
+#define DIAGRAMPROPERTIESDIALOG_H
+
+#include "diagram.h"
+
+/**
+ * @brief The DiagramPropertiesDialog class
+ * This dialog open a windows for edit properties of a diagram.
+ */
+class DiagramPropertiesDialog : public QDialog
+{
+	public:
+		DiagramPropertiesDialog(Diagram *diagram, QWidget *parent = 0);
+
+		static void diagramPropertiesDialog(Diagram *diagram, QWidget *parent = 0);
+};
+
+#endif // DIAGRAMPROPERTIESDIALOG_H


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/