mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-21 20:49:59 +01:00
Rapatriement dans la branche 0.3 de toutes les modifications effectuees dans le trunk depuis la creation de la branche 0.3.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@793 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -120,6 +120,7 @@ QWidget *AboutQET::translatorsTab() const {
|
||||
addAuthor(translators, "Youssef Oualmakran", "youssefsan@qelectrotech.org", tr("Traduction en espagnol"));
|
||||
addAuthor(translators, "Yuriy Litkevich", "yuriy@qelectrotech.org", tr("Traduction en russe"));
|
||||
addAuthor(translators, "Jos\351 Carlos Martins", "jose@qelectrotech.org", tr("Traduction en portugais"));
|
||||
addAuthor(translators, "Pavel Fric", "pavelfric@seznam.cz", tr("Traduction en tch\350que"));
|
||||
/*
|
||||
addAuthor(translators, "Luca Pedrazzi", "pedro@iworks.it", tr("Traduction en italien"));
|
||||
*/
|
||||
|
||||
@@ -118,7 +118,7 @@ BorderProperties BorderInset::exportBorder() {
|
||||
}
|
||||
|
||||
/**
|
||||
@param ip les nouvelles proprietes de la bordure
|
||||
@param bp les nouvelles proprietes de la bordure
|
||||
*/
|
||||
void BorderInset::importBorder(const BorderProperties &bp) {
|
||||
setColumnsHeaderHeight(bp.columns_header_height);
|
||||
@@ -373,7 +373,7 @@ void BorderInset::setNbRows(int nb_r) {
|
||||
Change la hauteur des lignes.
|
||||
Si la hauteur indiquee est inferieure au minimum requis, c'est ce minimum
|
||||
qui est utilise.
|
||||
@param rh nouvelle hauteur des lignes
|
||||
@param new_rh nouvelle hauteur des lignes
|
||||
@see minRowsHeight()
|
||||
*/
|
||||
void BorderInset::setRowsHeight(const qreal &new_rh) {
|
||||
|
||||
@@ -186,13 +186,15 @@ void Conductor::segmentsToPath() {
|
||||
}
|
||||
|
||||
/**
|
||||
Gere les updates
|
||||
Gere les updates
|
||||
@param p1 Coordonnees du point d'amarrage de la borne 1
|
||||
@param o1 Orientation de la borne 1
|
||||
@param p2 Coordonnees du point d'amarrage de la borne 2
|
||||
@param o2 Orientation de la borne 2
|
||||
*/
|
||||
void Conductor::priv_modifieConductor(const QPointF &p1, QET::Orientation, const QPointF &p2, QET::Orientation) {
|
||||
void Conductor::priv_modifieConductor(const QPointF &p1, QET::Orientation o1, const QPointF &p2, QET::Orientation o2) {
|
||||
Q_UNUSED(o1);
|
||||
Q_UNUSED(o2);
|
||||
|
||||
ConductorProfile &conductor_profile = conductor_profiles[currentPathType()];
|
||||
|
||||
@@ -447,30 +449,43 @@ QPointF Conductor::extendTerminal(const QPointF &terminal, QET::Orientation term
|
||||
@param options Les options de style pour le conducteur
|
||||
@param qw Le QWidget sur lequel on dessine
|
||||
*/
|
||||
void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWidget */*qw*/) {
|
||||
void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWidget *qw) {
|
||||
Q_UNUSED(qw);
|
||||
qp -> save();
|
||||
qp -> setRenderHint(QPainter::Antialiasing, false);
|
||||
|
||||
// determine la couleur du conducteur
|
||||
QColor final_conductor_color(properties_.color);
|
||||
if (isSelected()) {
|
||||
final_conductor_color = Qt::red;
|
||||
} else {
|
||||
if (Diagram *parent_diagram = diagram()) {
|
||||
if (!parent_diagram -> drawColoredConductors()) {
|
||||
final_conductor_color = Qt::black;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// affectation du QPen et de la QBrush modifies au QPainter
|
||||
qp -> setBrush(conductor_brush);
|
||||
qp -> setPen(conductor_pen);
|
||||
if (isSelected()) {
|
||||
QPen tmp = qp -> pen();
|
||||
tmp.setColor(Qt::red);
|
||||
qp -> setPen(tmp);
|
||||
}
|
||||
QPen final_conductor_pen = conductor_pen;
|
||||
|
||||
// modification du QPen generique pour lui affecter la couleur et le style adequats
|
||||
final_conductor_pen.setColor(final_conductor_color);
|
||||
final_conductor_pen.setStyle(properties_.style);
|
||||
final_conductor_pen.setJoinStyle(Qt::SvgMiterJoin); // meilleur rendu des pointilles
|
||||
|
||||
// utilisation d'un trait "cosmetique" en-dessous d'un certain zoom
|
||||
if (options && options -> levelOfDetail < 1.0) {
|
||||
QPen tmp = qp -> pen();
|
||||
tmp.setCosmetic(true);
|
||||
qp -> setPen(tmp);
|
||||
final_conductor_pen.setCosmetic(true);
|
||||
}
|
||||
|
||||
qp -> setPen(final_conductor_pen);
|
||||
|
||||
// dessin du conducteur
|
||||
qp -> drawPath(path());
|
||||
if (properties_.type == ConductorProperties::Single) {
|
||||
if (isSelected()) qp -> setBrush(Qt::red);
|
||||
qp -> setBrush(final_conductor_color);
|
||||
properties_.singleLineProperties.draw(
|
||||
qp,
|
||||
middleSegment() -> isHorizontal() ? QET::Horizontal : QET::Vertical,
|
||||
@@ -508,8 +523,9 @@ void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWi
|
||||
// dessine les eventuelles jonctions
|
||||
QList<QPointF> junctions_list = junctions();
|
||||
if (!junctions_list.isEmpty()) {
|
||||
QBrush junction_brush(Qt::SolidPattern);
|
||||
junction_brush.setColor(isSelected() ? Qt::red : Qt::black);
|
||||
final_conductor_pen.setStyle(Qt::SolidLine);
|
||||
QBrush junction_brush(final_conductor_color, Qt::SolidPattern);
|
||||
qp -> setPen(final_conductor_pen);
|
||||
qp -> setBrush(junction_brush);
|
||||
qp -> setRenderHint(QPainter::Antialiasing, true);
|
||||
foreach(QPointF point, junctions_list) {
|
||||
@@ -751,6 +767,7 @@ QPainterPath Conductor::shape() const {
|
||||
@param tobound valeur a borner
|
||||
@param bound1 borne 1
|
||||
@param bound2 borne 2
|
||||
@param space marge interne ajoutee
|
||||
@return La valeur bornee
|
||||
*/
|
||||
qreal Conductor::conductor_bound(qreal tobound, qreal bound1, qreal bound2, qreal space) {
|
||||
@@ -1100,6 +1117,7 @@ ConductorProperties Conductor::properties() const {
|
||||
Relit les proprietes et les applique
|
||||
*/
|
||||
void Conductor::readProperties() {
|
||||
// la couleur n'est vraiment applicable que lors du rendu du conducteur
|
||||
setText(properties_.text);
|
||||
text_item -> setVisible(properties_.type == ConductorProperties::Multi);
|
||||
}
|
||||
|
||||
@@ -140,7 +140,8 @@ void SingleLineProperties::drawGround(QPainter *painter, QET::ConductorSegmentTy
|
||||
@param center centre du cercle
|
||||
@param size diametre du cercle
|
||||
*/
|
||||
void SingleLineProperties::drawNeutral(QPainter *painter, QET::ConductorSegmentType, QPointF center, qreal size) {
|
||||
void SingleLineProperties::drawNeutral(QPainter *painter, QET::ConductorSegmentType direction, QPointF center, qreal size) {
|
||||
Q_UNUSED(direction);
|
||||
painter -> save();
|
||||
|
||||
// prepare le QPainter
|
||||
@@ -180,6 +181,24 @@ void SingleLineProperties::fromXml(QDomElement &e) {
|
||||
setPhasesCount(e.attribute("phase").toInt());
|
||||
}
|
||||
|
||||
/**
|
||||
Constructeur : par defaut, les proprietes font un conducteur
|
||||
multifilaire noir dont le texte est "_"
|
||||
*/
|
||||
ConductorProperties::ConductorProperties() :
|
||||
type(Multi),
|
||||
color(Qt::black),
|
||||
text("_"),
|
||||
style(Qt::SolidLine)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
Destructeur
|
||||
*/
|
||||
ConductorProperties::~ConductorProperties() {
|
||||
}
|
||||
|
||||
/**
|
||||
Exporte les parametres du conducteur sous formes d'attributs XML
|
||||
ajoutes a l'element e.
|
||||
@@ -187,11 +206,21 @@ void SingleLineProperties::fromXml(QDomElement &e) {
|
||||
*/
|
||||
void ConductorProperties::toXml(QDomElement &e) const {
|
||||
e.setAttribute("type", typeToString(type));
|
||||
|
||||
if (color != QColor(Qt::black)) {
|
||||
e.setAttribute("color", color.name());
|
||||
}
|
||||
|
||||
if (type == Single) {
|
||||
singleLineProperties.toXml(e);
|
||||
} else if (type == Multi) {
|
||||
e.setAttribute("num", text);
|
||||
}
|
||||
|
||||
QString conductor_style = writeStyle();
|
||||
if (!conductor_style.isEmpty()) {
|
||||
e.setAttribute("style", conductor_style);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -200,6 +229,17 @@ void ConductorProperties::toXml(QDomElement &e) const {
|
||||
@param e Element XML dont les attributs seront lus
|
||||
*/
|
||||
void ConductorProperties::fromXml(QDomElement &e) {
|
||||
// recupere la couleur du conducteur
|
||||
QColor xml_color= QColor(e.attribute("color"));
|
||||
if (xml_color.isValid()) {
|
||||
color = xml_color;
|
||||
} else {
|
||||
color = QColor(Qt::black);
|
||||
}
|
||||
|
||||
// lit le style du conducteur
|
||||
readStyle(e.attribute("style"));
|
||||
|
||||
if (e.attribute("type") == typeToString(Single)) {
|
||||
// recupere les parametres specifiques a un conducteur unifilaire
|
||||
singleLineProperties.fromXml(e);
|
||||
@@ -218,6 +258,8 @@ void ConductorProperties::fromXml(QDomElement &e) {
|
||||
@param prefix prefixe a ajouter devant les noms des parametres
|
||||
*/
|
||||
void ConductorProperties::toSettings(QSettings &settings, const QString &prefix) const {
|
||||
settings.setValue(prefix + "color", color.name());
|
||||
settings.setValue(prefix + "style", writeStyle());
|
||||
settings.setValue(prefix + "type", typeToString(type));
|
||||
settings.setValue(prefix + "text", text);
|
||||
singleLineProperties.toSettings(settings, prefix);
|
||||
@@ -228,6 +270,14 @@ void ConductorProperties::toSettings(QSettings &settings, const QString &prefix)
|
||||
@param prefix prefixe a ajouter devant les noms des parametres
|
||||
*/
|
||||
void ConductorProperties::fromSettings(QSettings &settings, const QString &prefix) {
|
||||
// recupere la couleur dans les parametres
|
||||
QColor settings_color = QColor(settings.value(prefix + "color").toString());
|
||||
if (settings_color.isValid()) {
|
||||
color = settings_color;
|
||||
} else {
|
||||
color = QColor(Qt::black);
|
||||
}
|
||||
|
||||
QString setting_type = settings.value(prefix + "type", typeToString(Multi)).toString();
|
||||
if (setting_type == typeToString(Single)) {
|
||||
type = Single;
|
||||
@@ -238,6 +288,9 @@ void ConductorProperties::fromSettings(QSettings &settings, const QString &prefi
|
||||
}
|
||||
singleLineProperties.fromSettings(settings, prefix);
|
||||
text = settings.value(prefix + "text", "_").toString();
|
||||
|
||||
// lit le style du conducteur
|
||||
readStyle(settings.value(prefix + "style").toString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -259,6 +312,8 @@ QString ConductorProperties::typeToString(ConductorType t) {
|
||||
int ConductorProperties::operator==(const ConductorProperties &other) {
|
||||
return(
|
||||
other.type == type &&\
|
||||
other.color == color &&\
|
||||
other.color == style &&\
|
||||
other.text == text &&\
|
||||
other.singleLineProperties == singleLineProperties
|
||||
);
|
||||
@@ -271,11 +326,50 @@ int ConductorProperties::operator==(const ConductorProperties &other) {
|
||||
int ConductorProperties::operator!=(const ConductorProperties &other) {
|
||||
return(
|
||||
other.type != type ||\
|
||||
other.color != color ||\
|
||||
other.color != style ||\
|
||||
other.text != text ||\
|
||||
other.singleLineProperties != singleLineProperties
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
Applique les styles passes en parametre dans cet objet
|
||||
@param style_string Chaine decrivant le style du conducteur
|
||||
*/
|
||||
void ConductorProperties::readStyle(const QString &style_string) {
|
||||
style = Qt::SolidLine; // style par defaut
|
||||
|
||||
if (style_string.isEmpty()) return;
|
||||
|
||||
// recupere la liste des couples style / valeur
|
||||
QStringList styles = style_string.split(";", QString::SkipEmptyParts);
|
||||
|
||||
QRegExp rx("^\\s*([a-z-]+)\\s*:\\s*([a-z-]+)\\s*$");
|
||||
foreach (QString style_str, styles) {
|
||||
if (rx.exactMatch(style_str)) {
|
||||
QString style_name = rx.cap(1);
|
||||
QString style_value = rx.cap(2);
|
||||
if (style_name == "line-style") {
|
||||
if (style_value == "dashed") style = Qt::DashLine;
|
||||
else if (style_value == "normal") style = Qt::SolidLine;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Exporte le style du conducteur sous forme d'une chaine de caracteres
|
||||
@return une chaine de caracteres decrivant le style du conducteur
|
||||
*/
|
||||
QString ConductorProperties::writeStyle() const {
|
||||
if (style == Qt::DashLine) {
|
||||
return("line-style: dashed;");
|
||||
} else {
|
||||
return(QString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@param other l'autre ensemble de proprietes avec lequel il faut effectuer la comparaison
|
||||
@return true si les deux ensembles de proprietes sont identiques, false sinon
|
||||
|
||||
@@ -57,16 +57,8 @@ class SingleLineProperties {
|
||||
class ConductorProperties {
|
||||
// constructeurs, destructeur
|
||||
public:
|
||||
/**
|
||||
Constructeur : par defaut, les proprietes font un conducteur
|
||||
multifilaire dont le texte est "_"
|
||||
*/
|
||||
ConductorProperties() : type(Multi), text("_") {
|
||||
}
|
||||
|
||||
/// Destructeur
|
||||
virtual ~ConductorProperties() {
|
||||
}
|
||||
ConductorProperties();
|
||||
virtual ~ConductorProperties();
|
||||
|
||||
/**
|
||||
Represente le type d'un conducteur :
|
||||
@@ -79,9 +71,12 @@ class ConductorProperties {
|
||||
// attributs
|
||||
/// type du conducteur
|
||||
ConductorType type;
|
||||
|
||||
/// couleur du conducteur
|
||||
QColor color;
|
||||
/// texte affiche si le conducteur est multifilaire
|
||||
QString text;
|
||||
/// style du conducteur (Qt::SolidLine ou Qt::DashLine)
|
||||
Qt::PenStyle style;
|
||||
|
||||
/// proprietes si le conducteur est unifilaire
|
||||
SingleLineProperties singleLineProperties;
|
||||
@@ -96,5 +91,9 @@ class ConductorProperties {
|
||||
// operateurs
|
||||
int operator==(const ConductorProperties &);
|
||||
int operator!=(const ConductorProperties &);
|
||||
|
||||
private:
|
||||
void readStyle(const QString &);
|
||||
QString writeStyle() const;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -45,7 +45,7 @@ ConductorPropertiesWidget::ConductorPropertiesWidget(const ConductorProperties &
|
||||
/// construit l'interface du widget
|
||||
void ConductorPropertiesWidget::buildInterface() {
|
||||
|
||||
setMinimumSize(380, 280);
|
||||
setMinimumSize(380, 350);
|
||||
|
||||
QVBoxLayout *main_layout = new QVBoxLayout(this);
|
||||
main_layout -> setContentsMargins(0, 0, 0, 0);
|
||||
@@ -93,12 +93,32 @@ void ConductorPropertiesWidget::buildInterface() {
|
||||
singleline_layout1 -> addWidget(preview);
|
||||
singleline_layout1 -> addLayout(singleline_layout2);
|
||||
|
||||
QGroupBox *groupbox2 = new QGroupBox(tr("Apparence du conducteur"));
|
||||
main_layout -> addWidget(groupbox2);
|
||||
|
||||
QVBoxLayout *groupbox2_layout = new QVBoxLayout();
|
||||
groupbox2 -> setLayout(groupbox2_layout);
|
||||
|
||||
QHBoxLayout *color_layout = new QHBoxLayout();
|
||||
QLabel *text1 = new QLabel(tr("Couleur :"));
|
||||
color_button = new QPushButton("");
|
||||
dashed_checkbox = new QCheckBox(tr("Trait en pointill\351s"));
|
||||
|
||||
color_layout -> addWidget(text1);
|
||||
color_layout -> addWidget(color_button);
|
||||
|
||||
setColorButton(properties_.color);
|
||||
dashed_checkbox -> setChecked(properties_.style == Qt::DashLine);
|
||||
|
||||
groupbox_layout -> addWidget(simple);
|
||||
groupbox_layout -> addWidget(multiline);
|
||||
groupbox_layout -> addLayout(multiline_layout);
|
||||
groupbox_layout -> addWidget(singleline);
|
||||
groupbox_layout -> addLayout(singleline_layout1);
|
||||
|
||||
groupbox2_layout -> addLayout(color_layout);
|
||||
groupbox2_layout -> addWidget(dashed_checkbox);
|
||||
|
||||
radio_buttons = new QButtonGroup(this);
|
||||
radio_buttons -> addButton(simple, ConductorProperties::Simple);
|
||||
radio_buttons -> addButton(multiline, ConductorProperties::Multi);
|
||||
@@ -118,6 +138,37 @@ void ConductorPropertiesWidget::buildConnections() {
|
||||
connect(phase_slider, SIGNAL(valueChanged(int)), this, SLOT(updateConfig()));
|
||||
connect(radio_buttons, SIGNAL(buttonClicked(int)), this, SLOT(updateConfig()));
|
||||
connect(text_field, SIGNAL(textChanged(const QString &)), this, SLOT(updateConfig()));
|
||||
connect(dashed_checkbox, SIGNAL(toggled(bool)), this, SLOT(updateConfig()));
|
||||
connect(color_button, SIGNAL(clicked()), this, SLOT(chooseColor()));
|
||||
}
|
||||
|
||||
/**
|
||||
Demande a l'utilisateur de choisir une couleur via un dialogue approprie.
|
||||
*/
|
||||
void ConductorPropertiesWidget::chooseColor() {
|
||||
QColor user_chosen_color = QColorDialog::getColor(properties_.color);
|
||||
if (user_chosen_color.isValid()) {
|
||||
setColorButton(user_chosen_color);
|
||||
updateConfig();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@return la couleur actuelle du bouton permettant de choisir la couleur du
|
||||
conducteur
|
||||
*/
|
||||
QColor ConductorPropertiesWidget::colorButton() const {
|
||||
return(color_button -> palette().color(QPalette::Button));
|
||||
}
|
||||
|
||||
/**
|
||||
Change la couleur du bouton permettant de choisir la couleur du conducteur
|
||||
@param color Nouvelle couleur a afficher
|
||||
*/
|
||||
void ConductorPropertiesWidget::setColorButton(const QColor &color) {
|
||||
QPalette palette;
|
||||
palette.setColor(QPalette::Button, color);
|
||||
color_button -> setPalette(palette);
|
||||
}
|
||||
|
||||
/// Enleve les connexions signaux/slots
|
||||
@@ -130,6 +181,8 @@ void ConductorPropertiesWidget::destroyConnections() {
|
||||
disconnect(phase_slider, SIGNAL(valueChanged(int)), this, SLOT(updateConfig()));
|
||||
disconnect(radio_buttons, SIGNAL(buttonClicked(int)), this, SLOT(updateConfig()));
|
||||
disconnect(text_field, SIGNAL(textChanged(const QString &)), this, SLOT(updateConfig()));
|
||||
disconnect(color_button, SIGNAL(clicked()), this, SLOT(chooseColor()));
|
||||
disconnect(dashed_checkbox, SIGNAL(toggled(bool)), this, SLOT(updateConfig()));
|
||||
}
|
||||
|
||||
/// Destructeur
|
||||
@@ -139,6 +192,8 @@ ConductorPropertiesWidget::~ConductorPropertiesWidget() {
|
||||
/// Met a jour les proprietes
|
||||
void ConductorPropertiesWidget::updateConfig() {
|
||||
properties_.type = static_cast<ConductorProperties::ConductorType>(radio_buttons -> checkedId());
|
||||
properties_.color = colorButton();
|
||||
properties_.style = dashed_checkbox -> isChecked() ? Qt::DashLine : Qt::SolidLine;
|
||||
properties_.text = text_field -> text();
|
||||
properties_.singleLineProperties.hasGround = ground_checkbox -> isChecked();
|
||||
properties_.singleLineProperties.hasNeutral = neutral_checkbox -> isChecked();
|
||||
@@ -152,6 +207,8 @@ void ConductorPropertiesWidget::updateDisplay() {
|
||||
destroyConnections();
|
||||
|
||||
setConductorType(properties_.type);
|
||||
setColorButton(properties_.color);
|
||||
dashed_checkbox -> setChecked(properties_.style == Qt::DashLine);
|
||||
text_field -> setText(properties_.text);
|
||||
ground_checkbox -> setChecked(properties_.singleLineProperties.hasGround);
|
||||
neutral_checkbox -> setChecked(properties_.singleLineProperties.hasNeutral);
|
||||
|
||||
@@ -43,11 +43,14 @@ class ConductorPropertiesWidget : public QWidget {
|
||||
|
||||
private:
|
||||
void setConductorType(ConductorProperties::ConductorType);
|
||||
void setColorButton(const QColor &);
|
||||
QColor colorButton() const;
|
||||
|
||||
public slots:
|
||||
void updatePreview();
|
||||
void updateConfig();
|
||||
void updateDisplay();
|
||||
void chooseColor();
|
||||
|
||||
// attributs prives
|
||||
private:
|
||||
@@ -62,6 +65,8 @@ class ConductorPropertiesWidget : public QWidget {
|
||||
QCheckBox *ground_checkbox;
|
||||
QCheckBox *neutral_checkbox;
|
||||
QLabel *preview;
|
||||
QPushButton *color_button;
|
||||
QCheckBox *dashed_checkbox;
|
||||
|
||||
ConductorProperties properties_;
|
||||
|
||||
|
||||
@@ -31,8 +31,8 @@ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) {
|
||||
pages_list -> setViewMode(QListView::IconMode);
|
||||
pages_list -> setIconSize(QSize(110, 110));
|
||||
pages_list -> setMovement(QListView::Static);
|
||||
pages_list -> setMinimumWidth(135);
|
||||
pages_list -> setMaximumWidth(135);
|
||||
pages_list -> setMinimumWidth(150);
|
||||
pages_list -> setMaximumWidth(150);
|
||||
pages_list -> setSpacing(4);
|
||||
|
||||
// pages
|
||||
@@ -40,6 +40,7 @@ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) {
|
||||
addPage(new GeneralConfigurationPage());
|
||||
addPage(new NewDiagramPage());
|
||||
addPage(new ExportConfigPage());
|
||||
addPage(new PrintConfigPage());
|
||||
buildPagesList();
|
||||
|
||||
// boutons
|
||||
|
||||
@@ -191,7 +191,6 @@ QString GeneralConfigurationPage::title() const {
|
||||
return(tr("G\351n\351ral", "configuration page title"));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param parent QWidget parent
|
||||
@@ -210,6 +209,7 @@ ExportConfigPage::ExportConfigPage(QWidget *parent) : ConfigPage(parent) {
|
||||
horiz_line -> setFrameShape(QFrame::HLine);
|
||||
vlayout1 -> addWidget(horiz_line);
|
||||
vlayout1 -> addWidget(epw);
|
||||
vlayout1 -> addStretch();
|
||||
|
||||
// activation du layout
|
||||
setLayout(vlayout1);
|
||||
@@ -237,3 +237,56 @@ QString ExportConfigPage::title() const {
|
||||
return(tr("Export", "configuration page title"));
|
||||
}
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param parent QWidget parent
|
||||
*/
|
||||
PrintConfigPage::PrintConfigPage(QWidget *parent) : ConfigPage(parent) {
|
||||
// epw contient les options d'export
|
||||
epw = new ExportPropertiesWidget(QETDiagramEditor::defaultPrintProperties());
|
||||
epw -> setPrintingMode(true);
|
||||
|
||||
// layout vertical contenant le titre, une ligne horizontale et epw
|
||||
QVBoxLayout *vlayout1 = new QVBoxLayout();
|
||||
|
||||
QLabel *title = new QLabel(this -> title());
|
||||
vlayout1 -> addWidget(title);
|
||||
|
||||
QFrame *horiz_line = new QFrame();
|
||||
horiz_line -> setFrameShape(QFrame::HLine);
|
||||
vlayout1 -> addWidget(horiz_line);
|
||||
vlayout1 -> addWidget(epw);
|
||||
vlayout1 -> addStretch();
|
||||
|
||||
// activation du layout
|
||||
setLayout(vlayout1);
|
||||
}
|
||||
|
||||
/// Destructeur
|
||||
PrintConfigPage::~PrintConfigPage() {
|
||||
}
|
||||
|
||||
/**
|
||||
Applique la configuration de cette page
|
||||
*/
|
||||
void PrintConfigPage::applyConf() {
|
||||
QString prefix = "print/default";
|
||||
|
||||
QSettings &settings = QETApp::settings();
|
||||
epw -> exportProperties().toSettings(settings, prefix);
|
||||
|
||||
// annule l'enregistrement de certaines proprietes non pertinentes
|
||||
settings.remove(prefix + "path");
|
||||
settings.remove(prefix + "format");
|
||||
settings.remove(prefix + "area");
|
||||
}
|
||||
|
||||
/// @return l'icone de cette page
|
||||
QIcon PrintConfigPage::icon() const {
|
||||
return(QET::Icons::Printer);
|
||||
}
|
||||
|
||||
/// @return le titre de cette page
|
||||
QString PrintConfigPage::title() const {
|
||||
return(tr("Impression", "configuration page title"));
|
||||
}
|
||||
|
||||
@@ -123,4 +123,27 @@ class ExportConfigPage : public ConfigPage {
|
||||
public:
|
||||
ExportPropertiesWidget *epw;
|
||||
};
|
||||
|
||||
/**
|
||||
Cette classe represente la page de configuration du dialogue d'impression
|
||||
*/
|
||||
class PrintConfigPage : public ConfigPage {
|
||||
Q_OBJECT
|
||||
// constructeurs, destructeur
|
||||
public:
|
||||
PrintConfigPage(QWidget * = 0);
|
||||
virtual ~PrintConfigPage();
|
||||
private:
|
||||
PrintConfigPage(const PrintConfigPage &);
|
||||
|
||||
// methodes
|
||||
public:
|
||||
void applyConf();
|
||||
QString title() const;
|
||||
QIcon icon() const;
|
||||
|
||||
// attributs
|
||||
public:
|
||||
ExportPropertiesWidget *epw;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -255,7 +255,6 @@ void CustomElement::paint(QPainter *qp, const QStyleOptionGraphicsItem *options)
|
||||
formes peuvent avoir un attribut style. @see setPainterStyle
|
||||
@param e L'element XML a analyser
|
||||
@param qp Le QPainter a utiliser pour dessiner l'element perso
|
||||
@param s Le schema sur lequel sera affiche l'element perso
|
||||
@return true si l'analyse reussit, false sinon
|
||||
*/
|
||||
bool CustomElement::parseElement(QDomElement &e, QPainter &qp) {
|
||||
|
||||
@@ -41,6 +41,7 @@ Diagram::Diagram(QObject *parent) :
|
||||
use_border(true),
|
||||
moved_elements_fetched(false),
|
||||
draw_terminals(true),
|
||||
draw_colored_conductors_(true),
|
||||
project_(0),
|
||||
read_only_(false)
|
||||
{
|
||||
@@ -897,6 +898,34 @@ bool Diagram::usesElement(const ElementsLocation &location) {
|
||||
return(false);
|
||||
}
|
||||
|
||||
/**
|
||||
Cette methode permet d'appliquer de nouvelles options de rendu tout en
|
||||
accedant aux proprietes de rendu en cours.
|
||||
@param new_properties Nouvelles options de rendu a appliquer
|
||||
@return les options de rendu avant l'application de new_properties
|
||||
*/
|
||||
ExportProperties Diagram::applyProperties(const ExportProperties &new_properties) {
|
||||
// exporte les options de rendu en cours
|
||||
ExportProperties old_properties;
|
||||
old_properties.draw_grid = displayGrid();
|
||||
old_properties.draw_border = border_and_inset.borderIsDisplayed();
|
||||
old_properties.draw_inset = border_and_inset.insetIsDisplayed();
|
||||
old_properties.draw_terminals = drawTerminals();
|
||||
old_properties.draw_colored_conductors = drawColoredConductors();
|
||||
old_properties.exported_area = useBorder() ? QET::BorderArea : QET::ElementsArea;
|
||||
|
||||
// applique les nouvelles options de rendu
|
||||
setUseBorder (new_properties.exported_area == QET::BorderArea);
|
||||
setDrawTerminals (new_properties.draw_terminals);
|
||||
setDrawColoredConductors (new_properties.draw_colored_conductors);
|
||||
setDisplayGrid (new_properties.draw_grid);
|
||||
border_and_inset.displayBorder(new_properties.draw_border);
|
||||
border_and_inset.displayInset (new_properties.draw_inset);
|
||||
|
||||
// retourne les anciennes options de rendu
|
||||
return(old_properties);
|
||||
}
|
||||
|
||||
/**
|
||||
@param pos Position cartesienne (ex : 10.3, 45.2) a transformer en position
|
||||
dans la grille (ex : B2)
|
||||
@@ -927,6 +956,15 @@ void Diagram::setDrawTerminals(bool dt) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Definit s'il faut respecter ou non les couleurs des conducteurs.
|
||||
Si non, les conducteurs sont tous dessines en noir.
|
||||
@param dcc true pour respecter les couleurs, false sinon
|
||||
*/
|
||||
void Diagram::setDrawColoredConductors(bool dcc) {
|
||||
draw_colored_conductors_ = dcc;
|
||||
}
|
||||
|
||||
/**
|
||||
@return la liste des conducteurs selectionnes sur le schema
|
||||
*/
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "borderinset.h"
|
||||
#include "qgimanager.h"
|
||||
#include "conductorproperties.h"
|
||||
#include "exportproperties.h"
|
||||
class Element;
|
||||
class CustomElement;
|
||||
class Terminal;
|
||||
@@ -81,6 +82,7 @@ class Diagram : public QGraphicsScene {
|
||||
QGIManager *qgi_manager;
|
||||
QUndoStack *undo_stack;
|
||||
bool draw_terminals;
|
||||
bool draw_colored_conductors_;
|
||||
QDomDocument xml_document;
|
||||
QETProject *project_;
|
||||
bool read_only_;
|
||||
@@ -127,6 +129,7 @@ class Diagram : public QGraphicsScene {
|
||||
void removeDiagramTextItem(DiagramTextItem *);
|
||||
|
||||
// fonctions relatives aux options graphiques
|
||||
ExportProperties applyProperties(const ExportProperties &);
|
||||
void setDisplayGrid(bool);
|
||||
bool displayGrid();
|
||||
void setUseBorder(bool);
|
||||
@@ -137,6 +140,8 @@ class Diagram : public QGraphicsScene {
|
||||
|
||||
bool drawTerminals() const;
|
||||
void setDrawTerminals(bool);
|
||||
bool drawColoredConductors() const;
|
||||
void setDrawColoredConductors(bool);
|
||||
|
||||
QRectF border() const;
|
||||
QString title() const;
|
||||
@@ -300,4 +305,9 @@ inline bool Diagram::drawTerminals() const {
|
||||
return(draw_terminals);
|
||||
}
|
||||
|
||||
/// @return true si les couleurs des conducteurs sont respectees, false sinon
|
||||
inline bool Diagram::drawColoredConductors() const {
|
||||
return(draw_colored_conductors_);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -556,6 +556,8 @@ void ChangeInsetCommand::redo() {
|
||||
/**
|
||||
Constructeur
|
||||
@param dia Schema modifie
|
||||
@param old_bp Anciennes proprietes du cadre du schema
|
||||
@param new_bp Nouvelles proprietes du cadre du schema
|
||||
@param parent QUndoCommand parent
|
||||
*/
|
||||
ChangeBorderCommand::ChangeBorderCommand(Diagram *dia, const BorderProperties &old_bp, const BorderProperties &new_bp, QUndoCommand *parent) :
|
||||
|
||||
@@ -135,9 +135,10 @@ QString DiagramContent::sentence(int filter) const {
|
||||
/**
|
||||
Permet de debugger un contenu de schema
|
||||
@param d Object QDebug a utiliser pour l'affichage des informations de debug
|
||||
@param c Contenu de schema a debugger
|
||||
@param content Contenu de schema a debugger
|
||||
*/
|
||||
QDebug &operator<<(QDebug d, DiagramContent &) {
|
||||
QDebug &operator<<(QDebug d, DiagramContent &content) {
|
||||
Q_UNUSED(content);
|
||||
d << "DiagramContent {" << "\n";
|
||||
/*
|
||||
FIXME Le double-heritage QObject / QGraphicsItem a casse cet operateur
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
#include "qetprintpreviewdialog.h"
|
||||
#include <math.h>
|
||||
#include "diagramschooser.h"
|
||||
#include "exportproperties.h"
|
||||
#include "qeticons.h"
|
||||
#include "qetmessagebox.h"
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param dia Schema a imprimer
|
||||
@param printer Imprimante a utiliser
|
||||
@param project Schema a imprimer
|
||||
@param parent Widget parent du dialogue
|
||||
*/
|
||||
DiagramPrintDialog::DiagramPrintDialog(QETProject *project, QWidget *parent) :
|
||||
@@ -122,17 +122,27 @@ void DiagramPrintDialog::exec() {
|
||||
|
||||
// Apercu avant impression
|
||||
QETPrintPreviewDialog preview_dialog(project_, printer_, parentWidget());
|
||||
connect(&preview_dialog, SIGNAL(paintRequested(const QList<Diagram *> &, bool, QPrinter *)), this, SLOT(print(const QList<Diagram *> &, bool, QPrinter *)));
|
||||
connect(
|
||||
&preview_dialog,
|
||||
SIGNAL(paintRequested(const QList<Diagram *> &, bool, const ExportProperties, QPrinter *)),
|
||||
this,
|
||||
SLOT(print(const QList<Diagram *> &, bool, const ExportProperties))
|
||||
);
|
||||
DiagramsChooser *dc = preview_dialog.diagramsChooser();
|
||||
dc -> setSelectedAllDiagrams();
|
||||
if (preview_dialog.exec() == QDialog::Rejected) return;
|
||||
|
||||
// effectue l'impression en elle-meme
|
||||
print(dc -> selectedDiagrams(), preview_dialog.fitDiagramsToPages(), printer_);
|
||||
print(
|
||||
dc -> selectedDiagrams(),
|
||||
preview_dialog.fitDiagramsToPages(),
|
||||
preview_dialog.exportProperties()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@param fullPage true pour utiliser toute la feuille dans le calcul
|
||||
@param diagram Schema a imprimer
|
||||
@param fullpage true pour utiliser toute la feuille dans le calcul
|
||||
@return Le nombre de pages necessaires pour imprimer le schema
|
||||
avec l'orientation et le format papier utilise dans l'imprimante en cours.
|
||||
*/
|
||||
@@ -141,7 +151,8 @@ int DiagramPrintDialog::pagesCount(Diagram *diagram, bool fullpage) const {
|
||||
}
|
||||
|
||||
/**
|
||||
@param fullPage true pour utiliser toute la feuille dans le calcul
|
||||
@param diagram Schema a imprimer
|
||||
@param fullpage true pour utiliser toute la feuille dans le calcul
|
||||
@return La largeur du "poster" en nombre de pages pour imprimer le schema
|
||||
avec l'orientation et le format papier utilise dans l'imprimante en cours.
|
||||
*/
|
||||
@@ -155,7 +166,8 @@ int DiagramPrintDialog::horizontalPagesCount(Diagram *diagram, bool fullpage) co
|
||||
}
|
||||
|
||||
/**
|
||||
@param fullPage true pour utiliser toute la feuille dans le calcul
|
||||
@param diagram Schema a imprimer
|
||||
@param fullpage true pour utiliser toute la feuille dans le calcul
|
||||
@return La largeur du "poster" en nombre de pages pour imprimer le schema
|
||||
avec l'orientation et le format papier utilise dans l'imprimante en cours.
|
||||
*/
|
||||
@@ -317,9 +329,9 @@ void DiagramPrintDialog::browseFilePrintTypeDialog() {
|
||||
@param diagrams Schemas a imprimer
|
||||
@param fit_page Booleen indiquant s'il faut adapter les schemas aux pages
|
||||
ou non
|
||||
@param printer L'imprimante a utiliser
|
||||
@param options Options de rendu
|
||||
*/
|
||||
void DiagramPrintDialog::print(const QList<Diagram *> &diagrams, bool fit_page, QPrinter */*printer*/) {
|
||||
void DiagramPrintDialog::print(const QList<Diagram *> &diagrams, bool fit_page, const ExportProperties options) {
|
||||
//qDebug() << "Demande d'impression de " << diagrams.count() << "schemas.";
|
||||
|
||||
// QPainter utiliser pour effectuer le rendu
|
||||
@@ -333,7 +345,7 @@ void DiagramPrintDialog::print(const QList<Diagram *> &diagrams, bool fit_page,
|
||||
|
||||
// imprime les schemas
|
||||
for (int i = 0 ; i < diagrams.count() ; ++ i) {
|
||||
printDiagram(diagrams[i], fit_page, &qp, printer_);
|
||||
printDiagram(diagrams[i], fit_page, options, &qp, printer_);
|
||||
if (i != diagrams.count() - 1) {
|
||||
printer_ -> newPage();
|
||||
}
|
||||
@@ -344,10 +356,11 @@ void DiagramPrintDialog::print(const QList<Diagram *> &diagrams, bool fit_page,
|
||||
Imprime un schema
|
||||
@param diagram Schema a imprimer
|
||||
@param fit_page True pour adapter les schemas aux pages, false sinon
|
||||
@param options Options de rendu a appliquer pour l'impression
|
||||
@param qp QPainter a utiliser (deja initialise sur printer)
|
||||
@param printer Imprimante a utiliser
|
||||
*/
|
||||
void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter *qp, QPrinter *printer) {
|
||||
void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, const ExportProperties options, QPainter *qp, QPrinter *printer) {
|
||||
//qDebug() << printer -> paperSize() << printer -> paperRect() << diagram -> title();
|
||||
// l'imprimante utilise-t-elle toute la feuille ?
|
||||
bool full_page = printer -> fullPage ();
|
||||
@@ -357,8 +370,7 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter
|
||||
// utiliser cette condition pour agir differemment en cas d'impression physique
|
||||
}
|
||||
|
||||
diagram -> setDisplayGrid(false);
|
||||
diagram -> setDrawTerminals(false);
|
||||
saveReloadDiagramParameters(diagram, options, true);
|
||||
|
||||
if (fit_page) {
|
||||
// impression adaptee sur une seule page
|
||||
@@ -426,6 +438,24 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, QPainter
|
||||
}
|
||||
}
|
||||
}
|
||||
diagram -> setDrawTerminals(true);
|
||||
diagram -> setDisplayGrid(true);
|
||||
saveReloadDiagramParameters(diagram, options, false);
|
||||
}
|
||||
|
||||
/**
|
||||
Sauve ou restaure les parametres du schema
|
||||
@param diagram Schema dont on sauve ou restaure les parametres
|
||||
@param options Parametres a appliquer
|
||||
@param save true pour memoriser les parametres du schema et appliquer ceux
|
||||
definis dans options, false pour restaurer les parametres
|
||||
*/
|
||||
void DiagramPrintDialog::saveReloadDiagramParameters(Diagram *diagram, const ExportProperties options, bool save) {
|
||||
static ExportProperties state_exportProperties;
|
||||
|
||||
if (save) {
|
||||
// memorise les parametres relatifs au schema tout en appliquant les nouveaux
|
||||
state_exportProperties = diagram -> applyProperties(options);
|
||||
} else {
|
||||
// restaure les parametres relatifs au schema
|
||||
diagram -> applyProperties(state_exportProperties);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <QtGui>
|
||||
#include "qetproject.h"
|
||||
#include "diagram.h"
|
||||
#include "exportproperties.h"
|
||||
/**
|
||||
Cette classe represente le dialogue de configuration de l'impression d'un
|
||||
schema electrique.
|
||||
@@ -49,10 +50,11 @@ class DiagramPrintDialog : public QWidget {
|
||||
private:
|
||||
void buildPrintTypeDialog();
|
||||
void buildDialog();
|
||||
void saveReloadDiagramParameters(Diagram *, const ExportProperties, bool);
|
||||
|
||||
private slots:
|
||||
void print(const QList<Diagram *> &, bool, QPrinter *);
|
||||
void printDiagram(Diagram *, bool, QPainter *, QPrinter * = 0);
|
||||
void print(const QList<Diagram *> &, bool, const ExportProperties);
|
||||
void printDiagram(Diagram *, bool, const ExportProperties, QPainter *, QPrinter * = 0);
|
||||
void updatePrintTypeDialog();
|
||||
void acceptPrintTypeDialog();
|
||||
void browseFilePrintTypeDialog();
|
||||
|
||||
@@ -34,12 +34,12 @@
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param diagram Schema a afficher ; si diagram vaut 0, un nouveau Diagram est utilise
|
||||
@param parent Le QWidget parent de cette vue de schema
|
||||
*/
|
||||
DiagramView::DiagramView(Diagram *diagram, QWidget *parent) : QGraphicsView(parent), is_adding_text(false) {
|
||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
setInteractive(true);
|
||||
setCacheMode(QGraphicsView::CacheBackground);
|
||||
|
||||
// active l'antialiasing
|
||||
setRenderHint(QPainter::Antialiasing, true);
|
||||
@@ -140,7 +140,8 @@ void DiagramView::dragEnterEvent(QDragEnterEvent *e) {
|
||||
Gere les dragleaveevent
|
||||
@param e le QDragEnterEvent correspondant au drag'n drop sortant
|
||||
*/
|
||||
void DiagramView::dragLeaveEvent(QDragLeaveEvent *) {
|
||||
void DiagramView::dragLeaveEvent(QDragLeaveEvent *e) {
|
||||
Q_UNUSED(e);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -633,6 +634,7 @@ void DiagramView::editElement(Element *element) {
|
||||
QString description_title = tr("Propri\351t\351s de l'\351l\351ment s\351lectionn\351");
|
||||
QPushButton *find_in_panel = new QPushButton(tr("Retrouver dans le panel"));
|
||||
QPushButton *edit_element = new QPushButton(tr("\311diter l'\351l\351ment"));
|
||||
edit_element->setIcon(QET::Icons::ElementEdit);
|
||||
|
||||
// dialogue en lui-meme
|
||||
QMessageBox edit_element_dialog(diagramEditor());
|
||||
@@ -923,8 +925,6 @@ void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
|
||||
Cette methode ajoute l'element deisgne par l'emplacement location a la
|
||||
position pos. Si necessaire, elle demande l'integration de l'element au
|
||||
projet.
|
||||
@param location emplacement d'un element a ajouter sur le schema
|
||||
@param pos position voulue de l'element sur le schema
|
||||
@see mustIntegrateElement
|
||||
*/
|
||||
void DiagramView::addDroppedElement() {
|
||||
|
||||
@@ -62,8 +62,8 @@ void DeletePartsCommand::redo() {
|
||||
/*** CutPartsCommand ***/
|
||||
/**
|
||||
Constructeur
|
||||
@param scene ElementScene concernee
|
||||
@param parts Liste des parties collees
|
||||
@param view ElementView concernee
|
||||
@param c Liste des parties collees
|
||||
@param parent QUndoCommand parent
|
||||
*/
|
||||
PastePartsCommand::PastePartsCommand(
|
||||
|
||||
@@ -427,9 +427,10 @@ void ElementScene::drawBackground(QPainter *p, const QRectF &r) {
|
||||
/**
|
||||
Dessine l'arriere-plan de l'editeur, cad l'indicateur de hotspot.
|
||||
@param p Le QPainter a utiliser pour dessiner
|
||||
@param r Le rectangle de la zone a dessiner
|
||||
@param rect Le rectangle de la zone a dessiner
|
||||
*/
|
||||
void ElementScene::drawForeground(QPainter *p, const QRectF &) {
|
||||
void ElementScene::drawForeground(QPainter *p, const QRectF &rect) {
|
||||
Q_UNUSED(rect);
|
||||
p -> save();
|
||||
|
||||
// desactive tout antialiasing, sauf pour le texte
|
||||
@@ -448,7 +449,7 @@ void ElementScene::drawForeground(QPainter *p, const QRectF &) {
|
||||
A partir d'un evenement souris, cette methode regarde si la touche shift est
|
||||
enfoncee ou non. Si oui, elle laisse le comportement en cours (cercle,
|
||||
texte, polygone, ...). Si non, elle repasse en mode normal / selection.
|
||||
@param e objet decrivant l'evenement souris
|
||||
@param event objet decrivant l'evenement souris
|
||||
*/
|
||||
void ElementScene::endCurrentBehavior(const QGraphicsSceneMouseEvent *event) {
|
||||
if (!(event -> modifiers() & Qt::ShiftModifier)) {
|
||||
@@ -473,8 +474,8 @@ int ElementScene::yGrid() const {
|
||||
}
|
||||
|
||||
/**
|
||||
@param x_grid Taille horizontale de la grille
|
||||
@param y_grid Taille verticale de la grille
|
||||
@param x_g Taille horizontale de la grille
|
||||
@param y_g Taille verticale de la grille
|
||||
*/
|
||||
void ElementScene::setGrid(int x_g, int y_g) {
|
||||
x_grid = x_g ? x_g : 1;
|
||||
@@ -483,7 +484,7 @@ void ElementScene::setGrid(int x_g, int y_g) {
|
||||
|
||||
/**
|
||||
Exporte l'element en XML
|
||||
@param diagram Booleen (a vrai par defaut) indiquant si le XML genere doit
|
||||
@param all_parts Booleen (a vrai par defaut) indiquant si le XML genere doit
|
||||
representer tout l'element ou seulement les elements selectionnes
|
||||
@return un document XML decrivant l'element
|
||||
*/
|
||||
@@ -1102,7 +1103,8 @@ ElementContent ElementScene::loadContent(const QDomDocument &xml_document, QStri
|
||||
different de 0, un message d'erreur sera stocke dedans si necessaire
|
||||
@return Le contenu ajoute
|
||||
*/
|
||||
ElementContent ElementScene::addContent(const ElementContent &content, QString */*error_message*/) {
|
||||
ElementContent ElementScene::addContent(const ElementContent &content, QString *error_message) {
|
||||
Q_UNUSED(error_message);
|
||||
foreach(QGraphicsItem *part, content) {
|
||||
addItem(part);
|
||||
}
|
||||
@@ -1117,7 +1119,8 @@ ElementContent ElementScene::addContent(const ElementContent &content, QString *
|
||||
different de 0, un message d'erreur sera stocke dedans si necessaire
|
||||
@return Le contenu ajoute
|
||||
*/
|
||||
ElementContent ElementScene::addContentAtPos(const ElementContent &content, const QPointF &pos, QString */*error_message*/) {
|
||||
ElementContent ElementScene::addContentAtPos(const ElementContent &content, const QPointF &pos, QString *error_message) {
|
||||
Q_UNUSED(error_message);
|
||||
// calcule le boundingRect du contenu a ajouter
|
||||
QRectF bounding_rect = elementContentBoundingRect(content);
|
||||
|
||||
|
||||
@@ -48,7 +48,8 @@ PartArc::~PartArc() {
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartArc::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *) {
|
||||
void PartArc::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
applyStylesToQPainter(*painter);
|
||||
// enleve systematiquement la couleur de fond
|
||||
painter -> setBrush(Qt::NoBrush);
|
||||
|
||||
@@ -43,7 +43,8 @@ PartCircle::~PartCircle() {
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartCircle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *) {
|
||||
void PartCircle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
applyStylesToQPainter(*painter);
|
||||
QPen t = painter -> pen();
|
||||
t.setCosmetic(options && options -> levelOfDetail < 1.0);
|
||||
|
||||
@@ -43,7 +43,8 @@ PartEllipse::~PartEllipse() {
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *) {
|
||||
void PartEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
applyStylesToQPainter(*painter);
|
||||
QPen t = painter -> pen();
|
||||
t.setCosmetic(options && options -> levelOfDetail < 1.0);
|
||||
|
||||
@@ -65,7 +65,8 @@ uint PartLine::requiredLengthForEndType(const QET::EndType &end_type) {
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget */*w*/) {
|
||||
void PartLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
// inutile de dessiner une ligne nulle
|
||||
if (line().p1() == line().p2()) return;
|
||||
applyStylesToQPainter(*painter);
|
||||
|
||||
@@ -94,7 +94,8 @@ const QDomElement PartPolygon::toXml(QDomDocument &xml_document) const {
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartPolygon::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *) {
|
||||
void PartPolygon::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
applyStylesToQPainter(*painter);
|
||||
QPen t = painter -> pen();
|
||||
t.setCosmetic(options && options -> levelOfDetail < 1.0);
|
||||
|
||||
@@ -43,7 +43,8 @@ PartRectangle::~PartRectangle() {
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *) {
|
||||
void PartRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
applyStylesToQPainter(*painter);
|
||||
QPen t = painter -> pen();
|
||||
t.setCosmetic(options && options -> levelOfDetail < 1.0);
|
||||
|
||||
@@ -86,11 +86,12 @@ QWidget *PartTerminal::elementInformations() {
|
||||
|
||||
/**
|
||||
Dessine la borne
|
||||
@param painter QPainter a utiliser pour rendre le dessin
|
||||
@param p QPainter a utiliser pour rendre le dessin
|
||||
@param options Options pour affiner le rendu
|
||||
@param widget Widget sur lequel le rendu est effectue
|
||||
*/
|
||||
void PartTerminal::paint(QPainter *p, const QStyleOptionGraphicsItem *options, QWidget *) {
|
||||
void PartTerminal::paint(QPainter *p, const QStyleOptionGraphicsItem *options, QWidget *widget) {
|
||||
Q_UNUSED(widget);
|
||||
p -> save();
|
||||
|
||||
// annulation des renderhints
|
||||
|
||||
@@ -71,48 +71,50 @@ QETElementEditor::~QETElementEditor() {
|
||||
Met en place les actions
|
||||
*/
|
||||
void QETElementEditor::setupActions() {
|
||||
new_element = new QAction(QET::Icons::DocumentNew, tr("&Nouveau"), this);
|
||||
open = new QAction(QET::Icons::DocumentOpen, tr("&Ouvrir"), this);
|
||||
open_file = new QAction(QET::Icons::DocumentOpen, tr("&Ouvrir depuis un fichier"), this);
|
||||
save = new QAction(QET::Icons::DocumentSave, tr("&Enregistrer"), this);
|
||||
save_as = new QAction(QET::Icons::DocumentSaveAs, tr("Enregistrer sous"), this);
|
||||
save_as_file = new QAction(QET::Icons::DocumentSaveAs, tr("Enregistrer dans un fichier"), this);
|
||||
reload = new QAction(QET::Icons::ViewRefresh, tr("Recharger"), this);
|
||||
quit = new QAction(QET::Icons::ApplicationExit, tr("&Quitter"), this);
|
||||
selectall = new QAction(QET::Icons::EditSelectAll, tr("Tout s\351lectionner"), this);
|
||||
deselectall = new QAction( tr("D\351s\351lectionner tout"), this);
|
||||
cut = new QAction(QET::Icons::EditCut, tr("Co&uper"), this);
|
||||
copy = new QAction(QET::Icons::EditCopy, tr("Cop&ier"), this);
|
||||
paste = new QAction(QET::Icons::EditPaste, tr("C&oller"), this);
|
||||
paste_in_area = new QAction(QET::Icons::EditPaste, tr("C&oller dans la zone..."), this);
|
||||
inv_select = new QAction( tr("Inverser la s\351lection"), this);
|
||||
edit_delete = new QAction(QET::Icons::EditDelete, tr("&Supprimer"), this);
|
||||
zoom_in = new QAction(QET::Icons::ZoomIn, tr("Zoom avant"), this);
|
||||
zoom_out = new QAction(QET::Icons::ZoomOut, tr("Zoom arri\350re"), this);
|
||||
zoom_fit = new QAction(QET::Icons::ZoomFitBest, tr("Zoom adapt\351"), this);
|
||||
zoom_reset = new QAction(QET::Icons::ZoomOriginal, tr("Pas de zoom"), this);
|
||||
edit_size_hs = new QAction(QET::Icons::HotSpot, tr("\311diter la taille et le point de saisie"), this);
|
||||
edit_names = new QAction(QET::Icons::Names, tr("\311diter les noms"), this);
|
||||
edit_ori = new QAction(QET::Icons::Orientations, tr("\311diter les orientations"), this);
|
||||
edit_raise = new QAction(QET::Icons::Raise, tr("Rapprocher"), this);
|
||||
edit_lower = new QAction(QET::Icons::Lower, tr("\311loigner"), this);
|
||||
edit_backward = new QAction(QET::Icons::SendBackward, tr("Envoyer au fond"), this);
|
||||
edit_forward = new QAction(QET::Icons::BringForward, tr("Amener au premier plan"), this);
|
||||
move = new QAction(QET::Icons::PartSelect, tr("D\351placer un objet"), this);
|
||||
add_line = new QAction(QET::Icons::PartLine, tr("Ajouter une ligne"), this);
|
||||
add_rectangle = new QAction(QET::Icons::PartRectangle, tr("Ajouter un rectangle"), this);
|
||||
add_ellipse = new QAction(QET::Icons::PartEllipse, tr("Ajouter une ellipse"), this);
|
||||
add_circle = new QAction(QET::Icons::PartCircle, tr("Ajouter un cercle"), this);
|
||||
add_polygon = new QAction(QET::Icons::PartPolygon, tr("Ajouter un polygone"), this);
|
||||
add_text = new QAction(QET::Icons::PartText, tr("Ajouter du texte"), this);
|
||||
add_arc = new QAction(QET::Icons::PartArc, tr("Ajouter un arc de cercle"), this);
|
||||
add_terminal = new QAction(QET::Icons::Terminal, tr("Ajouter une borne"), this);
|
||||
add_textfield = new QAction(QET::Icons::PartTextField, tr("Ajouter un champ de texte"), this);
|
||||
fullscreen = new QAction(this);
|
||||
new_element = new QAction(QET::Icons::DocumentNew, tr("&Nouveau"), this);
|
||||
open = new QAction(QET::Icons::DocumentOpen, tr("&Ouvrir"), this);
|
||||
open_file = new QAction(QET::Icons::DocumentOpen, tr("&Ouvrir depuis un fichier"), this);
|
||||
save = new QAction(QET::Icons::DocumentSave, tr("&Enregistrer"), this);
|
||||
save_as = new QAction(QET::Icons::DocumentSaveAs, tr("Enregistrer sous"), this);
|
||||
save_as_file = new QAction(QET::Icons::DocumentSaveAs, tr("Enregistrer dans un fichier"), this);
|
||||
reload = new QAction(QET::Icons::ViewRefresh, tr("Recharger"), this);
|
||||
quit = new QAction(QET::Icons::ApplicationExit, tr("&Quitter"), this);
|
||||
selectall = new QAction(QET::Icons::EditSelectAll, tr("Tout s\351lectionner"), this);
|
||||
deselectall = new QAction( tr("D\351s\351lectionner tout"), this);
|
||||
cut = new QAction(QET::Icons::EditCut, tr("Co&uper"), this);
|
||||
copy = new QAction(QET::Icons::EditCopy, tr("Cop&ier"), this);
|
||||
paste = new QAction(QET::Icons::EditPaste, tr("C&oller"), this);
|
||||
paste_in_area = new QAction(QET::Icons::EditPaste, tr("C&oller dans la zone..."), this);
|
||||
paste_from_file = new QAction(QET::Icons::XmlTextFile, tr("un fichier"), this);
|
||||
paste_from_elmt = new QAction(QET::Icons::Element, tr("un \351l\351ment"), this);
|
||||
inv_select = new QAction( tr("Inverser la s\351lection"), this);
|
||||
edit_delete = new QAction(QET::Icons::EditDelete, tr("&Supprimer"), this);
|
||||
zoom_in = new QAction(QET::Icons::ZoomIn, tr("Zoom avant"), this);
|
||||
zoom_out = new QAction(QET::Icons::ZoomOut, tr("Zoom arri\350re"), this);
|
||||
zoom_fit = new QAction(QET::Icons::ZoomFitBest, tr("Zoom adapt\351"), this);
|
||||
zoom_reset = new QAction(QET::Icons::ZoomOriginal, tr("Pas de zoom"), this);
|
||||
edit_size_hs = new QAction(QET::Icons::HotSpot, tr("\311diter la taille et le point de saisie"), this);
|
||||
edit_names = new QAction(QET::Icons::Names, tr("\311diter les noms"), this);
|
||||
edit_ori = new QAction(QET::Icons::Orientations, tr("\311diter les orientations"), this);
|
||||
edit_raise = new QAction(QET::Icons::Raise, tr("Rapprocher"), this);
|
||||
edit_lower = new QAction(QET::Icons::Lower, tr("\311loigner"), this);
|
||||
edit_backward = new QAction(QET::Icons::SendBackward, tr("Envoyer au fond"), this);
|
||||
edit_forward = new QAction(QET::Icons::BringForward, tr("Amener au premier plan"), this);
|
||||
move = new QAction(QET::Icons::PartSelect, tr("D\351placer un objet"), this);
|
||||
add_line = new QAction(QET::Icons::PartLine, tr("Ajouter une ligne"), this);
|
||||
add_rectangle = new QAction(QET::Icons::PartRectangle, tr("Ajouter un rectangle"), this);
|
||||
add_ellipse = new QAction(QET::Icons::PartEllipse, tr("Ajouter une ellipse"), this);
|
||||
add_circle = new QAction(QET::Icons::PartCircle, tr("Ajouter un cercle"), this);
|
||||
add_polygon = new QAction(QET::Icons::PartPolygon, tr("Ajouter un polygone"), this);
|
||||
add_text = new QAction(QET::Icons::PartText, tr("Ajouter du texte"), this);
|
||||
add_arc = new QAction(QET::Icons::PartArc, tr("Ajouter un arc de cercle"), this);
|
||||
add_terminal = new QAction(QET::Icons::Terminal, tr("Ajouter une borne"), this);
|
||||
add_textfield = new QAction(QET::Icons::PartTextField, tr("Ajouter un champ de texte"), this);
|
||||
fullscreen = new QAction(this);
|
||||
slot_updateFullScreenAction();
|
||||
configure = new QAction(QET::Icons::Configure, tr("&Configurer QElectroTech"), this);
|
||||
about_qet = new QAction(QET::Icons::QETLogo, tr("\300 &propos de QElectroTech"), this);
|
||||
about_qt = new QAction(QET::Icons::QtLogo, tr("\300 propos de &Qt"), this);
|
||||
configure = new QAction(QET::Icons::Configure, tr("&Configurer QElectroTech"), this);
|
||||
about_qet = new QAction(QET::Icons::QETLogo, tr("\300 &propos de QElectroTech"), this);
|
||||
about_qt = new QAction(QET::Icons::QtLogo, tr("\300 propos de &Qt"), this);
|
||||
|
||||
QString add_status_tip = tr("Maintenez la touche Shift enfonc\351e pour effectuer plusieurs ajouts d'affil\351e");
|
||||
add_line -> setStatusTip(add_status_tip);
|
||||
@@ -173,61 +175,63 @@ void QETElementEditor::setupActions() {
|
||||
|
||||
QETApp *qet_app = QETApp::instance();
|
||||
|
||||
connect(new_element, SIGNAL(triggered()), this, SLOT(slot_new()));
|
||||
connect(open, SIGNAL(triggered()), this, SLOT(slot_open()));
|
||||
connect(open_file, SIGNAL(triggered()), this, SLOT(slot_openFile()));
|
||||
connect(save, SIGNAL(triggered()), this, SLOT(slot_save()));
|
||||
connect(save_as, SIGNAL(triggered()), this, SLOT(slot_saveAs()));
|
||||
connect(save_as_file, SIGNAL(triggered()), this, SLOT(slot_saveAsFile()));
|
||||
connect(reload, SIGNAL(triggered()), this, SLOT(slot_reload()));
|
||||
connect(quit, SIGNAL(triggered()), this, SLOT(close()));
|
||||
connect(selectall, SIGNAL(triggered()), ce_scene, SLOT(slot_selectAll()));
|
||||
connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll()));
|
||||
connect(inv_select, SIGNAL(triggered()), ce_scene, SLOT(slot_invertSelection()));
|
||||
connect(cut, SIGNAL(triggered()), ce_view, SLOT(cut()));
|
||||
connect(copy, SIGNAL(triggered()), ce_view, SLOT(copy()));
|
||||
connect(paste, SIGNAL(triggered()), ce_view, SLOT(paste()));
|
||||
connect(paste_in_area, SIGNAL(triggered()), ce_view, SLOT(pasteInArea()));
|
||||
connect(zoom_in, SIGNAL(triggered()), ce_view, SLOT(zoomIn()));
|
||||
connect(zoom_out, SIGNAL(triggered()), ce_view, SLOT(zoomOut()));
|
||||
connect(zoom_fit, SIGNAL(triggered()), ce_view, SLOT(zoomFit()));
|
||||
connect(zoom_reset, SIGNAL(triggered()), ce_view, SLOT(zoomReset()));
|
||||
connect(edit_delete, SIGNAL(triggered()), ce_scene, SLOT(slot_delete()));
|
||||
connect(edit_size_hs, SIGNAL(triggered()), ce_scene, SLOT(slot_editSizeHotSpot()));
|
||||
connect(edit_names, SIGNAL(triggered()), ce_scene, SLOT(slot_editNames()));
|
||||
connect(fullscreen, SIGNAL(triggered()), this, SLOT(toggleFullScreen()));
|
||||
connect(configure, SIGNAL(triggered()), qet_app, SLOT(configureQET()));
|
||||
connect(edit_ori, SIGNAL(triggered()), ce_scene, SLOT(slot_editOrientations()));
|
||||
connect(edit_forward, SIGNAL(triggered()), ce_scene, SLOT(slot_bringForward()));
|
||||
connect(edit_raise, SIGNAL(triggered()), ce_scene, SLOT(slot_raise()));
|
||||
connect(edit_lower, SIGNAL(triggered()), ce_scene, SLOT(slot_lower()));
|
||||
connect(edit_backward, SIGNAL(triggered()), ce_scene, SLOT(slot_sendBackward()));
|
||||
connect(move, SIGNAL(triggered()), ce_scene, SLOT(slot_move()));
|
||||
connect(add_line, SIGNAL(triggered()), ce_scene, SLOT(slot_addLine()));
|
||||
connect(add_rectangle, SIGNAL(triggered()), ce_scene, SLOT(slot_addRectangle()));
|
||||
connect(add_ellipse, SIGNAL(triggered()), ce_scene, SLOT(slot_addEllipse()));
|
||||
connect(add_circle, SIGNAL(triggered()), ce_scene, SLOT(slot_addCircle()));
|
||||
connect(add_polygon, SIGNAL(triggered()), ce_scene, SLOT(slot_addPolygon()));
|
||||
connect(add_text, SIGNAL(triggered()), ce_scene, SLOT(slot_addText()));
|
||||
connect(add_arc, SIGNAL(triggered()), ce_scene, SLOT(slot_addArc()));
|
||||
connect(add_terminal, SIGNAL(triggered()), ce_scene, SLOT(slot_addTerminal()));
|
||||
connect(add_textfield, SIGNAL(triggered()), ce_scene, SLOT(slot_addTextField()));
|
||||
connect(new_element, SIGNAL(triggered()), this, SLOT(slot_new()));
|
||||
connect(open, SIGNAL(triggered()), this, SLOT(slot_open()));
|
||||
connect(open_file, SIGNAL(triggered()), this, SLOT(slot_openFile()));
|
||||
connect(save, SIGNAL(triggered()), this, SLOT(slot_save()));
|
||||
connect(save_as, SIGNAL(triggered()), this, SLOT(slot_saveAs()));
|
||||
connect(save_as_file, SIGNAL(triggered()), this, SLOT(slot_saveAsFile()));
|
||||
connect(reload, SIGNAL(triggered()), this, SLOT(slot_reload()));
|
||||
connect(quit, SIGNAL(triggered()), this, SLOT(close()));
|
||||
connect(selectall, SIGNAL(triggered()), ce_scene, SLOT(slot_selectAll()));
|
||||
connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll()));
|
||||
connect(inv_select, SIGNAL(triggered()), ce_scene, SLOT(slot_invertSelection()));
|
||||
connect(cut, SIGNAL(triggered()), ce_view, SLOT(cut()));
|
||||
connect(copy, SIGNAL(triggered()), ce_view, SLOT(copy()));
|
||||
connect(paste, SIGNAL(triggered()), ce_view, SLOT(paste()));
|
||||
connect(paste_in_area, SIGNAL(triggered()), ce_view, SLOT(pasteInArea()));
|
||||
connect(paste_from_file, SIGNAL(triggered()), this, SLOT(pasteFromFile()));
|
||||
connect(paste_from_elmt, SIGNAL(triggered()), this, SLOT(pasteFromElement()));
|
||||
connect(zoom_in, SIGNAL(triggered()), ce_view, SLOT(zoomIn()));
|
||||
connect(zoom_out, SIGNAL(triggered()), ce_view, SLOT(zoomOut()));
|
||||
connect(zoom_fit, SIGNAL(triggered()), ce_view, SLOT(zoomFit()));
|
||||
connect(zoom_reset, SIGNAL(triggered()), ce_view, SLOT(zoomReset()));
|
||||
connect(edit_delete, SIGNAL(triggered()), ce_scene, SLOT(slot_delete()));
|
||||
connect(edit_size_hs, SIGNAL(triggered()), ce_scene, SLOT(slot_editSizeHotSpot()));
|
||||
connect(edit_names, SIGNAL(triggered()), ce_scene, SLOT(slot_editNames()));
|
||||
connect(fullscreen, SIGNAL(triggered()), this, SLOT(toggleFullScreen()));
|
||||
connect(configure, SIGNAL(triggered()), qet_app, SLOT(configureQET()));
|
||||
connect(edit_ori, SIGNAL(triggered()), ce_scene, SLOT(slot_editOrientations()));
|
||||
connect(edit_forward, SIGNAL(triggered()), ce_scene, SLOT(slot_bringForward()));
|
||||
connect(edit_raise, SIGNAL(triggered()), ce_scene, SLOT(slot_raise()));
|
||||
connect(edit_lower, SIGNAL(triggered()), ce_scene, SLOT(slot_lower()));
|
||||
connect(edit_backward, SIGNAL(triggered()), ce_scene, SLOT(slot_sendBackward()));
|
||||
connect(move, SIGNAL(triggered()), ce_scene, SLOT(slot_move()));
|
||||
connect(add_line, SIGNAL(triggered()), ce_scene, SLOT(slot_addLine()));
|
||||
connect(add_rectangle, SIGNAL(triggered()), ce_scene, SLOT(slot_addRectangle()));
|
||||
connect(add_ellipse, SIGNAL(triggered()), ce_scene, SLOT(slot_addEllipse()));
|
||||
connect(add_circle, SIGNAL(triggered()), ce_scene, SLOT(slot_addCircle()));
|
||||
connect(add_polygon, SIGNAL(triggered()), ce_scene, SLOT(slot_addPolygon()));
|
||||
connect(add_text, SIGNAL(triggered()), ce_scene, SLOT(slot_addText()));
|
||||
connect(add_arc, SIGNAL(triggered()), ce_scene, SLOT(slot_addArc()));
|
||||
connect(add_terminal, SIGNAL(triggered()), ce_scene, SLOT(slot_addTerminal()));
|
||||
connect(add_textfield, SIGNAL(triggered()), ce_scene, SLOT(slot_addTextField()));
|
||||
|
||||
connect(move, SIGNAL(triggered()), this, SLOT(slot_setRubberBandToView()));
|
||||
connect(add_line, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_rectangle, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_ellipse, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_circle, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_polygon, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_text, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_arc, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_terminal, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_textfield, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(move, SIGNAL(triggered()), this, SLOT(slot_setRubberBandToView()));
|
||||
connect(add_line, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_rectangle, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_ellipse, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_circle, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_polygon, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_text, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_arc, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_terminal, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
connect(add_textfield, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView()));
|
||||
|
||||
connect(about_qet, SIGNAL(triggered()), qet_app, SLOT(aboutQET()));
|
||||
connect(about_qt, SIGNAL(triggered()), qet_app, SLOT(aboutQt()));
|
||||
connect(about_qet, SIGNAL(triggered()), qet_app, SLOT(aboutQET()));
|
||||
connect(about_qt, SIGNAL(triggered()), qet_app, SLOT(aboutQt()));
|
||||
|
||||
connect(ce_scene, SIGNAL(needNormalMode()), this, SLOT(slot_setNormalMode()));
|
||||
connect(ce_scene, SIGNAL(needNormalMode()), this, SLOT(slot_setNormalMode()));
|
||||
|
||||
move -> setCheckable(true);
|
||||
add_line -> setCheckable(true);
|
||||
@@ -341,6 +345,11 @@ void QETElementEditor::setupMenus() {
|
||||
file_menu -> addSeparator();
|
||||
file_menu -> addAction(quit);
|
||||
|
||||
paste_from_menu = new QMenu(tr("Coller depuis..."));
|
||||
paste_from_menu -> setIcon(QET::Icons::EditPaste);
|
||||
paste_from_menu -> addAction(paste_from_file);
|
||||
paste_from_menu -> addAction(paste_from_elmt);
|
||||
|
||||
edit_menu -> addAction(undo);
|
||||
edit_menu -> addAction(redo);
|
||||
edit_menu -> addSeparator();
|
||||
@@ -352,6 +361,7 @@ void QETElementEditor::setupMenus() {
|
||||
edit_menu -> addAction(copy);
|
||||
edit_menu -> addAction(paste);
|
||||
edit_menu -> addAction(paste_in_area);
|
||||
edit_menu -> addMenu(paste_from_menu);
|
||||
edit_menu -> addSeparator();
|
||||
edit_menu -> addAction(edit_delete);
|
||||
edit_menu -> addSeparator();
|
||||
@@ -819,18 +829,13 @@ void QETElementEditor::slot_open() {
|
||||
Demande un fichier a l'utilisateur et ouvre ce fichier
|
||||
*/
|
||||
void QETElementEditor::slot_openFile() {
|
||||
// repertoire a afficher initialement dans le dialogue
|
||||
QString open_dir = filename_.isEmpty() ? QETApp::customElementsDir() : QDir(filename_).absolutePath();
|
||||
|
||||
// demande un nom de fichier a ouvrir a l'utilisateur
|
||||
QString user_filename = QFileDialog::getOpenFileName(
|
||||
this,
|
||||
tr("Ouvrir un fichier", "dialog title"),
|
||||
filename_.isEmpty() ? QETApp::customElementsDir() : QDir(filename_).absolutePath(),
|
||||
tr(
|
||||
"\311l\351ments QElectroTech (*.elmt);;"
|
||||
"Fichiers XML (*.xml);;"
|
||||
"Tous les fichiers (*)",
|
||||
"filetypes allowed when opening an element file"
|
||||
)
|
||||
);
|
||||
QString user_filename = QETElementEditor::getOpenElementFileName(this, open_dir);
|
||||
|
||||
// ouvre l'element
|
||||
openElement(user_filename);
|
||||
}
|
||||
|
||||
@@ -1010,6 +1015,28 @@ QWidget *QETElementEditor::clearToolsDock() {
|
||||
return(0);
|
||||
}
|
||||
|
||||
/**
|
||||
Exporte le document XML xml_document vers le presse-papier puis declenche
|
||||
son collage dans l'editeur courant, avec selection de la zone de collage
|
||||
@param xml_document Document XML a copier/coller
|
||||
@see ElementView::pasteInArea
|
||||
*/
|
||||
void QETElementEditor::copyAndPasteXml(const QDomDocument &xml_document) {
|
||||
// accede au presse-papier
|
||||
QClipboard *clipboard = QApplication::clipboard();
|
||||
|
||||
// genere la description XML de la selection
|
||||
QString clipboard_content = xml_document.toString(4);
|
||||
|
||||
// met la description XML dans le presse-papier
|
||||
if (clipboard -> supportsSelection()) {
|
||||
clipboard -> setText(clipboard_content, QClipboard::Selection);
|
||||
}
|
||||
clipboard -> setText(clipboard_content);
|
||||
|
||||
ce_view -> pasteInArea();
|
||||
}
|
||||
|
||||
/**
|
||||
Permet de quitter l'editeur lors de la fermeture de la fenetre principale
|
||||
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
|
||||
@@ -1141,6 +1168,31 @@ QET::OrientedMovement QETElementEditor::pasteMovement() {
|
||||
return(QET::ToEast);
|
||||
}
|
||||
|
||||
/**
|
||||
Demande a l'utilisateur d'ouvrir un fichier sense etre un element.
|
||||
@param parent QWidget parent du dialogue d'ouverture de fichier
|
||||
@param initial_dir Repertoire a afficher initialement - si une chaine vide
|
||||
est fournie, QETApp::customElementsDir() sera utilise.
|
||||
@return Le chemin du fichier choisi ou une chaine vide si l'utilisateur a
|
||||
clique sur le bouton "Annuler".
|
||||
@see QETApp::customElementsDir()
|
||||
*/
|
||||
QString QETElementEditor::getOpenElementFileName(QWidget *parent, const QString &initial_dir) {
|
||||
// demande un nom de fichier a ouvrir a l'utilisateur
|
||||
QString user_filename = QFileDialog::getOpenFileName(
|
||||
parent,
|
||||
tr("Ouvrir un fichier", "dialog title"),
|
||||
initial_dir.isEmpty() ? QETApp::customElementsDir() : initial_dir,
|
||||
tr(
|
||||
"\311l\351ments QElectroTech (*.elmt);;"
|
||||
"Fichiers XML (*.xml);;"
|
||||
"Tous les fichiers (*)",
|
||||
"filetypes allowed when opening an element file"
|
||||
)
|
||||
);
|
||||
return(user_filename);
|
||||
}
|
||||
|
||||
/**
|
||||
@param location Emplacement de l'element a editer
|
||||
*/
|
||||
@@ -1190,3 +1242,70 @@ void QETElementEditor::fromLocation(const ElementsLocation &location) {
|
||||
setLocation(location);
|
||||
slot_updateMenus();
|
||||
}
|
||||
|
||||
/**
|
||||
Demande un fichier a l'utilisateur, l'ouvre en tant que fichier element,
|
||||
met son contenu dans le presse-papiers, et appelle ElementView::PasteInArea
|
||||
*/
|
||||
void QETElementEditor::pasteFromFile() {
|
||||
// demande le chemin du fichier a ouvrir a l'utilisateur
|
||||
QString element_file_path = getOpenElementFileName(this);
|
||||
if (element_file_path.isEmpty()) return;
|
||||
|
||||
QString error_message;
|
||||
QDomDocument xml_document;
|
||||
QFile element_file(element_file_path);
|
||||
// le fichier doit etre lisible
|
||||
if (!element_file.open(QIODevice::ReadOnly)) {
|
||||
error_message = QString(tr("Impossible d'ouvrir le fichier %1.", "message box content")).arg(element_file_path);
|
||||
} else {
|
||||
// le fichier doit etre un document XML
|
||||
if (!xml_document.setContent(&element_file)) {
|
||||
error_message = tr("Ce fichier n'est pas un document XML valide", "message box content");
|
||||
}
|
||||
element_file.close();
|
||||
}
|
||||
|
||||
if (!error_message.isEmpty()) {
|
||||
QET::MessageBox::critical(this, tr("Erreur", "toolbar title"), error_message);
|
||||
}
|
||||
copyAndPasteXml(xml_document);
|
||||
}
|
||||
|
||||
/**
|
||||
Denande un element a l'utilisateur, met son contenu dans le presse-papiers,
|
||||
et appelle ElementView::PasteInArea
|
||||
*/
|
||||
void QETElementEditor::pasteFromElement() {
|
||||
// demande le chemin virtuel de l'element a ouvrir a l'utilisateur
|
||||
ElementsLocation location = ElementDialog::getOpenElementLocation(this);
|
||||
if (location.isNull()) return;
|
||||
|
||||
// verifie l'existence de l'element choisi
|
||||
ElementsCollectionItem *item = QETApp::collectionItem(location);
|
||||
ElementDefinition *element = 0;
|
||||
if (!item) {
|
||||
QET::MessageBox::critical(
|
||||
this,
|
||||
tr("\311l\351ment inexistant.", "message box title"),
|
||||
tr("L'\351l\351ment n'existe pas.", "message box content")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!item -> isElement() || !(element = qobject_cast<ElementDefinition *>(item)) || element -> isNull()) {
|
||||
QET::MessageBox::critical(
|
||||
this,
|
||||
tr("\311l\351ment inexistant.", "message box title"),
|
||||
tr("Le chemin virtuel choisi ne correspond pas \340 un \351l\351ment.", "message box content")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// creation d'un document XML a partir de la description XML de l'element
|
||||
QDomDocument document_xml;
|
||||
QDomNode node = document_xml.importNode(element -> xml(), true);
|
||||
document_xml.appendChild(node);
|
||||
|
||||
copyAndPasteXml(document_xml);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ class QETElementEditor : public QMainWindow {
|
||||
/// booleen indiquant si l'editeur est en mode "lecture seule" ou non
|
||||
bool read_only;
|
||||
/// menus
|
||||
QMenu *file_menu, *edit_menu, *display_menu, *tools_menu, *config_menu, *help_menu;
|
||||
QMenu *file_menu, *edit_menu, *paste_from_menu, *display_menu, *tools_menu, *config_menu, *help_menu;
|
||||
/// vue sur la scene d'edition
|
||||
ElementView *ce_view;
|
||||
/// scene d'edition
|
||||
@@ -66,7 +66,7 @@ class QETElementEditor : public QMainWindow {
|
||||
QAction *new_element, *open, *open_file, *save, *save_as, *save_as_file, *reload, *quit;
|
||||
/// actions du menu edition
|
||||
QAction *selectall, *deselectall, *inv_select;
|
||||
QAction *cut, *copy, *paste, *paste_in_area;
|
||||
QAction *cut, *copy, *paste, *paste_in_area, *paste_from_file, *paste_from_elmt;
|
||||
QAction *undo, *redo;
|
||||
QAction *edit_delete, *edit_size_hs, *edit_names, *edit_ori;
|
||||
QAction *edit_raise, *edit_lower, *edit_backward, *edit_forward;
|
||||
@@ -117,6 +117,7 @@ class QETElementEditor : public QMainWindow {
|
||||
void writeSettings();
|
||||
static QPointF pasteOffset();
|
||||
static QET::OrientedMovement pasteMovement();
|
||||
static QString getOpenElementFileName(QWidget * = 0, const QString & = QString());
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *);
|
||||
@@ -128,6 +129,7 @@ class QETElementEditor : public QMainWindow {
|
||||
void setupInterface();
|
||||
bool canClose();
|
||||
QWidget *clearToolsDock();
|
||||
void copyAndPasteXml(const QDomDocument &);
|
||||
|
||||
public slots:
|
||||
void slot_new();
|
||||
@@ -152,6 +154,8 @@ class QETElementEditor : public QMainWindow {
|
||||
void toggleFullScreen();
|
||||
void xmlPreview();
|
||||
bool checkElement();
|
||||
void pasteFromFile();
|
||||
void pasteFromElement();
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -188,7 +188,8 @@ bool Element::setOrientation(QET::Orientation o) {
|
||||
@param painter Le QPainter a utiliser pour dessiner les axes
|
||||
@param options Les options de style a prendre en compte
|
||||
*/
|
||||
void Element::drawAxes(QPainter *painter, const QStyleOptionGraphicsItem *) {
|
||||
void Element::drawAxes(QPainter *painter, const QStyleOptionGraphicsItem *options) {
|
||||
Q_UNUSED(options);
|
||||
painter -> setPen(Qt::blue);
|
||||
painter -> drawLine(0, 0, 10, 0);
|
||||
painter -> drawLine(7,-3, 10, 0);
|
||||
@@ -203,10 +204,11 @@ void Element::drawAxes(QPainter *painter, const QStyleOptionGraphicsItem *) {
|
||||
|
||||
/**
|
||||
Dessine le cadre de selection de l'element de maniere systematiquement non antialiasee.
|
||||
@param qp Le QPainter a utiliser pour dessiner les bornes.
|
||||
@param painter Le QPainter a utiliser pour dessiner les bornes.
|
||||
@param options Les options de style a prendre en compte
|
||||
*/
|
||||
void Element::drawSelection(QPainter *painter, const QStyleOptionGraphicsItem *) {
|
||||
void Element::drawSelection(QPainter *painter, const QStyleOptionGraphicsItem *options) {
|
||||
Q_UNUSED(options);
|
||||
painter -> save();
|
||||
// Annulation des renderhints
|
||||
painter -> setRenderHint(QPainter::Antialiasing, false);
|
||||
|
||||
@@ -231,7 +231,8 @@ bool ElementDefinition::equals(ElementDefinition &other) {
|
||||
@param deep_copy Argument ignore - une copie "recursive" n'a pas de sens pour un element
|
||||
@return La copie de l'element ou 0 si le processus a echoue
|
||||
*/
|
||||
ElementsCollectionItem *ElementDefinition::copy(ElementsCategory *target_category, MoveElementsHandler *handler, bool) {
|
||||
ElementsCollectionItem *ElementDefinition::copy(ElementsCategory *target_category, MoveElementsHandler *handler, bool deep_copy) {
|
||||
Q_UNUSED(deep_copy);
|
||||
if (!target_category) return(0);
|
||||
|
||||
// echec si le path name de cet element est vide
|
||||
|
||||
@@ -51,7 +51,7 @@ class ElementDefinition : public ElementsCollectionItem {
|
||||
@param xml_element Nouvelle definition XML de l'element
|
||||
@return true si l'operation s'est bien passee, false sinon
|
||||
*/
|
||||
virtual bool setXml(const QDomElement &) = 0;
|
||||
virtual bool setXml(const QDomElement &xml_element) = 0;
|
||||
|
||||
/**
|
||||
@return true si la definition n'est pas disponible
|
||||
|
||||
@@ -100,7 +100,7 @@ QTreeWidgetItem *ElementsCategoriesList::addCollection(QTreeWidgetItem *qtwi_par
|
||||
Methode privee permettant d'ajouter une categorie
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere la categorie
|
||||
@param category Categorie d'elements a inserer
|
||||
@param name Parametre facultatif permettant de forcer le nom affiche
|
||||
@param cat_name Parametre facultatif permettant de forcer le nom affiche
|
||||
S'il n'est pas precise, la methode utilise le nom declare par la categorie.
|
||||
@param icon Icone a utiliser pour l'affichage de la categorie
|
||||
Si elle n'est pas precisee, une icone par defaut est utilisee
|
||||
@@ -133,9 +133,9 @@ QTreeWidgetItem *ElementsCategoriesList::addCategory(QTreeWidgetItem *qtwi_paren
|
||||
Methode privee permettant d'ajouter un element
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element
|
||||
@param element Element a inserer
|
||||
@param name Parametre facultatif permettant de forcer le nom affiche
|
||||
@param elmt_name Parametre facultatif permettant de forcer le nom affiche
|
||||
S'il n'est pas precise, la methode utilise le nom declare par la categorie.
|
||||
Une icone sera generee a partir de l'element.
|
||||
@param icon Icone a utiliser pour l'affichage de l'element
|
||||
@return Le QTreeWidgetItem insere
|
||||
*/
|
||||
QTreeWidgetItem *ElementsCategoriesList::addElement(QTreeWidgetItem *qtwi_parent, ElementDefinition *element, const QString &elmt_name, const QIcon &icon) {
|
||||
@@ -197,7 +197,8 @@ bool ElementsCategoriesList::selectLocation(const ElementsLocation &location) {
|
||||
@param current QTreeWidgetItem selectionne
|
||||
@param previous QTreeWidgetItem precedemment selectionne
|
||||
*/
|
||||
void ElementsCategoriesList::selectionChanged(QTreeWidgetItem *current, QTreeWidgetItem */*previous*/) {
|
||||
void ElementsCategoriesList::selectionChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) {
|
||||
Q_UNUSED(previous);
|
||||
ElementsLocation emited_location;
|
||||
if (current) {
|
||||
emited_location = locations_[current];
|
||||
|
||||
@@ -460,7 +460,7 @@ ElementsCollectionItem *ElementsCategory::move(ElementsCategory *target_category
|
||||
/**
|
||||
Methode privee effectuant le deplacement de cette categorie a partir d'une
|
||||
description du mouvement
|
||||
@param mvt_dsc Description du mouvement
|
||||
@param mvt_desc Description du mouvement
|
||||
*/
|
||||
void ElementsCategory::move(MoveElementsDescription *mvt_desc) {
|
||||
// quelques pointeurs pour simplifier l'ecriture de la methode
|
||||
|
||||
@@ -149,7 +149,7 @@ class ElementsCollectionItem : public QObject {
|
||||
@param other_item Autre item
|
||||
@return true si other_item est parent (direct ou indirect) de other_item, false sinon
|
||||
*/
|
||||
virtual bool isChildOf(ElementsCollectionItem *) = 0;
|
||||
virtual bool isChildOf(ElementsCollectionItem *other_item) = 0;
|
||||
/**
|
||||
@return le nom de cet item dans l'arborescence
|
||||
*/
|
||||
|
||||
@@ -406,7 +406,8 @@ void ElementsPanel::dropEvent(QDropEvent *e) {
|
||||
Gere le debut des drag'n drop
|
||||
@param supportedActions Les actions supportees
|
||||
*/
|
||||
void ElementsPanel::startDrag(Qt::DropActions) {
|
||||
void ElementsPanel::startDrag(Qt::DropActions supportedActions) {
|
||||
Q_UNUSED(supportedActions);
|
||||
// recupere l'emplacement selectionne
|
||||
ElementsLocation location = selectedLocation();
|
||||
if (location.isNull()) return;
|
||||
@@ -488,7 +489,6 @@ QTreeWidgetItem *ElementsPanel::addProject(QTreeWidgetItem *qtwi_parent, QETProj
|
||||
Methode permettant d'ajouter un schema au panel d'elements.
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere le schema
|
||||
@param diagram Schema a inserer dans le panel d'elements
|
||||
@param diagram_name Nom a utiliser pour le projet
|
||||
@return Le QTreeWidgetItem insere le plus haut
|
||||
*/
|
||||
QTreeWidgetItem *ElementsPanel::addDiagram(QTreeWidgetItem *qtwi_parent, Diagram *diagram) {
|
||||
@@ -546,7 +546,7 @@ QTreeWidgetItem *ElementsPanel::addCollection(QTreeWidgetItem *qtwi_parent, Elem
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere la categorie
|
||||
@param category Categorie d'elements a inserer - si category vaut 0, cette
|
||||
methode retourne 0.
|
||||
@param name Parametre facultatif permettant de forcer le nom affiche
|
||||
@param cat_name Parametre facultatif permettant de forcer le nom affiche
|
||||
S'il n'est pas precise, la methode utilise le nom declare par la categorie.
|
||||
@param icon Icone a utiliser pour l'affichage de la categorie
|
||||
Si elle n'est pas precisee, une icone par defaut est utilisee
|
||||
@@ -585,8 +585,8 @@ QTreeWidgetItem *ElementsPanel::addCategory(QTreeWidgetItem *qtwi_parent, Elemen
|
||||
Methode privee permettant d'ajouter un element au panel d'elements
|
||||
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element
|
||||
@param element Element a inserer
|
||||
@param name Parametre facultatif permettant de forcer le nom affiche
|
||||
S'il n'est pas precise, la methode utilise le nom declare par la categorie.
|
||||
@param elmt_name Parametre facultatif permettant de forcer le nom affiche
|
||||
S'il n'est pas precise, la methode utilise le nom declare par l'element.
|
||||
Une icone sera generee a partir de l'element.
|
||||
@return Le QTreeWidgetItem insere
|
||||
*/
|
||||
@@ -943,8 +943,8 @@ QString ElementsPanel::diagramTitleToDisplay(Diagram *diagram) const {
|
||||
}
|
||||
|
||||
/**
|
||||
@param une liste de QTreeWidgetItem pour lesquels il faut s'assurer que eux
|
||||
et leurs parents sont visibles
|
||||
@param items une liste de QTreeWidgetItem pour lesquels il faut s'assurer
|
||||
que eux et leurs parents sont visibles
|
||||
*/
|
||||
void ElementsPanel::ensureHierarchyIsVisible(QList<QTreeWidgetItem *> items) {
|
||||
// remonte l'arborescence pour lister les categories contenant les elements filtres
|
||||
|
||||
@@ -54,6 +54,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
delete_category = new QAction(QET::Icons::FolderDelete, tr("Supprimer la cat\351gorie"), this);
|
||||
delete_collection = new QAction(QET::Icons::FolderDelete, tr("Vider la collection"), this);
|
||||
new_element = new QAction(QET::Icons::ElementNew, tr("Nouvel \351l\351ment"), this);
|
||||
import_element = new QAction(QET::Icons::DocumentImport, tr("Importer un \351l\351ment"), this);
|
||||
edit_element = new QAction(QET::Icons::ElementEdit, tr("\311diter l'\351l\351ment"), this);
|
||||
delete_element = new QAction(QET::Icons::ElementDelete, tr("Supprimer l'\351l\351ment"), this);
|
||||
prj_close = new QAction(QET::Icons::DocumentClose, tr("Fermer ce projet"), this);
|
||||
@@ -89,6 +90,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
connect(delete_category, SIGNAL(triggered()), this, SLOT(deleteCategory()));
|
||||
connect(delete_collection, SIGNAL(triggered()), this, SLOT(deleteCategory()));
|
||||
connect(new_element, SIGNAL(triggered()), this, SLOT(newElement()));
|
||||
connect(import_element, SIGNAL(triggered()), this, SLOT(importElement()));
|
||||
connect(edit_element, SIGNAL(triggered()), this, SLOT(editElement()));
|
||||
connect(delete_element, SIGNAL(triggered()), this, SLOT(deleteElement()));
|
||||
connect(prj_close, SIGNAL(triggered()), this, SLOT(closeProject()));
|
||||
@@ -123,6 +125,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
toolbar -> addAction(delete_category);
|
||||
toolbar -> addSeparator();
|
||||
toolbar -> addAction(new_element);
|
||||
toolbar -> addAction(import_element);
|
||||
toolbar -> addAction(edit_element);
|
||||
toolbar -> addAction(delete_element);
|
||||
|
||||
@@ -222,6 +225,20 @@ void ElementsPanelWidget::newElement() {
|
||||
new_element_wizard.exec();
|
||||
}
|
||||
|
||||
/**
|
||||
Import d'element en passant par l'editeur
|
||||
*/
|
||||
void ElementsPanelWidget::importElement() {
|
||||
QString fileName = QETElementEditor::getOpenElementFileName(this);
|
||||
|
||||
// Ouverture de l'element dans l'editeur pour pouvoir ensuite l'enregistrer dans la categorie voulue
|
||||
if (!fileName.isEmpty()) {
|
||||
QETElementEditor *editor = new QETElementEditor();
|
||||
editor -> fromFile(fileName);
|
||||
editor -> show();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Si une categorie accessible en ecriture est selectionnee, cette methode
|
||||
affiche directement un formulaire de creation de categorie en utilisant la
|
||||
@@ -488,7 +505,7 @@ void ElementsPanelWidget::launchElementEditor(const ElementsLocation &location)
|
||||
|
||||
/**
|
||||
Lance l'editeur de categorie pour la categorie path
|
||||
@param path Emplacement de la categorie a editer
|
||||
@param location Emplacement de la categorie a editer
|
||||
*/
|
||||
void ElementsPanelWidget::launchCategoryEditor(const ElementsLocation &location) {
|
||||
ElementsCategoryEditor ece(location, true);
|
||||
|
||||
@@ -41,7 +41,7 @@ class ElementsPanelWidget : public QWidget {
|
||||
QAction *reload;
|
||||
QAction *new_category, *edit_category, *delete_category;
|
||||
QAction *delete_collection;
|
||||
QAction *new_element, *edit_element, *delete_element;
|
||||
QAction *new_element, *import_element, *edit_element, *delete_element;
|
||||
QAction *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram;
|
||||
QAction *copy_elements_, *move_elements_, *cancel_elements_;
|
||||
QMenu *context_menu;
|
||||
@@ -70,6 +70,7 @@ class ElementsPanelWidget : public QWidget {
|
||||
void deleteDiagram();
|
||||
void newCategory();
|
||||
void newElement();
|
||||
void importElement();
|
||||
void editCategory();
|
||||
void editElement();
|
||||
void deleteCategory();
|
||||
|
||||
@@ -309,34 +309,14 @@ QImage ExportDialog::generateImage(Diagram *diagram, int width, int height, bool
|
||||
definis par le formulaire, false pour restaurer les parametres
|
||||
*/
|
||||
void ExportDialog::saveReloadDiagramParameters(Diagram *diagram, bool save) {
|
||||
static bool state_drawBorder;
|
||||
static bool state_drawInset;
|
||||
static bool state_drawGrid;
|
||||
static bool state_drawTerm;
|
||||
static bool state_useBorder;
|
||||
static ExportProperties state_exportProperties;
|
||||
|
||||
if (save) {
|
||||
// memorise les parametres relatifs au schema
|
||||
state_drawBorder = diagram -> border_and_inset.borderIsDisplayed();
|
||||
state_drawInset = diagram -> border_and_inset.insetIsDisplayed();
|
||||
state_drawGrid = diagram -> displayGrid();
|
||||
state_drawTerm = diagram -> drawTerminals();
|
||||
state_useBorder = diagram -> useBorder();
|
||||
|
||||
ExportProperties export_properties = epw -> exportProperties();
|
||||
|
||||
diagram -> setUseBorder (export_properties.exported_area == QET::BorderArea);
|
||||
diagram -> setDrawTerminals (export_properties.draw_terminals);
|
||||
diagram -> setDisplayGrid (export_properties.draw_grid);
|
||||
diagram -> border_and_inset.displayBorder(export_properties.draw_border);
|
||||
diagram -> border_and_inset.displayInset (export_properties.draw_inset);
|
||||
// memorise les parametres relatifs au schema tout en appliquant les nouveaux
|
||||
state_exportProperties = diagram -> applyProperties(epw -> exportProperties());
|
||||
} else {
|
||||
// restaure les parametres relatifs au schema
|
||||
diagram -> border_and_inset.displayBorder(state_drawBorder);
|
||||
diagram -> border_and_inset.displayInset(state_drawInset);
|
||||
diagram -> setDisplayGrid(state_drawGrid);
|
||||
diagram -> setDrawTerminals(state_drawTerm);
|
||||
diagram -> setUseBorder(state_useBorder);
|
||||
diagram -> applyProperties(state_exportProperties);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ ExportProperties::ExportProperties() :
|
||||
draw_border(true),
|
||||
draw_inset(true),
|
||||
draw_terminals(false),
|
||||
draw_colored_conductors(true),
|
||||
exported_area(QET::BorderArea)
|
||||
{
|
||||
}
|
||||
@@ -49,13 +50,14 @@ ExportProperties::~ExportProperties() {
|
||||
@param prefix prefixe a ajouter devant les noms des parametres
|
||||
*/
|
||||
void ExportProperties::toSettings(QSettings &settings, const QString &prefix) const {
|
||||
settings.setValue(prefix + "path", QDir::toNativeSeparators(destination_directory.absolutePath()));
|
||||
settings.setValue(prefix + "format", format);
|
||||
settings.setValue(prefix + "drawgrid", draw_grid);
|
||||
settings.setValue(prefix + "drawborder", draw_border);
|
||||
settings.setValue(prefix + "drawinset", draw_inset);
|
||||
settings.setValue(prefix + "drawterminals", draw_terminals);
|
||||
settings.setValue(prefix + "area", QET::diagramAreaToString(exported_area));
|
||||
settings.setValue(prefix + "path", QDir::toNativeSeparators(destination_directory.absolutePath()));
|
||||
settings.setValue(prefix + "format", format);
|
||||
settings.setValue(prefix + "drawgrid", draw_grid);
|
||||
settings.setValue(prefix + "drawborder", draw_border);
|
||||
settings.setValue(prefix + "drawinset", draw_inset);
|
||||
settings.setValue(prefix + "drawterminals", draw_terminals);
|
||||
settings.setValue(prefix + "drawcoloredconductors", draw_colored_conductors);
|
||||
settings.setValue(prefix + "area", QET::diagramAreaToString(exported_area));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,10 +72,11 @@ void ExportProperties::fromSettings(QSettings &settings, const QString &prefix)
|
||||
|
||||
format = settings.value(prefix + "format").toString();
|
||||
|
||||
draw_grid = settings.value(prefix + "drawgrid", false).toBool();
|
||||
draw_border = settings.value(prefix + "drawborder", true ).toBool();
|
||||
draw_inset = settings.value(prefix + "drawinset", true ).toBool();
|
||||
draw_terminals = settings.value(prefix + "drawterminals", false).toBool();
|
||||
draw_grid = settings.value(prefix + "drawgrid", false).toBool();
|
||||
draw_border = settings.value(prefix + "drawborder", true ).toBool();
|
||||
draw_inset = settings.value(prefix + "drawinset", true ).toBool();
|
||||
draw_terminals = settings.value(prefix + "drawterminals", false).toBool();
|
||||
draw_colored_conductors = settings.value(prefix + "drawcoloredconductors", true ).toBool();
|
||||
|
||||
exported_area = QET::diagramAreaFromString(settings.value(prefix + "area", "border").toString());
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ class ExportProperties {
|
||||
bool draw_border; ///< Faut-il dessiner le cadre ?
|
||||
bool draw_inset; ///< Faut-il dessiner le cartouche ?
|
||||
bool draw_terminals; ///< Faut-il dessiner les bornes ?
|
||||
bool draw_colored_conductors; ///< Faut-il respecter les couleurs des conducteurs ?
|
||||
QET::DiagramArea exported_area; ///< Zone du schema a exporter
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -46,13 +46,14 @@ ExportPropertiesWidget::~ExportPropertiesWidget() {
|
||||
ExportProperties ExportPropertiesWidget::exportProperties() const {
|
||||
ExportProperties export_properties;
|
||||
|
||||
export_properties.destination_directory = QDir(dirpath -> text());
|
||||
export_properties.format = format -> itemData(format -> currentIndex()).toString();
|
||||
export_properties.draw_grid = draw_grid -> isChecked();
|
||||
export_properties.draw_border = draw_border -> isChecked();
|
||||
export_properties.draw_inset = draw_inset -> isChecked();
|
||||
export_properties.draw_terminals = draw_terminals -> isChecked();
|
||||
export_properties.exported_area = export_border -> isChecked() ? QET::BorderArea : QET::ElementsArea;
|
||||
export_properties.destination_directory = QDir(dirpath -> text());
|
||||
export_properties.format = format -> itemData(format -> currentIndex()).toString();
|
||||
export_properties.draw_grid = draw_grid -> isChecked();
|
||||
export_properties.draw_border = draw_border -> isChecked();
|
||||
export_properties.draw_inset = draw_inset -> isChecked();
|
||||
export_properties.draw_terminals = draw_terminals -> isChecked();
|
||||
export_properties.draw_colored_conductors = draw_colored_conductors -> isChecked();
|
||||
export_properties.exported_area = export_border -> isChecked() ? QET::BorderArea : QET::ElementsArea;
|
||||
|
||||
return(export_properties);
|
||||
}
|
||||
@@ -67,10 +68,11 @@ void ExportPropertiesWidget::setExportProperties(const ExportProperties &export_
|
||||
if (index == -1) index = 0;
|
||||
format -> setCurrentIndex(index);
|
||||
|
||||
draw_grid -> setChecked(export_properties.draw_grid);
|
||||
draw_border -> setChecked(export_properties.draw_border);
|
||||
draw_inset -> setChecked(export_properties.draw_inset);
|
||||
draw_terminals -> setChecked(export_properties.draw_terminals);
|
||||
draw_grid -> setChecked(export_properties.draw_grid);
|
||||
draw_border -> setChecked(export_properties.draw_border);
|
||||
draw_inset -> setChecked(export_properties.draw_inset);
|
||||
draw_terminals -> setChecked(export_properties.draw_terminals);
|
||||
draw_colored_conductors -> setChecked(export_properties.draw_colored_conductors);
|
||||
|
||||
if (export_properties.exported_area == QET::BorderArea) {
|
||||
export_border -> setChecked(true);
|
||||
@@ -79,6 +81,22 @@ void ExportPropertiesWidget::setExportProperties(const ExportProperties &export_
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Passe le widget en mode Impression ou en mode Export. Le mode Impression
|
||||
n'affiche pas autant d'options que le mode Export.
|
||||
@param mode true pour utiliser le widget en mode impression, false pour
|
||||
l'utiliser en mode export
|
||||
*/
|
||||
void ExportPropertiesWidget::setPrintingMode(bool mode) {
|
||||
dirpath_label -> setVisible(!mode);
|
||||
dirpath -> setVisible(!mode);
|
||||
button_browse -> setVisible(!mode);
|
||||
format_label -> setVisible(!mode);
|
||||
format -> setVisible(!mode);
|
||||
export_border -> setVisible(!mode);
|
||||
export_elements -> setVisible(!mode);
|
||||
}
|
||||
|
||||
/**
|
||||
Slot demandant a l'utilisateur de choisir un dossier
|
||||
*/
|
||||
@@ -99,10 +117,11 @@ void ExportPropertiesWidget::slot_chooseADirectory() {
|
||||
void ExportPropertiesWidget::build() {
|
||||
// le dialogue est un empilement vertical d'elements
|
||||
QVBoxLayout *vboxLayout = new QVBoxLayout();
|
||||
vboxLayout -> setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
/* le dialogue comprend une ligne permettant d'indiquer un chemin de dossier (hboxLayout) */
|
||||
QHBoxLayout *hboxLayout = new QHBoxLayout();
|
||||
QLabel *dirpath_label = new QLabel(tr("Dossier cible :"), this);
|
||||
dirpath_label = new QLabel(tr("Dossier cible :"), this);
|
||||
dirpath = new QLineEdit(this);
|
||||
QCompleter *completer = new QCompleter(this);
|
||||
completer -> setModel(new QDirModel(completer));
|
||||
@@ -117,7 +136,8 @@ void ExportPropertiesWidget::build() {
|
||||
|
||||
/* une ligne permettant de choisir le format (hboxLayout1) */
|
||||
QHBoxLayout *hboxLayout1 = new QHBoxLayout();
|
||||
hboxLayout1 -> addWidget(new QLabel(tr("Format :"), this));
|
||||
format_label = new QLabel(tr("Format :"), this);
|
||||
hboxLayout1 -> addWidget(format_label);
|
||||
hboxLayout1 -> addWidget(format = new QComboBox(this));
|
||||
format -> addItem(tr("PNG (*.png)"), "PNG");
|
||||
format -> addItem(tr("JPEG (*.jpg)"), "JPG");
|
||||
@@ -126,10 +146,9 @@ void ExportPropertiesWidget::build() {
|
||||
hboxLayout1 -> addStretch();
|
||||
|
||||
vboxLayout -> addLayout(hboxLayout1);
|
||||
|
||||
|
||||
/* un cadre permettant de specifier les options de l'image finale */
|
||||
QGroupBox *groupbox_options = new QGroupBox(tr("Options"));
|
||||
QGroupBox *groupbox_options = new QGroupBox(tr("Options de rendu", "groupbox title"));
|
||||
QGridLayout *optionshlayout = new QGridLayout(groupbox_options);
|
||||
|
||||
// Choix de la zone du schema a exporter
|
||||
@@ -156,9 +175,12 @@ void ExportPropertiesWidget::build() {
|
||||
// dessiner les bornes
|
||||
draw_terminals = new QCheckBox(tr("Dessiner les bornes"), groupbox_options);
|
||||
optionshlayout -> addWidget(draw_terminals, 2, 1);
|
||||
|
||||
|
||||
// conserver les couleurs des conducteurs
|
||||
draw_colored_conductors = new QCheckBox(tr("Conserver les couleurs des conducteurs"), groupbox_options);
|
||||
optionshlayout -> addWidget(draw_colored_conductors, 3, 0);
|
||||
|
||||
vboxLayout -> addWidget(groupbox_options);
|
||||
vboxLayout -> addStretch();
|
||||
|
||||
setLayout(vboxLayout);
|
||||
|
||||
@@ -170,11 +192,17 @@ void ExportPropertiesWidget::build() {
|
||||
setTabOrder(draw_border, draw_grid);
|
||||
setTabOrder(draw_grid, draw_inset);
|
||||
setTabOrder(draw_inset, draw_terminals);
|
||||
|
||||
setTabOrder(draw_terminals, draw_colored_conductors);
|
||||
|
||||
// connexion du bouton permettant le choix du repertoire
|
||||
connect(button_browse, SIGNAL(released()), this, SLOT(slot_chooseADirectory()));
|
||||
|
||||
// emission de signaux lors du changement de format et lors du changement de zone exportee
|
||||
connect(format, SIGNAL(currentIndexChanged(int)), this, SIGNAL(formatChanged()));
|
||||
connect(exported_content_choices, SIGNAL(buttonClicked(QAbstractButton *)), this, SIGNAL(exportedAreaChanged()));
|
||||
connect(draw_grid, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
|
||||
connect(draw_border, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
|
||||
connect(draw_inset, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
|
||||
connect(draw_terminals, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
|
||||
connect(draw_colored_conductors, SIGNAL(stateChanged(int)), this, SIGNAL(optionChanged()));
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ class ExportPropertiesWidget : public QWidget {
|
||||
public:
|
||||
void setExportProperties(const ExportProperties &);
|
||||
ExportProperties exportProperties() const;
|
||||
void setPrintingMode(bool);
|
||||
|
||||
public slots:
|
||||
void slot_chooseADirectory();
|
||||
@@ -45,6 +46,7 @@ class ExportPropertiesWidget : public QWidget {
|
||||
signals:
|
||||
void formatChanged();
|
||||
void exportedAreaChanged();
|
||||
void optionChanged();
|
||||
|
||||
// methodes privees
|
||||
private:
|
||||
@@ -52,13 +54,16 @@ class ExportPropertiesWidget : public QWidget {
|
||||
|
||||
// attributs
|
||||
private:
|
||||
QLabel *dirpath_label;
|
||||
QLineEdit *dirpath;
|
||||
QPushButton *button_browse;
|
||||
QLabel *format_label;
|
||||
QComboBox *format;
|
||||
QCheckBox *draw_grid;
|
||||
QCheckBox *draw_border;
|
||||
QCheckBox *draw_inset;
|
||||
QCheckBox *draw_terminals;
|
||||
QCheckBox *draw_colored_conductors;
|
||||
QRadioButton *export_border;
|
||||
QRadioButton *export_elements;
|
||||
QButtonGroup *exported_content_choices;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
/**
|
||||
Constructeur
|
||||
@param uri Chemin du fichier contenant la definition de l'element
|
||||
@param category Categorie parente
|
||||
@param collection collection parente
|
||||
*/
|
||||
FileElementDefinition::FileElementDefinition(const QString &uri, FileElementsCategory *category, FileElementsCollection *collection) :
|
||||
|
||||
@@ -198,7 +198,7 @@ QList<ElementDefinition *> FileElementsCategory::elements() {
|
||||
|
||||
/**
|
||||
@return l'element correspondant au chemin virtuel elmt_path, ou 0 en cas d'echec
|
||||
@param cat_path Chemin virtuel de l'element voulu
|
||||
@param elmt_path Chemin virtuel de l'element voulu
|
||||
*/
|
||||
ElementDefinition *FileElementsCategory::element(const QString &elmt_path) {
|
||||
// recupere les differentes parties du chemin
|
||||
|
||||
@@ -94,7 +94,8 @@ QString IntegrationMoveElementsHandler::newNameForElement(const ElementDefinitio
|
||||
@param dst Element cible
|
||||
@return la reponse de l'utilisateur
|
||||
*/
|
||||
QET::Action IntegrationMoveElementsHandler::askUser(ElementDefinition */*src*/, ElementDefinition *dst) {
|
||||
QET::Action IntegrationMoveElementsHandler::askUser(ElementDefinition *src, ElementDefinition *dst) {
|
||||
Q_UNUSED(src);
|
||||
initDialog();
|
||||
int result = integ_dialog_ -> exec();
|
||||
if (result == QDialog::Accepted) {
|
||||
|
||||
@@ -125,7 +125,7 @@ DiagramView *ProjectView::currentDiagram() const {
|
||||
|
||||
/**
|
||||
Gere la fermeture du schema.
|
||||
@param event Le QCloseEvent decrivant l'evenement
|
||||
@param qce Le QCloseEvent decrivant l'evenement
|
||||
*/
|
||||
void ProjectView::closeEvent(QCloseEvent *qce) {
|
||||
// si la vue n'est pas liee a un projet, on ferme directement
|
||||
@@ -361,7 +361,7 @@ void ProjectView::removeDiagram(DiagramView *diagram_view) {
|
||||
|
||||
/**
|
||||
Enleve un schema du ProjectView
|
||||
@param diagram_view Schema a enlever
|
||||
@param diagram Schema a enlever
|
||||
*/
|
||||
void ProjectView::removeDiagram(Diagram *diagram) {
|
||||
if (!diagram) return;
|
||||
|
||||
@@ -30,8 +30,12 @@
|
||||
#define QUOTE(x) STRINGIFY(x)
|
||||
#define STRINGIFY(x) #x
|
||||
|
||||
#ifdef QET_ALLOW_OVERRIDE_CED_OPTION
|
||||
QString QETApp::common_elements_dir = QString();
|
||||
#endif
|
||||
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION
|
||||
QString QETApp::config_dir = QString();
|
||||
#endif
|
||||
QString QETApp::lang_dir = QString();
|
||||
FileElementsCollection *QETApp::common_collection = 0;
|
||||
FileElementsCollection *QETApp::custom_collection = 0;
|
||||
@@ -684,7 +688,7 @@ void QETApp::openFiles(const QETArguments &args) {
|
||||
Sinon, le premier editeur de schemas existant venu devient visible et est
|
||||
utilise. S'il n'y a aucun editeur de schemas ouvert, un nouveau est cree et
|
||||
utilise.
|
||||
@param files Fichiers a ouvrir
|
||||
@param files_list Fichiers a ouvrir
|
||||
*/
|
||||
void QETApp::openProjectFiles(const QStringList &files_list) {
|
||||
if (files_list.isEmpty()) return;
|
||||
@@ -721,7 +725,7 @@ void QETApp::openProjectFiles(const QStringList &files_list) {
|
||||
/**
|
||||
Ouvre les fichiers elements passes en parametre. Si un element est deja
|
||||
ouvert, la fentre qui l'edite est activee.
|
||||
@param files Fichiers a ouvrir
|
||||
@param files_list Fichiers a ouvrir
|
||||
*/
|
||||
void QETApp::openElementFiles(const QStringList &files_list) {
|
||||
if (files_list.isEmpty()) return;
|
||||
@@ -920,7 +924,9 @@ void QETApp::initConfiguration() {
|
||||
// fichiers recents
|
||||
// note : les icones doivent etre initialisees avant ces instructions (qui creent des menus en interne)
|
||||
projects_recent_files_ = new RecentFiles("projects");
|
||||
projects_recent_files_ -> setIconForFiles(QET::Icons::ProjectFile);
|
||||
elements_recent_files_ = new RecentFiles("elements");
|
||||
elements_recent_files_ -> setIconForFiles(QET::Icons::Element);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -156,14 +156,18 @@ void QETArguments::clear() {
|
||||
element_files_.clear();
|
||||
options_.clear();
|
||||
unknown_options_.clear();
|
||||
#ifdef QET_ALLOW_OVERRIDE_CED_OPTION
|
||||
common_elements_dir_.clear();
|
||||
#endif
|
||||
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION
|
||||
config_dir_.clear();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
Analyse des arguments et les retient dans cet objet.
|
||||
Si cet objet contenait deja des arguments, ceux-ci sont oublies.
|
||||
@param args Arguments a analyser
|
||||
@param arguments Arguments a analyser
|
||||
*/
|
||||
void QETArguments::parseArguments(const QList<QString> &arguments) {
|
||||
// oublie les eventuels arguments precedents
|
||||
|
||||
@@ -1654,7 +1654,8 @@ void QETDiagramEditor::diagramIsAboutToBeRemoved(DiagramView *dv) {
|
||||
Gere le retrait d'un schema dans un projet apres que le retrait soit effectif
|
||||
@param dv DiagramView concerne
|
||||
*/
|
||||
void QETDiagramEditor::diagramWasRemoved(DiagramView *) {
|
||||
void QETDiagramEditor::diagramWasRemoved(DiagramView *dv) {
|
||||
Q_UNUSED(dv);
|
||||
can_update_actions = true;
|
||||
}
|
||||
|
||||
@@ -1777,3 +1778,17 @@ ExportProperties QETDiagramEditor::defaultExportProperties() {
|
||||
|
||||
return(def);
|
||||
}
|
||||
|
||||
/**
|
||||
@return Les parametres d'impression par defaut pour un schema
|
||||
*/
|
||||
ExportProperties QETDiagramEditor::defaultPrintProperties() {
|
||||
// accede a la configuration de l'application
|
||||
QSettings &settings = QETApp::settings();
|
||||
|
||||
ExportProperties def;
|
||||
// lit les caracteristiques des conducteurs par defaut dans la configuration
|
||||
def.fromSettings(settings, "print/default");
|
||||
|
||||
return(def);
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ class QETDiagramEditor : public QMainWindow {
|
||||
static BorderProperties defaultBorderProperties();
|
||||
static ConductorProperties defaultConductorProperties();
|
||||
static ExportProperties defaultExportProperties();
|
||||
static ExportProperties defaultPrintProperties();
|
||||
|
||||
protected:
|
||||
void actions();
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
#include "qeticons.h"
|
||||
|
||||
// on redeclare ici les icones
|
||||
// on redeclare ici les icones
|
||||
namespace QET {
|
||||
namespace Icons {
|
||||
QIcon AddColumn;
|
||||
@@ -63,6 +63,7 @@ namespace QET {
|
||||
QIcon EditRedo;
|
||||
QIcon EditSelectAll;
|
||||
QIcon EditUndo;
|
||||
QIcon Element;
|
||||
QIcon ElementDelete;
|
||||
QIcon ElementEdit;
|
||||
QIcon ElementNew;
|
||||
@@ -110,6 +111,7 @@ namespace QET {
|
||||
QIcon PrintPortrait;
|
||||
QIcon PrintTwoPages;
|
||||
QIcon Project;
|
||||
QIcon ProjectFile;
|
||||
QIcon QETIcon;
|
||||
QIcon QETLogo;
|
||||
QIcon QETOxygenLogo;
|
||||
@@ -130,6 +132,7 @@ namespace QET {
|
||||
QIcon ViewRefresh;
|
||||
QIcon West;
|
||||
QIcon WindowNew;
|
||||
QIcon XmlTextFile;
|
||||
QIcon ZoomFitBest;
|
||||
QIcon ZoomIn;
|
||||
QIcon ZoomOriginal;
|
||||
@@ -214,6 +217,9 @@ void QET::Icons::initIcons() {
|
||||
EditSelectAll .addFile(":/ico/22x22/edit-select-all.png");
|
||||
EditUndo .addFile(":/ico/16x16/edit-undo.png");
|
||||
EditUndo .addFile(":/ico/22x22/edit-undo.png");
|
||||
Element .addFile(":/ico/oxygen-icons/16x16/mimetypes/application-x-qet-element.png");
|
||||
Element .addFile(":/ico/oxygen-icons/22x22/mimetypes/application-x-qet-element.png");
|
||||
Element .addFile(":/ico/oxygen-icons/32x32/mimetypes/application-x-qet-element.png");
|
||||
ElementDelete .addFile(":/ico/22x22/element-delete.png");
|
||||
ElementEdit .addFile(":/ico/22x22/element-edit.png");
|
||||
ElementNew .addFile(":/ico/22x22/element-new.png");
|
||||
@@ -262,10 +268,14 @@ void QET::Icons::initIcons() {
|
||||
Phase .addFile(":/ico/16x16/phase.png");
|
||||
PrintAllPages .addFile(":/ico/22x22/all_pages.png");
|
||||
Printer .addFile(":/ico/32x32/printer.png");
|
||||
Printer .addFile(":/ico/128x128/printer.png");
|
||||
PrintLandscape .addFile(":/ico/22x22/landscape.png");
|
||||
PrintPortrait .addFile(":/ico/22x22/portrait.png");
|
||||
PrintTwoPages .addFile(":/ico/22x22/two_pages.png");
|
||||
Project .addFile(":/ico/16x16/project.png");
|
||||
ProjectFile .addFile(":/ico/oxygen-icons/16x16/mimetypes/application-x-qet-project.png");
|
||||
ProjectFile .addFile(":/ico/oxygen-icons/22x22/mimetypes/application-x-qet-project.png");
|
||||
ProjectFile .addFile(":/ico/oxygen-icons/32x32/mimetypes/application-x-qet-project.png");
|
||||
QETIcon .addFile(":/ico/256x256/qelectrotech.png");
|
||||
QETLogo .addFile(":/ico/16x16/qet.png");
|
||||
QETLogo .addFile(":/ico/256x256/qet.png");
|
||||
@@ -295,6 +305,9 @@ void QET::Icons::initIcons() {
|
||||
West .addFile(":/ico/16x16/west.png");
|
||||
WindowNew .addFile(":/ico/16x16/window-new.png");
|
||||
WindowNew .addFile(":/ico/22x22/window-new.png");
|
||||
XmlTextFile .addFile(":/ico/16x16/text-xml.png");
|
||||
XmlTextFile .addFile(":/ico/22x22/text-xml.png");
|
||||
XmlTextFile .addFile(":/ico/32x32/text-xml.png");
|
||||
ZoomFitBest .addFile(":/ico/16x16/zoom-fit-best.png");
|
||||
ZoomFitBest .addFile(":/ico/22x22/zoom-fit-best.png");
|
||||
ZoomIn .addFile(":/ico/16x16/zoom-in.png");
|
||||
|
||||
@@ -71,6 +71,7 @@ namespace QET {
|
||||
extern QIcon EditRedo;
|
||||
extern QIcon EditSelectAll;
|
||||
extern QIcon EditUndo;
|
||||
extern QIcon Element;
|
||||
extern QIcon ElementDelete;
|
||||
extern QIcon ElementEdit;
|
||||
extern QIcon ElementNew;
|
||||
@@ -120,6 +121,7 @@ namespace QET {
|
||||
extern QIcon PrintPortrait;
|
||||
extern QIcon PrintTwoPages;
|
||||
extern QIcon Project;
|
||||
extern QIcon ProjectFile;
|
||||
extern QIcon QETIcon;
|
||||
extern QIcon QETLogo;
|
||||
extern QIcon QETOxygenLogo;
|
||||
@@ -140,6 +142,7 @@ namespace QET {
|
||||
extern QIcon ViewRefresh;
|
||||
extern QIcon West;
|
||||
extern QIcon WindowNew;
|
||||
extern QIcon XmlTextFile;
|
||||
extern QIcon ZoomFitBest;
|
||||
extern QIcon ZoomIn;
|
||||
extern QIcon ZoomOriginal;
|
||||
|
||||
@@ -17,12 +17,17 @@
|
||||
*/
|
||||
#include "qetprintpreviewdialog.h"
|
||||
#include "diagramschooser.h"
|
||||
#include "exportproperties.h"
|
||||
#include "exportpropertieswidget.h"
|
||||
#include "qetdiagrameditor.h"
|
||||
#include "qeticons.h"
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param project Projet a imprimer
|
||||
@param printer Imprimante a utiliser pour
|
||||
@param widget Widget parent
|
||||
@param f Flags passes au constructeur de QDialog puis QWidget
|
||||
*/
|
||||
QETPrintPreviewDialog::QETPrintPreviewDialog(QETProject *project, QPrinter *printer, QWidget *widget, Qt::WindowFlags f) :
|
||||
QDialog(widget, f),
|
||||
@@ -59,6 +64,13 @@ bool QETPrintPreviewDialog::fitDiagramsToPages() const {
|
||||
return(fit_diagram_to_page_ -> isChecked());
|
||||
}
|
||||
|
||||
/**
|
||||
@return les options de rendu definies par l'utilisateur
|
||||
*/
|
||||
ExportProperties QETPrintPreviewDialog::exportProperties() const {
|
||||
return(render_properties_ -> exportProperties());
|
||||
}
|
||||
|
||||
/**
|
||||
Passe a la premiere page
|
||||
*/
|
||||
@@ -114,7 +126,8 @@ void QETPrintPreviewDialog::useFullPage(bool full_page) {
|
||||
Fait tenir ou non chaque schema sur une page
|
||||
@param fit_diagram true pour adapter chaque schema sur une page, false sinon
|
||||
*/
|
||||
void QETPrintPreviewDialog::fitDiagramToPage(bool /*fit_diagram*/) {
|
||||
void QETPrintPreviewDialog::fitDiagramToPage(bool fit_diagram) {
|
||||
Q_UNUSED(fit_diagram);
|
||||
preview_ -> updatePreview();
|
||||
updateZoomList();
|
||||
}
|
||||
@@ -222,6 +235,12 @@ void QETPrintPreviewDialog::build() {
|
||||
fit_diagram_to_page_label_ -> setContentsMargins(20, 0, 0, 0);
|
||||
fit_diagram_to_page_ -> setChecked(true);
|
||||
|
||||
// recupere les parametres d'export definis dans la configuration de l'application
|
||||
ExportProperties default_print_properties = QETDiagramEditor::defaultPrintProperties();
|
||||
|
||||
render_properties_ = new ExportPropertiesWidget(default_print_properties);
|
||||
render_properties_ -> setPrintingMode(true);
|
||||
|
||||
buttons_ = new QDialogButtonBox();
|
||||
buttons_ -> addButton(new QPushButton(QET::Icons::DocumentPrint, tr("Imprimer")), QDialogButtonBox::AcceptRole);
|
||||
buttons_ -> addButton(QDialogButtonBox::Cancel);
|
||||
@@ -246,6 +265,8 @@ void QETPrintPreviewDialog::build() {
|
||||
connect(use_full_page_, SIGNAL(toggled(bool)), this, SLOT(useFullPage(bool)));
|
||||
connect(fit_diagram_to_page_, SIGNAL(toggled(bool)), this, SLOT(fitDiagramToPage(bool)));
|
||||
|
||||
connect(render_properties_, SIGNAL(optionChanged()), preview_, SLOT(updatePreview()));
|
||||
|
||||
connect(preview_, SIGNAL(previewChanged()), this, SLOT(updateZoomList()));
|
||||
connect(zoom_box_, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePreviewZoom()));
|
||||
|
||||
@@ -271,6 +292,7 @@ void QETPrintPreviewDialog::build() {
|
||||
|
||||
vlayout0_ -> addWidget(toolbar_);
|
||||
vlayout0_ -> addLayout(hlayout0_);
|
||||
vlayout0_ -> addWidget(render_properties_);
|
||||
vlayout0_ -> addWidget(print_options_box_);
|
||||
vlayout0_ -> addWidget(buttons_);
|
||||
|
||||
@@ -289,6 +311,7 @@ void QETPrintPreviewDialog::requestPaint(QPrinter *printer) {
|
||||
paintRequested(
|
||||
diagrams_list_ -> selectedDiagrams(),
|
||||
fit_diagram_to_page_ -> isChecked(),
|
||||
render_properties_ -> exportProperties(),
|
||||
printer
|
||||
)
|
||||
);
|
||||
@@ -328,6 +351,7 @@ void QETPrintPreviewDialog::setDiagramsListVisible(bool display) {
|
||||
*/
|
||||
void QETPrintPreviewDialog::setPrintOptionsVisible(bool display) {
|
||||
print_options_box_ -> setVisible(display);
|
||||
render_properties_ -> setVisible(display);
|
||||
|
||||
if (display) {
|
||||
toggle_print_options_ -> setText(tr("Cacher les options d'impression"));
|
||||
|
||||
@@ -18,13 +18,14 @@
|
||||
#ifndef QET_PRINT_PREVIEW_DIALOG
|
||||
#define QET_PRINT_PREVIEW_DIALOG
|
||||
#include <QtGui>
|
||||
#include "exportproperties.h"
|
||||
class Diagram;
|
||||
class DiagramsChooser;
|
||||
class ExportPropertiesWidget;
|
||||
class QETProject;
|
||||
/**
|
||||
Cette classe represente un dialogue permettant d'affiner les options
|
||||
d'impression d'un schema a l'aide d'un apercu de ce qu'elle donnerait sur
|
||||
papier.
|
||||
d'impression d'un projet a l'aide d'un apercu du resultat sur papier.
|
||||
*/
|
||||
class QETPrintPreviewDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
@@ -40,10 +41,11 @@ class QETPrintPreviewDialog : public QDialog {
|
||||
public:
|
||||
DiagramsChooser *diagramsChooser();
|
||||
bool fitDiagramsToPages() const;
|
||||
ExportProperties exportProperties() const;
|
||||
|
||||
// signaux
|
||||
signals:
|
||||
void paintRequested(const QList<Diagram *> &, bool, QPrinter *);
|
||||
void paintRequested(const QList<Diagram *> &, bool, const ExportProperties, QPrinter *);
|
||||
|
||||
public slots:
|
||||
void firstPage();
|
||||
@@ -91,6 +93,7 @@ class QETPrintPreviewDialog : public QDialog {
|
||||
QLabel *use_full_page_label_;
|
||||
QCheckBox *fit_diagram_to_page_;
|
||||
QLabel *fit_diagram_to_page_label_;
|
||||
ExportPropertiesWidget *render_properties_;
|
||||
|
||||
// methodes
|
||||
private:
|
||||
|
||||
@@ -392,7 +392,7 @@ bool QETProject::isReadOnly() const {
|
||||
}
|
||||
|
||||
/**
|
||||
@param bool read_only true pour passer le projet (schemas et collection)
|
||||
@param read_only true pour passer le projet (schemas et collection)
|
||||
en mode Read Only, false sinon.
|
||||
*/
|
||||
void QETProject::setReadOnly(bool read_only) {
|
||||
@@ -468,7 +468,7 @@ ElementsCategory *QETProject::integrationCategory() const {
|
||||
integrateElement(const QString &, MoveElementsHandler *, QString &)
|
||||
en lui passant un MoveElementsHandler approprie.
|
||||
@param elmt_location Emplacement de l'element a integrer
|
||||
@param error_message Reference vers une chaine de caractere qui contiendra
|
||||
@param error_msg Reference vers une chaine de caractere qui contiendra
|
||||
eventuellement un message d'erreur
|
||||
@return L'emplacement de l'element apres integration, ou une chaine vide si
|
||||
l'integration a echoue.
|
||||
@@ -713,7 +713,7 @@ void QETProject::readProjectXml() {
|
||||
|
||||
setTitle(root_elmt.attribute("title"));
|
||||
} else if (root_elmt.tagName() == "diagram") {
|
||||
/// @todo gerer l'ouverture de fichiers <diagram />
|
||||
/// @todo gerer l'ouverture de fichiers dont la racine est un element \<diagram\>
|
||||
} else {
|
||||
state_ = ProjectParsingFailed;
|
||||
}
|
||||
@@ -893,6 +893,7 @@ NamesList QETProject::namesListForIntegrationCategory() {
|
||||
names.addName("en", "Imported elements");
|
||||
names.addName("es", "Elementos importados");
|
||||
names.addName("ru", QString(russian_data, 24));
|
||||
names.addName("cs", "Zaveden\351 prvky");
|
||||
|
||||
return(names);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@param object QObject parent
|
||||
@param parent QObject parent
|
||||
*/
|
||||
QETRegExpValidator::QETRegExpValidator(QObject *parent) : QRegExpValidator(parent) {
|
||||
}
|
||||
@@ -27,7 +27,7 @@ QETRegExpValidator::QETRegExpValidator(QObject *parent) : QRegExpValidator(paren
|
||||
/**
|
||||
Constructeur
|
||||
@param regexp Expression reguliere a valider
|
||||
@param object QObject parent
|
||||
@param parent QObject parent
|
||||
*/
|
||||
QETRegExpValidator::QETRegExpValidator(const QRegExp ®exp, QObject *parent) : QRegExpValidator(regexp, parent) {
|
||||
}
|
||||
|
||||
@@ -251,8 +251,6 @@ bool QETTabBar::mustMoveTab(int src_tab, int dst_tab, const QPoint &pos) const {
|
||||
Deplace un onglet.
|
||||
@param src_tab Index de l'onglet de depart
|
||||
@param dst_tab Index de l'onglet de destination
|
||||
@param pos Position de la souris dans le cadre du deplacement de l'onglet
|
||||
@return
|
||||
*/
|
||||
void QETTabBar::moveTab(int src_tab, int dst_tab) {
|
||||
// sauvegarde les caracteristiques de l'onglet deplace
|
||||
|
||||
@@ -61,6 +61,24 @@ QMenu *RecentFiles::menu() const {
|
||||
return(menu_);
|
||||
}
|
||||
|
||||
/**
|
||||
@return l'icone affichee a cote de chaque fichier, ou une QIcon nulle si
|
||||
aucune icone n'est utilisee.
|
||||
*/
|
||||
QIcon RecentFiles::iconForFiles() const {
|
||||
return(files_icon_);
|
||||
}
|
||||
|
||||
/**
|
||||
Definit l'icone a afficher a cote de chaque fichier. Si une QIcon nulle
|
||||
est fournie, aucune icone n'est utilisee.
|
||||
@param icon Icone a afficher a cote de chaque fichier
|
||||
*/
|
||||
void RecentFiles::setIconForFiles(const QIcon &icon) {
|
||||
files_icon_ = icon;
|
||||
buildMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
Oublie les fichiers recents
|
||||
*/
|
||||
@@ -151,6 +169,9 @@ void RecentFiles::buildMenu() {
|
||||
foreach (QString filepath, list_) {
|
||||
// creee une nouvelle action pour le fichier
|
||||
QAction *action = new QAction(filepath, 0);
|
||||
if (!files_icon_.isNull()) {
|
||||
action -> setIcon(files_icon_);
|
||||
}
|
||||
menu_ -> addAction(action);
|
||||
|
||||
// lie l'action et le mapper
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#ifndef RECENT_FILES_H
|
||||
#define RECENT_FILES_H
|
||||
#include <QtCore>
|
||||
#include <QIcon>
|
||||
class QMenu;
|
||||
/**
|
||||
Cette classe permet de gerer des fichiers recents.
|
||||
@@ -36,6 +37,8 @@ class RecentFiles : public QObject {
|
||||
public:
|
||||
int size() const;
|
||||
QMenu *menu() const;
|
||||
QIcon iconForFiles() const;
|
||||
void setIconForFiles(const QIcon &);
|
||||
|
||||
public slots:
|
||||
void clear();
|
||||
@@ -61,5 +64,6 @@ class RecentFiles : public QObject {
|
||||
QList<QString> list_;
|
||||
QMenu *menu_;
|
||||
QSignalMapper *mapper_;
|
||||
QIcon files_icon_;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -212,7 +212,7 @@ QList<ElementDefinition *> XmlElementsCategory::elements() {
|
||||
|
||||
/**
|
||||
@return l'element correspondant au chemin virtuel elmt_path, ou 0 en cas d'echec
|
||||
@param cat_path Chemin virtuel de l'element voulu
|
||||
@param elmt_path Chemin virtuel de l'element voulu
|
||||
*/
|
||||
ElementDefinition *XmlElementsCategory::element(const QString &elmt_path) {
|
||||
// recupere les differentes parties du chemin
|
||||
@@ -418,7 +418,7 @@ void XmlElementsCategory::componentWritten() {
|
||||
|
||||
/**
|
||||
Gere le fait qu'une sous-categorie ou un element ait ete supprime
|
||||
@param item Element ou categorie supprime
|
||||
@param path Chemin de l'element ou de la categorie supprime(e)
|
||||
*/
|
||||
void XmlElementsCategory::componentRemoved(const QString &path) {
|
||||
if (elements_.contains(path)) {
|
||||
|
||||
Reference in New Issue
Block a user