mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-20 16:20:52 +01:00
Introduction de la classe QTextOrientationSPinBoxWidget, qui regroupe un QTextOrientationWidget et un QSpinBox pour faciliter la saisie d'un angle d'orientation pour un texte.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@848 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "textfieldeditor.h"
|
#include "textfieldeditor.h"
|
||||||
#include "parttextfield.h"
|
#include "parttextfield.h"
|
||||||
#include "qtextorientationwidget.h"
|
#include "qtextorientationspinboxwidget.h"
|
||||||
#include "qetapp.h"
|
#include "qetapp.h"
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@@ -35,22 +35,9 @@ TextFieldEditor::TextFieldEditor(QETElementEditor *editor, PartTextField *textfi
|
|||||||
font_size -> setRange(0, 144);
|
font_size -> setRange(0, 144);
|
||||||
rotate = new QCheckBox(tr("Ne pas subir les rotations de l'\351l\351ment parent"));
|
rotate = new QCheckBox(tr("Ne pas subir les rotations de l'\351l\351ment parent"));
|
||||||
rotate -> setChecked(true);
|
rotate -> setChecked(true);
|
||||||
rotation_angle_ = new QDoubleSpinBox();
|
QLabel *rotation_angle_label = new QLabel(tr("Angle de rotation par d\351faut : "));
|
||||||
rotation_angle_ -> setRange(-360.0, 360.0);
|
rotation_angle_label -> setWordWrap(true);
|
||||||
rotation_angle_ -> setSuffix("\260");
|
rotation_angle_ = QETApp::createTextOrientationSpinBoxWidget();
|
||||||
rotation_widget_ = new QTextOrientationWidget();
|
|
||||||
rotation_widget_ -> setFont(QETApp::diagramTextsFont());
|
|
||||||
rotation_widget_ -> setUsableTexts(QList<QString>()
|
|
||||||
<< tr("Q", "Single-letter example text - translate length, not meaning")
|
|
||||||
<< tr("QET", "Small example text - translate length, not meaning")
|
|
||||||
<< tr("Schema", "Normal example text - translate length, not meaning")
|
|
||||||
<< tr("Electrique", "Normal example text - translate length, not meaning")
|
|
||||||
<< tr("QElectroTech", "Long example text - translate length, not meaning")
|
|
||||||
);
|
|
||||||
rotation_widget_ -> setMinimumSize(90.0, 90.0);
|
|
||||||
connect(rotation_angle_, SIGNAL(valueChanged(double)), rotation_widget_, SLOT(setOrientation(double)));
|
|
||||||
connect(rotation_widget_, SIGNAL(orientationChanged(double)), rotation_angle_, SLOT(setValue(double)));
|
|
||||||
connect(rotation_widget_, SIGNAL(orientationChanged(double)), rotation_angle_, SIGNAL(editingFinished()));
|
|
||||||
|
|
||||||
qle_x -> setValidator(new QDoubleValidator(qle_x));
|
qle_x -> setValidator(new QDoubleValidator(qle_x));
|
||||||
qle_y -> setValidator(new QDoubleValidator(qle_y));
|
qle_y -> setValidator(new QDoubleValidator(qle_y));
|
||||||
@@ -76,8 +63,7 @@ TextFieldEditor::TextFieldEditor(QETElementEditor *editor, PartTextField *textfi
|
|||||||
main_layout -> addLayout(t);
|
main_layout -> addLayout(t);
|
||||||
|
|
||||||
QHBoxLayout *rotation_angle_layout = new QHBoxLayout();
|
QHBoxLayout *rotation_angle_layout = new QHBoxLayout();
|
||||||
rotation_angle_layout -> addWidget(new QLabel(tr("Angle de rotation par d\351faut : ")));
|
rotation_angle_layout -> addWidget(rotation_angle_label);
|
||||||
rotation_angle_layout -> addWidget(rotation_widget_);
|
|
||||||
rotation_angle_layout -> addWidget(rotation_angle_);
|
rotation_angle_layout -> addWidget(rotation_angle_);
|
||||||
main_layout -> addLayout(rotation_angle_layout);
|
main_layout -> addLayout(rotation_angle_layout);
|
||||||
|
|
||||||
@@ -128,7 +114,6 @@ void TextFieldEditor::updateForm() {
|
|||||||
font_size -> setValue(part -> property("size").toInt());
|
font_size -> setValue(part -> property("size").toInt());
|
||||||
rotate -> setChecked(!part -> property("rotate").toBool());
|
rotate -> setChecked(!part -> property("rotate").toBool());
|
||||||
rotation_angle_ -> setValue(part -> property("rotation angle").toDouble());
|
rotation_angle_ -> setValue(part -> property("rotation angle").toDouble());
|
||||||
rotation_widget_ -> setOrientation(part -> property("rotation angle").toDouble());
|
|
||||||
activeConnections(true);
|
activeConnections(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include "elementitemeditor.h"
|
#include "elementitemeditor.h"
|
||||||
class PartTextField;
|
class PartTextField;
|
||||||
class QTextOrientationWidget;
|
class QTextOrientationSpinBoxWidget;
|
||||||
/**
|
/**
|
||||||
Cette classe represente un editeur de champ de texte
|
Cette classe represente un editeur de champ de texte
|
||||||
Elle permet d'editer a travers une interface graphique les
|
Elle permet d'editer a travers une interface graphique les
|
||||||
@@ -42,8 +42,7 @@ class TextFieldEditor : public ElementItemEditor {
|
|||||||
QLineEdit *qle_x, *qle_y, *qle_text;
|
QLineEdit *qle_x, *qle_y, *qle_text;
|
||||||
QSpinBox *font_size;
|
QSpinBox *font_size;
|
||||||
QCheckBox *rotate;
|
QCheckBox *rotate;
|
||||||
QDoubleSpinBox *rotation_angle_;
|
QTextOrientationSpinBoxWidget *rotation_angle_;
|
||||||
QTextOrientationWidget *rotation_widget_;
|
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public slots:
|
public slots:
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "elementscollectionitem.h"
|
#include "elementscollectionitem.h"
|
||||||
#include "fileelementscollection.h"
|
#include "fileelementscollection.h"
|
||||||
#include "qetproject.h"
|
#include "qetproject.h"
|
||||||
|
#include "qtextorientationspinboxwidget.h"
|
||||||
#include "recentfiles.h"
|
#include "recentfiles.h"
|
||||||
#include "qeticons.h"
|
#include "qeticons.h"
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
@@ -504,6 +505,28 @@ QList<QETElementEditor *> QETApp::elementEditors() {
|
|||||||
return(static_cast<QETApp *>(qApp) -> detectElementEditors());
|
return(static_cast<QETApp *>(qApp) -> detectElementEditors());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Instancie un QTextOrientationSpinBoxWidget et configure :
|
||||||
|
* sa police de caracteres
|
||||||
|
* ses chaines de caracteres
|
||||||
|
A noter que la suppression du widget ainsi alloue est a la charge de
|
||||||
|
l'appelant.
|
||||||
|
@return un QTextOrientationSpinBoxWidget adapte pour une utilisation
|
||||||
|
"directe" dans QET.
|
||||||
|
@see QTextOrientationSpinBoxWidget
|
||||||
|
*/
|
||||||
|
QTextOrientationSpinBoxWidget *QETApp::createTextOrientationSpinBoxWidget() {
|
||||||
|
QTextOrientationSpinBoxWidget *widget = new QTextOrientationSpinBoxWidget();
|
||||||
|
widget -> orientationWidget() -> setFont(QETApp::diagramTextsFont());
|
||||||
|
widget -> orientationWidget() -> setUsableTexts(QList<QString>()
|
||||||
|
<< QETApp::tr("Q", "Single-letter example text - translate length, not meaning")
|
||||||
|
<< QETApp::tr("QET", "Small example text - translate length, not meaning")
|
||||||
|
<< QETApp::tr("Schema", "Normal example text - translate length, not meaning")
|
||||||
|
<< QETApp::tr("Electrique", "Normal example text - translate length, not meaning")
|
||||||
|
<< QETApp::tr("QElectroTech", "Long example text - translate length, not meaning")
|
||||||
|
);
|
||||||
|
return(widget);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
@param project un projet
|
@param project un projet
|
||||||
@return les editeurs d'elements editant un element appartenant au projet
|
@return les editeurs d'elements editant un element appartenant au projet
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class FileElementsCollection;
|
|||||||
class ElementsCategory;
|
class ElementsCategory;
|
||||||
class ElementDefinition;
|
class ElementDefinition;
|
||||||
class QETProject;
|
class QETProject;
|
||||||
|
class QTextOrientationSpinBoxWidget;
|
||||||
class RecentFiles;
|
class RecentFiles;
|
||||||
/**
|
/**
|
||||||
Cette classe represente l'application QElectroTech.
|
Cette classe represente l'application QElectroTech.
|
||||||
@@ -96,6 +97,7 @@ class QETApp : public QETSingleApplication {
|
|||||||
static QList<QETDiagramEditor *> diagramEditors();
|
static QList<QETDiagramEditor *> diagramEditors();
|
||||||
static QList<QETElementEditor *> elementEditors();
|
static QList<QETElementEditor *> elementEditors();
|
||||||
static QList<QETElementEditor *> elementEditors(QETProject *);
|
static QList<QETElementEditor *> elementEditors(QETProject *);
|
||||||
|
static QTextOrientationSpinBoxWidget *createTextOrientationSpinBoxWidget();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
#ifdef Q_OS_DARWIN
|
#ifdef Q_OS_DARWIN
|
||||||
|
|||||||
116
sources/qtextorientationspinboxwidget.cpp
Normal file
116
sources/qtextorientationspinboxwidget.cpp
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#include "qtextorientationspinboxwidget.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructeur
|
||||||
|
@param parent QWidget parent de ce QTextOrientationSpinBoxWidget
|
||||||
|
*/
|
||||||
|
QTextOrientationSpinBoxWidget::QTextOrientationSpinBoxWidget(QWidget *parent) :
|
||||||
|
QWidget(parent)
|
||||||
|
{
|
||||||
|
build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destructeur
|
||||||
|
*/
|
||||||
|
QTextOrientationSpinBoxWidget::~QTextOrientationSpinBoxWidget() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return un pointeur vers le QTextOrientationWidget
|
||||||
|
*/
|
||||||
|
QTextOrientationWidget *QTextOrientationSpinBoxWidget::orientationWidget() const {
|
||||||
|
return(orientation_widget_);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return un pointeur vers le QSpinBox
|
||||||
|
*/
|
||||||
|
QDoubleSpinBox *QTextOrientationSpinBoxWidget::spinBox() const {
|
||||||
|
return(spin_box_);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return l'orientation en cours
|
||||||
|
*/
|
||||||
|
double QTextOrientationSpinBoxWidget::orientation() const {
|
||||||
|
return(orientation_widget_ -> orientation());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Synonyme pour orientation()
|
||||||
|
@return l'orientation en cours
|
||||||
|
@see orientation()
|
||||||
|
*/
|
||||||
|
double QTextOrientationSpinBoxWidget::value() const {
|
||||||
|
return(orientation());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true si le widget est en mode "lecture seule", false sinon
|
||||||
|
*/
|
||||||
|
bool QTextOrientationSpinBoxWidget::isReadOnly() const {
|
||||||
|
return(orientation_widget_ -> isReadOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param value Nouvelle valeur de l'orientation a afficher
|
||||||
|
*/
|
||||||
|
void QTextOrientationSpinBoxWidget::setOrientation(const double &value) {
|
||||||
|
orientation_widget_ -> setOrientation(value);
|
||||||
|
spin_box_ -> setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Synonyme pour setOrientation(value)
|
||||||
|
@param value Nouvelle valeur de l'orientation a afficher
|
||||||
|
@see setOrientation
|
||||||
|
*/
|
||||||
|
void QTextOrientationSpinBoxWidget::setValue(const double &value) {
|
||||||
|
setOrientation(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param ro true pour passer le widget en mode "lecture seule", false sinon
|
||||||
|
*/
|
||||||
|
void QTextOrientationSpinBoxWidget::setReadOnly(bool ro) {
|
||||||
|
orientation_widget_ -> setReadOnly(ro);
|
||||||
|
spin_box_ -> setReadOnly(ro);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Construit le widget
|
||||||
|
*/
|
||||||
|
void QTextOrientationSpinBoxWidget::build() {
|
||||||
|
orientation_widget_ = new QTextOrientationWidget();
|
||||||
|
orientation_widget_ -> setMinimumSize(90.0, 90.0);
|
||||||
|
|
||||||
|
spin_box_ = new QDoubleSpinBox();
|
||||||
|
spin_box_ -> setRange(-360.0, 360.0);
|
||||||
|
spin_box_ -> setSuffix("\260");
|
||||||
|
|
||||||
|
// met en place les relations entre le SpinBox et le QTextOrientationWidget
|
||||||
|
connect(spin_box_, SIGNAL(valueChanged(double)), orientation_widget_, SLOT(setOrientation(double)));
|
||||||
|
connect(orientation_widget_, SIGNAL(orientationChanged(double)), spin_box_, SLOT(setValue(double)));
|
||||||
|
|
||||||
|
// cliquer sur un des carres du QTextOrientationWidget revient a finir une saisie dans le SpinBox
|
||||||
|
connect(orientation_widget_, SIGNAL(orientationChanged(double)), spin_box_, SIGNAL(editingFinished()));
|
||||||
|
|
||||||
|
// lorsque l'utilisateur a change l'orientation, on emet un signal avec la valeur de la nouvelle orientation
|
||||||
|
connect(spin_box_, SIGNAL(editingFinished()), this, SLOT(emitChangeSignals()));
|
||||||
|
|
||||||
|
// dispose les widgets : le QTextOrientationWidget a gauche, le SpinBox a droite
|
||||||
|
QHBoxLayout *main_layout = new QHBoxLayout();
|
||||||
|
main_layout -> addWidget(orientation_widget_);
|
||||||
|
main_layout -> addWidget(spin_box_);
|
||||||
|
setLayout(main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Emet le signal orientationEditingFinished avec la valeur de l'orientation en cours
|
||||||
|
*/
|
||||||
|
void QTextOrientationSpinBoxWidget::emitChangeSignals() {
|
||||||
|
emit(editingFinished(orientation()));
|
||||||
|
emit(editingFinished());
|
||||||
|
}
|
||||||
69
sources/qtextorientationspinboxwidget.h
Normal file
69
sources/qtextorientationspinboxwidget.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2006-2010 Xavier Guerrin
|
||||||
|
This file is part of QElectroTech.
|
||||||
|
|
||||||
|
QElectroTech is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
QElectroTech is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef Q_TEXT_ORIENTATION_SPINBOX_WIDGET_H
|
||||||
|
#define Q_TEXT_ORIENTATION_SPINBOX_WIDGET_H
|
||||||
|
#include <QtGui>
|
||||||
|
#include "qtextorientationwidget.h"
|
||||||
|
/**
|
||||||
|
Cette classe est un widget regroupant cote a cote un QTextOrientationWidget
|
||||||
|
et un QSpinBox.
|
||||||
|
@see QTextOrientationWidget
|
||||||
|
*/
|
||||||
|
class QTextOrientationSpinBoxWidget : public QWidget {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
// constructeurs, destructeur
|
||||||
|
public:
|
||||||
|
QTextOrientationSpinBoxWidget(QWidget * = 0);
|
||||||
|
virtual ~QTextOrientationSpinBoxWidget();
|
||||||
|
private:
|
||||||
|
QTextOrientationSpinBoxWidget(const QTextOrientationSpinBoxWidget &);
|
||||||
|
|
||||||
|
// signaux
|
||||||
|
signals:
|
||||||
|
/**
|
||||||
|
Signaux emis lorsque l'utilisateur a fini d'editer l'orientation
|
||||||
|
*/
|
||||||
|
void editingFinished(double);
|
||||||
|
void editingFinished();
|
||||||
|
|
||||||
|
// methodes
|
||||||
|
public:
|
||||||
|
QTextOrientationWidget *orientationWidget() const;
|
||||||
|
QDoubleSpinBox *spinBox() const;
|
||||||
|
double orientation() const;
|
||||||
|
double value() const;
|
||||||
|
bool isReadOnly() const;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setOrientation(const double &);
|
||||||
|
void setValue(const double &);
|
||||||
|
void setReadOnly(bool);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void build();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void emitChangeSignals();
|
||||||
|
|
||||||
|
// attributs
|
||||||
|
private:
|
||||||
|
QTextOrientationWidget *orientation_widget_;
|
||||||
|
QDoubleSpinBox *spin_box_;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user