1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7
8 #include "ui/prefs_itemtools.h"
9 #include "ui/arrowchooser.h"
10 #include "ui/linkbutton.h"
11 #include "prefsstructs.h"
12 #include "scrspinbox.h"
13 #include "scribusdoc.h"
14 #include "units.h"
15 #include "commonstrings.h"
16 #include "prefsmanager.h"
17 #include "sampleitem.h"
18
19
Prefs_ItemTools(QWidget * parent,ScribusDoc * doc)20 Prefs_ItemTools::Prefs_ItemTools(QWidget* parent, ScribusDoc* doc)
21 : Prefs_Pane(parent),
22 m_doc(nullptr),
23 showFontPreview(false)
24 {
25 setupUi(this);
26
27 scrollArea->viewport()->setAutoFillBackground(false);
28 scrollArea->widget()->setAutoFillBackground(false);
29 scrollArea_2->viewport()->setAutoFillBackground(false);
30 scrollArea_2->widget()->setAutoFillBackground(false);
31
32 languageChange();
33
34 m_caption = tr("Item Tools");
35 m_icon = "tools_16.png";
36
37 lineEndArrowComboBox->setArrowDirection(ArrowDirection::EndArrow);
38 shapeLineWidthSpinBox->setNewUnit(0);
39 shapeLineWidthSpinBox->setMaximum(36);
40 shapeLineWidthSpinBox->setDecimals(1);
41 lineWidthSpinBox->setNewUnit(0);
42 lineWidthSpinBox->setMaximum(36);
43 lineWidthSpinBox->setDecimals(1);
44 calPenLineWidthSpinBox->setNewUnit(0);
45 calPenLineWidthSpinBox->setMaximum(36);
46 calPenLineWidthSpinBox->setDecimals(1);
47 calPenWidthSpinBox->setNewUnit(0);
48 calPenWidthSpinBox->setMaximum(100);
49 calPenWidthSpinBox->setDecimals(1);
50 calPenAngleSpinBox->setNewUnit(6);
51 calPenAngleSpinBox->setMaximum(180);
52 calPenAngleSpinBox->setMinimum(-180);
53 calPenAngleSpinBox->setDecimals(0);
54 shapeLineWidthSpinBox->setSpecialValueText( tr("Hairline"));
55 lineWidthSpinBox->setSpecialValueText( tr("Hairline"));
56 calPenLineWidthSpinBox->setSpecialValueText( tr("Hairline"));
57 textSizeSpinBox->setNewUnit(0);
58 textSizeSpinBox->setMinimum(0.5);
59 textSizeSpinBox->setMaximum(2048);
60 }
61
62 Prefs_ItemTools::~Prefs_ItemTools() = default;
63
64
languageChange()65 void Prefs_ItemTools::languageChange()
66 {
67 textPreviewWidget->setText( tr( "Woven silk pyjamas exchanged for blue quartz" ));
68 scalingLockToolButton->setToolTip( tr( "Keep horizontal and vertical scaling the same" ) );
69 }
70
unitChange(int newIndex)71 void Prefs_ItemTools::unitChange(int newIndex)
72 {
73 textColumnGapSpinBox->setNewUnit(newIndex);
74 textTabWidthSpinBox->setNewUnit(newIndex);
75 topTextDistanceSpinBox->setNewUnit(newIndex);
76 bottomTextDistanceSpinBox->setNewUnit(newIndex);
77 leftTextDistanceSpinBox->setNewUnit(newIndex);
78 rightTextDistanceSpinBox->setNewUnit(newIndex);
79 }
80
restoreDefaults(struct ApplicationPrefs * prefsData)81 void Prefs_ItemTools::restoreDefaults(struct ApplicationPrefs *prefsData)
82 {
83 enableSignals(false);
84 int docUnitIndex = prefsData->docSetupPrefs.docUnitIndex;
85 double unitRatio = unitGetRatioFromIndex(docUnitIndex);
86 unitChange(docUnitIndex);
87
88 PrefsManager& prefsManager=PrefsManager::instance();
89 ColorList* colorList = (m_doc != nullptr) ? (&m_doc->PageColors) : prefsManager.colorSetPtr();
90
91 //Text Tool
92 for (int i=0; i<textFontComboBox->count(); ++i)
93 {
94 if (textFontComboBox->itemText(i) == prefsData->itemToolPrefs.textFont)
95 {
96 textFontComboBox->setCurrentIndex(i);
97 break;
98 }
99 }
100 textSizeSpinBox->setValue(prefsData->itemToolPrefs.textSize / 10);
101 textColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.textColor);
102 textColorShadingSpinBox->setValue(prefsData->itemToolPrefs.textShade);
103 textStrokeColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.textStrokeColor);
104 textStrokeShadingSpinBox->setValue(prefsData->itemToolPrefs.textStrokeShade);
105 textFrameFillColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.textFillColor);
106 textFrameFillShadingSpinBox->setValue(prefsData->itemToolPrefs.textFillColorShade);
107 textFrameLineColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.textLineColor);
108 textFrameLineShadingSpinBox->setValue(prefsData->itemToolPrefs.textLineColorShade);
109 textTabFillCharComboBox->clear();
110 textTabFillCharComboBox->addItem( tr("None", "tab fill" ));
111 textTabFillCharComboBox->addItem( tr("Dot"));
112 textTabFillCharComboBox->addItem( tr("Hyphen"));
113 textTabFillCharComboBox->addItem( tr("Underscore"));
114 textTabFillCharComboBox->addItem( tr("Custom"));
115 if (prefsData->itemToolPrefs.textTabFillChar.isEmpty())
116 {
117 textTabFillCharComboBox->setCurrentIndex(0);
118 }
119 else if (prefsData->itemToolPrefs.textTabFillChar == ".")
120 {
121 textTabFillCharComboBox->setCurrentIndex(1);
122 }
123 else if (prefsData->itemToolPrefs.textTabFillChar == "-")
124 {
125 textTabFillCharComboBox->setCurrentIndex(2);
126 }
127 else if (prefsData->itemToolPrefs.textTabFillChar == "_")
128 {
129 textTabFillCharComboBox->setCurrentIndex(3);
130 }
131 else
132 {
133 textTabFillCharComboBox->setCurrentIndex(4);
134 textTabFillCharComboBox->setEditable(true);
135 textTabFillCharComboBox->setItemText(textTabFillCharComboBox->currentIndex(), CommonStrings::trCustomTabFill + prefsData->itemToolPrefs.textTabFillChar);
136 }
137 textTabWidthSpinBox->setValue(prefsData->itemToolPrefs.textTabWidth * unitRatio);
138 textColumnsSpinBox->setValue(prefsData->itemToolPrefs.textColumns);
139 textColumnGapSpinBox->setValue(prefsData->itemToolPrefs.textColumnGap * unitRatio);
140 topTextDistanceSpinBox->setValue(prefsData->itemToolPrefs.textDistances.top() * unitRatio);
141 bottomTextDistanceSpinBox->setValue(prefsData->itemToolPrefs.textDistances.bottom() * unitRatio);
142 leftTextDistanceSpinBox->setValue(prefsData->itemToolPrefs.textDistances.left() * unitRatio);
143 rightTextDistanceSpinBox->setValue(prefsData->itemToolPrefs.textDistances.right() * unitRatio);
144 firstLineOffsetComboBox->setCurrentIndex((int) prefsData->itemToolPrefs.firstLineOffset);
145
146 //Image Tool
147 imageFreeScalingRadioButton->setChecked( prefsData->itemToolPrefs.imageScaleType );
148 imageFrameScalingRadioButton->setChecked( !prefsData->itemToolPrefs.imageScaleType );
149 imageHorizontalScalingSpinBox->setValue(qRound(prefsData->itemToolPrefs.imageScaleX * 100));
150 imageVerticalScalingSpinBox->setValue(qRound(prefsData->itemToolPrefs.imageScaleY * 100));
151 imageKeepAspectRatioCheckBox->setChecked(prefsData->itemToolPrefs.imageAspectRatio);
152 scalingLockToolButton->setChecked(prefsData->itemToolPrefs.imageAspectRatio);
153 imageFrameFillColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.imageFillColor);
154 imageFrameFillShadingSpinBox->setValue(prefsData->itemToolPrefs.imageFillColorShade );
155 imageFrameLineColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.imageStrokeColor);
156 imageFrameLineShadingSpinBox->setValue(prefsData->itemToolPrefs.imageStrokeColorShade );
157 imageUseEmbeddedClippingPathCheckBox->setChecked(prefsData->itemToolPrefs.imageUseEmbeddedPath);
158 switch (prefsData->itemToolPrefs.imageLowResType)
159 {
160 case 0:
161 onscreenResolutionFullRadioButton->setChecked(true);
162 break;
163 case 1:
164 onscreenResolutionNormalRadioButton->setChecked(true);
165 break;
166 case 2:
167 onscreenResolutionLowRadioButton->setChecked(true);
168 break;
169 }
170
171 //Shape Tool
172 shapeFrameLineColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.shapeLineColor);
173 shapeFrameLineShadingSpinBox->setValue(prefsData->itemToolPrefs.shapeLineColorShade);
174 shapeFrameFillColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.shapeFillColor);
175 shapeFrameFillShadingSpinBox->setValue(prefsData->itemToolPrefs.shapeFillColorShade);
176 shapeFrameLineStyleComboBox->setCurrentIndex(static_cast<int>(prefsData->itemToolPrefs.shapeLineStyle) - 1);
177 shapeLineWidthSpinBox->setValue(prefsData->itemToolPrefs.shapeLineWidth);
178
179 //Polygon Tool
180 polygonWidget->restoreDefaults(&prefsData->itemToolPrefs);
181
182 //Line Tool
183 lineFillColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.lineColor);
184
185 lineFillColorShadingSpinBox->setValue(prefsData->itemToolPrefs.lineColorShade);
186 lineStyleComboBox->setCurrentIndex(static_cast<int>(prefsData->itemToolPrefs.lineStyle) - 1);
187 if (m_doc != nullptr)
188 {
189 lineStartArrowComboBox->rebuildList(&m_doc->arrowStyles());
190 lineEndArrowComboBox->rebuildList(&m_doc->arrowStyles());
191 }
192 else
193 {
194 lineStartArrowComboBox->rebuildList(&prefsData->arrowStyles);
195 lineEndArrowComboBox->rebuildList(&prefsData->arrowStyles);
196 }
197 lineStartArrowComboBox->setCurrentIndex(prefsData->itemToolPrefs.lineStartArrow);
198 lineEndArrowComboBox->setCurrentIndex(prefsData->itemToolPrefs.lineEndArrow);
199 lineWidthSpinBox->setValue(prefsData->itemToolPrefs.lineWidth);
200 //
201 //Calligraphic Pen Tool
202 calPenFillColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.calligraphicPenFillColor);
203 calPenFillShadingSpinBox->setValue(prefsData->itemToolPrefs.calligraphicPenFillColorShade);
204 calPenColorComboBox->initColorList(colorList, m_doc, prefsData->itemToolPrefs.calligraphicPenLineColor);
205 calPenLineShadingSpinBox->setValue(prefsData->itemToolPrefs.calligraphicPenLineColorShade);
206 calPenStyleComboBox->setCurrentIndex(static_cast<int>(prefsData->itemToolPrefs.calligraphicPenStyle) - 1);
207 calPenLineWidthSpinBox->setValue(prefsData->itemToolPrefs.calligraphicPenLineWidth);
208 calPenAngleSpinBox->setValue(prefsData->itemToolPrefs.calligraphicPenAngle);
209 calPenWidthSpinBox->setValue(prefsData->itemToolPrefs.calligraphicPenWidth);
210
211 // Arc Tool
212 arcDisplay->restoreDefaults(&prefsData->itemToolPrefs);
213 // Spiral Tool
214 spiralDisplay->restoreDefaults(&prefsData->itemToolPrefs);
215 imageScalingTypeChange();
216 enableSignals(true);
217 }
218
saveGuiToPrefs(struct ApplicationPrefs * prefsData) const219 void Prefs_ItemTools::saveGuiToPrefs(struct ApplicationPrefs *prefsData) const
220 {
221
222 //Text Tool
223 prefsData->itemToolPrefs.textFont = textFontComboBox->currentText();
224 prefsData->itemToolPrefs.textSize = textSizeSpinBox->value() * 10;
225 prefsData->itemToolPrefs.textFillColor = textFrameFillColorComboBox->currentText();
226 if (prefsData->itemToolPrefs.textFillColor == CommonStrings::tr_NoneColor)
227 prefsData->itemToolPrefs.textFillColor = CommonStrings::None;
228 prefsData->itemToolPrefs.textLineColor = textFrameLineColorComboBox->currentText();
229 if (prefsData->itemToolPrefs.textLineColor == CommonStrings::tr_NoneColor)
230 prefsData->itemToolPrefs.textLineColor = CommonStrings::None;
231 prefsData->itemToolPrefs.textFillColorShade = textFrameFillShadingSpinBox->value();
232 prefsData->itemToolPrefs.textLineColorShade = textFrameLineShadingSpinBox->value();
233 prefsData->itemToolPrefs.textShade = textColorShadingSpinBox->value();
234 prefsData->itemToolPrefs.textStrokeShade = textStrokeShadingSpinBox->value();
235 prefsData->itemToolPrefs.textColor = textColorComboBox->currentText();
236 if (prefsData->itemToolPrefs.textColor == CommonStrings::tr_NoneColor)
237 prefsData->itemToolPrefs.textColor = CommonStrings::None;
238 prefsData->itemToolPrefs.textStrokeColor = textStrokeColorComboBox->currentText();
239 if (prefsData->itemToolPrefs.textStrokeColor == CommonStrings::tr_NoneColor)
240 prefsData->itemToolPrefs.textStrokeColor = CommonStrings::None;
241 prefsData->itemToolPrefs.textColumns = textColumnsSpinBox->value();
242 int docUnitIndex = prefsData->docSetupPrefs.docUnitIndex;
243 double unitRatio = unitGetRatioFromIndex(docUnitIndex);
244 prefsData->itemToolPrefs.textColumnGap = textColumnGapSpinBox->value() / unitRatio;
245 prefsData->itemToolPrefs.textTabWidth = textTabWidthSpinBox->value() / unitRatio;
246 prefsData->itemToolPrefs.firstLineOffset = (FirstLineOffsetPolicy) firstLineOffsetComboBox->currentIndex();
247
248 switch (textTabFillCharComboBox->currentIndex())
249 {
250 case 0:
251 prefsData->itemToolPrefs.textTabFillChar = "";
252 break;
253 case 1:
254 prefsData->itemToolPrefs.textTabFillChar = ".";
255 break;
256 case 2:
257 prefsData->itemToolPrefs.textTabFillChar = "-";
258 break;
259 case 3:
260 prefsData->itemToolPrefs.textTabFillChar = "_";
261 break;
262 case 4:
263 prefsData->itemToolPrefs.textTabFillChar = textTabFillCharComboBox->currentText().right(1);
264 break;
265 }
266 prefsData->itemToolPrefs.textDistances.setTop(topTextDistanceSpinBox->value() / unitRatio);
267 prefsData->itemToolPrefs.textDistances.setBottom(bottomTextDistanceSpinBox->value() / unitRatio);
268 prefsData->itemToolPrefs.textDistances.setLeft(leftTextDistanceSpinBox->value() / unitRatio);
269 prefsData->itemToolPrefs.textDistances.setRight(rightTextDistanceSpinBox->value() / unitRatio);
270 prefsData->itemToolPrefs.imageFillColor = imageFrameFillColorComboBox->currentText();
271 if (prefsData->itemToolPrefs.imageFillColor == CommonStrings::tr_NoneColor)
272 prefsData->itemToolPrefs.imageFillColor = CommonStrings::None;
273 prefsData->itemToolPrefs.imageFillColorShade = imageFrameFillShadingSpinBox->value();
274 prefsData->itemToolPrefs.imageStrokeColor = imageFrameLineColorComboBox->currentText();
275 if (prefsData->itemToolPrefs.imageStrokeColor == CommonStrings::tr_NoneColor)
276 prefsData->itemToolPrefs.imageStrokeColor = CommonStrings::None;
277 prefsData->itemToolPrefs.imageStrokeColorShade = imageFrameFillShadingSpinBox->value();
278 prefsData->itemToolPrefs.imageScaleX = static_cast<double>(imageHorizontalScalingSpinBox->value()) / 100.0;
279 prefsData->itemToolPrefs.imageScaleY = static_cast<double>(imageVerticalScalingSpinBox->value()) / 100.0;
280 prefsData->itemToolPrefs.imageScaleType = imageFreeScalingRadioButton->isChecked();
281 prefsData->itemToolPrefs.imageAspectRatio = imageKeepAspectRatioCheckBox->isChecked();
282 prefsData->itemToolPrefs.imageUseEmbeddedPath = imageUseEmbeddedClippingPathCheckBox->isChecked();
283 int haRes = 0;
284 if (onscreenResolutionFullRadioButton->isChecked())
285 haRes = 0;
286 if (onscreenResolutionNormalRadioButton->isChecked())
287 haRes = 1;
288 if (onscreenResolutionLowRadioButton->isChecked())
289 haRes = 2;
290 prefsData->itemToolPrefs.imageLowResType = haRes;
291
292
293 //Shape tool
294 prefsData->itemToolPrefs.shapeLineColor = shapeFrameLineColorComboBox->currentText();
295 if (prefsData->itemToolPrefs.shapeLineColor == CommonStrings::tr_NoneColor)
296 prefsData->itemToolPrefs.shapeLineColor = CommonStrings::None;
297 prefsData->itemToolPrefs.shapeFillColor = shapeFrameFillColorComboBox->currentText();
298 if (prefsData->itemToolPrefs.shapeFillColor == CommonStrings::tr_NoneColor)
299 prefsData->itemToolPrefs.shapeFillColor = CommonStrings::None;
300 prefsData->itemToolPrefs.shapeFillColorShade = shapeFrameFillShadingSpinBox->value();
301 prefsData->itemToolPrefs.shapeLineColorShade = shapeFrameLineShadingSpinBox->value();
302 prefsData->itemToolPrefs.shapeLineStyle = static_cast<Qt::PenStyle>(shapeFrameLineStyleComboBox->currentIndex()) + 1;
303 prefsData->itemToolPrefs.shapeLineWidth = shapeLineWidthSpinBox->value();
304
305
306
307 //Polygon Tool
308 polygonWidget->saveGuiToPrefs(&prefsData->itemToolPrefs);
309
310 //Line Tool
311 prefsData->itemToolPrefs.lineColor = lineFillColorComboBox->currentText();
312 if (prefsData->itemToolPrefs.lineColor == CommonStrings::tr_NoneColor)
313 prefsData->itemToolPrefs.lineColor = CommonStrings::None;
314 prefsData->itemToolPrefs.lineColorShade = lineFillColorShadingSpinBox->value();
315 prefsData->itemToolPrefs.lineStyle = static_cast<Qt::PenStyle>(lineStyleComboBox->currentIndex()) + 1;
316 prefsData->itemToolPrefs.lineWidth = lineWidthSpinBox->value();
317 prefsData->itemToolPrefs.lineStartArrow = lineStartArrowComboBox->currentIndex();
318 prefsData->itemToolPrefs.lineEndArrow = lineEndArrowComboBox->currentIndex();
319 //Calligraphic Pen Tool
320 prefsData->itemToolPrefs.calligraphicPenFillColor = calPenFillColorComboBox->currentText();
321 if (prefsData->itemToolPrefs.calligraphicPenFillColor == CommonStrings::tr_NoneColor)
322 prefsData->itemToolPrefs.calligraphicPenFillColor = CommonStrings::None;
323 prefsData->itemToolPrefs.calligraphicPenLineColor = calPenColorComboBox->currentText();
324 if (prefsData->itemToolPrefs.calligraphicPenLineColor == CommonStrings::tr_NoneColor)
325 prefsData->itemToolPrefs.calligraphicPenLineColor = CommonStrings::None;
326 prefsData->itemToolPrefs.calligraphicPenFillColorShade = calPenFillShadingSpinBox->value();
327 prefsData->itemToolPrefs.calligraphicPenLineColorShade = calPenLineShadingSpinBox->value();
328 prefsData->itemToolPrefs.calligraphicPenStyle = static_cast<Qt::PenStyle>(calPenStyleComboBox->currentIndex()) + 1;
329 prefsData->itemToolPrefs.calligraphicPenLineWidth = calPenLineWidthSpinBox->value();
330 prefsData->itemToolPrefs.calligraphicPenAngle = calPenAngleSpinBox->value();
331 prefsData->itemToolPrefs.calligraphicPenWidth = calPenWidthSpinBox->value();
332
333 //Arc Tool
334 arcDisplay->saveGuiToPrefs(&prefsData->itemToolPrefs);
335 //Spiral Tool
336 spiralDisplay->saveGuiToPrefs(&prefsData->itemToolPrefs);
337 }
338
enableSignals(bool on)339 void Prefs_ItemTools::enableSignals(bool on)
340 {
341 if (on)
342 {
343 connect(textFontComboBox, SIGNAL(activated(int)), this, SLOT(updateFontPreview()));
344 connect(textSizeSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updateFontPreview()));
345 connect(textColorComboBox, SIGNAL(activated(int)), this, SLOT(updateFontPreview()));
346 connect(textFrameFillColorComboBox, SIGNAL(activated(int)), this, SLOT(updateFontPreview()));
347 connect(textFrameFillShadingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateFontPreview()));
348 connect(textColorShadingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateFontPreview()));
349 connect(scalingLockToolButton, SIGNAL(clicked()), this, SLOT(toggleImagesScalingChain()));
350 connect(imageHorizontalScalingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(imageHorizontalScalingChange()));
351 connect(imageKeepAspectRatioCheckBox, SIGNAL(toggled(bool)), scalingLockToolButton, SLOT(setChecked(bool)));
352 connect(imageVerticalScalingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(imageVerticalScalingChange()));
353 connect(imageFreeScalingRadioButton, SIGNAL(clicked(bool)), this, SLOT(imageScalingTypeChange()));
354 connect(imageFrameScalingRadioButton, SIGNAL(clicked(bool)), this, SLOT(imageScalingTypeChange()));
355 }
356 else
357 {
358 disconnect(textFontComboBox, SIGNAL(activated(int)), this, SLOT(updateFontPreview()));
359 disconnect(textSizeSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updateFontPreview()));
360 disconnect(textColorComboBox, SIGNAL(activated(int)), this, SLOT(updateFontPreview()));
361 disconnect(textFrameFillColorComboBox, SIGNAL(activated(int)), this, SLOT(updateFontPreview()));
362 disconnect(textFrameFillShadingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateFontPreview()));
363 disconnect(textColorShadingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateFontPreview()));
364 disconnect(scalingLockToolButton, SIGNAL(clicked()), this, SLOT(toggleImagesScalingChain()));
365 disconnect(imageHorizontalScalingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(imageHorizontalScalingChange()));
366 disconnect(imageVerticalScalingSpinBox, SIGNAL(valueChanged(int)), this, SLOT(imageVerticalScalingChange()));
367 }
368 }
369
enableFontPreview(bool showPreview)370 void Prefs_ItemTools::enableFontPreview(bool showPreview)
371 {
372 showFontPreview = showPreview;
373 updateFontPreview();
374 }
375
updateFontPreview()376 void Prefs_ItemTools::updateFontPreview()
377 {
378 if (!showFontPreview)
379 return;
380
381 SampleItem si;
382 si.setDevicePixelRatio(devicePixelRatioF());
383 si.setText( tr("Woven silk pyjamas exchanged for blue quartz"));
384 if (textFrameFillColorComboBox->currentText() != CommonStrings::tr_NoneColor)
385 {
386 if (m_doc != nullptr)
387 {
388 si.setBgColor(m_doc->PageColors[textFrameFillColorComboBox->currentText()].getRawRGBColor());
389 }
390 else
391 {
392 PrefsManager& prefsManager = PrefsManager::instance();
393 ColorList* colorList = prefsManager.colorSetPtr();
394 si.setBgColor((*colorList)[textFrameFillColorComboBox->currentText()].getRawRGBColor());
395 }
396 si.setBgShade(textFrameFillShadingSpinBox->value());
397 }
398 else
399 si.setBgColor(palette().color(QPalette::Window));
400
401 if (textColorComboBox->currentText() != CommonStrings::tr_NoneColor)
402 {
403 if (m_doc != nullptr)
404 {
405 si.setTxColor(m_doc->PageColors[textColorComboBox->currentText()].getRawRGBColor());
406 }
407 else
408 {
409 PrefsManager& prefsManager = PrefsManager::instance();
410 ColorList* colorList = prefsManager.colorSetPtr();
411 si.setTxColor((*colorList)[textColorComboBox->currentText()].getRawRGBColor());
412 }
413 si.setTxShade(textColorShadingSpinBox->value());
414 }
415 else
416 si.setTxColor(palette().color(QPalette::Window));
417 si.setFont(textFontComboBox->currentText());
418 si.setFontSize(textSizeSpinBox->value() * 10, true);
419 textPreviewWidget->setPixmap(si.getSample(textPreviewWidget->width(), textPreviewWidget->height()));
420 }
421
toggleImagesScalingChain()422 void Prefs_ItemTools::toggleImagesScalingChain()
423 {
424 imageHorizontalScalingChange();
425 imageKeepAspectRatioCheckBox->setChecked(scalingLockToolButton->isChecked());
426 }
427
imageHorizontalScalingChange()428 void Prefs_ItemTools::imageHorizontalScalingChange()
429 {
430 if (scalingLockToolButton->isChecked())
431 imageVerticalScalingSpinBox->setValue(imageHorizontalScalingSpinBox->value());
432 }
433
imageVerticalScalingChange()434 void Prefs_ItemTools::imageVerticalScalingChange()
435 {
436 if (scalingLockToolButton->isChecked())
437 imageHorizontalScalingSpinBox->setValue(imageVerticalScalingSpinBox->value());
438 }
439
imageScalingTypeChange()440 void Prefs_ItemTools::imageScalingTypeChange()
441 {
442 bool b=imageFreeScalingRadioButton->isChecked();
443 imageKeepAspectRatioCheckBox->setEnabled(!b);
444 imageHorizontalScalingSpinBox->setEnabled(b);
445 imageVerticalScalingSpinBox->setEnabled(b);
446 scalingLockToolButton->setEnabled(b);
447 }
448
449
450