mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Optimisation de l'editeur d'element. L'organisation interne de l'editeur d'element a ete completement revue. Auparavant, chaque primitive instanciait son propre widget d'edition et le gardait durant toute sa duree de vie, entrainant ainsi une consommation memoire et un temps de chargement importants. Desormais, l'editeur instancie des son demarrage 9 widgets d'edition qu'il conserve durant toute sa duree de vie. Il choisit alors lequel afficher en fonction des primitives selectionnees. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@856 bfdf4180-ca20-0410-9c96-a3a8aa849046
96 lines
2.7 KiB
C++
96 lines
2.7 KiB
C++
/*
|
|
Copyright 2006-2010 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/>.
|
|
*/
|
|
#include "elementitemeditor.h"
|
|
#include "qetelementeditor.h"
|
|
#include "editorcommands.h"
|
|
|
|
/**
|
|
Constructeur
|
|
@param editor QETElementEditor auquel cet editeur appartient
|
|
@param parent QWidget parent de cet editeur
|
|
*/
|
|
ElementItemEditor::ElementItemEditor(QETElementEditor *editor, QWidget *parent) :
|
|
QWidget(parent),
|
|
element_editor(editor)
|
|
{
|
|
}
|
|
|
|
/// @return le QETElementEditor auquel cet editeur appartient
|
|
QETElementEditor *ElementItemEditor::elementEditor() const {
|
|
return(element_editor);
|
|
}
|
|
|
|
/// @return l'ElementScene contenant les parties editees par cet editeur
|
|
ElementScene *ElementItemEditor::elementScene() const {
|
|
return(element_editor -> elementScene());
|
|
}
|
|
|
|
/// @return la QUndoStack a utiliser pour les annulations
|
|
QUndoStack &ElementItemEditor::undoStack() const {
|
|
return(elementScene() -> undoStack());
|
|
}
|
|
|
|
/**
|
|
Ajoute une ChangePartCommand a l'UndoStack. L'ancienne valeur sera
|
|
automatiquement recuperee. A noter que cette methode ne fait rien si
|
|
l'ancienne valeur et la nouvelle sont egales ou encore si part vaut 0
|
|
@param desc nom de la propriete modifiee
|
|
@param part partie modifiee
|
|
@param prop propriete modifiee
|
|
@param new_v nouvelle valeur
|
|
*/
|
|
void ElementItemEditor::addChangePartCommand(const QString &desc, CustomElementPart *part, const QString &prop, const QVariant &new_v) {
|
|
// ne fait rien si part vaut 0
|
|
if (!part) return;
|
|
|
|
// recupere l'ancienne valeur
|
|
QVariant old_v = part -> property(prop);
|
|
|
|
// ne fait rien si l'ancienne valeur et la nouvelle sont egales
|
|
if (old_v == new_v) return;
|
|
|
|
undoStack().push(
|
|
new ChangePartCommand(
|
|
desc + " " + element_type_name,
|
|
part,
|
|
prop,
|
|
old_v,
|
|
new_v
|
|
)
|
|
);
|
|
}
|
|
|
|
/// @return Le nom du type d'element edite
|
|
QString ElementItemEditor::elementTypeName() const {
|
|
return(element_type_name);
|
|
}
|
|
|
|
/// @param name Nom du type d'element edite
|
|
void ElementItemEditor::setElementTypeName(const QString &name) {
|
|
element_type_name = name;
|
|
}
|
|
|
|
/**
|
|
Detache l'editeur de la primitive qu'il edite.
|
|
Equivaut a setPart(0)
|
|
@see setPart
|
|
*/
|
|
void ElementItemEditor::detach() {
|
|
setPart(0);
|
|
}
|