mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 22:00:35 +01:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d5a4fdf4f |
6
CREDIT
6
CREDIT
@@ -7,11 +7,8 @@ project ( http://www.kde.org/ ).
|
|||||||
Thanks to Loic for his mathematics-related explanations.
|
Thanks to Loic for his mathematics-related explanations.
|
||||||
Thanks to Nicolas for the Mac OS X experimentations.
|
Thanks to Nicolas for the Mac OS X experimentations.
|
||||||
Thanks to Remi Collet for the Fedora packaging.
|
Thanks to Remi Collet for the Fedora packaging.
|
||||||
Thanks to Piotr SQLek Skólski for the Debian packaging.
|
|
||||||
Thanks to `trem' for the Mandriva packaging.
|
|
||||||
Thanks to TuxFamily ( http://tuxfamily.org ) for hosting the project.
|
Thanks to TuxFamily ( http://tuxfamily.org ) for hosting the project.
|
||||||
Thanks to `Nishiki' for his elements and his support.
|
Thanks to `Nishiki' for his elements and his support.
|
||||||
Thanks to qtcentre.org for their SingleApplication class.
|
|
||||||
|
|
||||||
[fr]
|
[fr]
|
||||||
Merci à Trolltech pour la bibliothèque Qt ( http://trolltech.com/ ), sous
|
Merci à Trolltech pour la bibliothèque Qt ( http://trolltech.com/ ), sous
|
||||||
@@ -22,8 +19,5 @@ http://www.kde.org/ ).
|
|||||||
Merci à Loic pour ses explications d'ordre mathématique.
|
Merci à Loic pour ses explications d'ordre mathématique.
|
||||||
Merci à Nicolas pour les expérimentations Mac OS X.
|
Merci à Nicolas pour les expérimentations Mac OS X.
|
||||||
Merci à Remi Collet pour les paquets Fedora.
|
Merci à Remi Collet pour les paquets Fedora.
|
||||||
Merci à Piotr SQLek Skólski pour les paquets Debian.
|
|
||||||
Merci à `trem' pour les paquets Mandriva.
|
|
||||||
Merci à TuxFamily ( http://tuxfamily.org ) pour l'hébergement du projet.
|
Merci à TuxFamily ( http://tuxfamily.org ) pour l'hébergement du projet.
|
||||||
Merci à `Nishiki' pour ses éléments et son soutien.
|
Merci à `Nishiki' pour ses éléments et son soutien.
|
||||||
Merci à qtcentre.org pour leur classe SingleApplication.
|
|
||||||
|
|||||||
24
Doxyfile
24
Doxyfile
@@ -1,14 +1,14 @@
|
|||||||
# Doxyfile 1.5.5
|
# Doxyfile 1.5.1-KDevelop
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Project related configuration options
|
# Project related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
DOXYFILE_ENCODING = UTF-8
|
|
||||||
PROJECT_NAME = QElectroTech
|
PROJECT_NAME = QElectroTech
|
||||||
PROJECT_NUMBER = 0.1
|
PROJECT_NUMBER = 0.1
|
||||||
OUTPUT_DIRECTORY =
|
OUTPUT_DIRECTORY =
|
||||||
CREATE_SUBDIRS = NO
|
CREATE_SUBDIRS = NO
|
||||||
OUTPUT_LANGUAGE = French
|
OUTPUT_LANGUAGE = French
|
||||||
|
USE_WINDOWS_ENCODING = NO
|
||||||
BRIEF_MEMBER_DESC = YES
|
BRIEF_MEMBER_DESC = YES
|
||||||
REPEAT_BRIEF = YES
|
REPEAT_BRIEF = YES
|
||||||
ABBREVIATE_BRIEF = "The $name class" \
|
ABBREVIATE_BRIEF = "The $name class" \
|
||||||
@@ -29,7 +29,6 @@ STRIP_FROM_PATH = /home/data/chaos/projets/qet/qelectrotech/
|
|||||||
STRIP_FROM_INC_PATH =
|
STRIP_FROM_INC_PATH =
|
||||||
SHORT_NAMES = NO
|
SHORT_NAMES = NO
|
||||||
JAVADOC_AUTOBRIEF = NO
|
JAVADOC_AUTOBRIEF = NO
|
||||||
QT_AUTOBRIEF = NO
|
|
||||||
MULTILINE_CPP_IS_BRIEF = NO
|
MULTILINE_CPP_IS_BRIEF = NO
|
||||||
DETAILS_AT_TOP = NO
|
DETAILS_AT_TOP = NO
|
||||||
INHERIT_DOCS = YES
|
INHERIT_DOCS = YES
|
||||||
@@ -38,14 +37,9 @@ TAB_SIZE = 4
|
|||||||
ALIASES =
|
ALIASES =
|
||||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||||
OPTIMIZE_OUTPUT_JAVA = NO
|
OPTIMIZE_OUTPUT_JAVA = NO
|
||||||
OPTIMIZE_FOR_FORTRAN = NO
|
|
||||||
OPTIMIZE_OUTPUT_VHDL = NO
|
|
||||||
BUILTIN_STL_SUPPORT = NO
|
BUILTIN_STL_SUPPORT = NO
|
||||||
CPP_CLI_SUPPORT = NO
|
|
||||||
SIP_SUPPORT = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
DISTRIBUTE_GROUP_DOC = NO
|
||||||
SUBGROUPING = YES
|
SUBGROUPING = YES
|
||||||
TYPEDEF_HIDES_STRUCT = NO
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Build related configuration options
|
# Build related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
@@ -54,7 +48,6 @@ EXTRACT_PRIVATE = NO
|
|||||||
EXTRACT_STATIC = YES
|
EXTRACT_STATIC = YES
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
EXTRACT_LOCAL_CLASSES = YES
|
||||||
EXTRACT_LOCAL_METHODS = NO
|
EXTRACT_LOCAL_METHODS = NO
|
||||||
EXTRACT_ANON_NSPACES = NO
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
HIDE_UNDOC_MEMBERS = NO
|
||||||
HIDE_UNDOC_CLASSES = NO
|
HIDE_UNDOC_CLASSES = NO
|
||||||
HIDE_FRIEND_COMPOUNDS = NO
|
HIDE_FRIEND_COMPOUNDS = NO
|
||||||
@@ -66,7 +59,6 @@ SHOW_INCLUDE_FILES = YES
|
|||||||
INLINE_INFO = YES
|
INLINE_INFO = YES
|
||||||
SORT_MEMBER_DOCS = YES
|
SORT_MEMBER_DOCS = YES
|
||||||
SORT_BRIEF_DOCS = NO
|
SORT_BRIEF_DOCS = NO
|
||||||
SORT_GROUP_NAMES = NO
|
|
||||||
SORT_BY_SCOPE_NAME = NO
|
SORT_BY_SCOPE_NAME = NO
|
||||||
GENERATE_TODOLIST = NO
|
GENERATE_TODOLIST = NO
|
||||||
GENERATE_TESTLIST = NO
|
GENERATE_TESTLIST = NO
|
||||||
@@ -90,8 +82,7 @@ WARN_LOGFILE =
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the input files
|
# configuration options related to the input files
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
INPUT =
|
INPUT = /home/data/chaos/projets/qet/qelectrotech
|
||||||
INPUT_ENCODING = UTF-8
|
|
||||||
FILE_PATTERNS = *.h \
|
FILE_PATTERNS = *.h \
|
||||||
*.cpp
|
*.cpp
|
||||||
RECURSIVE = YES
|
RECURSIVE = YES
|
||||||
@@ -101,7 +92,6 @@ EXCLUDE = moc_* \
|
|||||||
debug
|
debug
|
||||||
EXCLUDE_SYMLINKS = NO
|
EXCLUDE_SYMLINKS = NO
|
||||||
EXCLUDE_PATTERNS =
|
EXCLUDE_PATTERNS =
|
||||||
EXCLUDE_SYMBOLS =
|
|
||||||
EXAMPLE_PATH =
|
EXAMPLE_PATH =
|
||||||
EXAMPLE_PATTERNS = *
|
EXAMPLE_PATTERNS = *
|
||||||
EXAMPLE_RECURSIVE = NO
|
EXAMPLE_RECURSIVE = NO
|
||||||
@@ -137,10 +127,6 @@ HTML_FOOTER =
|
|||||||
HTML_STYLESHEET =
|
HTML_STYLESHEET =
|
||||||
HTML_ALIGN_MEMBERS = YES
|
HTML_ALIGN_MEMBERS = YES
|
||||||
GENERATE_HTMLHELP = NO
|
GENERATE_HTMLHELP = NO
|
||||||
GENERATE_DOCSET = NO
|
|
||||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
|
||||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
|
||||||
HTML_DYNAMIC_SECTIONS = NO
|
|
||||||
CHM_FILE =
|
CHM_FILE =
|
||||||
HHC_LOCATION =
|
HHC_LOCATION =
|
||||||
GENERATE_CHI = NO
|
GENERATE_CHI = NO
|
||||||
@@ -224,7 +210,6 @@ PERL_PATH = /usr/bin/perl
|
|||||||
# Configuration options related to the dot tool
|
# Configuration options related to the dot tool
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
CLASS_DIAGRAMS = YES
|
CLASS_DIAGRAMS = YES
|
||||||
MSCGEN_PATH =
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
HIDE_UNDOC_RELATIONS = YES
|
||||||
HAVE_DOT = YES
|
HAVE_DOT = YES
|
||||||
CLASS_GRAPH = YES
|
CLASS_GRAPH = YES
|
||||||
@@ -241,7 +226,8 @@ DIRECTORY_GRAPH = YES
|
|||||||
DOT_IMAGE_FORMAT = png
|
DOT_IMAGE_FORMAT = png
|
||||||
DOT_PATH =
|
DOT_PATH =
|
||||||
DOTFILE_DIRS =
|
DOTFILE_DIRS =
|
||||||
DOT_GRAPH_MAX_NODES = 50
|
MAX_DOT_GRAPH_WIDTH = 1024
|
||||||
|
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||||
MAX_DOT_GRAPH_DEPTH = 1000
|
MAX_DOT_GRAPH_DEPTH = 1000
|
||||||
DOT_TRANSPARENT = NO
|
DOT_TRANSPARENT = NO
|
||||||
DOT_MULTI_TARGETS = NO
|
DOT_MULTI_TARGETS = NO
|
||||||
|
|||||||
2
INSTALL
2
INSTALL
@@ -6,7 +6,6 @@ cupsys-bsd for printing
|
|||||||
Howto compile :
|
Howto compile :
|
||||||
$ qmake (qmake-qt4 for Debian-based systems)
|
$ qmake (qmake-qt4 for Debian-based systems)
|
||||||
$ make
|
$ make
|
||||||
# umask 0022
|
|
||||||
# make install
|
# make install
|
||||||
|
|
||||||
[fr]
|
[fr]
|
||||||
@@ -17,5 +16,4 @@ cupsys-bsd pour l'impression
|
|||||||
Comment compiler :
|
Comment compiler :
|
||||||
$ qmake (qmake-qt4 pour les systèmes basés sur Debian)
|
$ qmake (qmake-qt4 pour les systèmes basés sur Debian)
|
||||||
$ make
|
$ make
|
||||||
# umask 0022
|
|
||||||
# make install
|
# make install
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include <QtGui>
|
|
||||||
#include "aboutqet.h"
|
#include "aboutqet.h"
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
#ifndef ABOUTQET_H
|
#ifndef ABOUTQET_H
|
||||||
#define ABOUTQET_H
|
#define ABOUTQET_H
|
||||||
#include <QDialog>
|
#include <QtGui>
|
||||||
/**
|
/**
|
||||||
Cette classe represente la boite de dialogue
|
Cette classe represente la boite de dialogue
|
||||||
« A propos de QElectroTech »
|
« A propos de QElectroTech »
|
||||||
231
borderinset.cpp
Normal file
231
borderinset.cpp
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2006-2008 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 "borderinset.h"
|
||||||
|
#include "qetapp.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructeur simple : construit une bordure de 15 colonnes de 50x500 avec
|
||||||
|
un cartouche de 400x50.
|
||||||
|
@param parent QObject parent de ce BorderInset
|
||||||
|
*/
|
||||||
|
BorderInset::BorderInset(QObject *parent) : QObject(parent) {
|
||||||
|
nb_columns = qMax(3, QETApp::settings().value("diagrameditor/defaultcols", 15).toInt());
|
||||||
|
min_nb_columns = 3;
|
||||||
|
columns_width = QETApp::settings().value("diagrameditor/defaultcolsize", 50.0).toDouble();
|
||||||
|
columns_height = QETApp::settings().value("diagrameditor/defaultheight", 500.0).toDouble();
|
||||||
|
min_columns_height = 80.0;
|
||||||
|
inset_width = nb_columns * columns_width;
|
||||||
|
inset_height = 50.0;
|
||||||
|
columns_header_height = 20.0;
|
||||||
|
display_inset = true;
|
||||||
|
display_columns = true;
|
||||||
|
display_border = true;
|
||||||
|
updateRectangles();
|
||||||
|
|
||||||
|
bi_author = QETApp::settings().value("diagrameditor/defaultauthor").toString();
|
||||||
|
bi_title = QETApp::settings().value("diagrameditor/defaulttitle").toString();
|
||||||
|
bi_folio = QETApp::settings().value("diagrameditor/defaultfolio").toString();
|
||||||
|
bi_filename = QETApp::settings().value("diagrameditor/defaultfilename").toString();
|
||||||
|
QString settings_date = QETApp::settings().value("diagrameditor/defaultdate").toString();
|
||||||
|
if (settings_date == "now") bi_date = QDate::currentDate();
|
||||||
|
else if (settings_date.isEmpty() || settings_date == "null") bi_date = QDate();
|
||||||
|
else bi_date = QDate::fromString(settings_date, "yyyyMMdd");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructeur - ne fait rien
|
||||||
|
*/
|
||||||
|
BorderInset::~BorderInset() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Methode recalculant les rectangles composant le cadre et le cartouche en
|
||||||
|
fonction des attributs de taille
|
||||||
|
*/
|
||||||
|
void BorderInset::updateRectangles() {
|
||||||
|
// rectangle delimitant le schema
|
||||||
|
QRectF previous_border = border;
|
||||||
|
border = QRectF(0, 0, nb_columns * columns_width, columns_height);
|
||||||
|
if (border != previous_border) emit(borderChanged(previous_border, border));
|
||||||
|
|
||||||
|
// rectangles relatifs au cartouche
|
||||||
|
inset = QRectF(border.bottomLeft().x(), border.bottomLeft().y(), inset_width, inset_height);
|
||||||
|
inset_author = QRectF(inset.topLeft(), QSizeF(2.0 * inset_width / 9.0, 0.5 * inset_height));
|
||||||
|
inset_date = QRectF(inset_author.bottomLeft(), inset_author.size());
|
||||||
|
inset_title = QRectF(inset_author.topRight(), QSizeF(5.0 * inset_width / 9.0, inset_height));
|
||||||
|
inset_file = QRectF(inset_title.topRight(), inset_author.size());
|
||||||
|
inset_folio = QRectF(inset_file.bottomLeft(), inset_author.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Dessine le cadre et le cartouche
|
||||||
|
@param qp QPainter a utiliser pour dessiner le cadre et le cartouche
|
||||||
|
@param x Abscisse du cadre
|
||||||
|
@param y Ordonnee du cadre
|
||||||
|
*/
|
||||||
|
void BorderInset::draw(QPainter *qp, qreal x, qreal y) {
|
||||||
|
// translate tous les rectangles
|
||||||
|
border .translate(x, y);
|
||||||
|
inset .translate(x, y);
|
||||||
|
inset_author.translate(x, y);
|
||||||
|
inset_date .translate(x, y);
|
||||||
|
inset_title .translate(x, y);
|
||||||
|
inset_file .translate(x, y);
|
||||||
|
inset_folio .translate(x, y);
|
||||||
|
|
||||||
|
// prepare le QPainter
|
||||||
|
qp -> save();
|
||||||
|
qp -> setPen(Qt::black);
|
||||||
|
qp -> setBrush(Qt::NoBrush);
|
||||||
|
|
||||||
|
// dessine le cadre
|
||||||
|
if (display_border) qp -> drawRect(border);
|
||||||
|
|
||||||
|
// dessine la numerotation des colonnes
|
||||||
|
if (display_columns) {
|
||||||
|
qp -> setBrush(Qt::white);
|
||||||
|
for (int i = 1 ; i <= nb_columns ; ++ i) {
|
||||||
|
QRectF numbered_rectangle = QRectF(
|
||||||
|
border.topLeft().x() + ((i - 1) * columns_width),
|
||||||
|
border.topLeft().y(),
|
||||||
|
columns_width,
|
||||||
|
columns_header_height
|
||||||
|
);
|
||||||
|
qp -> drawRect(numbered_rectangle);
|
||||||
|
qp -> drawText(numbered_rectangle, Qt::AlignVCenter | Qt::AlignCenter, QString("%1").arg(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// dessine le cartouche
|
||||||
|
if (display_inset) {
|
||||||
|
qp -> setBrush(Qt::white);
|
||||||
|
qp -> drawRect(inset);
|
||||||
|
|
||||||
|
qp -> drawRect(inset_author);
|
||||||
|
qp -> drawText(inset_author, Qt::AlignVCenter | Qt::AlignLeft, tr(" Auteur : ") + bi_author);
|
||||||
|
|
||||||
|
qp -> drawRect(inset_date);
|
||||||
|
qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString("dd/MM/yyyy"));
|
||||||
|
|
||||||
|
qp -> drawRect(inset_title);
|
||||||
|
qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document : ") + bi_title);
|
||||||
|
|
||||||
|
qp -> drawRect(inset_file);
|
||||||
|
qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename);
|
||||||
|
|
||||||
|
qp -> drawRect(inset_folio);
|
||||||
|
qp -> drawText(inset_folio, Qt::AlignVCenter | Qt::AlignLeft, tr(" Folio : ") + bi_folio);
|
||||||
|
}
|
||||||
|
|
||||||
|
qp -> restore();
|
||||||
|
|
||||||
|
// annule la translation des rectangles
|
||||||
|
border .translate(-x, -y);
|
||||||
|
inset .translate(-x, -y);
|
||||||
|
inset_author.translate(-x, -y);
|
||||||
|
inset_date .translate(-x, -y);
|
||||||
|
inset_title .translate(-x, -y);
|
||||||
|
inset_file .translate(-x, -y);
|
||||||
|
inset_folio .translate(-x, -y);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Ajoute une colonne.
|
||||||
|
*/
|
||||||
|
void BorderInset::addColumn() {
|
||||||
|
++ nb_columns;
|
||||||
|
setInsetWidth(nb_columns * columns_width);
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Enleve une colonne. Il doit rester au moins 3 colonnes.
|
||||||
|
*/
|
||||||
|
void BorderInset::removeColumn() {
|
||||||
|
if (nb_columns == min_nb_columns) return;
|
||||||
|
-- nb_columns;
|
||||||
|
setInsetWidth(nb_columns * columns_width);
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Permet de changer le nombre de colonnes.
|
||||||
|
Si ce nombre de colonnes est inferieur au minimum requis, cette fonction ne
|
||||||
|
fait rien
|
||||||
|
@param nb_c nouveau nombre de colonnes
|
||||||
|
@see minNbColumns()
|
||||||
|
*/
|
||||||
|
void BorderInset::setNbColumns(int nb_c) {
|
||||||
|
if (nb_c < min_nb_columns) return;
|
||||||
|
nb_columns = nb_c;
|
||||||
|
setInsetWidth(nb_columns * columns_width);
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change la largeur des colonnes ; celle-ci doit rester comprise entre 10 et
|
||||||
|
200px.
|
||||||
|
*/
|
||||||
|
void BorderInset::setColumnsWidth(const qreal &new_cw) {
|
||||||
|
columns_width = qBound(10.0, new_cw, 200.0);
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change la hauteur des en-tetes contenant les numeros de colonnes. Celle-ci
|
||||||
|
doit rester comprise entre 5 et 50 px.
|
||||||
|
*/
|
||||||
|
void BorderInset::setColumnsHeaderHeight(const qreal &new_chh) {
|
||||||
|
columns_header_height = qBound(5.0, new_chh, 50.0);
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change la hauteur des colonnes (et donc du cadre). Cette hauteur doit
|
||||||
|
rester superieure a la hauteur des en-tetes de colonnes + 20px.
|
||||||
|
*/
|
||||||
|
void BorderInset::setColumnsHeight(const qreal &new_ch) {
|
||||||
|
columns_height = qMax(columns_header_height + min_columns_height, new_ch);
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change la largeur du cartouche. Cette largeur doit rester comprise entre
|
||||||
|
100px et la largeur du cartouche
|
||||||
|
*/
|
||||||
|
void BorderInset::setInsetWidth(const qreal &new_iw) {
|
||||||
|
inset_width = qMax(100.0, qMin(nb_columns * columns_width, new_iw));
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change la hauteur du cartouche. Cette largeur doit rester comprise entre
|
||||||
|
20px et la hauteur du cartouche.
|
||||||
|
*/
|
||||||
|
void BorderInset::setInsetHeight(const qreal &new_ih) {
|
||||||
|
inset_height = qMax(20.0, qMin(columns_height, new_ih));
|
||||||
|
updateRectangles();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Ajuste la largeur du cartouche de facon a ce que celui-ci soit aussi large
|
||||||
|
que le schema
|
||||||
|
*/
|
||||||
|
void BorderInset::adjustInsetToColumns() {
|
||||||
|
setInsetWidth(nbColumn() * columnsWidth());
|
||||||
|
}
|
||||||
@@ -18,11 +18,10 @@
|
|||||||
#ifndef BORDERINSET_H
|
#ifndef BORDERINSET_H
|
||||||
#define BORDERINSET_H
|
#define BORDERINSET_H
|
||||||
#include "insetproperties.h"
|
#include "insetproperties.h"
|
||||||
#include "borderproperties.h"
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QRectF>
|
#include <QRectF>
|
||||||
|
#include <QPainter>
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
class QPainter;
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente l'ensemble bordure + cartouche qui encadre le
|
Cette classe represente l'ensemble bordure + cartouche qui encadre le
|
||||||
schema electrique.
|
schema electrique.
|
||||||
@@ -40,51 +39,29 @@ class BorderInset : public QObject {
|
|||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
static int minNbColumns();
|
|
||||||
static qreal minColumnsWidth();
|
|
||||||
static int minNbRows();
|
|
||||||
static qreal minRowsHeight();
|
|
||||||
|
|
||||||
void draw(QPainter *, qreal = 0.0, qreal = 0.0);
|
void draw(QPainter *, qreal = 0.0, qreal = 0.0);
|
||||||
|
|
||||||
// methodes d'acces en lecture aux dimensions
|
// methodes d'acces en lecture aux dimensions
|
||||||
// colonnes
|
|
||||||
/// @return le nombre de colonnes du schema
|
/// @return le nombre de colonnes du schema
|
||||||
int nbColumns() const { return(nb_columns); }
|
int nbColumn() const { return(nb_columns); }
|
||||||
/// @return la largeur des colonnes en pixels
|
/// @return la taille des colonnes en pixels
|
||||||
qreal columnsWidth() const { return(columns_width); }
|
qreal columnsWidth() const { return(columns_width); }
|
||||||
/// @return la taille de l'ensemble des colonnes, en-tete des lignes non inclus
|
|
||||||
qreal columnsTotalWidth() const { return(nb_columns * columns_width); }
|
|
||||||
/// @return la hauteur, en pixels, des en-tetes des colonnes
|
/// @return la hauteur, en pixels, des en-tetes des colonnes
|
||||||
qreal columnsHeaderHeight() const { return(columns_header_height); }
|
qreal columnsHeaderHeight() const { return(columns_header_height); }
|
||||||
|
/// @return la hauteur des colonnes, en-tetes inclus
|
||||||
// lignes
|
qreal columnsHeight() const { return(columns_height); }
|
||||||
/// @return le nombre de lignes du schema
|
/// @return la largeur de la bordure
|
||||||
int nbRows() const { return(nb_rows); }
|
qreal borderWidth() const { return(nb_columns * columns_width); }
|
||||||
/// @return la hauteur des lignes en pixels
|
/// @return la hauteur de la bordure
|
||||||
qreal rowsHeight() const { return(rows_height); }
|
qreal borderHeight() const { return(columns_height + inset_height); }
|
||||||
/// @return la taille de l'ensemble des lignes, en-tete des colonnes non inclus
|
|
||||||
qreal rowsTotalHeight() const { return(nb_rows * rows_height); }
|
|
||||||
/// @return la largeur, en pixels, des en-tetes des lignes
|
|
||||||
qreal rowsHeaderWidth() const { return(rows_header_width); }
|
|
||||||
|
|
||||||
// cadre sans le cartouche = schema
|
|
||||||
/// @return la largeur du schema, c'est-a-dire du cadre sans le cartouche
|
|
||||||
qreal diagramWidth() const { return(columnsTotalWidth() + rowsHeaderWidth()); }
|
|
||||||
/// @return la hauteurdu schema, c'est-a-dire du cadre sans le cartouche
|
|
||||||
qreal diagramHeight() const { return(rowsTotalHeight() + columnsHeaderHeight()); }
|
|
||||||
|
|
||||||
// cartouche
|
|
||||||
/// @return la largeur du cartouche
|
/// @return la largeur du cartouche
|
||||||
qreal insetWidth() const { return(inset_width); }
|
qreal insetWidth() const { return(inset_width); }
|
||||||
/// @return la hauteur du cartouche
|
/// @return la hauteur du cartouche
|
||||||
qreal insetHeight() const { return(inset_height); }
|
qreal insetHeight() const { return(inset_height); }
|
||||||
|
/// @return la hauteur minimale acceptee des colonnes
|
||||||
// cadre avec le cartouche
|
qreal minColumnsHeight() const { return(min_columns_height); }
|
||||||
/// @return la hauteur de la bordure
|
/// @return le nombre minimum accepte de colonnes
|
||||||
qreal borderWidth() const { return(diagramWidth()); }
|
int minNbColumns() const { return(min_nb_columns); }
|
||||||
/// @return la hauteur de la bordure
|
|
||||||
qreal borderHeight() const { return(diagramHeight() + insetHeight()); }
|
|
||||||
|
|
||||||
// methodes d'acces en lecture aux informations du cartouche
|
// methodes d'acces en lecture aux informations du cartouche
|
||||||
/// @return le champ "Auteur" du cartouche
|
/// @return le champ "Auteur" du cartouche
|
||||||
@@ -103,23 +80,16 @@ class BorderInset : public QObject {
|
|||||||
bool insetIsDisplayed() const { return(display_inset); }
|
bool insetIsDisplayed() const { return(display_inset); }
|
||||||
/// @return true si les entetes des colonnes sont affiches, false sinon
|
/// @return true si les entetes des colonnes sont affiches, false sinon
|
||||||
bool columnsAreDisplayed() const { return(display_columns); }
|
bool columnsAreDisplayed() const { return(display_columns); }
|
||||||
/// @return true si les entetes des lignes sont affiches, false sinon
|
|
||||||
bool rowsAreDisplayed() const { return(display_rows); }
|
|
||||||
/// @return true si la bordure est affichee, false sinon
|
/// @return true si la bordure est affichee, false sinon
|
||||||
bool borderIsDisplayed() const { return(display_border); }
|
bool borderIsDisplayed() const { return(display_border); }
|
||||||
|
|
||||||
// methodes d'acces en ecriture aux dimensions
|
// methodes d'acces en ecriture aux dimensions
|
||||||
void addColumn ();
|
void addColumn ();
|
||||||
void addRow ();
|
|
||||||
void removeColumn ();
|
void removeColumn ();
|
||||||
void removeRow ();
|
|
||||||
void setNbColumns (int);
|
void setNbColumns (int);
|
||||||
void setNbRows (int);
|
|
||||||
void setColumnsWidth (const qreal &);
|
void setColumnsWidth (const qreal &);
|
||||||
void setRowsHeight (const qreal &);
|
|
||||||
void setColumnsHeaderHeight(const qreal &);
|
void setColumnsHeaderHeight(const qreal &);
|
||||||
void setRowsHeaderWidth (const qreal &);
|
void setColumnsHeight (const qreal &);
|
||||||
void setDiagramHeight (const qreal &);
|
|
||||||
void setInsetWidth (const qreal &);
|
void setInsetWidth (const qreal &);
|
||||||
void setInsetHeight (const qreal &);
|
void setInsetHeight (const qreal &);
|
||||||
void adjustInsetToColumns ();
|
void adjustInsetToColumns ();
|
||||||
@@ -136,20 +106,36 @@ class BorderInset : public QObject {
|
|||||||
/// @param filename le nouveau contenu du champ "Fichier"
|
/// @param filename le nouveau contenu du champ "Fichier"
|
||||||
void setFileName (const QString &filename) { bi_filename = filename; }
|
void setFileName (const QString &filename) { bi_filename = filename; }
|
||||||
|
|
||||||
InsetProperties exportInset();
|
/// @return les proprietes du cartouches
|
||||||
void importInset(const InsetProperties &);
|
InsetProperties exportInset() {
|
||||||
BorderProperties exportBorder();
|
InsetProperties ip;
|
||||||
void importBorder(const BorderProperties &);
|
ip.author = bi_author;
|
||||||
|
ip.date = bi_date;
|
||||||
|
ip.title = bi_title;
|
||||||
|
ip.folio = bi_folio;
|
||||||
|
ip.filename = bi_filename;
|
||||||
|
return(ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @param ip les nouvelles proprietes du cartouche
|
||||||
|
void importInset(const InsetProperties &ip) {
|
||||||
|
bi_author = ip.author;
|
||||||
|
bi_date = ip.date;
|
||||||
|
bi_title = ip.title;
|
||||||
|
bi_folio = ip.folio;
|
||||||
|
bi_filename = ip.filename;
|
||||||
|
}
|
||||||
|
|
||||||
// methodes d'acces en ecriture aux options
|
// methodes d'acces en ecriture aux options
|
||||||
void displayInset(bool);
|
/// @param di true pour afficher le cartouche, false sinon
|
||||||
void displayColumns(bool);
|
void displayInset (bool di) { display_inset = di; }
|
||||||
void displayRows(bool);
|
/// @param dc true pour afficher les entetes des colonnes, false sinon
|
||||||
void displayBorder(bool);
|
void displayColumns (bool dc) { display_columns = dc; }
|
||||||
|
/// @param db true pour afficher la bordure du schema, false sinon
|
||||||
|
void displayBorder (bool db) { display_border = db; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateRectangles();
|
void updateRectangles();
|
||||||
QString incrementLetters(const QString &);
|
|
||||||
|
|
||||||
// signaux
|
// signaux
|
||||||
signals:
|
signals:
|
||||||
@@ -159,10 +145,6 @@ class BorderInset : public QObject {
|
|||||||
@param new_border Nouvelle bordure
|
@param new_border Nouvelle bordure
|
||||||
*/
|
*/
|
||||||
void borderChanged(QRectF old_border, QRectF new_border);
|
void borderChanged(QRectF old_border, QRectF new_border);
|
||||||
/**
|
|
||||||
Signal emise lorsque des options d'affichage change
|
|
||||||
*/
|
|
||||||
void displayChanged();
|
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
@@ -173,23 +155,18 @@ class BorderInset : public QObject {
|
|||||||
QString bi_folio;
|
QString bi_folio;
|
||||||
QString bi_filename;
|
QString bi_filename;
|
||||||
|
|
||||||
// dimensions du cadre (lignes et colonnes)
|
// dimensions du cadre et du cartouche
|
||||||
// colonnes : nombres et dimensions
|
|
||||||
int nb_columns;
|
int nb_columns;
|
||||||
|
int min_nb_columns;
|
||||||
qreal columns_width;
|
qreal columns_width;
|
||||||
qreal columns_header_height;
|
qreal columns_header_height;
|
||||||
|
qreal columns_height;
|
||||||
// lignes : nombres et dimensions
|
qreal min_columns_height;
|
||||||
int nb_rows;
|
|
||||||
qreal rows_height;
|
|
||||||
qreal rows_header_width;
|
|
||||||
|
|
||||||
// dimensions du cartouche
|
|
||||||
qreal inset_width;
|
qreal inset_width;
|
||||||
qreal inset_height;
|
qreal inset_height;
|
||||||
|
|
||||||
// rectangles utilises pour le dessin
|
// rectangles utilises pour le dessin
|
||||||
QRectF diagram;
|
QRectF border;
|
||||||
QRectF inset;
|
QRectF inset;
|
||||||
QRectF inset_author;
|
QRectF inset_author;
|
||||||
QRectF inset_date;
|
QRectF inset_date;
|
||||||
@@ -200,7 +177,6 @@ class BorderInset : public QObject {
|
|||||||
// booleens pour les options de dessin
|
// booleens pour les options de dessin
|
||||||
bool display_inset;
|
bool display_inset;
|
||||||
bool display_columns;
|
bool display_columns;
|
||||||
bool display_rows;
|
|
||||||
bool display_border;
|
bool display_border;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
@@ -16,11 +16,9 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
#include <limits>
|
|
||||||
#include "conductor.h"
|
#include "conductor.h"
|
||||||
#include "conductorsegment.h"
|
#include "conductorsegment.h"
|
||||||
#include "conductorsegmentprofile.h"
|
#include "conductorsegmentprofile.h"
|
||||||
#include "diagramtextitem.h"
|
|
||||||
#include "element.h"
|
#include "element.h"
|
||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
#include "diagramcommands.h"
|
#include "diagramcommands.h"
|
||||||
@@ -38,7 +36,6 @@ QBrush Conductor::square_brush = QBrush(Qt::darkGreen);
|
|||||||
@param scene QGraphicsScene a laquelle appartient le conducteur
|
@param scene QGraphicsScene a laquelle appartient le conducteur
|
||||||
*/
|
*/
|
||||||
Conductor::Conductor(Terminal *p1, Terminal* p2, Element *parent, QGraphicsScene *scene) :
|
Conductor::Conductor(Terminal *p1, Terminal* p2, Element *parent, QGraphicsScene *scene) :
|
||||||
QObject(),
|
|
||||||
QGraphicsPathItem(parent, scene),
|
QGraphicsPathItem(parent, scene),
|
||||||
terminal1(p1),
|
terminal1(p1),
|
||||||
terminal2(p2),
|
terminal2(p2),
|
||||||
@@ -88,12 +85,6 @@ Conductor::Conductor(Terminal *p1, Terminal* p2, Element *parent, QGraphicsScene
|
|||||||
text_item -> previous_text = properties_.text;
|
text_item -> previous_text = properties_.text;
|
||||||
calculateTextItemPosition();
|
calculateTextItemPosition();
|
||||||
text_item -> setParentItem(this);
|
text_item -> setParentItem(this);
|
||||||
connect(
|
|
||||||
text_item,
|
|
||||||
SIGNAL(diagramTextChanged(DiagramTextItem *, const QString &, const QString &)),
|
|
||||||
this,
|
|
||||||
SLOT(displayedTextChanged())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -931,7 +922,7 @@ QDomElement Conductor::toXml(QDomDocument &d, QHash<Terminal *, int> &table_adr_
|
|||||||
foreach(ConductorSegment *segment, segmentsList()) {
|
foreach(ConductorSegment *segment, segmentsList()) {
|
||||||
current_segment = d.createElement("segment");
|
current_segment = d.createElement("segment");
|
||||||
current_segment.setAttribute("orientation", segment -> isHorizontal() ? "horizontal" : "vertical");
|
current_segment.setAttribute("orientation", segment -> isHorizontal() ? "horizontal" : "vertical");
|
||||||
current_segment.setAttribute("length", QString("%1").arg(segment -> length()));
|
current_segment.setAttribute("length", segment -> length());
|
||||||
e.appendChild(current_segment);
|
e.appendChild(current_segment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,25 +1082,6 @@ void Conductor::readProperties() {
|
|||||||
text_item -> setVisible(properties_.type == ConductorProperties::Multi);
|
text_item -> setVisible(properties_.type == ConductorProperties::Multi);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Met a jour les proprietes du conducteur apres modification du champ de texte affiche
|
|
||||||
*/
|
|
||||||
void Conductor::displayedTextChanged() {
|
|
||||||
// verifie que le texte a reellement change
|
|
||||||
if (text_item -> toPlainText() == properties_.text) return;
|
|
||||||
|
|
||||||
// initialise l'objet UndoCommand correspondant
|
|
||||||
if (Diagram *my_diagram = diagram()) {
|
|
||||||
ConductorProperties new_properties(properties_);
|
|
||||||
new_properties.text = text_item -> toPlainText();
|
|
||||||
|
|
||||||
ChangeConductorPropertiesCommand *ccpc = new ChangeConductorPropertiesCommand(this);
|
|
||||||
ccpc -> setOldSettings(properties_);
|
|
||||||
ccpc -> setNewSettings(new_properties);
|
|
||||||
my_diagram -> undoStack().push(ccpc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return les conducteurs avec lesquels ce conducteur partage des bornes
|
@return les conducteurs avec lesquels ce conducteur partage des bornes
|
||||||
communes
|
communes
|
||||||
@@ -21,17 +21,15 @@
|
|||||||
#include "terminal.h"
|
#include "terminal.h"
|
||||||
#include "conductorprofile.h"
|
#include "conductorprofile.h"
|
||||||
#include "conductorproperties.h"
|
#include "conductorproperties.h"
|
||||||
|
#include "diagramtextitem.h"
|
||||||
class ConductorSegment;
|
class ConductorSegment;
|
||||||
class DiagramTextItem;
|
|
||||||
class Element;
|
class Element;
|
||||||
typedef QPair<QPointF, Qt::Corner> ConductorBend;
|
typedef QPair<QPointF, Qt::Corner> ConductorBend;
|
||||||
typedef QHash<Qt::Corner, ConductorProfile> ConductorProfilesGroup;
|
typedef QHash<Qt::Corner, ConductorProfile> ConductorProfilesGroup;
|
||||||
/**
|
/**
|
||||||
Cette classe represente un conducteur. Un conducteur relie deux bornes d'element.
|
Cette classe represente un conducteur. Un conducteur relie deux bornes d'element.
|
||||||
*/
|
*/
|
||||||
class Conductor : public QObject, public QGraphicsPathItem {
|
class Conductor : public QGraphicsPathItem {
|
||||||
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
@@ -83,9 +81,6 @@ class Conductor : public QObject, public QGraphicsPathItem {
|
|||||||
ConductorProfilesGroup profiles() const;
|
ConductorProfilesGroup profiles() const;
|
||||||
void readProperties();
|
void readProperties();
|
||||||
|
|
||||||
public slots:
|
|
||||||
void displayedTextChanged();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
|
virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
|
||||||
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *);
|
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *);
|
||||||
@@ -16,7 +16,6 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "conductorpropertieswidget.h"
|
#include "conductorpropertieswidget.h"
|
||||||
#include <QtGui>
|
|
||||||
#include "conductor.h"
|
#include "conductor.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -47,7 +46,6 @@ void ConductorPropertiesWidget::buildInterface() {
|
|||||||
setMinimumSize(380, 280);
|
setMinimumSize(380, 280);
|
||||||
|
|
||||||
QVBoxLayout *main_layout = new QVBoxLayout(this);
|
QVBoxLayout *main_layout = new QVBoxLayout(this);
|
||||||
main_layout -> setContentsMargins(0, 0, 0, 0);
|
|
||||||
|
|
||||||
QGroupBox *groupbox = new QGroupBox(tr("Type de conducteur"));
|
QGroupBox *groupbox = new QGroupBox(tr("Type de conducteur"));
|
||||||
main_layout -> addWidget(groupbox);
|
main_layout -> addWidget(groupbox);
|
||||||
@@ -17,9 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
#ifndef CONDUCTOR_PROPERTIES_WIDGET_H
|
#ifndef CONDUCTOR_PROPERTIES_WIDGET_H
|
||||||
#define CONDUCTOR_PROPERTIES_WIDGET_H
|
#define CONDUCTOR_PROPERTIES_WIDGET_H
|
||||||
#include "conductorproperties.h"
|
#include "conductor.h"
|
||||||
#include <QWidget>
|
#include <QtGui>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Ce widget permet a l utilisateur d'editer les proprietes d'un conducteur.
|
Ce widget permet a l utilisateur d'editer les proprietes d'un conducteur.
|
||||||
Par proprietes, on entend non pas le trajet effectue par le conducteur mais
|
Par proprietes, on entend non pas le trajet effectue par le conducteur mais
|
||||||
@@ -16,12 +16,7 @@
|
|||||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "configpages.h"
|
#include "configpages.h"
|
||||||
#include "borderpropertieswidget.h"
|
|
||||||
#include "conductorpropertieswidget.h"
|
|
||||||
#include "insetpropertieswidget.h"
|
|
||||||
#include "qetapp.h"
|
#include "qetapp.h"
|
||||||
#include "qetdiagrameditor.h"
|
|
||||||
#include "borderinset.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -32,17 +27,10 @@ NewDiagramPage::NewDiagramPage(QWidget *parent) : ConfigPage(parent) {
|
|||||||
// acces a la configuration de QElectroTech
|
// acces a la configuration de QElectroTech
|
||||||
QSettings &settings = QETApp::settings();
|
QSettings &settings = QETApp::settings();
|
||||||
|
|
||||||
// dimensions par defaut d'un schema
|
// recupere les dimensions du schema
|
||||||
bpw = new BorderPropertiesWidget(QETDiagramEditor::defaultBorderProperties());
|
int columns_count_value = settings.value("diagrameditor/defaultcols", 15).toInt();
|
||||||
|
int columns_width_value = qRound(settings.value("diagrameditor/defaultcolsize", 50.0).toDouble());
|
||||||
// proprietes par defaut d'un cartouche
|
int columns_height_value = qRound(settings.value("diagrameditor/defaultheight", 500.0).toDouble());
|
||||||
ipw = new InsetPropertiesWidget(QETDiagramEditor::defaultInsetProperties(), true);
|
|
||||||
|
|
||||||
// proprietes par defaut des conducteurs
|
|
||||||
ConductorProperties cp;
|
|
||||||
cp.fromSettings(settings, "diagrameditor/defaultconductor");
|
|
||||||
cpw = new ConductorPropertiesWidget(cp);
|
|
||||||
cpw -> setContentsMargins(0, 0, 0, 0);
|
|
||||||
|
|
||||||
QVBoxLayout *vlayout1 = new QVBoxLayout();
|
QVBoxLayout *vlayout1 = new QVBoxLayout();
|
||||||
|
|
||||||
@@ -56,9 +44,45 @@ NewDiagramPage::NewDiagramPage(QWidget *parent) : ConfigPage(parent) {
|
|||||||
QHBoxLayout *hlayout1 = new QHBoxLayout();
|
QHBoxLayout *hlayout1 = new QHBoxLayout();
|
||||||
QVBoxLayout *vlayout2 = new QVBoxLayout();
|
QVBoxLayout *vlayout2 = new QVBoxLayout();
|
||||||
|
|
||||||
vlayout2 -> addWidget(bpw);
|
QGroupBox *diagram_size_box = new QGroupBox(tr("Dimensions du sch\351ma"));
|
||||||
|
diagram_size_box -> setMinimumWidth(300);
|
||||||
|
QGridLayout *diagram_size_box_layout = new QGridLayout(diagram_size_box);
|
||||||
|
|
||||||
|
QLabel *ds1 = new QLabel(tr("Colonnes :"));
|
||||||
|
|
||||||
|
columns_count = new QSpinBox(diagram_size_box);
|
||||||
|
columns_count -> setMinimum(3); /// @todo methode statique pour recuperer ca
|
||||||
|
columns_count -> setValue(columns_count_value);
|
||||||
|
|
||||||
|
columns_width = new QSpinBox(diagram_size_box);
|
||||||
|
columns_width -> setMinimum(1);
|
||||||
|
columns_width -> setSingleStep(10);
|
||||||
|
columns_width -> setValue(columns_width_value);
|
||||||
|
columns_width -> setPrefix(tr("\327"));
|
||||||
|
columns_width -> setSuffix(tr("px"));
|
||||||
|
|
||||||
|
QLabel *ds2 = new QLabel(tr("Hauteur :"));
|
||||||
|
|
||||||
|
columns_height = new QSpinBox(diagram_size_box);
|
||||||
|
columns_height -> setRange(80, 10000); /// @todo methode statique pour recuperer ca
|
||||||
|
columns_height -> setSingleStep(80);
|
||||||
|
columns_height -> setValue(columns_height_value);
|
||||||
|
|
||||||
|
diagram_size_box_layout -> addWidget(ds1, 0, 0);
|
||||||
|
diagram_size_box_layout -> addWidget(columns_count, 0, 1);
|
||||||
|
diagram_size_box_layout -> addWidget(columns_width, 0, 2);
|
||||||
|
diagram_size_box_layout -> addWidget(ds2, 1, 0);
|
||||||
|
diagram_size_box_layout -> addWidget(columns_height, 1, 1);
|
||||||
|
|
||||||
|
ipw = new InsetPropertiesWidget(QETDiagramEditor::defaultInsetProperties(), true, this);
|
||||||
|
|
||||||
|
// proprietes par defaut des conducteurs
|
||||||
|
ConductorProperties cp;
|
||||||
|
cp.fromSettings(settings, "diagrameditor/defaultconductor");
|
||||||
|
cpw = new ConductorPropertiesWidget(cp);
|
||||||
|
|
||||||
|
vlayout2 -> addWidget(diagram_size_box);
|
||||||
vlayout2 -> addWidget(ipw);
|
vlayout2 -> addWidget(ipw);
|
||||||
vlayout2 -> setSpacing(5);
|
|
||||||
hlayout1 -> addLayout(vlayout2);
|
hlayout1 -> addLayout(vlayout2);
|
||||||
hlayout1 -> addWidget(cpw);
|
hlayout1 -> addWidget(cpw);
|
||||||
vlayout1 -> addLayout(hlayout1);
|
vlayout1 -> addLayout(hlayout1);
|
||||||
@@ -78,13 +102,9 @@ void NewDiagramPage::applyConf() {
|
|||||||
QSettings &settings = QETApp::settings();
|
QSettings &settings = QETApp::settings();
|
||||||
|
|
||||||
// dimensions des nouveaux schemas
|
// dimensions des nouveaux schemas
|
||||||
BorderProperties border = bpw -> borderProperties();
|
settings.setValue("diagrameditor/defaultcols", columns_count -> value());
|
||||||
settings.setValue("diagrameditor/defaultcols", border.columns_count);
|
settings.setValue("diagrameditor/defaultcolsize", columns_width -> value());
|
||||||
settings.setValue("diagrameditor/defaultcolsize", border.columns_width);
|
settings.setValue("diagrameditor/defaultheight", columns_height -> value());
|
||||||
settings.setValue("diagrameditor/defaultdisplaycols", border.display_columns);
|
|
||||||
settings.setValue("diagrameditor/defaultrows", border.rows_count);
|
|
||||||
settings.setValue("diagrameditor/defaultrowsize", border.rows_height);
|
|
||||||
settings.setValue("diagrameditor/defaultdisplayrows", border.display_rows);
|
|
||||||
|
|
||||||
// proprietes du cartouche
|
// proprietes du cartouche
|
||||||
InsetProperties inset = ipw-> insetProperties();
|
InsetProperties inset = ipw-> insetProperties();
|
||||||
@@ -18,9 +18,8 @@
|
|||||||
#ifndef CONFIG_PAGES_H
|
#ifndef CONFIG_PAGES_H
|
||||||
#define CONFIG_PAGES_H
|
#define CONFIG_PAGES_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
class BorderPropertiesWidget;
|
#include "conductorpropertieswidget.h"
|
||||||
class ConductorPropertiesWidget;
|
#include "insetpropertieswidget.h"
|
||||||
class InsetPropertiesWidget;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Cette classe abstraite contient les methodes que toutes les pages de
|
Cette classe abstraite contient les methodes que toutes les pages de
|
||||||
@@ -64,7 +63,9 @@ class NewDiagramPage : public ConfigPage {
|
|||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
public:
|
public:
|
||||||
BorderPropertiesWidget *bpw; ///< Widget d'edition des dimensions du schema
|
QSpinBox *columns_count; ///< Widget d'edition du nombre par defaut de colonnes
|
||||||
|
QSpinBox *columns_width; ///< Widget d'edition de la largeur par defaut des colonnes
|
||||||
|
QSpinBox *columns_height; ///< Widget d'edition de la hauteur par defaut des colonnes
|
||||||
InsetPropertiesWidget *ipw; ///< Widget d'edition des proprietes par defaut du cartouche
|
InsetPropertiesWidget *ipw; ///< Widget d'edition des proprietes par defaut du cartouche
|
||||||
ConductorPropertiesWidget *cpw; ///< Widget d'edition des proprietes par defaut des conducteurs
|
ConductorPropertiesWidget *cpw; ///< Widget d'edition des proprietes par defaut des conducteurs
|
||||||
};
|
};
|
||||||
@@ -86,7 +86,7 @@ CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *
|
|||||||
QObject::tr("Avertissement : l'\351l\351ment ") + nom_fichier
|
QObject::tr("Avertissement : l'\351l\351ment ") + nom_fichier
|
||||||
+ QObject::tr(" a \351t\351 enregistr\351 avec une version"
|
+ QObject::tr(" a \351t\351 enregistr\351 avec une version"
|
||||||
" ult\351rieure de QElectroTech.")
|
" ult\351rieure de QElectroTech.")
|
||||||
) << std::endl;
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,6 +418,7 @@ bool CustomElement::parseInput(QDomElement &e) {
|
|||||||
) return(false);
|
) return(false);
|
||||||
|
|
||||||
ElementTextItem *eti = new ElementTextItem(e.attribute("text"), this);
|
ElementTextItem *eti = new ElementTextItem(e.attribute("text"), this);
|
||||||
|
eti -> setFont(QFont(QETApp::diagramTextsFont(), size));
|
||||||
eti -> setPos(pos_x, pos_y);
|
eti -> setPos(pos_x, pos_y);
|
||||||
eti -> setOriginalPos(QPointF(pos_x, pos_y));
|
eti -> setOriginalPos(QPointF(pos_x, pos_y));
|
||||||
if (e.attribute("rotate") == "true") eti -> setFollowParentRotations(true);
|
if (e.attribute("rotate") == "true") eti -> setFollowParentRotations(true);
|
||||||
@@ -37,10 +37,9 @@ Diagram::Diagram(QObject *parent) :
|
|||||||
draw_grid(true),
|
draw_grid(true),
|
||||||
use_border(true),
|
use_border(true),
|
||||||
moved_elements_fetched(false),
|
moved_elements_fetched(false),
|
||||||
|
qgi_manager(this),
|
||||||
draw_terminals(true)
|
draw_terminals(true)
|
||||||
{
|
{
|
||||||
undo_stack = new QUndoStack();
|
|
||||||
qgi_manager = new QGIManager(this);
|
|
||||||
setBackgroundBrush(Qt::white);
|
setBackgroundBrush(Qt::white);
|
||||||
conductor_setter = new QGraphicsLineItem(0, 0);
|
conductor_setter = new QGraphicsLineItem(0, 0);
|
||||||
conductor_setter -> setZValue(1000000);
|
conductor_setter -> setZValue(1000000);
|
||||||
@@ -60,23 +59,8 @@ Diagram::Diagram(QObject *parent) :
|
|||||||
Destructeur
|
Destructeur
|
||||||
*/
|
*/
|
||||||
Diagram::~Diagram() {
|
Diagram::~Diagram() {
|
||||||
// suppression de la liste des annulations - l'undo stack fait appel au qgimanager pour supprimer certains elements
|
if (conductor_setter -> scene()) removeItem(conductor_setter);
|
||||||
delete undo_stack;
|
delete conductor_setter;
|
||||||
// suppression du QGIManager - tous les elements qu'il connait sont supprimes
|
|
||||||
delete qgi_manager;
|
|
||||||
|
|
||||||
// recense les items supprimables
|
|
||||||
QList<QGraphicsItem *> deletable_items;
|
|
||||||
foreach(QGraphicsItem *qgi, items()) {
|
|
||||||
if (qgi -> parentItem()) continue;
|
|
||||||
if (qgraphicsitem_cast<Conductor *>(qgi)) continue;
|
|
||||||
deletable_items << qgi;
|
|
||||||
}
|
|
||||||
|
|
||||||
// suppression des items supprimables
|
|
||||||
foreach(QGraphicsItem *qgi_d, deletable_items) {
|
|
||||||
delete qgi_d;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -247,14 +231,9 @@ QDomDocument Diagram::toXml(bool diagram) {
|
|||||||
if (!border_and_inset.title().isNull()) racine.setAttribute("title", border_and_inset.title());
|
if (!border_and_inset.title().isNull()) racine.setAttribute("title", border_and_inset.title());
|
||||||
if (!border_and_inset.fileName().isNull()) racine.setAttribute("filename", border_and_inset.fileName());
|
if (!border_and_inset.fileName().isNull()) racine.setAttribute("filename", border_and_inset.fileName());
|
||||||
if (!border_and_inset.folio().isNull()) racine.setAttribute("folio", border_and_inset.folio());
|
if (!border_and_inset.folio().isNull()) racine.setAttribute("folio", border_and_inset.folio());
|
||||||
racine.setAttribute("cols", border_and_inset.nbColumns());
|
racine.setAttribute("cols", border_and_inset.nbColumn());
|
||||||
racine.setAttribute("colsize", QString("%1").arg(border_and_inset.columnsWidth()));
|
racine.setAttribute("colsize", border_and_inset.columnsWidth());
|
||||||
racine.setAttribute("rows", border_and_inset.nbRows());
|
racine.setAttribute("height", border_and_inset.columnsHeight());
|
||||||
racine.setAttribute("rowsize", QString("%1").arg(border_and_inset.rowsHeight()));
|
|
||||||
// attribut datant de la version 0.1 - laisse pour retrocompatibilite
|
|
||||||
racine.setAttribute("height", QString("%1").arg(border_and_inset.diagramHeight()));
|
|
||||||
racine.setAttribute("displaycols", border_and_inset.columnsAreDisplayed() ? "true" : "false");
|
|
||||||
racine.setAttribute("displayrows", border_and_inset.rowsAreDisplayed() ? "true" : "false");
|
|
||||||
|
|
||||||
// type de conducteur par defaut
|
// type de conducteur par defaut
|
||||||
QDomElement default_conductor = document.createElement("defaultconductor");
|
QDomElement default_conductor = document.createElement("defaultconductor");
|
||||||
@@ -358,24 +337,9 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in
|
|||||||
double col_size = root.attribute("colsize").toDouble(&ok);
|
double col_size = root.attribute("colsize").toDouble(&ok);
|
||||||
if (ok) border_and_inset.setColumnsWidth(col_size);
|
if (ok) border_and_inset.setColumnsWidth(col_size);
|
||||||
|
|
||||||
// retrocompatibilite : les schemas enregistres avec la 0.1 ont un attribut "height"
|
// hauteur du schema
|
||||||
if (root.hasAttribute("rows") && root.hasAttribute("rowsize")) {
|
double height = root.attribute("height").toDouble(&ok);
|
||||||
// nombre de lignes
|
if (ok) border_and_inset.setColumnsHeight(height);
|
||||||
int nb_rows = root.attribute("rows").toInt(&ok);
|
|
||||||
if (ok) border_and_inset.setNbRows(nb_rows);
|
|
||||||
|
|
||||||
// taille des lignes
|
|
||||||
double row_size = root.attribute("rowsize").toDouble(&ok);
|
|
||||||
if (ok) border_and_inset.setRowsHeight(row_size);
|
|
||||||
} else {
|
|
||||||
// hauteur du schema
|
|
||||||
double height = root.attribute("height").toDouble(&ok);
|
|
||||||
if (ok) border_and_inset.setDiagramHeight(height);
|
|
||||||
}
|
|
||||||
|
|
||||||
// affichage des lignes et colonnes
|
|
||||||
border_and_inset.displayColumns(root.attribute("displaycols") != "false");
|
|
||||||
border_and_inset.displayRows(root.attribute("displayrows") != "false");
|
|
||||||
|
|
||||||
border_and_inset.adjustInsetToColumns();
|
border_and_inset.adjustInsetToColumns();
|
||||||
|
|
||||||
@@ -497,17 +461,6 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Gere le fait qu'un texte du schema ait ete modifie
|
|
||||||
@param text_item Texte modifie
|
|
||||||
@param old_text Ancien texte
|
|
||||||
@param new_text Nouveau texte
|
|
||||||
*/
|
|
||||||
void Diagram::diagramTextChanged(DiagramTextItem *text_item, const QString &old_text, const QString &new_text) {
|
|
||||||
if (!text_item) return;
|
|
||||||
undo_stack -> push(new ChangeDiagramTextCommand(text_item, old_text, new_text));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Verifie si la selection est passe d'un etat ou elle est vide a un etat ou
|
Verifie si la selection est passe d'un etat ou elle est vide a un etat ou
|
||||||
elle ne l'est pas, et inversement. Si c'est le cas, le signal
|
elle ne l'est pas, et inversement. Si c'est le cas, le signal
|
||||||
@@ -75,8 +75,8 @@ class Diagram : public QGraphicsScene {
|
|||||||
QSet<Conductor *> conductors_to_move;
|
QSet<Conductor *> conductors_to_move;
|
||||||
QHash<Conductor *, Terminal *> conductors_to_update;
|
QHash<Conductor *, Terminal *> conductors_to_update;
|
||||||
QSet<DiagramTextItem *> texts_to_move;
|
QSet<DiagramTextItem *> texts_to_move;
|
||||||
QGIManager *qgi_manager;
|
QGIManager qgi_manager;
|
||||||
QUndoStack *undo_stack;
|
QUndoStack undo_stack;
|
||||||
bool draw_terminals;
|
bool draw_terminals;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
@@ -126,9 +126,6 @@ class Diagram : public QGraphicsScene {
|
|||||||
QUndoStack &undoStack();
|
QUndoStack &undoStack();
|
||||||
QGIManager &qgiManager();
|
QGIManager &qgiManager();
|
||||||
|
|
||||||
public slots:
|
|
||||||
void diagramTextChanged(DiagramTextItem *, const QString &, const QString &);
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void slot_checkSelectionEmptinessChange();
|
void slot_checkSelectionEmptinessChange();
|
||||||
|
|
||||||
@@ -253,12 +250,12 @@ inline const QSet<DiagramTextItem *> &Diagram::textsToMove() {
|
|||||||
|
|
||||||
/// @return la pile d'annulations de ce schema
|
/// @return la pile d'annulations de ce schema
|
||||||
inline QUndoStack &Diagram::undoStack() {
|
inline QUndoStack &Diagram::undoStack() {
|
||||||
return(*undo_stack);
|
return(undo_stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @return le egstionnaire de QGraphicsItem de ce schema
|
/// @return le egstionnaire de QGraphicsItem de ce schema
|
||||||
inline QGIManager &Diagram::qgiManager() {
|
inline QGIManager &Diagram::qgiManager() {
|
||||||
return(*qgi_manager);
|
return(qgi_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @return true si les bornes sont affichees, false sinon
|
/// @return true si les bornes sont affichees, false sinon
|
||||||
@@ -81,23 +81,11 @@ AddTextCommand::~AddTextCommand() {
|
|||||||
|
|
||||||
/// Annule l'ajout
|
/// Annule l'ajout
|
||||||
void AddTextCommand::undo() {
|
void AddTextCommand::undo() {
|
||||||
QObject::disconnect(
|
|
||||||
textitem,
|
|
||||||
SIGNAL(diagramTextChanged(DiagramTextItem *, const QString &, const QString &)),
|
|
||||||
diagram,
|
|
||||||
SLOT(diagramTextChanged(DiagramTextItem *, const QString &, const QString &))
|
|
||||||
);
|
|
||||||
diagram -> removeItem(textitem);
|
diagram -> removeItem(textitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Refait l'ajour
|
/// Refait l'ajour
|
||||||
void AddTextCommand::redo() {
|
void AddTextCommand::redo() {
|
||||||
QObject::connect(
|
|
||||||
textitem,
|
|
||||||
SIGNAL(diagramTextChanged(DiagramTextItem *, const QString &, const QString &)),
|
|
||||||
diagram,
|
|
||||||
SLOT(diagramTextChanged(DiagramTextItem *, const QString &, const QString &))
|
|
||||||
);
|
|
||||||
diagram -> addItem(textitem);
|
diagram -> addItem(textitem);
|
||||||
textitem -> setPos(position);
|
textitem -> setPos(position);
|
||||||
}
|
}
|
||||||
@@ -536,11 +524,13 @@ void ChangeInsetCommand::redo() {
|
|||||||
@param dia Schema modifie
|
@param dia Schema modifie
|
||||||
@param parent QUndoCommand parent
|
@param parent QUndoCommand parent
|
||||||
*/
|
*/
|
||||||
ChangeBorderCommand::ChangeBorderCommand(Diagram *dia, const BorderProperties &old_bp, const BorderProperties &new_bp, QUndoCommand *parent) :
|
ChangeBorderCommand::ChangeBorderCommand(Diagram *dia, QUndoCommand *parent) :
|
||||||
QUndoCommand(QObject::tr("modifier les dimensions du sch\351ma"), parent),
|
QUndoCommand(QObject::tr("modifier les dimensions du sch\351ma"), parent),
|
||||||
diagram(dia),
|
diagram(dia),
|
||||||
old_properties(old_bp),
|
columnsCountDifference(0),
|
||||||
new_properties(new_bp)
|
columnsHeightDifference(0.0),
|
||||||
|
columnsWidthDifference(0.0),
|
||||||
|
headersHeightDifference(0.0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,14 +538,39 @@ ChangeBorderCommand::ChangeBorderCommand(Diagram *dia, const BorderProperties &o
|
|||||||
ChangeBorderCommand::~ChangeBorderCommand() {
|
ChangeBorderCommand::~ChangeBorderCommand() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Applique les changements au schema
|
||||||
|
@param coeff comme les changements s'expriment sous forme de nombres dont
|
||||||
|
il suffit d'inverser le signe pour les annuler, ces valeurs sont ici
|
||||||
|
multipliees par le coefficient passe en parametre avant d'etre appliquees.
|
||||||
|
Pour resumer : 1 pour refaire, -1 pour annuler.
|
||||||
|
*/
|
||||||
|
void ChangeBorderCommand::applyChanges(int coeff) {
|
||||||
|
// reference vers l'objet border_and_inset du schema
|
||||||
|
BorderInset &border = diagram -> border_and_inset;
|
||||||
|
if (columnsCountDifference) {
|
||||||
|
border.setNbColumns(border.nbColumn() + (columnsCountDifference * coeff));
|
||||||
|
}
|
||||||
|
if (columnsHeightDifference) {
|
||||||
|
border.setColumnsHeight(border.columnsHeight() + (columnsHeightDifference * coeff));
|
||||||
|
}
|
||||||
|
if (columnsWidthDifference) {
|
||||||
|
border.setColumnsWidth(border.columnsWidth() + (columnsWidthDifference * coeff));
|
||||||
|
}
|
||||||
|
if (headersHeightDifference) {
|
||||||
|
border.setColumnsHeaderHeight(border.columnsHeaderHeight() + (headersHeightDifference * coeff));
|
||||||
|
}
|
||||||
|
border.adjustInsetToColumns();
|
||||||
|
}
|
||||||
|
|
||||||
/// Annule les changements apportes au schema
|
/// Annule les changements apportes au schema
|
||||||
void ChangeBorderCommand::undo() {
|
void ChangeBorderCommand::undo() {
|
||||||
diagram -> border_and_inset.importBorder(old_properties);
|
applyChanges(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Refait les changements apportes au schema
|
/// Refait les changements apportes au schema
|
||||||
void ChangeBorderCommand::redo() {
|
void ChangeBorderCommand::redo() {
|
||||||
diagram -> border_and_inset.importBorder(new_properties);
|
applyChanges(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,9 +22,7 @@
|
|||||||
#include "diagramcontent.h"
|
#include "diagramcontent.h"
|
||||||
#include "diagramtextitem.h"
|
#include "diagramtextitem.h"
|
||||||
#include "conductor.h"
|
#include "conductor.h"
|
||||||
#include "borderproperties.h"
|
|
||||||
#include "conductorproperties.h"
|
#include "conductorproperties.h"
|
||||||
#include "insetproperties.h"
|
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
/**
|
/**
|
||||||
Cette classe represente l'action d'ajouter un element au schema
|
Cette classe represente l'action d'ajouter un element au schema
|
||||||
@@ -327,12 +325,16 @@ class ChangeInsetCommand : public QUndoCommand {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Cette classe represente l'action de modifier les dimensions d'un schema
|
Cette classe represente l'action de modifier :
|
||||||
|
-le nombre de colonnes d'un schema
|
||||||
|
-la hauteur des colonnes
|
||||||
|
-la largeur des colonnes
|
||||||
|
-la hauteur des en-tetes des colonnes
|
||||||
*/
|
*/
|
||||||
class ChangeBorderCommand : public QUndoCommand {
|
class ChangeBorderCommand : public QUndoCommand {
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
ChangeBorderCommand(Diagram *, const BorderProperties &, const BorderProperties &, QUndoCommand * = 0);
|
ChangeBorderCommand(Diagram *, QUndoCommand * = 0);
|
||||||
virtual ~ChangeBorderCommand();
|
virtual ~ChangeBorderCommand();
|
||||||
private:
|
private:
|
||||||
ChangeBorderCommand(const ChangeBorderCommand &);
|
ChangeBorderCommand(const ChangeBorderCommand &);
|
||||||
@@ -341,16 +343,22 @@ class ChangeBorderCommand : public QUndoCommand {
|
|||||||
public:
|
public:
|
||||||
virtual void undo();
|
virtual void undo();
|
||||||
virtual void redo();
|
virtual void redo();
|
||||||
|
private:
|
||||||
|
virtual void applyChanges(int = 1);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
/// schema modifie
|
/// schema modifie
|
||||||
Diagram *diagram;
|
Diagram *diagram;
|
||||||
public:
|
public:
|
||||||
/// anciennes dimensions du schema
|
/// nombre de colonnes ajoutees / enlevees
|
||||||
BorderProperties old_properties;
|
int columnsCountDifference;
|
||||||
/// nouvelles dimensions du schema
|
/// delta pour la hauteur des colonnes
|
||||||
BorderProperties new_properties;
|
qreal columnsHeightDifference;
|
||||||
|
/// delta pour la largeur des colonnes
|
||||||
|
qreal columnsWidthDifference;
|
||||||
|
/// delta pour la hauteur des entetes des colonnes
|
||||||
|
qreal headersHeightDifference;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -119,15 +119,12 @@ QString DiagramContent::sentence(int filter) const {
|
|||||||
@param d Object QDebug a utiliser pour l'affichage des informations de debug
|
@param d Object QDebug a utiliser pour l'affichage des informations de debug
|
||||||
@param c Contenu de schema a debugger
|
@param c Contenu de schema a debugger
|
||||||
*/
|
*/
|
||||||
QDebug &operator<<(QDebug d, DiagramContent &) {
|
QDebug &operator<<(QDebug d, DiagramContent &c) {
|
||||||
d << "DiagramContent {" << "\n";
|
d << "DiagramContent {" << "\n";
|
||||||
/*
|
|
||||||
FIXME Le double-heritage QObject / QGraphicsItem a casse cet operateur
|
|
||||||
d << " elements :" << c.elements << "\n";
|
d << " elements :" << c.elements << "\n";
|
||||||
d << " conductorsToUpdate :" << c.conductorsToUpdate.keys() << "\n";
|
d << " conductorsToUpdate :" << c.conductorsToUpdate.keys() << "\n";
|
||||||
d << " conductorsToMove :" << c.conductorsToMove << "\n";
|
d << " conductorsToMove :" << c.conductorsToMove << "\n";
|
||||||
d << " otherConductors :" << c.otherConductors << "\n";
|
d << " otherConductors :" << c.otherConductors << "\n";
|
||||||
*/
|
|
||||||
d << "}";
|
d << "}";
|
||||||
return(d.space());
|
return(d.space());
|
||||||
}
|
}
|
||||||
@@ -31,9 +31,6 @@ DiagramPrintDialog::DiagramPrintDialog(Diagram *dia, QWidget *parent) :
|
|||||||
{
|
{
|
||||||
// initialise l'imprimante
|
// initialise l'imprimante
|
||||||
printer = new QPrinter();
|
printer = new QPrinter();
|
||||||
|
|
||||||
// orientation paysage par defaut
|
|
||||||
printer -> setOrientation(QPrinter::Landscape);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,35 +55,17 @@ QString DiagramPrintDialog::PDFName() const {
|
|||||||
return(pdf_name);
|
return(pdf_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Definit le nom du document
|
|
||||||
*/
|
|
||||||
void DiagramPrintDialog::setDocName(const QString &name) {
|
|
||||||
doc_name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@return le nom du document
|
|
||||||
*/
|
|
||||||
QString DiagramPrintDialog::docName() const {
|
|
||||||
return(doc_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Execute le dialogue d'impression
|
Execute le dialogue d'impression
|
||||||
*/
|
*/
|
||||||
void DiagramPrintDialog::exec() {
|
void DiagramPrintDialog::exec() {
|
||||||
|
|
||||||
|
// affichage du dialogue d'impression standard
|
||||||
|
QPrintDialog print_dialog(printer);
|
||||||
|
print_dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
|
||||||
#ifndef Q_OS_WIN32
|
#ifndef Q_OS_WIN32
|
||||||
if (!pdf_name.isEmpty()) printer -> setOutputFileName(pdf_name);
|
if (!pdf_name.isEmpty()) printer -> setOutputFileName(pdf_name);
|
||||||
if (!doc_name.isEmpty()) printer -> setDocName(doc_name);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// affichage du dialogue d'impression standard
|
|
||||||
QPrintDialog print_dialog(printer, parentWidget());
|
|
||||||
print_dialog.setWindowTitle(tr("Options d'impression"));
|
|
||||||
print_dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile | QAbstractPrintDialog::PrintShowPageSize);
|
|
||||||
|
|
||||||
if (print_dialog.exec() == QDialog::Rejected) return;
|
if (print_dialog.exec() == QDialog::Rejected) return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -145,28 +124,12 @@ int DiagramPrintDialog::verticalPagesCount(bool fullpage) const {
|
|||||||
Construit un dialogue non standard pour demander les pages a imprimer a l'utilisateur
|
Construit un dialogue non standard pour demander les pages a imprimer a l'utilisateur
|
||||||
*/
|
*/
|
||||||
void DiagramPrintDialog::buildDialog() {
|
void DiagramPrintDialog::buildDialog() {
|
||||||
dialog = new QDialog(parentWidget());
|
dialog = new QDialog();
|
||||||
dialog -> setMinimumWidth(460);
|
|
||||||
dialog -> setWindowTitle(tr("Options d'impression"));
|
dialog -> setWindowTitle(tr("Options d'impression"));
|
||||||
options_label = new QLabel();
|
options_label = new QLabel();
|
||||||
use_full_page = new QCheckBox(tr("Utiliser toute la feuille"));
|
use_full_page = new QCheckBox(tr("Utiliser toute la feuille"));
|
||||||
use_full_page_label_ = new QLabel(tr(
|
|
||||||
"Si cette option est coch\351e, les marges de la feuille seront "
|
|
||||||
"ignor\351es et toute sa surface sera utilis\351e pour l'impression. "
|
|
||||||
"Cela peut ne pas \352tre support\351 par votre imprimante."
|
|
||||||
));
|
|
||||||
use_full_page_label_ -> setWordWrap(true);
|
|
||||||
use_full_page_label_ -> setContentsMargins(20, 0, 0, 0);
|
|
||||||
fit_diagram_to_page = new QCheckBox(tr("Adapter le sch\351ma \340 la page"));
|
fit_diagram_to_page = new QCheckBox(tr("Adapter le sch\351ma \340 la page"));
|
||||||
fit_diagram_to_page_label_ = new QLabel(tr(
|
range_from_label = new QLabel(tr("Plage de "));
|
||||||
"Si cette option est coch\351e, le sch\351ma sera agrandi ou "
|
|
||||||
"r\351tr\351ci de fa\347on \340 remplir toute la surface imprimable "
|
|
||||||
"d'une et une seule page."
|
|
||||||
));
|
|
||||||
fit_diagram_to_page_label_ -> setWordWrap(true);
|
|
||||||
fit_diagram_to_page_label_ -> setContentsMargins(20, 0, 0, 0);
|
|
||||||
fit_diagram_to_page -> setChecked(true);
|
|
||||||
range_from_label = new QLabel(tr("Pages \340 imprimer : plage de "));
|
|
||||||
start_page = new QSpinBox();
|
start_page = new QSpinBox();
|
||||||
to_label = new QLabel(tr(" \340 "));
|
to_label = new QLabel(tr(" \340 "));
|
||||||
end_page = new QSpinBox();
|
end_page = new QSpinBox();
|
||||||
@@ -177,14 +140,11 @@ void DiagramPrintDialog::buildDialog() {
|
|||||||
pages_layout -> addWidget(start_page);
|
pages_layout -> addWidget(start_page);
|
||||||
pages_layout -> addWidget(to_label);
|
pages_layout -> addWidget(to_label);
|
||||||
pages_layout -> addWidget(end_page);
|
pages_layout -> addWidget(end_page);
|
||||||
pages_layout -> addStretch();
|
|
||||||
|
|
||||||
QVBoxLayout *dialog_layout = new QVBoxLayout(dialog);
|
QVBoxLayout *dialog_layout = new QVBoxLayout(dialog);
|
||||||
dialog_layout -> addWidget(options_label);
|
dialog_layout -> addWidget(options_label);
|
||||||
dialog_layout -> addWidget(use_full_page);
|
dialog_layout -> addWidget(use_full_page);
|
||||||
dialog_layout -> addWidget(use_full_page_label_);
|
|
||||||
dialog_layout -> addWidget(fit_diagram_to_page);
|
dialog_layout -> addWidget(fit_diagram_to_page);
|
||||||
dialog_layout -> addWidget(fit_diagram_to_page_label_);
|
|
||||||
dialog_layout -> addLayout(pages_layout);
|
dialog_layout -> addLayout(pages_layout);
|
||||||
dialog_layout -> addStretch();
|
dialog_layout -> addStretch();
|
||||||
dialog_layout -> addWidget(buttons);
|
dialog_layout -> addWidget(buttons);
|
||||||
@@ -267,7 +227,11 @@ void DiagramPrintDialog::print() {
|
|||||||
|
|
||||||
// impression physique (!= fichier PDF)
|
// impression physique (!= fichier PDF)
|
||||||
if (printer -> outputFileName().isEmpty()) {
|
if (printer -> outputFileName().isEmpty()) {
|
||||||
// utiliser cette condition pour agir differemment en cas d'impression physique
|
// lorsqu'on imprime en paysage sur imprimante reelle, il faut pivoter soi-meme le rendu
|
||||||
|
if (printer -> orientation() == QPrinter::Landscape) {
|
||||||
|
qp.rotate(90.0);
|
||||||
|
qp.translate(0.0, -printer -> pageRect().height());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diagram -> setDisplayGrid(false);
|
diagram -> setDisplayGrid(false);
|
||||||
@@ -38,8 +38,6 @@ class DiagramPrintDialog : public QWidget {
|
|||||||
public:
|
public:
|
||||||
void setPDFName(const QString &);
|
void setPDFName(const QString &);
|
||||||
QString PDFName() const;
|
QString PDFName() const;
|
||||||
void setDocName(const QString &);
|
|
||||||
QString docName() const;
|
|
||||||
int pagesCount(bool = false) const;
|
int pagesCount(bool = false) const;
|
||||||
int horizontalPagesCount(bool = false) const;
|
int horizontalPagesCount(bool = false) const;
|
||||||
int verticalPagesCount(bool = false) const;
|
int verticalPagesCount(bool = false) const;
|
||||||
@@ -59,16 +57,13 @@ class DiagramPrintDialog : public QWidget {
|
|||||||
private:
|
private:
|
||||||
Diagram *diagram;
|
Diagram *diagram;
|
||||||
QPrinter *printer;
|
QPrinter *printer;
|
||||||
QString doc_name;
|
|
||||||
QString pdf_name;
|
QString pdf_name;
|
||||||
QDialog *dialog;
|
QDialog *dialog;
|
||||||
QLabel *options_label;
|
QLabel *options_label;
|
||||||
QLabel *range_from_label;
|
QLabel *range_from_label;
|
||||||
QLabel *to_label;
|
QLabel *to_label;
|
||||||
QCheckBox *use_full_page;
|
QCheckBox *use_full_page;
|
||||||
QLabel *use_full_page_label_;
|
|
||||||
QCheckBox *fit_diagram_to_page;
|
QCheckBox *fit_diagram_to_page;
|
||||||
QLabel *fit_diagram_to_page_label_;
|
|
||||||
QSpinBox *start_page;
|
QSpinBox *start_page;
|
||||||
QSpinBox *end_page;
|
QSpinBox *end_page;
|
||||||
QDialogButtonBox *buttons;
|
QDialogButtonBox *buttons;
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "diagramtextitem.h"
|
#include "diagramtextitem.h"
|
||||||
#include "diagramcommands.h"
|
#include "diagramcommands.h"
|
||||||
#include "qetapp.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -28,7 +27,6 @@ DiagramTextItem::DiagramTextItem(QGraphicsItem *parent, QGraphicsScene *scene) :
|
|||||||
QGraphicsTextItem(parent, scene)
|
QGraphicsTextItem(parent, scene)
|
||||||
{
|
{
|
||||||
setDefaultTextColor(Qt::black);
|
setDefaultTextColor(Qt::black);
|
||||||
setFont(QFont(QETApp::diagramTextsFont(), 9));
|
|
||||||
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
|
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
|
||||||
connect(this, SIGNAL(lostFocus()), this, SLOT(setNonFocusable()));
|
connect(this, SIGNAL(lostFocus()), this, SLOT(setNonFocusable()));
|
||||||
}
|
}
|
||||||
@@ -44,7 +42,6 @@ DiagramTextItem::DiagramTextItem(const QString &text, QGraphicsItem *parent, QGr
|
|||||||
previous_text(text)
|
previous_text(text)
|
||||||
{
|
{
|
||||||
setDefaultTextColor(Qt::black);
|
setDefaultTextColor(Qt::black);
|
||||||
setFont(QFont(QETApp::diagramTextsFont(), 9));
|
|
||||||
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
|
setFlags(QGraphicsItem::ItemIsSelectable|QGraphicsItem::ItemIsMovable);
|
||||||
connect(this, SIGNAL(lostFocus()), this, SLOT(setNonFocusable()));
|
connect(this, SIGNAL(lostFocus()), this, SLOT(setNonFocusable()));
|
||||||
}
|
}
|
||||||
@@ -63,10 +60,12 @@ Diagram *DiagramTextItem::diagram() const {
|
|||||||
*/
|
*/
|
||||||
void DiagramTextItem::focusOutEvent(QFocusEvent *e) {
|
void DiagramTextItem::focusOutEvent(QFocusEvent *e) {
|
||||||
QGraphicsTextItem::focusOutEvent(e);
|
QGraphicsTextItem::focusOutEvent(e);
|
||||||
// signale la modification du texte si besoin
|
// si le texte a ete modifie
|
||||||
if (toPlainText() != previous_text) {
|
if (toPlainText() != previous_text) {
|
||||||
emit(diagramTextChanged(this, previous_text, toPlainText()));
|
if (Diagram *dia = diagram()) {
|
||||||
previous_text = toPlainText();
|
dia -> undoStack().push(new ChangeDiagramTextCommand(this, previous_text, toPlainText()));
|
||||||
|
previous_text = toPlainText();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// deselectionne le texte
|
// deselectionne le texte
|
||||||
@@ -99,8 +98,8 @@ void DiagramTextItem::fromXml(const QDomElement &e) {
|
|||||||
*/
|
*/
|
||||||
QDomElement DiagramTextItem::toXml(QDomDocument &document) const {
|
QDomElement DiagramTextItem::toXml(QDomDocument &document) const {
|
||||||
QDomElement result = document.createElement("input");
|
QDomElement result = document.createElement("input");
|
||||||
result.setAttribute("x", QString("%1").arg(pos().x()));
|
result.setAttribute("x", pos().x());
|
||||||
result.setAttribute("y", QString("%1").arg(pos().y()));
|
result.setAttribute("y", pos().y());
|
||||||
result.setAttribute("text", toPlainText());
|
result.setAttribute("text", toPlainText());
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
@@ -59,9 +59,7 @@ class DiagramTextItem : public QGraphicsTextItem {
|
|||||||
signals:
|
signals:
|
||||||
/// signal emis lorsque le champ de texte perd le focus
|
/// signal emis lorsque le champ de texte perd le focus
|
||||||
void lostFocus();
|
void lostFocus();
|
||||||
/// signal emis lorsque le champ de texte a ete modifie
|
|
||||||
void diagramTextChanged(DiagramTextItem *, const QString &, const QString &);
|
|
||||||
|
|
||||||
// slots
|
// slots
|
||||||
public slots:
|
public slots:
|
||||||
void setNonFocusable();
|
void setNonFocusable();
|
||||||
@@ -24,14 +24,12 @@
|
|||||||
#include "diagramcommands.h"
|
#include "diagramcommands.h"
|
||||||
#include "conductorpropertieswidget.h"
|
#include "conductorpropertieswidget.h"
|
||||||
#include "insetpropertieswidget.h"
|
#include "insetpropertieswidget.h"
|
||||||
#include "borderpropertieswidget.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param parent Le QWidget parent de cette vue de schema
|
@param parent Le QWidegt parent de cette vue de schema
|
||||||
*/
|
*/
|
||||||
DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent), is_adding_text(false) {
|
DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent), is_adding_text(false) {
|
||||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
|
||||||
setInteractive(true);
|
setInteractive(true);
|
||||||
setCacheMode(QGraphicsView::CacheBackground);
|
setCacheMode(QGraphicsView::CacheBackground);
|
||||||
setOptimizationFlags(QGraphicsView::DontSavePainterState|QGraphicsView::DontAdjustForAntialiasing);
|
setOptimizationFlags(QGraphicsView::DontSavePainterState|QGraphicsView::DontAdjustForAntialiasing);
|
||||||
@@ -58,7 +56,6 @@ DiagramView::DiagramView(QWidget *parent) : QGraphicsView(parent), is_adding_tex
|
|||||||
|
|
||||||
connect(scene, SIGNAL(selectionEmptinessChanged()), this, SIGNAL(selectionChanged()));
|
connect(scene, SIGNAL(selectionEmptinessChanged()), this, SIGNAL(selectionChanged()));
|
||||||
connect(&(scene -> border_and_inset), SIGNAL(borderChanged(QRectF, QRectF)), this, SLOT(adjustSceneRect()));
|
connect(&(scene -> border_and_inset), SIGNAL(borderChanged(QRectF, QRectF)), this, SLOT(adjustSceneRect()));
|
||||||
connect(&(scene -> border_and_inset), SIGNAL(displayChanged()), this, SLOT(adjustSceneRect()));
|
|
||||||
connect(&(scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(updateWindowTitle()));
|
connect(&(scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(updateWindowTitle()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +66,7 @@ DiagramView::~DiagramView() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Appelle la methode select sur tous les elements de la liste d'elements
|
appelle la methode select sur tous les elements de la liste d'elements
|
||||||
*/
|
*/
|
||||||
void DiagramView::selectAll() {
|
void DiagramView::selectAll() {
|
||||||
if (scene -> items().isEmpty()) return;
|
if (scene -> items().isEmpty()) return;
|
||||||
@@ -119,7 +116,7 @@ void DiagramView::rotateSelection() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
||||||
@param e le QDragEnterEvent correspondant au drag'n drop tente
|
@param e le QDragEnterEvent correspondant au drag'n drop tente
|
||||||
*/
|
*/
|
||||||
void DiagramView::dragEnterEvent(QDragEnterEvent *e) {
|
void DiagramView::dragEnterEvent(QDragEnterEvent *e) {
|
||||||
@@ -128,14 +125,14 @@ void DiagramView::dragEnterEvent(QDragEnterEvent *e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gere les dragleaveevent
|
gere les dragleaveevent
|
||||||
@param e le QDragEnterEvent correspondant au drag'n drop sortant
|
@param e le QDragEnterEvent correspondant au drag'n drop sortant
|
||||||
*/
|
*/
|
||||||
void DiagramView::dragLeaveEvent(QDragLeaveEvent *) {
|
void DiagramView::dragLeaveEvent(QDragLeaveEvent *) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
accepte ou refuse le drag'n drop en fonction du type de donnees entrant
|
||||||
@param e le QDragMoveEvent correspondant au drag'n drop tente
|
@param e le QDragMoveEvent correspondant au drag'n drop tente
|
||||||
*/
|
*/
|
||||||
void DiagramView::dragMoveEvent(QDragMoveEvent *e) {
|
void DiagramView::dragMoveEvent(QDragMoveEvent *e) {
|
||||||
@@ -144,7 +141,7 @@ void DiagramView::dragMoveEvent(QDragMoveEvent *e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gere les depots (drop) acceptes sur le Diagram
|
gere les depots (drop) acceptes sur le Diagram
|
||||||
@param e le QDropEvent correspondant au drag'n drop effectue
|
@param e le QDropEvent correspondant au drag'n drop effectue
|
||||||
*/
|
*/
|
||||||
void DiagramView::dropEvent(QDropEvent *e) {
|
void DiagramView::dropEvent(QDropEvent *e) {
|
||||||
@@ -212,7 +209,7 @@ void DiagramView::zoomReset() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Copie les elements selectionnes du schema dans le presse-papier puis les supprime
|
copie les elements selectionnes du schema dans le presse-papier puis les supprime
|
||||||
*/
|
*/
|
||||||
void DiagramView::cut() {
|
void DiagramView::cut() {
|
||||||
copy();
|
copy();
|
||||||
@@ -222,7 +219,7 @@ void DiagramView::cut() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Copie les elements selectionnes du schema dans le presse-papier
|
copie les elements selectionnes du schema dans le presse-papier
|
||||||
*/
|
*/
|
||||||
void DiagramView::copy() {
|
void DiagramView::copy() {
|
||||||
QClipboard *presse_papier = QApplication::clipboard();
|
QClipboard *presse_papier = QApplication::clipboard();
|
||||||
@@ -262,17 +259,20 @@ void DiagramView::pasteHere() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gere les clics et plus particulierement :
|
gere les clics et plus particulierement le clic du milieu (= coller pour X11)
|
||||||
* le clic du milieu (= coller pour X11)
|
|
||||||
* le clic pour ajouter un champ de texte independant
|
|
||||||
*/
|
*/
|
||||||
void DiagramView::mousePressEvent(QMouseEvent *e) {
|
void DiagramView::mousePressEvent(QMouseEvent *e) {
|
||||||
if (e -> buttons() == Qt::MidButton) {
|
if (e -> buttons() == Qt::MidButton) {
|
||||||
paste(mapToScene(e -> pos()), QClipboard::Selection);
|
paste(mapToScene(e -> pos()), QClipboard::Selection);
|
||||||
} else {
|
} else {
|
||||||
if (is_adding_text && e -> buttons() == Qt::LeftButton) {
|
if (is_adding_text && e -> buttons() == Qt::LeftButton) {
|
||||||
addDiagramTextAtPos(mapToScene(e -> pos()));
|
DiagramTextItem *dti = new DiagramTextItem();
|
||||||
|
dti -> setPlainText("_");
|
||||||
|
dti -> previous_text = "_";
|
||||||
|
scene -> undoStack().push(new AddTextCommand(scene, dti, e -> pos()));
|
||||||
|
adjustSceneRect();
|
||||||
is_adding_text = false;
|
is_adding_text = false;
|
||||||
|
emit(textAdded(false));
|
||||||
}
|
}
|
||||||
QGraphicsView::mousePressEvent(e);
|
QGraphicsView::mousePressEvent(e);
|
||||||
}
|
}
|
||||||
@@ -340,7 +340,7 @@ bool DiagramView::open(QString n_fichier, int *erreur) {
|
|||||||
qreal diagram_version = root.attribute("version").toDouble(&conv_ok);
|
qreal diagram_version = root.attribute("version").toDouble(&conv_ok);
|
||||||
if (conv_ok && QET::version.toDouble() < diagram_version) {
|
if (conv_ok && QET::version.toDouble() < diagram_version) {
|
||||||
QMessageBox::warning(
|
QMessageBox::warning(
|
||||||
this,
|
0,
|
||||||
tr("Avertissement"),
|
tr("Avertissement"),
|
||||||
tr("Ce document semble avoir \351t\351 enregistr\351 avec une "
|
tr("Ce document semble avoir \351t\351 enregistr\351 avec une "
|
||||||
"version ult\351rieure de QElectroTech. Il est possible que "
|
"version ult\351rieure de QElectroTech. Il est possible que "
|
||||||
@@ -425,8 +425,10 @@ void DiagramView::closeEvent(QCloseEvent *event) {
|
|||||||
default: retour = true; // l'utilisateur dit non ou ferme le dialogue: c'est reussi
|
default: retour = true; // l'utilisateur dit non ou ferme le dialogue: c'est reussi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (retour) event -> accept();
|
if (retour) {
|
||||||
else event -> ignore();
|
event -> accept();
|
||||||
|
delete this;
|
||||||
|
} else event -> ignore();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,7 +523,7 @@ bool DiagramView::saveDiagramToFile(QString &n_fichier) {
|
|||||||
Exporte le schema.
|
Exporte le schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::dialogExport() {
|
void DiagramView::dialogExport() {
|
||||||
ExportDialog ed(scene, diagramEditor());
|
ExportDialog ed(scene, this);
|
||||||
ed.exec();
|
ed.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,21 +532,17 @@ void DiagramView::dialogExport() {
|
|||||||
*/
|
*/
|
||||||
void DiagramView::dialogPrint() {
|
void DiagramView::dialogPrint() {
|
||||||
|
|
||||||
// determine un nom possible pour le document et le pdf
|
// determine un nom possible pour le pdf
|
||||||
QString doc_name;
|
|
||||||
QString pdf_file_name;
|
QString pdf_file_name;
|
||||||
if (!file_name.isEmpty()) {
|
if (!file_name.isEmpty()) {
|
||||||
doc_name = QFileInfo(file_name).fileName();
|
|
||||||
pdf_file_name = file_name;
|
pdf_file_name = file_name;
|
||||||
pdf_file_name.replace(QRegExp("\\.qet$", Qt::CaseInsensitive), "");
|
pdf_file_name.replace(QRegExp("\\.qet$", Qt::CaseInsensitive), "");
|
||||||
} else {
|
} else {
|
||||||
doc_name = tr("schema");
|
pdf_file_name = QDir::homePath() + tr("schema");
|
||||||
pdf_file_name = QDir::toNativeSeparators(QDir::homePath() + "/" + tr("schema"));
|
|
||||||
}
|
}
|
||||||
pdf_file_name += ".pdf";
|
pdf_file_name += ".pdf";
|
||||||
|
|
||||||
DiagramPrintDialog print_dialog(scene, this);
|
DiagramPrintDialog print_dialog(scene, this);
|
||||||
print_dialog.setDocName(doc_name);
|
|
||||||
print_dialog.setPDFName(pdf_file_name);
|
print_dialog.setPDFName(pdf_file_name);
|
||||||
print_dialog.exec();
|
print_dialog.exec();
|
||||||
}
|
}
|
||||||
@@ -553,17 +551,53 @@ void DiagramView::dialogPrint() {
|
|||||||
Edite les informations du schema.
|
Edite les informations du schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::dialogEditInfos() {
|
void DiagramView::dialogEditInfos() {
|
||||||
// recupere le cartouche et les dimensions du schema
|
// recupere le cartouche du schema
|
||||||
InsetProperties inset = scene -> border_and_inset.exportInset();
|
InsetProperties inset = scene -> border_and_inset.exportInset();
|
||||||
BorderProperties border = scene -> border_and_inset.exportBorder();
|
|
||||||
|
// recupere les dimensions du schema
|
||||||
|
int columns_count_value = scene -> border_and_inset.nbColumn();
|
||||||
|
int columns_width_value = qRound(scene -> border_and_inset.columnsWidth());
|
||||||
|
int columns_height_value = qRound(scene -> border_and_inset.columnsHeight());
|
||||||
|
|
||||||
// construit le dialogue
|
// construit le dialogue
|
||||||
QDialog popup(diagramEditor());
|
QDialog popup;
|
||||||
popup.setMinimumWidth(400);
|
popup.setMinimumWidth(400);
|
||||||
popup.setWindowTitle(tr("Propri\351t\351s du sch\351ma"));
|
popup.setWindowTitle(tr("Propri\351t\351s du sch\351ma"));
|
||||||
|
|
||||||
BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, &popup);
|
QGroupBox *diagram_size_box = new QGroupBox(tr("Dimensions du sch\351ma"), &popup);
|
||||||
InsetPropertiesWidget *inset_infos = new InsetPropertiesWidget(inset, false, &popup);
|
QGridLayout diagram_size_box_layout(diagram_size_box);
|
||||||
|
|
||||||
|
QLabel *ds1 = new QLabel(tr("Colonnes :"));
|
||||||
|
|
||||||
|
QSpinBox *columns_count = new QSpinBox(diagram_size_box);
|
||||||
|
columns_count -> setMinimum(scene -> border_and_inset.minNbColumns());
|
||||||
|
columns_count -> setValue(columns_count_value);
|
||||||
|
|
||||||
|
QSpinBox *columns_width = new QSpinBox(diagram_size_box);
|
||||||
|
columns_width -> setMinimum(1);
|
||||||
|
columns_width -> setSingleStep(10);
|
||||||
|
columns_width -> setValue(columns_width_value);
|
||||||
|
columns_width -> setPrefix(tr("\327"));
|
||||||
|
columns_width -> setSuffix(tr("px"));
|
||||||
|
|
||||||
|
QLabel *ds2 = new QLabel(tr("Hauteur :"));
|
||||||
|
|
||||||
|
QSpinBox *columns_height = new QSpinBox(diagram_size_box);
|
||||||
|
columns_height -> setRange(qRound(scene -> border_and_inset.minColumnsHeight()), 10000);
|
||||||
|
columns_height -> setSingleStep(80);
|
||||||
|
columns_height -> setValue(columns_height_value);
|
||||||
|
|
||||||
|
diagram_size_box_layout.addWidget(ds1, 0, 0);
|
||||||
|
diagram_size_box_layout.addWidget(columns_count, 0, 1);
|
||||||
|
diagram_size_box_layout.addWidget(columns_width, 0, 2);
|
||||||
|
diagram_size_box_layout.addWidget(ds2, 1, 0);
|
||||||
|
diagram_size_box_layout.addWidget(columns_height, 1, 1);
|
||||||
|
diagram_size_box_layout.setColumnStretch(0, 1);
|
||||||
|
diagram_size_box_layout.setColumnStretch(1, 1);
|
||||||
|
diagram_size_box_layout.setColumnStretch(2, 1);
|
||||||
|
diagram_size_box_layout.setColumnStretch(3, 500);
|
||||||
|
|
||||||
|
InsetPropertiesWidget *inset_infos = new InsetPropertiesWidget(inset, false, &popup);
|
||||||
|
|
||||||
// boutons
|
// boutons
|
||||||
QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
@@ -572,22 +606,30 @@ void DiagramView::dialogEditInfos() {
|
|||||||
|
|
||||||
// ajout dans une disposition verticale
|
// ajout dans une disposition verticale
|
||||||
QVBoxLayout layout_v(&popup);
|
QVBoxLayout layout_v(&popup);
|
||||||
layout_v.addWidget(border_infos);
|
layout_v.addWidget(diagram_size_box);
|
||||||
layout_v.addWidget(inset_infos);
|
layout_v.addWidget(inset_infos);
|
||||||
layout_v.addStretch();
|
layout_v.addStretch();
|
||||||
layout_v.addWidget(&boutons);
|
layout_v.addWidget(&boutons);
|
||||||
// si le dialogue est accepte
|
// si le dialogue est accepte
|
||||||
if (popup.exec() == QDialog::Accepted) {
|
if (popup.exec() == QDialog::Accepted) {
|
||||||
InsetProperties new_inset = inset_infos -> insetProperties();
|
InsetProperties new_inset = inset_infos -> insetProperties();
|
||||||
BorderProperties new_border = border_infos -> borderProperties();
|
|
||||||
// s'il y a des modifications au cartouche
|
// s'il y a des modifications au cartouche
|
||||||
if (new_inset != inset) {
|
if (new_inset != inset) {
|
||||||
scene -> undoStack().push(new ChangeInsetCommand(scene, inset, new_inset));
|
scene -> undoStack().push(new ChangeInsetCommand(scene, inset, new_inset));
|
||||||
}
|
}
|
||||||
|
|
||||||
// s'il y a des modifications aux dimensions du schema
|
// s'il y a des modifications aux dimensions du schema
|
||||||
if (new_border != border) {
|
if (
|
||||||
scene -> undoStack().push(new ChangeBorderCommand(scene, border, new_border));
|
columns_count_value != columns_count -> value() ||\
|
||||||
|
columns_width_value != columns_width -> value() ||\
|
||||||
|
columns_height_value != columns_height -> value()
|
||||||
|
) {
|
||||||
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
|
cbc -> columnsCountDifference = columns_count -> value() - columns_count_value;
|
||||||
|
cbc -> columnsWidthDifference = columns_width -> value() - columns_width_value;
|
||||||
|
cbc -> columnsHeightDifference = columns_height -> value() - columns_height_value;
|
||||||
|
scene -> undoStack().push(cbc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -603,40 +645,36 @@ bool DiagramView::hasSelectedItems() {
|
|||||||
Ajoute une colonne au schema.
|
Ajoute une colonne au schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::addColumn() {
|
void DiagramView::addColumn() {
|
||||||
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
|
cbc -> columnsCountDifference = 1;
|
||||||
new_bp.columns_count += 1;
|
scene -> undoStack().push(cbc);
|
||||||
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Enleve une colonne au schema.
|
Enleve une colonne au schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::removeColumn() {
|
void DiagramView::removeColumn() {
|
||||||
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
|
cbc -> columnsCountDifference = -1;
|
||||||
new_bp.columns_count -= 1;
|
scene -> undoStack().push(cbc);
|
||||||
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Agrandit le schema en hauteur
|
Agrandit le schema en hauteur
|
||||||
*/
|
*/
|
||||||
void DiagramView::addRow() {
|
void DiagramView::expand() {
|
||||||
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
|
cbc -> columnsHeightDifference = 80.0;
|
||||||
new_bp.rows_count += 1;
|
scene -> undoStack().push(cbc);
|
||||||
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Retrecit le schema en hauteur
|
Retrecit le schema en hauteur
|
||||||
*/
|
*/
|
||||||
void DiagramView::removeRow() {
|
void DiagramView::shrink() {
|
||||||
BorderProperties old_bp = scene -> border_and_inset.exportBorder();
|
ChangeBorderCommand *cbc = new ChangeBorderCommand(scene);
|
||||||
BorderProperties new_bp = scene -> border_and_inset.exportBorder();
|
cbc -> columnsHeightDifference = -80.0;
|
||||||
new_bp.rows_count -= 1;
|
scene -> undoStack().push(cbc);
|
||||||
scene -> undoStack().push(new ChangeBorderCommand(scene, old_bp, new_bp));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -725,7 +763,7 @@ void DiagramView::editConductor(Conductor *edited_conductor) {
|
|||||||
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(old_properties);
|
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(old_properties);
|
||||||
|
|
||||||
// l'insere dans un dialogue
|
// l'insere dans un dialogue
|
||||||
QDialog conductor_dialog(diagramEditor());
|
QDialog conductor_dialog;
|
||||||
conductor_dialog.setWindowTitle(tr("\311diter les propri\351t\351s d'un conducteur"));
|
conductor_dialog.setWindowTitle(tr("\311diter les propri\351t\351s d'un conducteur"));
|
||||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
||||||
dialog_layout -> addWidget(cpw);
|
dialog_layout -> addWidget(cpw);
|
||||||
@@ -784,7 +822,7 @@ void DiagramView::editDefaultConductorProperties() {
|
|||||||
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(scene -> defaultConductorProperties);
|
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(scene -> defaultConductorProperties);
|
||||||
|
|
||||||
// l'insere dans un dialogue
|
// l'insere dans un dialogue
|
||||||
QDialog conductor_dialog(diagramEditor());
|
QDialog conductor_dialog;
|
||||||
conductor_dialog.setWindowTitle(tr("\311diter les propri\351t\351s par d\351faut des conducteurs"));
|
conductor_dialog.setWindowTitle(tr("\311diter les propri\351t\351s par d\351faut des conducteurs"));
|
||||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
||||||
dialog_layout -> addWidget(cpw);
|
dialog_layout -> addWidget(cpw);
|
||||||
@@ -821,28 +859,6 @@ void DiagramView::addText() {
|
|||||||
is_adding_text = true;
|
is_adding_text = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Cree un nouveau champ de texte et le place a la position pos
|
|
||||||
en gerant l'annulation ; enfin, le signal textAdded est emis.
|
|
||||||
@param pos Position du champ de texte ajoute
|
|
||||||
@return le champ de texte ajoute
|
|
||||||
*/
|
|
||||||
DiagramTextItem *DiagramView::addDiagramTextAtPos(const QPointF &pos) {
|
|
||||||
// cree un nouveau champ de texte
|
|
||||||
DiagramTextItem *dti = new DiagramTextItem();
|
|
||||||
dti -> setPlainText("_");
|
|
||||||
dti -> previous_text = "_";
|
|
||||||
|
|
||||||
// le place a la position pos en gerant l'annulation
|
|
||||||
scene -> undoStack().push(new AddTextCommand(scene, dti, pos));
|
|
||||||
adjustSceneRect();
|
|
||||||
|
|
||||||
// emet le signal textAdded
|
|
||||||
emit(textAdded(false));
|
|
||||||
|
|
||||||
return(dti);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gere le menu contextuel
|
Gere le menu contextuel
|
||||||
@param e Evenement decrivant la demande de menu contextuel
|
@param e Evenement decrivant la demande de menu contextuel
|
||||||
@@ -863,8 +879,8 @@ void DiagramView::contextMenuEvent(QContextMenuEvent *e) {
|
|||||||
context_menu -> addAction(qde -> infos_diagram);
|
context_menu -> addAction(qde -> infos_diagram);
|
||||||
context_menu -> addAction(qde -> add_column);
|
context_menu -> addAction(qde -> add_column);
|
||||||
context_menu -> addAction(qde -> remove_column);
|
context_menu -> addAction(qde -> remove_column);
|
||||||
context_menu -> addAction(qde -> add_row);
|
context_menu -> addAction(qde -> expand_diagram);
|
||||||
context_menu -> addAction(qde -> remove_row);
|
context_menu -> addAction(qde -> shrink_diagram);
|
||||||
} else {
|
} else {
|
||||||
context_menu -> addAction(qde -> cut);
|
context_menu -> addAction(qde -> cut);
|
||||||
context_menu -> addAction(qde -> copy);
|
context_menu -> addAction(qde -> copy);
|
||||||
@@ -902,7 +918,7 @@ void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
|
|||||||
// recupere le rectangle corespondant au cartouche
|
// recupere le rectangle corespondant au cartouche
|
||||||
QRectF inset_rect(
|
QRectF inset_rect(
|
||||||
Diagram::margin,
|
Diagram::margin,
|
||||||
Diagram::margin + bi.diagramHeight(),
|
Diagram::margin + bi.columnsHeight(),
|
||||||
bi.insetWidth(),
|
bi.insetWidth(),
|
||||||
bi.insetHeight()
|
bi.insetHeight()
|
||||||
);
|
);
|
||||||
@@ -915,14 +931,6 @@ void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
|
|||||||
bi.columnsHeaderHeight()
|
bi.columnsHeaderHeight()
|
||||||
);
|
);
|
||||||
|
|
||||||
// recupere le rectangle correspondant aux en-tetes des lignes
|
|
||||||
QRectF rows_rect(
|
|
||||||
Diagram::margin,
|
|
||||||
Diagram::margin,
|
|
||||||
bi.rowsHeaderWidth(),
|
|
||||||
bi.diagramHeight()
|
|
||||||
);
|
|
||||||
|
|
||||||
// coordonnees du clic par rapport au schema
|
// coordonnees du clic par rapport au schema
|
||||||
QPointF click_pos = viewportTransform().inverted().map(e -> pos());
|
QPointF click_pos = viewportTransform().inverted().map(e -> pos());
|
||||||
|
|
||||||
@@ -933,7 +941,7 @@ void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
|
|||||||
} else {
|
} else {
|
||||||
QGraphicsView::mouseDoubleClickEvent(e);
|
QGraphicsView::mouseDoubleClickEvent(e);
|
||||||
}
|
}
|
||||||
} else if (inset_rect.contains(click_pos) || columns_rect.contains(click_pos) || rows_rect.contains(click_pos)) {
|
} else if (inset_rect.contains(click_pos) || columns_rect.contains(click_pos)) {
|
||||||
// edite les proprietes du schema
|
// edite les proprietes du schema
|
||||||
dialogEditInfos();
|
dialogEditInfos();
|
||||||
} else {
|
} else {
|
||||||
@@ -19,7 +19,6 @@
|
|||||||
#define DIAGRAMVIEW_H
|
#define DIAGRAMVIEW_H
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
class Diagram;
|
class Diagram;
|
||||||
class DiagramTextItem;
|
|
||||||
class QETDiagramEditor;
|
class QETDiagramEditor;
|
||||||
class Conductor;
|
class Conductor;
|
||||||
/**
|
/**
|
||||||
@@ -59,14 +58,13 @@ class DiagramView : public QGraphicsView {
|
|||||||
void dialogPrint();
|
void dialogPrint();
|
||||||
void addColumn();
|
void addColumn();
|
||||||
void removeColumn();
|
void removeColumn();
|
||||||
void addRow();
|
void expand();
|
||||||
void removeRow();
|
void shrink();
|
||||||
/// @return Le schema visualise par ce DiagramView
|
/// @return Le schema visualise par ce DiagramView
|
||||||
Diagram *diagram() { return(scene); }
|
Diagram *diagram() { return(scene); }
|
||||||
QETDiagramEditor *diagramEditor() const;
|
QETDiagramEditor *diagramEditor() const;
|
||||||
bool hasSelectedItems();
|
bool hasSelectedItems();
|
||||||
void addText();
|
void addText();
|
||||||
DiagramTextItem *addDiagramTextAtPos(const QPointF &);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void mouseDoubleClickEvent(QMouseEvent *);
|
virtual void mouseDoubleClickEvent(QMouseEvent *);
|
||||||
@@ -536,8 +536,9 @@ void ElementScene::slot_delete() {
|
|||||||
*/
|
*/
|
||||||
void ElementScene::slot_editSizeHotSpot() {
|
void ElementScene::slot_editSizeHotSpot() {
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog_sh(element_editor);
|
QDialog dialog_sh;
|
||||||
dialog_sh.setModal(true);
|
dialog_sh.setModal(true);
|
||||||
|
dialog_sh.setMinimumSize(400, 230);
|
||||||
dialog_sh.setWindowTitle(tr("\311diter la taille et le point de saisie"));
|
dialog_sh.setWindowTitle(tr("\311diter la taille et le point de saisie"));
|
||||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&dialog_sh);
|
QVBoxLayout *dialog_layout = new QVBoxLayout(&dialog_sh);
|
||||||
|
|
||||||
@@ -575,7 +576,7 @@ void ElementScene::slot_editSizeHotSpot() {
|
|||||||
void ElementScene::slot_editOrientations() {
|
void ElementScene::slot_editOrientations() {
|
||||||
|
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog_ori(element_editor);
|
QDialog dialog_ori;
|
||||||
dialog_ori.setModal(true);
|
dialog_ori.setModal(true);
|
||||||
dialog_ori.setMinimumSize(400, 260);
|
dialog_ori.setMinimumSize(400, 260);
|
||||||
dialog_ori.setWindowTitle(tr("\311diter les orientations"));
|
dialog_ori.setWindowTitle(tr("\311diter les orientations"));
|
||||||
@@ -621,7 +622,7 @@ void ElementScene::slot_editOrientations() {
|
|||||||
void ElementScene::slot_editNames() {
|
void ElementScene::slot_editNames() {
|
||||||
|
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog(element_editor);
|
QDialog dialog;
|
||||||
dialog.setModal(true);
|
dialog.setModal(true);
|
||||||
dialog.setMinimumSize(400, 330);
|
dialog.setMinimumSize(400, 330);
|
||||||
dialog.setWindowTitle(tr("\311diter les noms"));
|
dialog.setWindowTitle(tr("\311diter les noms"));
|
||||||
@@ -80,12 +80,12 @@ void PartArc::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget
|
|||||||
const QDomElement PartArc::toXml(QDomDocument &xml_document) const {
|
const QDomElement PartArc::toXml(QDomDocument &xml_document) const {
|
||||||
QDomElement xml_element = xml_document.createElement("arc");
|
QDomElement xml_element = xml_document.createElement("arc");
|
||||||
QPointF top_left(sceneTopLeft());
|
QPointF top_left(sceneTopLeft());
|
||||||
xml_element.setAttribute("x", QString("%1").arg(top_left.x()));
|
xml_element.setAttribute("x", top_left.x());
|
||||||
xml_element.setAttribute("y", QString("%1").arg(top_left.y()));
|
xml_element.setAttribute("y", top_left.y());
|
||||||
xml_element.setAttribute("width", QString("%1").arg(rect().width()));
|
xml_element.setAttribute("width", rect().width());
|
||||||
xml_element.setAttribute("height", QString("%1").arg(rect().height()));
|
xml_element.setAttribute("height", rect().height());
|
||||||
xml_element.setAttribute("start", QString("%1").arg(start_angle));
|
xml_element.setAttribute("start", start_angle);
|
||||||
xml_element.setAttribute("angle", QString("%1").arg(_angle));
|
xml_element.setAttribute("angle", _angle);
|
||||||
stylesToXml(xml_element);
|
stylesToXml(xml_element);
|
||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
@@ -68,9 +68,9 @@ void PartCircle::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWid
|
|||||||
const QDomElement PartCircle::toXml(QDomDocument &xml_document) const {
|
const QDomElement PartCircle::toXml(QDomDocument &xml_document) const {
|
||||||
QDomElement xml_element = xml_document.createElement("circle");
|
QDomElement xml_element = xml_document.createElement("circle");
|
||||||
QPointF top_left(sceneTopLeft());
|
QPointF top_left(sceneTopLeft());
|
||||||
xml_element.setAttribute("x", QString("%1").arg(top_left.x()));
|
xml_element.setAttribute("x", top_left.x());
|
||||||
xml_element.setAttribute("y", QString("%1").arg(top_left.y()));
|
xml_element.setAttribute("y", top_left.y());
|
||||||
xml_element.setAttribute("diameter", QString("%1").arg(rect().width()));
|
xml_element.setAttribute("diameter", rect().width());
|
||||||
stylesToXml(xml_element);
|
stylesToXml(xml_element);
|
||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
@@ -68,10 +68,10 @@ void PartEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWi
|
|||||||
const QDomElement PartEllipse::toXml(QDomDocument &xml_document) const {
|
const QDomElement PartEllipse::toXml(QDomDocument &xml_document) const {
|
||||||
QDomElement xml_element = xml_document.createElement("ellipse");
|
QDomElement xml_element = xml_document.createElement("ellipse");
|
||||||
QPointF top_left(sceneTopLeft());
|
QPointF top_left(sceneTopLeft());
|
||||||
xml_element.setAttribute("x", QString("%1").arg(top_left.x()));
|
xml_element.setAttribute("x", top_left.x());
|
||||||
xml_element.setAttribute("y", QString("%1").arg(top_left.y()));
|
xml_element.setAttribute("y", top_left.y());
|
||||||
xml_element.setAttribute("width", QString("%1").arg(rect().width()));
|
xml_element.setAttribute("width", rect().width());
|
||||||
xml_element.setAttribute("height", QString("%1").arg(rect().height()));
|
xml_element.setAttribute("height", rect().height());
|
||||||
stylesToXml(xml_element);
|
stylesToXml(xml_element);
|
||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
@@ -66,10 +66,10 @@ const QDomElement PartLine::toXml(QDomDocument &xml_document) const {
|
|||||||
QPointF p2(sceneP2());
|
QPointF p2(sceneP2());
|
||||||
|
|
||||||
QDomElement xml_element = xml_document.createElement("line");
|
QDomElement xml_element = xml_document.createElement("line");
|
||||||
xml_element.setAttribute("x1", QString("%1").arg(p1.x()));
|
xml_element.setAttribute("x1", p1.x());
|
||||||
xml_element.setAttribute("y1", QString("%1").arg(p1.y()));
|
xml_element.setAttribute("y1", p1.y());
|
||||||
xml_element.setAttribute("x2", QString("%1").arg(p2.x()));
|
xml_element.setAttribute("x2", p2.x());
|
||||||
xml_element.setAttribute("y2", QString("%1").arg(p2.y()));
|
xml_element.setAttribute("y2", p2.y());
|
||||||
stylesToXml(xml_element);
|
stylesToXml(xml_element);
|
||||||
return(xml_element);
|
return(xml_element);
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ void PolygonEditor::updatePolygonClosedState() {
|
|||||||
*/
|
*/
|
||||||
void PolygonEditor::updateForm() {
|
void PolygonEditor::updateForm() {
|
||||||
activeConnections(false);
|
activeConnections(false);
|
||||||
while(points_list.takeTopLevelItem(0)) {}
|
while(points_list.takeTopLevelItem(0));
|
||||||
foreach(QPointF point, part -> polygon()) {
|
foreach(QPointF point, part -> polygon()) {
|
||||||
point = part -> mapToScene(point);
|
point = part -> mapToScene(point);
|
||||||
QStringList qsl;
|
QStringList qsl;
|
||||||
@@ -22,7 +22,6 @@
|
|||||||
#include "customelementpart.h"
|
#include "customelementpart.h"
|
||||||
#include "newelementwizard.h"
|
#include "newelementwizard.h"
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
#include "recentfiles.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -261,8 +260,6 @@ void QETElementEditor::setupMenus() {
|
|||||||
|
|
||||||
file_menu -> addAction(new_element);
|
file_menu -> addAction(new_element);
|
||||||
file_menu -> addAction(open);
|
file_menu -> addAction(open);
|
||||||
file_menu -> addMenu(QETApp::elementsRecentFiles() -> menu());
|
|
||||||
connect(QETApp::elementsRecentFiles(), SIGNAL(fileOpeningRequested(const QString &)), this, SLOT(openRecentFile(const QString &)));
|
|
||||||
file_menu -> addAction(save);
|
file_menu -> addAction(save);
|
||||||
file_menu -> addAction(save_as);
|
file_menu -> addAction(save_as);
|
||||||
file_menu -> addSeparator();
|
file_menu -> addSeparator();
|
||||||
@@ -523,7 +520,6 @@ void QETElementEditor::fromFile(const QString &filepath) {
|
|||||||
|
|
||||||
// memorise le fichier
|
// memorise le fichier
|
||||||
setFileName(filepath);
|
setFileName(filepath);
|
||||||
QETApp::elementsRecentFiles() -> fileWasOpened(filepath);
|
|
||||||
slot_updateMenus();
|
slot_updateMenus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,12 +578,12 @@ bool QETElementEditor::isReadOnly() const {
|
|||||||
Lance l'assistant de creation d'un nouvel element.
|
Lance l'assistant de creation d'un nouvel element.
|
||||||
*/
|
*/
|
||||||
void QETElementEditor::slot_new() {
|
void QETElementEditor::slot_new() {
|
||||||
NewElementWizard new_element_wizard(this);
|
NewElementWizard new_element_wizard;
|
||||||
new_element_wizard.exec();
|
new_element_wizard.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Demande un fichier a l'utilisateur et ouvre ce fichier
|
Ouvre un fichier
|
||||||
*/
|
*/
|
||||||
void QETElementEditor::slot_open() {
|
void QETElementEditor::slot_open() {
|
||||||
// demande un nom de fichier a ouvrir a l'utilisateur
|
// demande un nom de fichier a ouvrir a l'utilisateur
|
||||||
@@ -597,30 +593,9 @@ void QETElementEditor::slot_open() {
|
|||||||
_filename.isEmpty() ? QETApp::customElementsDir() : QDir(_filename).absolutePath(),
|
_filename.isEmpty() ? QETApp::customElementsDir() : QDir(_filename).absolutePath(),
|
||||||
tr("\311l\351ments QElectroTech (*.elmt);;Fichiers XML (*.xml);;Tous les fichiers (*)")
|
tr("\311l\351ments QElectroTech (*.elmt);;Fichiers XML (*.xml);;Tous les fichiers (*)")
|
||||||
);
|
);
|
||||||
openElement(user_filename);
|
if (user_filename.isEmpty()) return;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Slot utilise pour ouvrir un fichier recent.
|
|
||||||
Transfere filepath au slot openElement seulement si cet editeur est actif
|
|
||||||
@param filepath Fichier a ouvrir
|
|
||||||
@see openElement
|
|
||||||
*/
|
|
||||||
void QETElementEditor::openRecentFile(const QString &filepath) {
|
|
||||||
if (qApp -> activeWindow() != this) return;
|
|
||||||
openElement(filepath);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Ouvre un fichier element dans un nouvel editeur
|
|
||||||
Cette methode ne controle pas si le fichier est deja ouvert
|
|
||||||
@param filepath Fichier a ouvrir
|
|
||||||
@see fromFile
|
|
||||||
*/
|
|
||||||
void QETElementEditor::openElement(const QString &filepath) {
|
|
||||||
if (filepath.isEmpty()) return;
|
|
||||||
QETElementEditor *cee = new QETElementEditor();
|
QETElementEditor *cee = new QETElementEditor();
|
||||||
cee -> fromFile(filepath);
|
cee -> fromFile(user_filename);
|
||||||
cee -> show();
|
cee -> show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -684,7 +659,6 @@ bool QETElementEditor::slot_saveAs() {
|
|||||||
// si l'enregistrement reussit, le nom du fichier est conserve
|
// si l'enregistrement reussit, le nom du fichier est conserve
|
||||||
if (result_save) {
|
if (result_save) {
|
||||||
setFileName(fn);
|
setFileName(fn);
|
||||||
QETApp::elementsRecentFiles() -> fileWasOpened(fn);
|
|
||||||
ce_scene -> undoStack().setClean();
|
ce_scene -> undoStack().setClean();
|
||||||
}
|
}
|
||||||
// retourne un booleen representatif de la reussite de l'enregistrement
|
// retourne un booleen representatif de la reussite de l'enregistrement
|
||||||
@@ -106,8 +106,6 @@ class QETElementEditor : public QMainWindow {
|
|||||||
public slots:
|
public slots:
|
||||||
void slot_new();
|
void slot_new();
|
||||||
void slot_open();
|
void slot_open();
|
||||||
void openRecentFile(const QString &);
|
|
||||||
void openElement(const QString &);
|
|
||||||
void slot_reload();
|
void slot_reload();
|
||||||
bool slot_save();
|
bool slot_save();
|
||||||
bool slot_saveAs();
|
bool slot_saveAs();
|
||||||
@@ -27,7 +27,6 @@
|
|||||||
Constructeur pour un element sans scene ni parent
|
Constructeur pour un element sans scene ni parent
|
||||||
*/
|
*/
|
||||||
Element::Element(QGraphicsItem *parent, Diagram *scene) :
|
Element::Element(QGraphicsItem *parent, Diagram *scene) :
|
||||||
QObject(),
|
|
||||||
QGraphicsItem(parent, scene),
|
QGraphicsItem(parent, scene),
|
||||||
internal_connections(false)
|
internal_connections(false)
|
||||||
{
|
{
|
||||||
@@ -50,7 +49,7 @@ void Element::paint(QPainter *painter, const QStyleOptionGraphicsItem *options,
|
|||||||
|
|
||||||
#ifdef Q_WS_X11
|
#ifdef Q_WS_X11
|
||||||
// corrige un bug de rendu ne se produisant que lors du rendu sur QGraphicsScene sous X11 au zoom par defaut
|
// corrige un bug de rendu ne se produisant que lors du rendu sur QGraphicsScene sous X11 au zoom par defaut
|
||||||
static bool must_correct_rendering_bug = QETApp::settings().value("correct-rendering", false).toBool();
|
static bool must_correct_rendering_bug = QETApp::settings().value("correct-rendering", true).toBool();
|
||||||
if (must_correct_rendering_bug) {
|
if (must_correct_rendering_bug) {
|
||||||
Diagram *dia = diagram();
|
Diagram *dia = diagram();
|
||||||
if (dia && options -> levelOfDetail == 1.0 && widget) {
|
if (dia && options -> levelOfDetail == 1.0 && widget) {
|
||||||
@@ -156,7 +155,7 @@ bool Element::setOrientation(QET::Orientation o) {
|
|||||||
rotate(rotation_value);
|
rotate(rotation_value);
|
||||||
ori.setCurrent(o);
|
ori.setCurrent(o);
|
||||||
update();
|
update();
|
||||||
foreach(QGraphicsItem *qgi, childItems()) {
|
foreach(QGraphicsItem *qgi, children()) {
|
||||||
if (Terminal *p = qgraphicsitem_cast<Terminal *>(qgi)) p -> updateConductor();
|
if (Terminal *p = qgraphicsitem_cast<Terminal *>(qgi)) p -> updateConductor();
|
||||||
else if (ElementTextItem *eti = qgraphicsitem_cast<ElementTextItem *>(qgi)) {
|
else if (ElementTextItem *eti = qgraphicsitem_cast<ElementTextItem *>(qgi)) {
|
||||||
// applique une rotation contraire si besoin
|
// applique une rotation contraire si besoin
|
||||||
@@ -355,7 +354,7 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr) {
|
|||||||
|
|
||||||
QHash<int, Terminal *> priv_id_adr;
|
QHash<int, Terminal *> priv_id_adr;
|
||||||
int terminals_non_trouvees = 0;
|
int terminals_non_trouvees = 0;
|
||||||
foreach(QGraphicsItem *qgi, childItems()) {
|
foreach(QGraphicsItem *qgi, children()) {
|
||||||
if (Terminal *p = qgraphicsitem_cast<Terminal *>(qgi)) {
|
if (Terminal *p = qgraphicsitem_cast<Terminal *>(qgi)) {
|
||||||
bool terminal_trouvee = false;
|
bool terminal_trouvee = false;
|
||||||
foreach(QDomElement qde, liste_terminals) {
|
foreach(QDomElement qde, liste_terminals) {
|
||||||
@@ -387,7 +386,7 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr) {
|
|||||||
|
|
||||||
// importe les valeurs des champs de texte
|
// importe les valeurs des champs de texte
|
||||||
QList<QDomElement> inputs = QET::findInDomElement(e, "inputs", "input");
|
QList<QDomElement> inputs = QET::findInDomElement(e, "inputs", "input");
|
||||||
foreach(QGraphicsItem *qgi, childItems()) {
|
foreach(QGraphicsItem *qgi, children()) {
|
||||||
if (ElementTextItem *eti = qgraphicsitem_cast<ElementTextItem *>(qgi)) {
|
if (ElementTextItem *eti = qgraphicsitem_cast<ElementTextItem *>(qgi)) {
|
||||||
foreach(QDomElement input, inputs) eti -> fromXml(input);
|
foreach(QDomElement input, inputs) eti -> fromXml(input);
|
||||||
}
|
}
|
||||||
@@ -421,8 +420,8 @@ QDomElement Element::toXml(QDomDocument &document, QHash<Terminal *, int> &table
|
|||||||
element.setAttribute("type", type_elmt);
|
element.setAttribute("type", type_elmt);
|
||||||
|
|
||||||
// position, selection et orientation
|
// position, selection et orientation
|
||||||
element.setAttribute("x", QString("%1").arg(pos().x()));
|
element.setAttribute("x", pos().x());
|
||||||
element.setAttribute("y", QString("%1").arg(pos().y()));
|
element.setAttribute("y", pos().y());
|
||||||
element.setAttribute("orientation", QString("%1").arg(ori.current()));
|
element.setAttribute("orientation", QString("%1").arg(ori.current()));
|
||||||
|
|
||||||
/* recupere le premier id a utiliser pour les bornes de cet element */
|
/* recupere le premier id a utiliser pour les bornes de cet element */
|
||||||
@@ -439,7 +438,7 @@ QDomElement Element::toXml(QDomDocument &document, QHash<Terminal *, int> &table
|
|||||||
// enregistrement des bornes de l'appareil
|
// enregistrement des bornes de l'appareil
|
||||||
QDomElement terminals = document.createElement("terminals");
|
QDomElement terminals = document.createElement("terminals");
|
||||||
// pour chaque enfant de l'element
|
// pour chaque enfant de l'element
|
||||||
foreach(QGraphicsItem *child, childItems()) {
|
foreach(QGraphicsItem *child, children()) {
|
||||||
// si cet enfant est une borne
|
// si cet enfant est une borne
|
||||||
if (Terminal *t = qgraphicsitem_cast<Terminal *>(child)) {
|
if (Terminal *t = qgraphicsitem_cast<Terminal *>(child)) {
|
||||||
// alors on enregistre la borne
|
// alors on enregistre la borne
|
||||||
@@ -454,7 +453,7 @@ QDomElement Element::toXml(QDomDocument &document, QHash<Terminal *, int> &table
|
|||||||
// enregistrement des champ de texte de l'appareil
|
// enregistrement des champ de texte de l'appareil
|
||||||
QDomElement inputs = document.createElement("inputs");
|
QDomElement inputs = document.createElement("inputs");
|
||||||
// pour chaque enfant de l'element
|
// pour chaque enfant de l'element
|
||||||
foreach(QGraphicsItem *child, childItems()) {
|
foreach(QGraphicsItem *child, children()) {
|
||||||
// si cet enfant est un champ de texte
|
// si cet enfant est un champ de texte
|
||||||
if (ElementTextItem *eti = qgraphicsitem_cast<ElementTextItem *>(child)) {
|
if (ElementTextItem *eti = qgraphicsitem_cast<ElementTextItem *>(child)) {
|
||||||
// alors on enregistre le champ de texte
|
// alors on enregistre le champ de texte
|
||||||
@@ -24,9 +24,7 @@ class Diagram;
|
|||||||
/**
|
/**
|
||||||
Cette classe abstraite represente un element electrique.
|
Cette classe abstraite represente un element electrique.
|
||||||
*/
|
*/
|
||||||
class Element : public QObject, public QGraphicsItem {
|
class Element : public QGraphicsItem {
|
||||||
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="50" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="50" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor (NC)</name>
|
<name lang="en" >Contact power contactor (NC)</name>
|
||||||
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="60" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="60" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor (NC)</name>
|
<name lang="en" >Contact power contactor (NC)</name>
|
||||||
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor (NC)</name>
|
<name lang="en" >Contact power contactor (NC)</name>
|
||||||
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor (NC)</name>
|
<name lang="en" >Contact power contactor (NC)</name>
|
||||||
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
<name lang="fr" >Contact puissance contacteur (NF)</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="40" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="40" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor</name>
|
<name lang="en" >Contact power contactor</name>
|
||||||
<name lang="fr" >Contact puissance contacteur</name>
|
<name lang="fr" >Contact puissance contacteur</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="60" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="60" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor</name>
|
<name lang="en" >Contact power contactor</name>
|
||||||
<name lang="fr" >Contact puissance contacteur</name>
|
<name lang="fr" >Contact puissance contacteur</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor</name>
|
<name lang="en" >Contact power contactor</name>
|
||||||
<name lang="fr" >Contact puissance contacteur</name>
|
<name lang="fr" >Contact puissance contacteur</name>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" ic="true" orientation="dnny" >
|
<definition width="70" version="0.1" hotspot_x="10" hotspot_y="25" height="50" type="element" orientation="dnny" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="en" >Contact power contactor</name>
|
<name lang="en" >Contact power contactor</name>
|
||||||
<name lang="fr" >Contact puissance contacteur</name>
|
<name lang="fr" >Contact puissance contacteur</name>
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ ElementsCategoriesList::~ElementsCategoriesList() {
|
|||||||
*/
|
*/
|
||||||
void ElementsCategoriesList::reload() {
|
void ElementsCategoriesList::reload() {
|
||||||
// vide l'arbre
|
// vide l'arbre
|
||||||
while (takeTopLevelItem(0)) {};
|
while (takeTopLevelItem(0));
|
||||||
|
|
||||||
// chargement des elements de la collection commune si droits d'ecriture
|
// chargement des elements de la collection commune si droits d'ecriture
|
||||||
QFileInfo common_collection_info(QETApp::commonElementsDir());
|
QFileInfo common_collection_info(QETApp::commonElementsDir());
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user