CombinedSymbolSettings::CombinedSymbolSettings(CombinedSymbol* symbol, SymbolSettingDialog* dialog) : SymbolPropertiesWidget(symbol, dialog), symbol(symbol) { const CombinedSymbol* source_symbol = static_cast<const CombinedSymbol*>(dialog->getUnmodifiedSymbol()); Map* source_map = dialog->getSourceMap(); QFormLayout* layout = new QFormLayout(); number_edit = new QSpinBox(); number_edit->setRange(2, qMax<int>(max_count, symbol->getNumParts())); number_edit->setValue(symbol->getNumParts()); connect(number_edit, SIGNAL(valueChanged(int)), this, SLOT(numberChanged(int))); layout->addRow(tr("&Number of parts:"), number_edit); QSignalMapper* button_signal_mapper = new QSignalMapper(this); connect(button_signal_mapper, SIGNAL(mapped(int)), this, SLOT(editClicked(int))); QSignalMapper* symbol_signal_mapper = new QSignalMapper(this); connect(symbol_signal_mapper, SIGNAL(mapped(int)), this, SLOT(symbolChanged(int))); symbol_labels = new QLabel*[max_count]; symbol_edits = new SymbolDropDown*[max_count]; edit_buttons = new QPushButton*[max_count]; for (int i = 0; i < max_count; ++i) { symbol_labels[i] = new QLabel(tr("Symbol %1:").arg(i+1)); symbol_edits[i] = new SymbolDropDown(source_map, Symbol::Line | Symbol::Area | Symbol::Combined, ((int)symbol->parts.size() > i) ? symbol->parts[i] : NULL, source_symbol); symbol_edits[i]->addCustomItem(tr("- Private line symbol -"), 1); symbol_edits[i]->addCustomItem(tr("- Private area symbol -"), 2); if (((int)symbol->parts.size() > i) && symbol->isPartPrivate(i)) symbol_edits[i]->setCustomItem((symbol->getPart(i)->getType() == Symbol::Line) ? 1 : 2); connect(symbol_edits[i], SIGNAL(currentIndexChanged(int)), symbol_signal_mapper, SLOT(map())); symbol_signal_mapper->setMapping(symbol_edits[i], i); edit_buttons[i] = new QPushButton(tr("Edit private symbol...")); edit_buttons[i]->setEnabled((int)symbol->parts.size() > i && symbol->private_parts[i]); connect(edit_buttons[i], SIGNAL(clicked()), button_signal_mapper, SLOT(map())); button_signal_mapper->setMapping(edit_buttons[i], i); QHBoxLayout* row_layout = new QHBoxLayout(); row_layout->addWidget(symbol_edits[i]); row_layout->addWidget(edit_buttons[i]); layout->addRow(symbol_labels[i], row_layout); if (i >= symbol->getNumParts()) { symbol_labels[i]->hide(); symbol_edits[i]->hide(); edit_buttons[i]->hide(); } } QWidget* widget = new QWidget; widget->setLayout(layout); addPropertiesGroup(tr("Combination settings"), widget); }
TextSymbolSettings::TextSymbolSettings(TextSymbol* symbol, SymbolSettingDialog* dialog) : SymbolPropertiesWidget(symbol, dialog), symbol(symbol), dialog(dialog) { Map* map = dialog->getPreviewMap(); react_to_changes = true; QWidget* text_tab = new QWidget(); addPropertiesGroup(tr("Text settings"), text_tab); QFormLayout* layout = new QFormLayout(); text_tab->setLayout(layout); font_edit = new QFontComboBox(); layout->addRow(tr("Font family:"), font_edit); QHBoxLayout* size_layout = new QHBoxLayout(); size_layout->setMargin(0); size_layout->setSpacing(0); size_edit = Util::SpinBox::create(1, 0.0, 999999.9); size_layout->addWidget(size_edit); size_unit_combo = new QComboBox(); size_unit_combo->addItem(tr("mm"), QVariant((int)SizeInMM)); size_unit_combo->addItem(tr("pt"), QVariant((int)SizeInPT)); size_unit_combo->setCurrentIndex(0); size_layout->addWidget(size_unit_combo); size_determine_button = new QPushButton(tr("Determine size...")); size_layout->addSpacing(8); size_layout->addWidget(size_determine_button); layout->addRow(tr("Font size:"), size_layout); color_edit = new ColorDropDown(map, symbol->getColor()); layout->addRow(tr("Text color:"), color_edit); QVBoxLayout* text_style_layout = new QVBoxLayout(); bold_check = new QCheckBox(tr("bold")); text_style_layout->addWidget(bold_check); italic_check = new QCheckBox(tr("italic")); text_style_layout->addWidget(italic_check); underline_check = new QCheckBox(tr("underlined")); text_style_layout->addWidget(underline_check); layout->addRow(tr("Text style:"), text_style_layout); layout->addItem(Util::SpacerItem::create(this)); line_spacing_edit = Util::SpinBox::create(1, 0.0, 999999.9, tr("%")); layout->addRow(tr("Line spacing:"), line_spacing_edit); paragraph_spacing_edit = Util::SpinBox::create(2, -999999.9, 999999.9, tr("mm")); layout->addRow(tr("Paragraph spacing:"), paragraph_spacing_edit); character_spacing_edit = Util::SpinBox::create(1, -999999.9, 999999.9, tr("%")); layout->addRow(tr("Character spacing:"), character_spacing_edit); kerning_check = new QCheckBox(tr("Kerning")); layout->addRow("", kerning_check); layout->addItem(Util::SpacerItem::create(this)); icon_text_edit = new QLineEdit(); icon_text_edit->setMaxLength(3); layout->addRow(tr("Symbol icon text:"), icon_text_edit); layout->addItem(Util::SpacerItem::create(this)); framing_check = new QCheckBox(tr("Framing")); layout->addRow(framing_check); ocad_compat_check = new QCheckBox(tr("OCAD compatibility settings")); layout->addRow(ocad_compat_check); framing_widget = new QWidget(); addPropertiesGroup(tr("Framing"), framing_widget); QFormLayout* framing_layout = new QFormLayout(); framing_widget->setLayout(framing_layout); framing_color_edit = new ColorDropDown(map, symbol->getFramingColor()); framing_layout->addRow(tr("Framing color:"), framing_color_edit); framing_line_radio = new QRadioButton(tr("Line framing")); framing_layout->addRow(framing_line_radio); framing_line_half_width_edit = Util::SpinBox::create(1, 0.0, 999999.9); framing_layout->addRow(tr("Width:"), framing_line_half_width_edit); framing_shadow_radio = new QRadioButton(tr("Shadow framing")); framing_layout->addRow(framing_shadow_radio); framing_shadow_x_offset_edit = Util::SpinBox::create(1, -999999.9, 999999.9); framing_layout->addRow(tr("Left/Right Offset:"), framing_shadow_x_offset_edit); framing_shadow_y_offset_edit = Util::SpinBox::create(1, -999999.9, 999999.9); framing_layout->addRow(tr("Top/Down Offset:"), framing_shadow_y_offset_edit); ocad_compat_widget = new QWidget(); addPropertiesGroup(tr("OCAD compatibility"), ocad_compat_widget); QFormLayout* ocad_compat_layout = new QFormLayout(); ocad_compat_widget->setLayout(ocad_compat_layout); ocad_compat_layout->addRow(Util::Headline::create(tr("Line below paragraphs"))); line_below_check = new QCheckBox(tr("enabled")); ocad_compat_layout->addRow(line_below_check); line_below_width_edit = Util::SpinBox::create(2, 0.0, 999999.9, tr("mm")); ocad_compat_layout->addRow(tr("Line width:"), line_below_width_edit); line_below_color_edit = new ColorDropDown(map); ocad_compat_layout->addRow(tr("Line color:"), line_below_color_edit); line_below_distance_edit = Util::SpinBox::create(2, 0.0, 999999.9, tr("mm")); ocad_compat_layout->addRow(tr("Distance from baseline:"), line_below_distance_edit); ocad_compat_layout->addItem(Util::SpacerItem::create(this)); ocad_compat_layout->addRow(Util::Headline::create(tr("Custom tabulator positions"))); custom_tab_list = new QListWidget(); ocad_compat_layout->addRow(custom_tab_list); QHBoxLayout* custom_tabs_button_layout = new QHBoxLayout(); custom_tab_add = new QPushButton(QIcon(":/images/plus.png"), ""); custom_tabs_button_layout->addWidget(custom_tab_add); custom_tab_remove = new QPushButton(QIcon(":/images/minus.png"), ""); custom_tabs_button_layout->addWidget(custom_tab_remove); custom_tabs_button_layout->addStretch(1); ocad_compat_layout->addRow(custom_tabs_button_layout); updateGeneralContents(); updateFramingContents(); updateCompatibilityContents(); connect(font_edit, SIGNAL(currentFontChanged(QFont)), this, SLOT(fontChanged(QFont))); connect(size_edit, SIGNAL(valueChanged(double)), this, SLOT(sizeChanged(double))); connect(size_unit_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(sizeUnitChanged(int))); connect(size_determine_button, SIGNAL(clicked(bool)), this, SLOT(determineSizeClicked())); connect(color_edit, SIGNAL(currentIndexChanged(int)), this, SLOT(colorChanged())); connect(bold_check, SIGNAL(clicked(bool)), this, SLOT(checkToggled(bool))); connect(italic_check, SIGNAL(clicked(bool)), this, SLOT(checkToggled(bool))); connect(underline_check, SIGNAL(clicked(bool)), this, SLOT(checkToggled(bool))); connect(line_spacing_edit, SIGNAL(valueChanged(double)), this, SLOT(spacingChanged(double))); connect(paragraph_spacing_edit, SIGNAL(valueChanged(double)), this, SLOT(spacingChanged(double))); connect(character_spacing_edit, SIGNAL(valueChanged(double)), this, SLOT(spacingChanged(double))); connect(kerning_check, SIGNAL(clicked(bool)), this, SLOT(checkToggled(bool))); connect(icon_text_edit, SIGNAL(textEdited(QString)), this, SLOT(iconTextEdited(QString))); connect(framing_check, SIGNAL(clicked(bool)), this, SLOT(framingCheckClicked(bool))); connect(ocad_compat_check, SIGNAL(clicked(bool)), this, SLOT(ocadCompatibilityButtonClicked(bool))); connect(framing_color_edit, SIGNAL(currentIndexChanged(int)), this, SLOT(framingColorChanged())); connect(framing_line_radio, SIGNAL(clicked(bool)), this, SLOT(framingModeChanged())); connect(framing_line_half_width_edit, SIGNAL(valueChanged(double)), this, SLOT(framingSettingChanged())); connect(framing_shadow_radio, SIGNAL(clicked(bool)), this, SLOT(framingModeChanged())); connect(framing_shadow_x_offset_edit, SIGNAL(valueChanged(double)), this, SLOT(framingSettingChanged())); connect(framing_shadow_y_offset_edit, SIGNAL(valueChanged(double)), this, SLOT(framingSettingChanged())); connect(line_below_check, SIGNAL(clicked(bool)), this, SLOT(lineBelowCheckClicked(bool))); connect(line_below_color_edit, SIGNAL(currentIndexChanged(int)), this, SLOT(lineBelowSettingChanged())); connect(line_below_width_edit, SIGNAL(valueChanged(double)), this, SLOT(lineBelowSettingChanged())); connect(line_below_distance_edit, SIGNAL(valueChanged(double)), this, SLOT(lineBelowSettingChanged())); connect(custom_tab_list, SIGNAL(currentRowChanged(int)), this, SLOT(customTabRowChanged(int))); connect(custom_tab_add, SIGNAL(clicked(bool)), this, SLOT(addCustomTabClicked())); connect(custom_tab_remove, SIGNAL(clicked(bool)), this, SLOT(removeCustomTabClicked())); }