conductor properties widget: replace widget made by c++ by widget build by ui file

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3216 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2014-07-17 09:20:21 +00:00
parent 1d52485915
commit b0622570e3
8 changed files with 769 additions and 469 deletions

View File

@@ -0,0 +1,233 @@
/*
Copyright 2006-2014 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "conductorpropertieswidget.h"
#include "ui_conductorpropertieswidget.h"
#include "conductorproperties.h"
#include "qetapp.h"
#include "qtextorientationspinboxwidget.h"
/**
* @brief ConductorPropertiesWidget::ConductorPropertiesWidget
* Constructor
* @param parent, paretn widget
*/
ConductorPropertiesWidget::ConductorPropertiesWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ConductorPropertiesWidget)
{
ui->setupUi(this);
initWidget();
}
/**
* @brief ConductorPropertiesWidget::ConductorPropertiesWidget
* Constructor with properties
* @param properties, properties to edit
* @param parent, parent widget
*/
ConductorPropertiesWidget::ConductorPropertiesWidget(const ConductorProperties &properties, QWidget *parent) :
QWidget(parent),
ui(new Ui::ConductorPropertiesWidget)
{
ui -> setupUi(this);
initWidget();
setProperties(properties);
}
/**
* @brief ConductorPropertiesWidget::~ConductorPropertiesWidget
* destructor
*/
ConductorPropertiesWidget::~ConductorPropertiesWidget()
{
delete ui;
}
/**
* @brief ConductorPropertiesWidget::setProperties
* Set the properties
* @param properties
*/
void ConductorPropertiesWidget::setProperties(const ConductorProperties &properties) {
if (m_properties == properties) return;
m_properties = properties;
setColorButton(m_properties.color);
int index = ui -> m_line_style_cb->findData(m_properties.style);
if (index != -1) ui -> m_line_style_cb -> setCurrentIndex(index);
ui -> m_text_le -> setText (m_properties.text);
ui -> m_text_size_sb -> setValue (m_properties.text_size);
ui -> m_earth_cb -> setChecked (m_properties.singleLineProperties.hasGround);
ui -> m_neutral_cb -> setChecked (m_properties.singleLineProperties.hasNeutral);
ui -> m_pen_cb -> setChecked (m_properties.singleLineProperties.isPen());
ui -> m_phase_cb -> setChecked (m_properties.singleLineProperties.phasesCount());
ui -> m_phase_slider -> setValue (m_properties.singleLineProperties.phasesCount());
m_verti_select -> setValue (m_properties.verti_rotate_text);
m_horiz_select -> setValue (m_properties.horiz_rotate_text);
setConductorType(m_properties.type);
updatePreview(false);
}
/**
* @brief ConductorPropertiesWidget::properties
* @return the edited properties
*/
ConductorProperties ConductorPropertiesWidget::properties() const {
ConductorProperties properties_;
if (ui -> m_simple_rb -> isChecked()) properties_.type = ConductorProperties::Simple;
else if (ui -> m_multi_rb -> isChecked()) properties_.type = ConductorProperties::Multi;
else if (ui -> m_single_rb -> isChecked()) properties_.type = ConductorProperties::Single;
properties_.color = ui->m_color_pb->palette().color(QPalette::Button);
properties_.style = static_cast<Qt::PenStyle>(ui->m_line_style_cb->itemData(ui->m_line_style_cb->currentIndex()).toInt());
properties_.text = ui -> m_text_le -> text();
properties_.text_size = ui -> m_text_size_sb -> value();
properties_.verti_rotate_text = m_verti_select -> value();
properties_.horiz_rotate_text = m_horiz_select -> value();
properties_.singleLineProperties.hasGround = ui -> m_earth_cb -> isChecked();
properties_.singleLineProperties.hasNeutral = ui -> m_neutral_cb -> isChecked();
properties_.singleLineProperties.is_pen = ui -> m_pen_cb -> isChecked();
properties_.singleLineProperties.setPhasesCount(ui -> m_phase_cb -> isChecked() ? ui -> m_phase_sb -> value() : 0);
return properties_;
}
/**
* @brief ConductorPropertiesWidget::setReadOnly
* @param ro if true this widget is disabled
*/
void ConductorPropertiesWidget::setReadOnly(const bool &ro) {
this->setDisabled(ro);
}
/**
* @brief ConductorPropertiesWidget::initWidget
*/
void ConductorPropertiesWidget::initWidget() {
m_verti_select = QETApp::createTextOrientationSpinBoxWidget();
ui -> m_text_angle_gl -> addWidget(m_verti_select, 2, 0, Qt::AlignHCenter);
m_horiz_select = QETApp::createTextOrientationSpinBoxWidget();
ui -> m_text_angle_gl -> addWidget(m_horiz_select, 2, 1, Qt::AlignHCenter);
ui -> m_line_style_cb -> addItem(tr("Trait plein", "conductor style: solid line"), Qt::SolidLine);
ui -> m_line_style_cb -> addItem(tr("Trait en pointill\351s", "conductor style: dashed line"), Qt::DashLine);
ui -> m_line_style_cb -> addItem(tr("Traits et points", "conductor style: dashed and dotted line"), Qt::DashDotLine);
ui -> m_update_preview_pb -> setHidden(true);
//Check this checkbox for init the associated groupbox
ui -> m_single_rb -> setChecked(true);
ui -> m_multi_rb -> setChecked(true);
}
/**
* @brief ConductorPropertiesWidget::setConductorType
* Update this widget to the new conductor type
* @param type
*/
void ConductorPropertiesWidget::setConductorType(ConductorProperties::ConductorType type) {
switch (type) {
case ConductorProperties::Simple:
ui -> m_simple_rb -> setChecked(true);
break;
case ConductorProperties::Multi:
ui -> m_multi_rb -> setChecked(true);
break;
case ConductorProperties::Single:
ui -> m_single_rb -> setChecked(true);
break;
default:
ui -> m_multi_rb -> setChecked(true);
break;
}
}
/**
* @brief ConductorPropertiesWidget::updatePreview
* Update the preview for single lien
* @param b true: update from the value displayed by this widget
* false: update from the properties given at the constructor of this widget
*/
void ConductorPropertiesWidget::updatePreview(bool b) {
const QRect pixmap_rect(0, 0, 96, 96);
QPixmap pixmap(pixmap_rect.width(), pixmap_rect.height());
QPainter painter;
painter.begin(&pixmap);
painter.eraseRect(pixmap_rect);
painter.drawRect(pixmap_rect.adjusted(0,0,-1,-1));
painter.drawLine(QLineF(0, pixmap_rect.height() / 2, pixmap_rect.width(), pixmap_rect.height() / 2));
if (b) properties().singleLineProperties.draw(&painter, QET::Horizontal, pixmap_rect);
else m_properties.singleLineProperties.draw(&painter, QET::Horizontal, pixmap_rect);
painter.end();
ui -> m_preview_label -> setPixmap(pixmap);
}
/**
* @brief ConductorPropertiesWidget::on_m_earth_cb_toggled
* Update the widget when toggled
* @param checked
*/
void ConductorPropertiesWidget::on_m_earth_cb_toggled(bool checked) {
if (checked && ui -> m_neutral_cb -> isChecked())
ui -> m_pen_cb -> setEnabled(true);
else ui -> m_pen_cb -> setDisabled(true);
}
/**
* @brief ConductorPropertiesWidget::on_m_neutral_cb_toggled
* Update the widget when toggled
* @param checked
*/
void ConductorPropertiesWidget::on_m_neutral_cb_toggled(bool checked) {
if (checked && ui -> m_earth_cb -> isChecked())
ui -> m_pen_cb -> setEnabled(true);
else ui -> m_pen_cb -> setDisabled(true);
}
/**
* @brief ConductorPropertiesWidget::on_m_color_pb_clicked
* Open a color dialog, for choose the color of conductor
*/
void ConductorPropertiesWidget::on_m_color_pb_clicked() {
QColor color = QColorDialog::getColor(m_properties.color, this);
if (color.isValid())
setColorButton(color);
}
/**
* @brief ConductorPropertiesWidget::setColorButton
* Set m_color_pb to @color
* @param color
*/
void ConductorPropertiesWidget::setColorButton(const QColor &color) {
QPalette palette;
palette.setColor(QPalette::Button, color);
ui -> m_color_pb -> setPalette(palette);
}
/**
* @brief ConductorPropertiesWidget::on_m_update_preview_pb_clicked
* Update the preview of single line.
* m_update_preview_pb is a no used button and hidden, his role is only
* to centralize signal from various widget to edit single ligne properties,
* for update the preview
*/
void ConductorPropertiesWidget::on_m_update_preview_pb_clicked() {
updatePreview();
}

