File indexing completed on 2024-05-05 12:57:29
0001 /* 0002 * Copyright (C) 2010-2015 by Stephen Allewell 0003 * steve.allewell@gmail.com 0004 * 0005 * This program is free software; you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation; either version 2 of the License, or 0008 * (at your option) any later version. 0009 */ 0010 0011 #include "PatternElementDlg.h" 0012 0013 #include <KHelpClient> 0014 #include <KLocalizedString> 0015 0016 #include "Document.h" 0017 #include "Element.h" 0018 #include "SelectArea.h" 0019 0020 PatternElementDlg::PatternElementDlg(QWidget *parent, PatternElement *patternElement, Document *document, const QMap<int, QList<QRect>> &patternRects) 0021 : QDialog(parent) 0022 , m_patternElement(patternElement) 0023 , m_document(document) 0024 , m_patternRects(patternRects) 0025 { 0026 setWindowModality(Qt::WindowModal); 0027 0028 setWindowTitle(i18n("Pattern Element Properties")); 0029 0030 ui.setupUi(this); 0031 0032 ui.RenderStitchesAs->setItemData(0, Configuration::EnumRenderer_RenderStitchesAs::Stitches); 0033 ui.RenderStitchesAs->setItemData(1, Configuration::EnumRenderer_RenderStitchesAs::BlackWhiteSymbols); 0034 ui.RenderStitchesAs->setItemData(2, Configuration::EnumRenderer_RenderStitchesAs::ColorSymbols); 0035 ui.RenderStitchesAs->setItemData(3, Configuration::EnumRenderer_RenderStitchesAs::ColorBlocks); 0036 ui.RenderStitchesAs->setItemData(4, Configuration::EnumRenderer_RenderStitchesAs::ColorBlocksSymbols); 0037 0038 ui.RenderBackstitchesAs->setItemData(0, Configuration::EnumRenderer_RenderBackstitchesAs::ColorLines); 0039 ui.RenderBackstitchesAs->setItemData(1, Configuration::EnumRenderer_RenderBackstitchesAs::BlackWhiteSymbols); 0040 0041 ui.RenderKnotsAs->setItemData(0, Configuration::EnumRenderer_RenderKnotsAs::ColorBlocks); 0042 ui.RenderKnotsAs->setItemData(1, Configuration::EnumRenderer_RenderKnotsAs::ColorSymbols); 0043 ui.RenderKnotsAs->setItemData(2, Configuration::EnumRenderer_RenderKnotsAs::BlackWhiteSymbols); 0044 0045 ui.FormatScalesAs->setItemData(0, Configuration::EnumEditor_FormatScalesAs::Stitches); 0046 ui.FormatScalesAs->setItemData(1, Configuration::EnumEditor_FormatScalesAs::Inches); 0047 ui.FormatScalesAs->setItemData(2, Configuration::EnumEditor_FormatScalesAs::Centimeters); 0048 0049 m_selectArea = new SelectArea(ui.PreviewFrame, patternElement, document, patternRects); 0050 ui.PreviewFrame->setWidget(m_selectArea); 0051 0052 m_selectArea->setPatternRect(patternElement->m_patternRect); 0053 ui.ShowStitches->setChecked(patternElement->m_showStitches); 0054 ui.ShowBackstitches->setChecked(patternElement->m_showBackstitches); 0055 ui.ShowKnots->setChecked(patternElement->m_showKnots); 0056 ui.ShowGrid->setChecked(patternElement->m_showGrid); 0057 ui.ShowScales->setChecked(patternElement->m_showScales); 0058 ui.ShowPlan->setChecked(patternElement->m_showPlan); 0059 ui.FormatScalesAs->setCurrentIndex(ui.FormatScalesAs->findData(patternElement->m_formatScalesAs)); 0060 ui.RenderStitchesAs->setCurrentIndex(ui.RenderStitchesAs->findData(patternElement->m_renderStitchesAs)); 0061 ui.RenderBackstitchesAs->setCurrentIndex(ui.RenderBackstitchesAs->findData(patternElement->m_renderBackstitchesAs)); 0062 ui.RenderKnotsAs->setCurrentIndex(ui.RenderKnotsAs->findData(patternElement->m_renderKnotsAs)); 0063 } 0064 0065 bool PatternElementDlg::showPlan() const 0066 { 0067 return ui.ShowPlan->isChecked(); 0068 } 0069 0070 PlanElement *PatternElementDlg::planElement() const 0071 { 0072 return m_patternElement->m_planElement; 0073 } 0074 0075 void PatternElementDlg::hideEvent(QHideEvent *event) 0076 { 0077 KConfigGroup(KSharedConfig::openConfig(), QStringLiteral("DialogSizes")).writeEntry(QStringLiteral("PatternElementDlg"), size()); 0078 0079 QDialog::hideEvent(event); 0080 } 0081 0082 void PatternElementDlg::showEvent(QShowEvent *event) 0083 { 0084 QDialog::showEvent(event); 0085 0086 if (KConfigGroup(KSharedConfig::openConfig(), QStringLiteral("DialogSizes")).hasKey(QStringLiteral("PatternElementDlg"))) { 0087 resize(KConfigGroup(KSharedConfig::openConfig(), QStringLiteral("DialogSizes")).readEntry(QStringLiteral("PatternElementDlg"), QSize())); 0088 } 0089 } 0090 0091 void PatternElementDlg::on_DialogButtonBox_accepted() 0092 { 0093 m_patternElement->setPatternRect(m_selectArea->patternRect()); 0094 m_patternElement->m_showScales = ui.ShowScales->isChecked(); 0095 0096 if (ui.ShowPlan->isChecked()) { 0097 if (m_patternElement->m_planElement == nullptr) { 0098 m_patternElement->m_planElement = new PlanElement(m_patternElement->parent(), QRect(m_patternElement->rectangle().topLeft(), QSize(25, 25))); 0099 } 0100 } else { 0101 if (m_patternElement->m_planElement) { 0102 delete m_patternElement->m_planElement; 0103 m_patternElement->m_planElement = nullptr; 0104 } 0105 } 0106 0107 if (m_patternElement->m_planElement) { 0108 m_patternElement->m_planElement->setPatternRect(m_patternElement->patternRect()); 0109 } 0110 0111 m_patternElement->m_showPlan = ui.ShowPlan->isChecked(); 0112 m_patternElement->m_formatScalesAs = 0113 static_cast<Configuration::EnumEditor_FormatScalesAs::type>(ui.FormatScalesAs->itemData(ui.FormatScalesAs->currentIndex()).toInt()); 0114 m_patternElement->setRenderStitchesAs( 0115 static_cast<Configuration::EnumRenderer_RenderStitchesAs::type>(ui.RenderStitchesAs->itemData(ui.RenderStitchesAs->currentIndex()).toInt())); 0116 m_patternElement->setRenderBackstitchesAs(static_cast<Configuration::EnumRenderer_RenderBackstitchesAs::type>( 0117 ui.RenderBackstitchesAs->itemData(ui.RenderBackstitchesAs->currentIndex()).toInt())); 0118 m_patternElement->setRenderKnotsAs( 0119 static_cast<Configuration::EnumRenderer_RenderKnotsAs::type>(ui.RenderKnotsAs->itemData(ui.RenderKnotsAs->currentIndex()).toInt())); 0120 m_patternElement->m_showStitches = ui.ShowStitches->isChecked(); 0121 m_patternElement->m_showBackstitches = ui.ShowBackstitches->isChecked(); 0122 m_patternElement->m_showKnots = ui.ShowKnots->isChecked(); 0123 m_patternElement->m_showGrid = ui.ShowGrid->isChecked(); 0124 0125 accept(); 0126 } 0127 0128 void PatternElementDlg::on_DialogButtonBox_rejected() 0129 { 0130 reject(); 0131 } 0132 0133 void PatternElementDlg::on_DialogButtonBox_helpRequested() 0134 { 0135 KHelpClient::invokeHelp(QStringLiteral("PatternElement"), QStringLiteral("kxstitch")); 0136 } 0137 0138 #include "moc_PatternElementDlg.cpp"