Krita Source Code Documentation
Loading...
Searching...
No Matches
CssStylePresetEditDialog Class Reference

#include <CssStylePresetEditDialog.h>

+ Inheritance diagram for CssStylePresetEditDialog:

Public Slots

QColor modalColorDialog (QColor oldColor)
 
void slotUpdateDirty ()
 
void slotUpdateStoreDPI ()
 
void slotUpdateTextProperties ()
 
- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 

Public Member Functions

 CssStylePresetEditDialog (QWidget *parent=nullptr)
 
KoCssStylePresetSP currentResource ()
 
void setCurrentResource (KoCssStylePresetSP resource)
 
void setDpi (const double dpi)
 
 ~CssStylePresetEditDialog ()
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 

Private Attributes

bool m_blockUpdates {false}
 
KoCssStylePresetSP m_currentResource
 
KoSvgTextPropertiesModelm_model
 
KisQQuickWidgetm_quickWidget {0}
 

Additional Inherited Members

- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 

Detailed Description

Definition at line 15 of file CssStylePresetEditDialog.h.

Constructor & Destructor Documentation

◆ CssStylePresetEditDialog()

CssStylePresetEditDialog::CssStylePresetEditDialog ( QWidget * parent = nullptr)

Definition at line 23 of file CssStylePresetEditDialog.cpp.

24 :KoDialog(parent)
26
27{
28 setMinimumSize(600, 400);
29 setModal(true);
30
33 m_quickWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
34
35 m_quickWidget->setPalette(this->palette());
36 this->setWindowTitle(i18nc("@title:window", "Edit Style Preset"));
37
38 QStringList wellFormedBCPNames;
39 Q_FOREACH (const QString langCode, KLocalizedString::languages()) {
40 wellFormedBCPNames.append(langCode.split("_").join("-"));
41 }
42
43 connect(m_model, SIGNAL(textPropertyChanged()),
44 this, SLOT(slotUpdateTextProperties()));
45
46 m_quickWidget->setSource(QUrl("qrc:/CssStylePresetEdit.qml"));
47
48 if (!m_quickWidget->errors().empty()) {
49 qWarning() << "Errors in " << windowTitle() << ":" << m_quickWidget->errors();
50 } else {
51 m_quickWidget->rootObject()->setProperty("textProperties", QVariant::fromValue(m_model));
52 m_quickWidget->rootObject()->setProperty("locales", QVariant::fromValue(wellFormedBCPNames));
53 }
54}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KoSvgTextPropertiesModel * m_model
The KisQQuickWidget class.
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
KoDialog(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
Definition KoDialog.cpp:176
The KoSvgTextPropertiesModel class.
rgba palette[MAX_PALETTE]
Definition palette.c:35

References connect(), m_model, m_quickWidget, palette, KoDialog::setMainWidget(), and slotUpdateTextProperties().

◆ ~CssStylePresetEditDialog()

CssStylePresetEditDialog::~CssStylePresetEditDialog ( )

Definition at line 56 of file CssStylePresetEditDialog.cpp.

57{
58 delete m_quickWidget;
59
60}

References m_quickWidget.

Member Function Documentation

◆ currentResource()

KoCssStylePresetSP CssStylePresetEditDialog::currentResource ( )

Definition at line 88 of file CssStylePresetEditDialog.cpp.

89{
92 const QString title = m_quickWidget->rootObject()->property("presetTitle").toString();
93 const QString description = m_quickWidget->rootObject()->property("presetDescription").toString();
94 m_currentResource->setName(title);
95 m_currentResource->setDescription(description);
96 }
97 return m_currentResource;
98}

References m_currentResource, m_quickWidget, and slotUpdateTextProperties().

◆ modalColorDialog

QColor CssStylePresetEditDialog::modalColorDialog ( QColor oldColor)
slot

Definition at line 135 of file CssStylePresetEditDialog.cpp.

136{
137 QColor c = QColorDialog::getColor(oldColor);
138 return c.isValid()? c: oldColor;
139}

◆ setCurrentResource()

void CssStylePresetEditDialog::setCurrentResource ( KoCssStylePresetSP resource)

Definition at line 62 of file CssStylePresetEditDialog.cpp.

63{
64 m_blockUpdates = true;
65 m_currentResource = resource;
66 KoSvgTextProperties properties = m_currentResource->properties();
67 KoSvgTextPropertyData textData;
69 textData.commonProperties = properties;
70 m_model->textData.set(textData);
71 if (m_quickWidget->rootObject()) {
72 m_quickWidget->rootObject()->setProperty("presetTitle", m_currentResource->name());
73 m_quickWidget->rootObject()->setProperty("presetDescription", m_currentResource->description());
74 m_quickWidget->rootObject()->setProperty("presetSample", m_currentResource->sampleSvg());
75 m_quickWidget->rootObject()->setProperty("presetSampleAlignment", variantFromAlignment(m_currentResource->alignSample()));
76 m_quickWidget->rootObject()->setProperty("styleType", m_currentResource->styleType());
77
78 m_quickWidget->rootObject()->setProperty("beforeSample", m_currentResource->beforeText());
79 m_quickWidget->rootObject()->setProperty("sampleText", m_currentResource->sampleText());
80 m_quickWidget->rootObject()->setProperty("afterSample", m_currentResource->afterText());
81 const int storedPPI = m_currentResource->storedPPIResolution();
82 m_quickWidget->rootObject()->setProperty("makePixelRelative", storedPPI > 0);
83 }
84 m_blockUpdates = false;
86}
QVariant variantFromAlignment(Qt::Alignment align)
lager::cursor< KoSvgTextPropertyData > textData
The KoSvgTextPropertyData struct.
KoSvgTextProperties commonProperties
The properties common between all the selected text.
KoSvgTextProperties inheritedProperties
The properties that are inherited, so that widgets may be set correctly.

