[qet] [1435] Removed the obsolete "TemplateEditor" class. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 1435
Author: xavier
Date: 2012-01-08 18:09:17 +0100 (Sun, 08 Jan 2012)
Log Message:
-----------
Removed the obsolete "TemplateEditor" class.
Removed Paths:
-------------
branches/0.3/sources/templateeditor.cpp
branches/0.3/sources/templateeditor.h
Deleted: branches/0.3/sources/templateeditor.cpp
===================================================================
--- branches/0.3/sources/templateeditor.cpp 2012-01-08 17:05:17 UTC (rev 1434)
+++ branches/0.3/sources/templateeditor.cpp 2012-01-08 17:09:17 UTC (rev 1435)
@@ -1,279 +0,0 @@
-#include "templateeditor.h"
-#include <QtXml>
-#include "qetproject.h"
-#include "qetapp.h"
-
-/**
- Constructor
- @param parent parent QWidget for this editor
- @param f Windows flags for this editor
- @see QWidget()
-*/
-TemplateEditor::TemplateEditor(QWidget *parent, Qt::WindowFlags f) :
- QWidget(parent, f),
- parent_project_(0)
-{
- build();
-}
-
-/**
- Destructor
-*/
-TemplateEditor::~TemplateEditor() {
-}
-
-/**
- Edit the given template.
- @param project Parent project of the template to edit.
- @param template_name Name of the template to edit within its parent project.
-*/
-bool TemplateEditor::edit(QETProject *project, const QString &template_name) {
- // we require a project we will rattach templates to
- if (!project) return(false);
- parent_project_ = project;
- updateProjectLabel();
-
- // the template name may be empty to create a new element
- if (template_name.isEmpty()) {
- template_name_edit_ -> setText(tr("Nouveau-modele"));
- template_name_edit_ -> setReadOnly(false);
- return(true);
- }
-
- QDomElement xml_tb_template = project -> getTemplateXmlDescriptionByName(template_name);
- if (!xml_tb_template.isNull()) {
- QDomDocument xml_doc;
- xml_doc.appendChild(xml_doc.importNode(xml_tb_template, true));
- template_name_edit_ -> setText(template_name);
- template_name_edit_ -> setReadOnly(true);
-
- QString xml_str = xml_doc.toString(4);
- xml_str.replace(QRegExp("^<titleblocktemplate[^>]*>"), "");
- xml_str.replace(QRegExp("</titleblocktemplate>"), "");
- template_xml_edit_ -> setPlainText(" " + xml_str.trimmed());
-
- // stores the parent project and template name, in order to write/save the template later
- template_name_ = template_name;
- return(true);
- }
- return(false);
-}
-
-/**
- Validates the content of the current text area. It has to be a valid XML
- description of a title block template for this method not to display a
- message to the user.
- @todo implement it.
-*/
-void TemplateEditor::validate() {
- QMessageBox::information(
- this,
- tr("Not implemented yet"),
- tr("Sorry, Not implemented yet")
- );
-}
-
-/**
- Saves the content of the current text area to a template within the project.
-*/
-void TemplateEditor::save() {
- if (!parent_project_) return;
-
- // are we creating a new template?
- if (!template_name_edit_ -> isReadOnly()) {
- // Yes, so we must ensure the new name will not clatch with an existing ine
- if (parent_project_ -> embeddedTitleBlockTemplates().contains(template_name_edit_ -> text())) {
- QMessageBox::critical(
- this,
- tr("Un mod\350le de ce nom existe d\351j\340"),
- tr("Un mod\350le de ce nom existe d\351j\340 au sein du projet - veuillez choisir un autre nom.")
- );
- /// TODO propose to overwrite the existing template?
- return;
- }
-
- }
-
- QDomDocument xml_doc;
- bool parsing = xml_doc.setContent(getXmlString());
- if (!parsing) {
- QMessageBox::critical(
- this,
- tr("Code XML non valide"),
- tr("Le code XML du mod\350le ne semble pas \352tre valide. Impossible d'enregistrer le mod\350le.")
- );
- return;
- }
-
- if (!template_name_edit_ -> isReadOnly()) {
- template_name_edit_ -> setReadOnly(true);
- template_name_ = template_name_edit_ -> text();
- }
- parent_project_ -> setTemplateXmlDescription(template_name_, xml_doc.documentElement());
-}
-
-/**
- Exits this editor.
-*/
-void TemplateEditor::quit() {
- /// TODO save if needed
- close();
-}
-
-/**
- Allows the user to easily integrate a logo in to the currently edited title block
- template.
-*/
-void TemplateEditor::integrateLogo() {
- // we need a filepath
- QString filepath = QFileDialog::getOpenFileName(
- this,
- tr("S\351lectionnez un fichier image"),
- QString(),
- tr("Images vectorielles (*.svg);;Images bitmap (*.png *.jpg *.jpeg *.gif *.bmp *.xpm);;Tous les fichiers (*)")
- );
- if (filepath.isNull()) return;
-
- // that filepath needs to point to a valid, readable file
- QFileInfo filepath_info(filepath);
- if (!filepath_info.exists() || !filepath_info.isReadable()) {
- QMessageBox::critical(this, tr("Erreur"), tr("Impossible d'ouvrir le fichier sp\351cifi\351"));
- return;
- }
- QString filename = filepath_info.fileName();
-
- /// TODO identify whether the given file is a bitmap or vector graphics and integrate it accordingly
- // now, we need the XML document of the currently edited template
- QDomDocument xml_template;
- if (!xml_template.setContent(getXmlString())) {
- QMessageBox::critical(this, tr("Erreur"), tr("Le code XML du mod\350le ne semble pas \352tre valide."));
- return;
- }
-
- // we need a <logos> section
- QDomElement logos_section = xml_template.documentElement().firstChildElement("logos");
- QDomElement logo_xml_elmt;
- if (logos_section.isNull()) {
- logos_section = xml_template.createElement("logos");
- xml_template.documentElement().appendChild(logos_section);
- } else {
- // is there a logo of the same name already?
- QString tag = "logo";
- for (QDomElement e = logos_section.firstChildElement(tag) ; !e.isNull() ; e = e.nextSiblingElement(tag)) {
- if (e.attribute("name") == filename) {
- logo_xml_elmt = e;
- break;
- }
- }
- }
-
- // we read the provided logo
- QFile logo_file(filepath);
- logo_file.open(QIODevice::ReadOnly);
- QString base64_string = QString(logo_file.readAll().toBase64());
-
- // we insert it into our XML document
- QDomText t = xml_template.createTextNode(base64_string);
-
- if (!logo_xml_elmt.isNull()) {
- logo_xml_elmt.setAttribute("storage", "base64");
- QDomNodeList children = logo_xml_elmt.childNodes();
- for (int i = 0 ; i < children .count() ; ++ i) logo_xml_elmt.removeChild(children.at(i));
- logo_xml_elmt.appendChild(t);
- } else {
- QDomElement new_logo = xml_template.createElement("logo");
- new_logo.appendChild(t);
- new_logo.setAttribute("storage", "base64");
- new_logo.setAttribute("type", filepath_info.suffix());
- new_logo.setAttribute("name", filename);
- logos_section.appendChild(new_logo);
- }
-
- // we put back the XML description in the text area
- setXmlString(xml_template);
-}
-
-/**
- Builds the user interface.
-*/
-void TemplateEditor::build() {
- parent_project_label_ = new QLabel();
- updateProjectLabel();
- static_xml_1_ = new QLabel("<titleblocktemplate name=\"");
- static_xml_2_ = new QLabel("\">");
- static_xml_3_ = new QLabel("</titleblocktemplate>");
- template_name_edit_ = new QLineEdit();
- template_xml_edit_ = new QTextEdit();
- template_xml_edit_ -> setAcceptRichText(false);
- template_xml_edit_ -> setFontFamily("monospace");
- template_xml_edit_ -> setWordWrapMode(QTextOption::NoWrap);
-
- integrate_logo_ = new QPushButton(tr("Int\351grer un logo"));
- validate_button_ = new QPushButton(tr("V\351rifier le mod\350le"));
- save_button_ = new QPushButton(tr("Enregistrer et appliquer"));
- quit_button_ = new QPushButton(tr("Quitter"));
-
- connect(integrate_logo_, SIGNAL(released()), this, SLOT(integrateLogo()));
- connect(validate_button_, SIGNAL(released()), this, SLOT(validate()));
- connect(save_button_, SIGNAL(released()), this, SLOT(save()));
- connect(quit_button_, SIGNAL(released()), this, SLOT(quit()));
-
- QHBoxLayout *h_layout0 = new QHBoxLayout();
- h_layout0 -> addWidget(integrate_logo_);
- h_layout0 -> addWidget(validate_button_);
- h_layout0 -> addWidget(save_button_);
- h_layout0 -> addWidget(quit_button_);
-
- QHBoxLayout *h_layout1 = new QHBoxLayout();
- h_layout1 -> addWidget(static_xml_1_);
- h_layout1 -> addWidget(template_name_edit_);
- h_layout1 -> addWidget(static_xml_2_);
-
- QVBoxLayout *v_layout0 = new QVBoxLayout();
- v_layout0 -> addWidget(parent_project_label_);
- v_layout0 -> addLayout(h_layout1);
- v_layout0 -> addWidget(template_xml_edit_);
- v_layout0 -> addWidget(static_xml_3_);
- v_layout0 -> addLayout(h_layout0);
-
- setLayout(v_layout0);
-
- setWindowTitle(tr("QElectroTech - \311diteur de mod\350le de cartouche"));
- resize(700, 500);
-}
-
-/**
- Updates the "Parent project:" label.
-*/
-void TemplateEditor::updateProjectLabel() {
- QString parent_project_title;
- if (parent_project_) {
- parent_project_title = parent_project_ -> pathNameTitle();
- } else {
- parent_project_title = tr("Non d\351fini");
- }
-
- parent_project_label_ -> setText(
- QString(tr("Projet parent : %1")).arg(parent_project_title)
- );
-}
-
-/**
- @return the XML description provided by the user, as a string.
-*/
-QString TemplateEditor::getXmlString() const {
- QString xml_str = QString("<titleblocktemplate name=\"%1\">%2</titleblocktemplate>");
- xml_str = xml_str.arg(Qt::escape(template_name_edit_ -> text())).arg(template_xml_edit_ -> toPlainText());
- return(xml_str);
-}
-
-/**
- Displays the given title block template XML code
- @param xml_doc The XML description of a title block template
-*/
-void TemplateEditor::setXmlString(const QDomDocument &xml_doc) {
- QString xml_str = xml_doc.toString(4);
- xml_str.replace(QRegExp("^<titleblocktemplate[^>]*>"), "");
- xml_str.replace(QRegExp("</titleblocktemplate>"), "");
- template_xml_edit_ -> setPlainText(" " + xml_str.trimmed());
-}
Deleted: branches/0.3/sources/templateeditor.h
===================================================================
--- branches/0.3/sources/templateeditor.h 2012-01-08 17:05:17 UTC (rev 1434)
+++ branches/0.3/sources/templateeditor.h 2012-01-08 17:09:17 UTC (rev 1435)
@@ -1,68 +0,0 @@
-/*
- Copyright 2006-2012 Xavier Guerrin
- 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 TEMPLATE_EDITOR_H
-#define TEMPLATE_EDITOR_H
-#include <QtGui>
-#include <QtXml>
-class QETProject;
-/**
- This class allows the user to edit a title block template.
- For the moment, it simply provides a text editor.
-*/
-class TemplateEditor : public QWidget {
- Q_OBJECT
-
- // constructors, destructor
- public:
- TemplateEditor(QWidget * = 0, Qt::WindowFlags = 0);
- virtual ~TemplateEditor();
- private:
- TemplateEditor(const TemplateEditor &);
-
- // method\s
- public:
- bool edit(QETProject *, const QString &);
-
- private slots:
- void validate();
- void save();
- void quit();
- void integrateLogo();
-
- private:
- void build();
- void updateProjectLabel();
- QString getXmlString() const;
- void setXmlString(const QDomDocument &);
-
- // attributes
- private:
- QLabel *parent_project_label_;
- QLabel *static_xml_1_;
- QLabel *static_xml_2_;
- QLabel *static_xml_3_;
- QLineEdit *template_name_edit_;
- QTextEdit *template_xml_edit_;
- QPushButton *integrate_logo_;
- QPushButton *validate_button_;
- QPushButton *save_button_;
- QPushButton *quit_button_;
- QETProject *parent_project_;
- QString template_name_;
-};
-#endif