diff --git a/sources/conductorproperties.cpp b/sources/conductorproperties.cpp index e591cd79f..876affbea 100644 --- a/sources/conductorproperties.cpp +++ b/sources/conductorproperties.cpp @@ -383,6 +383,7 @@ void ConductorProperties::readStyle(const QString &style_string) { QString style_value = rx.cap(2); if (style_name == "line-style") { if (style_value == "dashed") style = Qt::DashLine; + else if (style_value == "dashdotted") style = Qt::DashDotLine; else if (style_value == "normal") style = Qt::SolidLine; } } @@ -396,6 +397,8 @@ void ConductorProperties::readStyle(const QString &style_string) { QString ConductorProperties::writeStyle() const { if (style == Qt::DashLine) { return("line-style: dashed;"); + } else if (style == Qt::DashDotLine) { + return("line-style: dashdotted"); } else { return(QString()); } diff --git a/sources/conductorpropertieswidget.cpp b/sources/conductorpropertieswidget.cpp index 94a6f9f8d..e7f60271c 100644 --- a/sources/conductorpropertieswidget.cpp +++ b/sources/conductorpropertieswidget.cpp @@ -113,13 +113,21 @@ void ConductorPropertiesWidget::buildInterface() { 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); + QHBoxLayout *style_layout = new QHBoxLayout(); + QLabel *text2 = new QLabel(tr("Style :", "conductor line style")); + line_style = new QComboBox(); + line_style -> addItem(tr("Trait plein", "conductor style: solid line"), Qt::SolidLine); + line_style -> addItem(tr("Trait en pointill\351s", "conductor style: dashed line"), Qt::DashLine); + line_style -> addItem(tr("Traits et points", "conductor style: dashed and dotted line"), Qt::DashDotLine); + style_layout -> addWidget(text2); + style_layout -> addWidget(line_style); + setColorButton(properties_.color); - dashed_checkbox -> setChecked(properties_.style == Qt::DashLine); + int index = line_style -> findData(properties_.style); + if (index != -1) line_style -> setCurrentIndex(index); groupbox_layout -> addWidget(simple); groupbox_layout -> addWidget(multiline); @@ -128,7 +136,7 @@ void ConductorPropertiesWidget::buildInterface() { groupbox_layout -> addLayout(singleline_layout1); groupbox2_layout -> addLayout(color_layout); - groupbox2_layout -> addWidget(dashed_checkbox); + groupbox2_layout -> addLayout(style_layout); radio_buttons = new QButtonGroup(this); radio_buttons -> addButton(simple, ConductorProperties::Simple); @@ -150,7 +158,7 @@ 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(line_style, SIGNAL(currentIndexChanged(int)), this, SLOT(updateConfig())); connect(color_button, SIGNAL(clicked()), this, SLOT(chooseColor())); } @@ -195,7 +203,7 @@ void ConductorPropertiesWidget::destroyConnections() { 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())); + disconnect(line_style, SIGNAL(currentIndexChanged(int)), this, SLOT(updateConfig())); } /// Destructeur @@ -206,7 +214,7 @@ ConductorPropertiesWidget::~ConductorPropertiesWidget() { void ConductorPropertiesWidget::updateConfig() { properties_.type = static_cast(radio_buttons -> checkedId()); properties_.color = colorButton(); - properties_.style = dashed_checkbox -> isChecked() ? Qt::DashLine : Qt::SolidLine; + properties_.style = static_cast(line_style -> itemData(line_style -> currentIndex()).toInt()); properties_.text = text_field -> text(); properties_.singleLineProperties.hasGround = ground_checkbox -> isChecked(); properties_.singleLineProperties.hasNeutral = neutral_checkbox -> isChecked(); @@ -222,7 +230,8 @@ void ConductorPropertiesWidget::updateDisplay() { setConductorType(properties_.type); setColorButton(properties_.color); - dashed_checkbox -> setChecked(properties_.style == Qt::DashLine); + int index = line_style -> findData(properties_.style); + if (index != -1) line_style -> setCurrentIndex(index); text_field -> setText(properties_.text); ground_checkbox -> setChecked(properties_.singleLineProperties.hasGround); neutral_checkbox -> setChecked(properties_.singleLineProperties.hasNeutral); @@ -308,7 +317,7 @@ void ConductorPropertiesWidget::setReadOnly(bool ro) { neutral_checkbox -> setDisabled(ro); merge_checkbox -> setDisabled(ro); color_button -> setDisabled(ro); - dashed_checkbox -> setDisabled(ro); + line_style -> setDisabled(ro); // if the widget is not read-only, we still need to disable some widgets for consistency if (!ro) { updateDisplay(); diff --git a/sources/conductorpropertieswidget.h b/sources/conductorpropertieswidget.h index 378b435ac..f89751e8e 100644 --- a/sources/conductorpropertieswidget.h +++ b/sources/conductorpropertieswidget.h @@ -70,7 +70,7 @@ class ConductorPropertiesWidget : public QWidget { QCheckBox *neutral_checkbox; QLabel *preview; QPushButton *color_button; - QCheckBox *dashed_checkbox; + QComboBox *line_style; QCheckBox *merge_checkbox; ConductorProperties properties_;