References KoSvgTextPropertyData::commonProperties, KoSvgTextPropertyData::inheritedProperties, m_blockUpdates, m_currentResource, m_model, m_quickWidget, slotUpdateDirty(), KoSvgTextPropertiesModel::textData, and variantFromAlignment().

◆ setDpi()

void CssStylePresetEditDialog::setDpi ( const double dpi)

Definition at line 100 of file CssStylePresetEditDialog.cpp.

101{
102 if (m_quickWidget->rootObject()) {
103 m_quickWidget->rootObject()->setProperty("canvasDPI", dpi);
104 }
105}

References m_quickWidget.

◆ slotUpdateDirty

void CssStylePresetEditDialog::slotUpdateDirty ( )
slot

Definition at line 141 of file CssStylePresetEditDialog.cpp.

141 {
142 if (!m_quickWidget->rootObject()) return;
143 bool isDirty = m_currentResource->isDirty();
144 const QString title = m_quickWidget->rootObject()->property("presetTitle").toString();
145 if (!isDirty && m_quickWidget->rootObject()) {
146 const QString description = m_quickWidget->rootObject()->property("presetDescription").toString();
147 if (title != m_currentResource->name() || description != m_currentResource->description()) {
148 isDirty = true;
149 }
150 }
151 this->button(KoDialog::Ok)->setEnabled(isDirty && !title.isEmpty());
152}
QPushButton * button(ButtonCode id) const
Definition KoDialog.cpp:591
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127

References KoDialog::button(), m_currentResource, m_quickWidget, and KoDialog::Ok.

◆ slotUpdateStoreDPI

void CssStylePresetEditDialog::slotUpdateStoreDPI ( )
slot

Definition at line 154 of file CssStylePresetEditDialog.cpp.

154 {
155 //Whenever we make it pixel relative, we'll set the resolution to 72 dpi.
156 if (m_blockUpdates) return;
157 if (!m_quickWidget->rootObject()) return;
158 const bool makePixelRelative = m_quickWidget->rootObject()->property("makePixelRelative").toBool();
159 const int storedPPI = m_currentResource->storedPPIResolution();
160 const int canvasPPI = m_quickWidget->rootObject()->property("canvasDPI").toInt();
161 KoSvgTextPropertyData textData = m_model->textData.get();
162 if (storedPPI > 0 && !makePixelRelative) {
163 const double scale = double(storedPPI)/double(canvasPPI);
164 textData.commonProperties.scaleAbsoluteValues(scale, scale);
165 m_currentResource->setStoredPPIResolution(0);
166 } else if(storedPPI == 0 && makePixelRelative) {
167 const double scale = double(canvasPPI)/double(72);
168 textData.commonProperties.scaleAbsoluteValues(scale, scale);
169 m_currentResource->setStoredPPIResolution(72);
170 }
171 m_model->textData.set(textData);
173}
void scaleAbsoluteValues(const double scaleInline=1.0, const double scaleBlock=1.0)
scaleAbsoluteValues This scales all absolute values stored in these text properties....

References KoSvgTextPropertyData::commonProperties, m_blockUpdates, m_currentResource, m_model, m_quickWidget, KoSvgTextProperties::scaleAbsoluteValues(), slotUpdateTextProperties(), and KoSvgTextPropertiesModel::textData.

◆ slotUpdateTextProperties

void CssStylePresetEditDialog::slotUpdateTextProperties ( )
slot

Definition at line 107 of file CssStylePresetEditDialog.cpp.

108{
110 const QString before = m_quickWidget->rootObject()->property("beforeSample").toString();
111 const QString sample = m_quickWidget->rootObject()->property("sampleText").toString();
112 const QString after = m_quickWidget->rootObject()->property("afterSample").toString();
113 const QString styleType = m_quickWidget->rootObject()->property("styleType").toString();
114
115 bool shouldUpdateSample = (before != m_currentResource->beforeText()
116 || sample != m_currentResource->sampleText()
117 || after != m_currentResource->afterText());
118
119 KoSvgTextPropertyData textData = m_model->textData.get();
120
121 if (m_currentResource->properties() != textData.commonProperties || shouldUpdateSample) {
122 m_currentResource->setStyleType(styleType);
123 m_currentResource->setBeforeText(before);
124 m_currentResource->setSampleText(sample);
125 m_currentResource->setAfterText(after);
126 m_currentResource->setProperties(textData.commonProperties);
127 m_currentResource->updateThumbnail();
128 m_quickWidget->rootObject()->setProperty("presetSample", m_currentResource->sampleSvg());
129 m_quickWidget->rootObject()->setProperty("presetSampleAlignment", variantFromAlignment(m_currentResource->alignSample()));
131 }
132 }
133}

References KoSvgTextPropertyData::commonProperties, m_blockUpdates, m_currentResource, m_model, m_quickWidget, slotUpdateDirty(), KoSvgTextPropertiesModel::textData, and variantFromAlignment().

Member Data Documentation

◆ m_blockUpdates

bool CssStylePresetEditDialog::m_blockUpdates {false}
private

Definition at line 37 of file CssStylePresetEditDialog.h.

37{false};

◆ m_currentResource

KoCssStylePresetSP CssStylePresetEditDialog::m_currentResource
private

Definition at line 36 of file CssStylePresetEditDialog.h.

◆ m_model

KoSvgTextPropertiesModel* CssStylePresetEditDialog::m_model
private

Definition at line 35 of file CssStylePresetEditDialog.h.

◆ m_quickWidget

KisQQuickWidget* CssStylePresetEditDialog::m_quickWidget {0}
private

Definition at line 34 of file CssStylePresetEditDialog.h.

34{0};

The documentation for this class was generated from the following files: