Les proprietes des elements affichent desormais la position de l'element dans la grille.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@662 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2009-05-20 21:29:17 +00:00
parent 2ddd1420e3
commit f796eeebe6
11 changed files with 180 additions and 3 deletions

2
CREDIT
View File

@@ -50,4 +50,4 @@ http://www.oxygen-icons.org/ ) лицензированную на услови
Спасибо `trem' за пакет для Mandriva.
Спасибо TuxFamily ( http://tuxfamily.org/ ) за хостинг для проекта.
Спасибо `Nishiki' за элементы и поддержку.
Спасибо qtcentre.org за их класс SingleApplication.
Спасибо qtcentre.org за их класс SingleApplication.

View File

@@ -52,4 +52,4 @@ Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Чтобы увидеть копию этой лицензии, посетите
http://creativecommons.org/licenses/by/2.0/fr/ или отправте письмо в Creative
Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
(данный перевод, на русский язык, является вольным и выполнен не юристом!)
(данный перевод, на русский язык, является вольным и выполнен не юристом!)

2
README
View File

@@ -11,4 +11,4 @@ QET utilise le format XML pour ses éléments et ses schémas et inclut un
[ru]
QElectroTech - приложение написанное на Qt4 и предназначенное для разработки электрических схем.
Оно использует XML-файлы для элементов и схем, и включает, как редактор схем, так и редактор
элементов.
элементов.

View File

@@ -74,6 +74,7 @@ HEADERS += sources/aboutqet.h \
sources/diagram.h \
sources/diagramcommands.h \
sources/diagramcontent.h \
sources/diagramposition.h \
sources/diagramprintdialog.h \
sources/diagramschooser.h \
sources/diagramtextitem.h \
@@ -173,6 +174,7 @@ SOURCES += sources/aboutqet.cpp \
sources/diagram.cpp \
sources/diagramcommands.cpp \
sources/diagramcontent.cpp \
sources/diagramposition.cpp \
sources/diagramprintdialog.cpp \
sources/diagramschooser.cpp \
sources/diagramtextitem.cpp \

View File