View File

@@ -0,0 +1,64 @@
/*
Copyright 2006-2014 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONDUCTORPROPERTIESWIDGET_H
#define CONDUCTORPROPERTIESWIDGET_H
#include <QWidget>
#include "conductorproperties.h"
class QTextOrientationSpinBoxWidget;
namespace Ui {
class ConductorPropertiesWidget;
}
class ConductorPropertiesWidget : public QWidget
{
Q_OBJECT
public:
explicit ConductorPropertiesWidget(QWidget *parent = 0);
explicit ConductorPropertiesWidget(const ConductorProperties &properties, QWidget *parent = 0);
~ConductorPropertiesWidget();
//METHODS
void setProperties(const ConductorProperties &properties);
ConductorProperties properties() const;
void setReadOnly(const bool &ro);
private:
void initWidget();
void setConductorType(ConductorProperties::ConductorType type);
//SLOTS
public slots:
void updatePreview(bool b = true);
private slots:
void on_m_earth_cb_toggled(bool checked);
void on_m_neutral_cb_toggled(bool checked);
void on_m_color_pb_clicked();
void setColorButton (const QColor &color);
void on_m_update_preview_pb_clicked();
private:
Ui::ConductorPropertiesWidget *ui;
ConductorProperties m_properties;
QTextOrientationSpinBoxWidget *m_verti_select, *m_horiz_select;
};
#endif // CONDUCTORPROPERTIESWIDGET_H

View File

@@ -0,0 +1,466 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConductorPropertiesWidget</class>
<widget class="QWidget" name="ConductorPropertiesWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>571</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="toolTip">
<string comment="Tooltip displaying the meaning of the 'PEN' acronym">Protective Earth Neutral</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="m_type_gb">
<property name="title">
<string>Type de conducteur</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="m_simple_rb">
<property name="text">
<string>Simple</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="m_multi_rb">
<property name="text">
<string>Multifilaire</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="m_multi_gb">
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Texte :</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_text_le"/>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Taille :</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="m_text_size_sb">
<property name="minimum">
<number>5</number>
</property>
<property name="maximum">
<number>9</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Rotation du texte de conducteur :</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="m_text_angle_gl">
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Vertical</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Horizontal</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QRadioButton" name="m_single_rb">
<property name="text">
<string>Unifilaire</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="m_single_gb">
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="2">
<widget class="QSlider" name="m_phase_slider">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>3</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="m_neutral_cb">
<property name="text">
<string>neutre</string>
</property>
<property name="icon">
<iconset resource="../../qelectrotech.qrc">
<normaloff>:/ico/16x16/neutral.png</normaloff>:/ico/16x16/neutral.png</iconset>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="m_phase_cb">
<property name="text">
<string>phase</string>
</property>
<property name="icon">
<iconset resource="../../qelectrotech.qrc">
<normaloff>:/ico/16x16/phase.png</normaloff>:/ico/16x16/phase.png</iconset>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="m_phase_sb">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>3</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QCheckBox" name="m_pen_cb">
<property name="toolTip">
<string>Protective Earth Neutral</string>
</property>
<property name="text">
<string>PEN</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="m_earth_cb">
<property name="text">
<string>terre</string>
</property>
<property name="icon">
<iconset resource="../../qelectrotech.qrc">
<normaloff>:/ico/16x16/ground.png</normaloff>:/ico/16x16/ground.png</iconset>
</property>
</widget>
</item>
<item row="0" column="0" rowspan="3">
<widget class="QLabel" name="m_preview_label">
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="m_update_preview_pb">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Apparence du conducteur</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="1">
<widget class="QComboBox" name="m_line_style_cb"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Couleur :</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="m_color_pb">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Style :</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="../../qelectrotech.qrc"/>
</resources>
<connections>
<connection>
<sender>m_multi_rb</sender>
<signal>toggled(bool)</signal>
<receiver>m_multi_gb</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>88</x>
<y>73</y>
</hint>
<hint type="destinationlabel">
<x>54</x>
<y>99</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_phase_slider</sender>
<signal>valueChanged(int)</signal>
<receiver>m_phase_sb</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>238</x>
<y>324</y>
</hint>
<hint type="destinationlabel">
<x>337</x>
<y>332</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_phase_sb</sender>
<signal>valueChanged(int)</signal>
<receiver>m_phase_slider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>356</x>
<y>322</y>
</hint>
<hint type="destinationlabel">
<x>207</x>
<y>325</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_single_rb</sender>
<signal>toggled(bool)</signal>
<receiver>m_single_gb</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>78</x>
<y>192</y>
</hint>
<hint type="destinationlabel">
<x>81</x>
<y>250</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_phase_cb</sender>
<signal>toggled(bool)</signal>
<receiver>m_phase_slider</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>152</x>
<y>328</y>
</hint>
<hint type="destinationlabel">
<x>208</x>
<y>329</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_phase_cb</sender>
<signal>toggled(bool)</signal>
<receiver>m_phase_sb</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>106</x>
<y>326</y>
</hint>
<hint type="destinationlabel">
<x>338</x>
<y>323</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_earth_cb</sender>
<signal>clicked()</signal>
<receiver>m_update_preview_pb</receiver>
<slot>click()</slot>
<hints>
<hint type="sourcelabel">
<x>142</x>
<y>249</y>
</hint>
<hint type="destinationlabel">
<x>228</x>
<y>249</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_neutral_cb</sender>
<signal>clicked()</signal>
<receiver>m_update_preview_pb</receiver>
<slot>click()</slot>
<hints>
<hint type="sourcelabel">
<x>158</x>
<y>304</y>
</hint>
<hint type="destinationlabel">
<x>269</x>
<y>246</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_phase_cb</sender>
<signal>clicked()</signal>
<receiver>m_update_preview_pb</receiver>
<slot>click()</slot>
<hints>
<hint type="sourcelabel">
<x>126</x>
<y>340</y>
</hint>
<hint type="destinationlabel">
<x>254</x>
<y>248</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_pen_cb</sender>
<signal>clicked()</signal>
<receiver>m_update_preview_pb</receiver>
<slot>click()</slot>
<hints>
<hint type="sourcelabel">
<x>222</x>
<y>276</y>
</hint>
<hint type="destinationlabel">
<x>242</x>
<y>245</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_phase_sb</sender>
<signal>valueChanged(int)</signal>
<receiver>m_update_preview_pb</receiver>
<slot>click()</slot>
<hints>
<hint type="sourcelabel">
<x>357</x>
<y>340</y>
</hint>
<hint type="destinationlabel">
<x>305</x>
<y>248</y>
</hint>
</hints>
</connection>
</connections>
</ui>