@@ -17,6 +17,7 @@
*/
#include <QPainter>
#include "borderinset.h"
#include "diagramposition.h"
#include "qetapp.h"
#include "math.h"
@@ -426,6 +427,36 @@ void BorderInset::adjustInsetToColumns() {
setInsetWidth(diagramWidth());
}
/**
@param pos Position cartesienne (ex : 10.3, 45.2) a transformer en position
dans la grille (ex : B2)
@return la position dans la grille correspondant a pos
*/
DiagramPosition BorderInset::convertPosition(const QPointF &pos) {
// recupere le rectangle quadrille par les en-tetes
QRectF grid_rect(
rowsHeaderWidth(),
columnsHeaderHeight(),
diagramWidth(),
diagramHeight()
);
if (!grid_rect.contains(pos)) {
return(DiagramPosition("", 0));
}
QPointF relative_pos = pos - grid_rect.topLeft();
int row_number = ceil(relative_pos.x() / columnsWidth());
int column_number = ceil(relative_pos.y() / rowsHeight());
QString letter = "A";
for (int i = 1 ; i < column_number ; ++ i) {
letter = incrementLetters(letter);
}
return(DiagramPosition(letter, row_number));
}
QString BorderInset::incrementLetters(const QString &string) {
if (string.isEmpty()) {
return("A");

View File

@@ -23,6 +23,7 @@
#include <QRectF>
#include <QDate>
class QPainter;
class DiagramPosition;
/**
Cette classe represente l'ensemble bordure + cartouche qui encadre le
schema electrique.
@@ -124,6 +125,8 @@ class BorderInset : public QObject {
void setInsetHeight (const qreal &);
void adjustInsetToColumns ();
DiagramPosition convertPosition(const QPointF &);
// methodes d'acces en ecriture aux informations du cartouche
/// @param author le nouveau contenu du champ "Auteur"
void setAuthor (const QString &author) { bi_author = author; }

View File

@@ -25,6 +25,7 @@
#include "ghostelement.h"
#include "diagramcommands.h"
#include "diagramcontent.h"
#include "diagramposition.h"
const int Diagram::xGrid = 10;
const int Diagram::yGrid = 10;
@@ -896,6 +897,24 @@ bool Diagram::usesElement(const ElementsLocation &location) {
return(false);
}
/**
@param pos Position cartesienne (ex : 10.3, 45.2) a transformer en position
dans la grille (ex : B2)
@return la position dans la grille correspondant a pos
*/
DiagramPosition Diagram::convertPosition(const QPointF &pos) {
// decale la position pour prendre en compte les marges en haut a gauche du schema
QPointF final_pos = pos - QPointF(margin, margin);
// delegue le calcul au BorderInset
DiagramPosition diagram_position = border_and_inset.convertPosition(final_pos);
// embarque la position cartesienne
diagram_position.setPosition(pos);
return(diagram_position);
}
/**
Definit s'il faut afficher ou non les bornes
@param dt true pour afficher les bornes, false sinon

View File

@@ -28,6 +28,7 @@ class Terminal;
class Conductor;
class DiagramTextItem;
class DiagramContent;
class DiagramPosition;
class QETProject;
class ElementsLocation;
/**
@@ -132,6 +133,7 @@ class Diagram : public QGraphicsScene {
bool useBorder();
void setBorderOptions(BorderOptions);
BorderOptions borderOptions();
DiagramPosition convertPosition(const QPointF &);
bool drawTerminals() const;
void setDrawTerminals(bool);

View File

@@ -0,0 +1,70 @@
/*
Copyright 2006-2009 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 "diagramposition.h"
/**
Constructeur
@param letter Lettre(s) composant la position
@param number Numero composant la position
Si une chaine entierement invalide ou vide, ou bien un 0 est passe en
parametre, il en resulte un objet DiagramPosition invalide, dont la methode
isOutOfBounds renverra true.
*/
DiagramPosition::DiagramPosition(const QString &letter, unsigned int number) {
// purifie les lettres
letter_ = letter.toUpper();
letter_.remove(QRegExp("[^A-Z]"));
number_ = number;
}
/**
Destructeur
*/
DiagramPosition::~DiagramPosition() {
}
/**
@return les coordonnees stockees dans cet objet, ou un QPointF nul sinon.
*/
QPointF DiagramPosition::position() const {
return(position_);
}
/**
@param position Position a stocker dans cet objet
*/
void DiagramPosition::setPosition(const QPointF &position) {
position_ = position;
}
/**
@return une representation textuelle de la position
*/
QString DiagramPosition::toString() {
if (isOutOfBounds()) {
return("-");
}
return(QString("%1%2").arg(letter_).arg(number_));
}
/**
@return true si l'element est en dehors des bords du schema
*/
bool DiagramPosition::isOutOfBounds() const {
return(letter_.isEmpty() || !number_);
}

48
sources/diagramposition.h Normal file
View File

@@ -0,0 +1,48 @@
/*
Copyright 2006-2009 Xavier Guerrin
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DIAGRAM_POSITION_H
#define DIAGRAM_POSITION_H
#include <QPointF>
#include <QString>
#include <QRegExp>
/**
Cette classe represente la position d'un element sur le schema. Il ne
s'agit pas de ses coordonnees (bien que celles-ci puissent etre embarquees
par commodite), mais du secteur du schema dans lequel il se situe, par
exemple B2 ou C4.
*/
class DiagramPosition {
// constructeurs, destructeur
public:
DiagramPosition(const QString & = "", unsigned int = 0);
virtual ~DiagramPosition();
// methodes
public:
QPointF position() const;
void setPosition(const QPointF &);
QString toString();
bool isOutOfBounds() const;
// attributs
private:
QString letter_;
unsigned int number_;
QPointF position_;
};
#endif

View File

@@ -21,6 +21,7 @@
#include "ghostelement.h"
#include "conductor.h"
#include "diagramcommands.h"
#include "diagramposition.h"
#include "conductorpropertieswidget.h"
#include "insetpropertieswidget.h"
#include "qetapp.h"
@@ -613,6 +614,7 @@ void DiagramView::editElement(Element *element) {
// nom, nombre de bornes, dimensions
description_string += QString(tr("Nom\240: %1\n")).arg(element -> name());
description_string += QString(tr("Position\240: %1\n")).arg(scene -> convertPosition(element -> scenePos()).toString());
description_string += QString(tr("Dimensions\240: %1\327%2\n")).arg(element -> size().width()).arg(element -> size().height());
description_string += QString(tr("Bornes\240: %1\n")).arg(element -> terminals().count());
description_string += QString(tr("Connexions internes\240: %1\n")).arg(element -> internalConnections() ? tr("Autoris\351es") : tr("Interdites"));