Rev 18480 | Rev 18795 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
16546 | jghali | 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 "propertiespalette_shape.h" |
||
9 | |||
17539 | jghali | 10 | #if defined(_MSC_VER) && !defined(_USE_MATH_DEFINES) |
16546 | jghali | 11 | #define _USE_MATH_DEFINES |
12 | #endif |
||
13 | #include <cmath> |
||
14 | #include "autoform.h" |
||
15 | #include "commonstrings.h" |
||
16 | #include "sccolorengine.h" |
||
17 | #include "pageitem_arc.h" |
||
18 | #include "pageitem_textframe.h" |
||
19 | #include "pageitem_regularpolygon.h" |
||
20 | #include "polyprops.h" |
||
21 | #include "sccombobox.h" |
||
22 | #include "scribus.h" |
||
23 | #include "scribuscore.h" |
||
24 | #include "scraction.h" |
||
25 | #include "scribusview.h" |
||
26 | #include "selection.h" |
||
27 | #include "units.h" |
||
28 | #include "undomanager.h" |
||
29 | #include "util.h" |
||
30 | #include "util_icon.h" |
||
31 | #include "util_math.h" |
||
32 | |||
33 | #include "ui/nodeeditpalette.h" |
||
34 | #include "ui/propertiespalette_utils.h" |
||
35 | #include "ui/propertiespalette_xyz.h" |
||
36 | |||
37 | PropertiesPalette_Shape::PropertiesPalette_Shape( QWidget* parent) : QWidget(parent) |
||
38 | { |
||
39 | m_ScMW = 0; |
||
40 | m_doc = 0; |
||
41 | m_haveDoc = false; |
||
42 | m_haveItem = false; |
||
43 | m_unitRatio = 1.0; |
||
44 | |||
45 | m_tmpSelection = new Selection(this, false); |
||
46 | m_tmpSelection->clear(); |
||
47 | |||
48 | setupUi(this); |
||
17383 | fschmid | 49 | setSizePolicy( QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum)); |
16546 | jghali | 50 | |
51 | roundRectLabel->setBuddy(roundRect); |
||
52 | |||
53 | textFlowDisabled->setIcon(QIcon(loadIcon("flow-none.png"))); |
||
54 | textFlowUsesFrameShape->setIcon(QIcon(loadIcon("flow-frame.png"))); |
||
55 | textFlowUsesBoundingBox->setIcon(QIcon(loadIcon("flow-bounding.png"))); |
||
56 | textFlowUsesContourLine->setIcon(QIcon(loadIcon("flow-contour.png"))); |
||
57 | textFlowUsesImageClipping->setIcon(QIcon(loadIcon("flow-contour.png"))); |
||
58 | |||
59 | languageChange(); |
||
60 | |||
61 | connect(textFlowBtnGroup, SIGNAL(buttonClicked(int)), this, SLOT(handleTextFlow())); |
||
62 | connect(editShape , SIGNAL(clicked()) , this, SLOT(handleShapeEdit())); |
||
63 | connect(roundRect , SIGNAL(valueChanged(double)) , this, SLOT(handleCornerRadius())); |
||
64 | connect(evenOdd , SIGNAL(clicked()) , this, SLOT(handleFillRule()) ); |
||
65 | connect(nonZero , SIGNAL(clicked()) , this, SLOT(handleFillRule()) ); |
||
66 | connect(customShape, SIGNAL(FormSel(int, int, qreal *)), this, SLOT(handleNewShape(int, int, qreal *))); |
||
67 | |||
68 | roundRect->showValue(0); |
||
69 | stackedWidget->setCurrentIndex(0); |
||
70 | } |
||
71 | |||
72 | void PropertiesPalette_Shape::changeEvent(QEvent *e) |
||
73 | { |
||
74 | if (e->type() == QEvent::LanguageChange) |
||
75 | { |
||
76 | languageChange(); |
||
77 | return; |
||
78 | } |
||
79 | QWidget::changeEvent(e); |
||
80 | } |
||
81 | |||
82 | |||
83 | void PropertiesPalette_Shape::setMainWindow(ScribusMainWindow* mw) |
||
84 | { |
||
85 | m_ScMW = mw; |
||
86 | |||
87 | connect(m_ScMW, SIGNAL(UpdateRequest(int)), this , SLOT(handleUpdateRequest(int))); |
||
88 | } |
||
89 | |||
90 | void PropertiesPalette_Shape::setDoc(ScribusDoc *d) |
||
91 | { |
||
92 | if((d == (ScribusDoc*) m_doc) || (m_ScMW && m_ScMW->scriptIsRunning())) |
||
93 | return; |
||
94 | |||
95 | if (m_doc) |
||
96 | { |
||
97 | disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
98 | disconnect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
99 | } |
||
100 | |||
101 | m_doc = d; |
||
102 | m_item = NULL; |
||
103 | m_unitRatio = m_doc->unitRatio(); |
||
104 | m_unitIndex = m_doc->unitIndex(); |
||
105 | |||
106 | m_haveDoc = true; |
||
107 | m_haveItem = false; |
||
108 | |||
109 | roundRect->setValues( -300, 300, 2, 0); |
||
110 | |||
111 | connect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
112 | connect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
113 | } |
||
114 | |||
115 | void PropertiesPalette_Shape::unsetDoc() |
||
116 | { |
||
117 | if (m_doc) |
||
118 | { |
||
119 | disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
120 | disconnect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
121 | } |
||
122 | |||
123 | m_haveDoc = false; |
||
124 | m_haveItem = false; |
||
125 | m_doc = NULL; |
||
126 | m_item = NULL; |
||
127 | |||
128 | editShape->setEnabled(false); |
||
129 | roundRect->setEnabled(false); |
||
130 | roundRect->showValue(0); |
||
131 | setEnabled(false); |
||
132 | } |
||
133 | |||
134 | void PropertiesPalette_Shape::unsetItem() |
||
135 | { |
||
136 | m_haveItem = false; |
||
137 | m_item = NULL; |
||
138 | handleSelectionChanged(); |
||
139 | } |
||
140 | |||
141 | PageItem* PropertiesPalette_Shape::currentItemFromSelection() |
||
142 | { |
||
143 | PageItem *currentItem = NULL; |
||
144 | |||
17644 | craig | 145 | if (m_doc && m_doc->m_Selection->count()>0) |
146 | currentItem = m_doc->m_Selection->itemAt(0); |
||
16546 | jghali | 147 | |
148 | return currentItem; |
||
149 | } |
||
150 | |||
151 | void PropertiesPalette_Shape::setCustomShapeIcon(int submode) |
||
152 | { |
||
153 | customShape->setIcon( customShape->getIconPixmap(submode) ); |
||
154 | } |
||
155 | |||
156 | void PropertiesPalette_Shape::setLocked(bool isLocked) |
||
157 | { |
||
158 | QPalette pal(qApp->palette()); |
||
159 | if (isLocked) |
||
160 | pal.setCurrentColorGroup(QPalette::Disabled); |
||
161 | if ((m_haveDoc) && (m_haveItem)) |
||
162 | { |
||
163 | enableCustomShape(); |
||
17806 | fschmid | 164 | enableEditShape(); |
16546 | jghali | 165 | if (((m_item->asTextFrame()) || (m_item->asImageFrame()) || (m_item->asPolygon())) && (!m_item->ClipEdited) && ((m_item->FrameType == 0) || (m_item->FrameType == 2))) |
166 | roundRect->setEnabled(!isLocked); |
||
167 | else |
||
168 | roundRect->setEnabled(false); |
||
169 | } |
||
170 | } |
||
171 | |||
17806 | fschmid | 172 | void PropertiesPalette_Shape::setSizeLocked(bool ) |
16890 | jghali | 173 | { |
17806 | fschmid | 174 | enableEditShape(); |
16890 | jghali | 175 | } |
176 | |||
16546 | jghali | 177 | void PropertiesPalette_Shape::setRoundRectEnabled(bool enabled) |
178 | { |
||
179 | roundRect->setEnabled(enabled); |
||
180 | } |
||
181 | |||
182 | void PropertiesPalette_Shape::enableCustomShape() |
||
183 | { |
||
184 | bool enabled = false; |
||
185 | if (m_item) |
||
186 | { |
||
187 | enabled = true; |
||
188 | enabled &= !m_item->isArc(); |
||
189 | enabled &= !m_item->isLine(); |
||
190 | enabled &= !m_item->isPathText(); |
||
191 | enabled &= !m_item->isPolyLine(); |
||
192 | enabled &= !m_item->isSpiral(); |
||
193 | enabled &= !m_item->isRegularPolygon(); |
||
194 | enabled &= !m_item->locked(); |
||
17806 | fschmid | 195 | enabled &= !m_item->sizeLocked(); |
196 | enabled &= !m_item->isTable(); |
||
16546 | jghali | 197 | } |
198 | customShape->setEnabled(enabled); |
||
199 | } |
||
200 | |||
17806 | fschmid | 201 | void PropertiesPalette_Shape::enableEditShape() |
202 | { |
||
203 | bool enabled = false; |
||
204 | if (m_item) |
||
205 | { |
||
206 | enabled = true; |
||
207 | enabled &= !m_item->locked(); |
||
208 | enabled &= !m_item->sizeLocked(); |
||
209 | enabled &= !m_item->isTable(); |
||
210 | } |
||
211 | editShape->setEnabled(enabled); |
||
212 | } |
||
213 | |||
16546 | jghali | 214 | void PropertiesPalette_Shape::handleSelectionChanged() |
215 | { |
||
216 | if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning()) |
||
217 | return; |
||
218 | |||
219 | PageItem* currItem = currentItemFromSelection(); |
||
220 | if (m_doc->m_Selection->count() > 1) |
||
221 | { |
||
222 | roundRect->showValue(0); |
||
223 | } |
||
224 | else |
||
225 | { |
||
226 | int itemType = currItem ? (int) currItem->itemType() : -1; |
||
227 | |||
228 | m_haveItem = (itemType != -1); |
||
229 | if (itemType != -1) |
||
230 | { |
||
17806 | fschmid | 231 | enableEditShape(); |
16546 | jghali | 232 | enableCustomShape(); |
233 | } |
||
234 | else |
||
235 | { |
||
236 | editShape->setEnabled(false); |
||
237 | customShape->setEnabled(false); |
||
238 | } |
||
239 | switch (itemType) |
||
240 | { |
||
241 | case -1: |
||
242 | setEnabled(false); |
||
243 | roundRect->setEnabled(false); |
||
244 | roundRect->showValue(0); |
||
245 | break; |
||
246 | case PageItem::ImageFrame: |
||
247 | case PageItem::LatexFrame: |
||
248 | case PageItem::OSGFrame: |
||
249 | if (currItem->asOSGFrame()) |
||
250 | { |
||
251 | setEnabled(false); |
||
252 | roundRect->setEnabled(false); |
||
253 | editShape->setEnabled(false); |
||
254 | customShape->setEnabled(false); |
||
255 | } |
||
256 | else |
||
257 | { |
||
258 | setEnabled(true); |
||
259 | if ((!currItem->ClipEdited) && ((currItem->FrameType == 0) || (currItem->FrameType == 2))) |
||
260 | roundRect->setEnabled(!currItem->locked()); |
||
261 | else |
||
262 | roundRect->setEnabled(false); |
||
263 | if ((m_doc->m_Selection->itemAt(0)->FrameType == 0) || (m_doc->m_Selection->itemAt(0)->FrameType == 2)) |
||
264 | roundRect->setEnabled(!currItem->locked()); |
||
265 | } |
||
266 | break; |
||
267 | case PageItem::TextFrame: |
||
268 | setEnabled(true); |
||
269 | if ((!currItem->ClipEdited) && ((currItem->FrameType == 0) || (currItem->FrameType == 2))) |
||
270 | roundRect->setEnabled(!currItem->locked()); |
||
271 | else |
||
272 | roundRect->setEnabled(false); |
||
273 | break; |
||
274 | case PageItem::Line: |
||
275 | setEnabled(false); |
||
276 | roundRect->setEnabled(false); |
||
277 | break; |
||
278 | case PageItem::Arc: |
||
279 | case PageItem::ItemType1: |
||
280 | case PageItem::ItemType3: |
||
281 | case PageItem::Polygon: |
||
282 | case PageItem::RegularPolygon: |
||
283 | setEnabled(true); |
||
284 | if ((!currItem->ClipEdited) && ((currItem->FrameType == 0) || (currItem->FrameType == 2))) |
||
285 | roundRect->setEnabled(!currItem->locked()); |
||
286 | else |
||
287 | roundRect->setEnabled(false); |
||
288 | break; |
||
289 | case PageItem::PolyLine: |
||
290 | case PageItem::Spiral: |
||
291 | setEnabled(true); |
||
292 | roundRect->setEnabled(false); |
||
293 | break; |
||
294 | case PageItem::PathText: |
||
295 | setEnabled(true); |
||
296 | roundRect->setEnabled(false); |
||
297 | break; |
||
298 | case PageItem::Symbol: |
||
299 | setEnabled(false); |
||
300 | if ((!currItem->ClipEdited) && ((currItem->FrameType == 0) || (currItem->FrameType == 2))) |
||
301 | roundRect->setEnabled(!currItem->locked()); |
||
302 | else |
||
303 | roundRect->setEnabled(false); |
||
304 | break; |
||
17806 | fschmid | 305 | case PageItem::Table: |
306 | setEnabled(true); |
||
307 | roundRect->setEnabled(false); |
||
308 | editShape->setEnabled(false); |
||
309 | customShape->setEnabled(false); |
||
310 | break; |
||
16546 | jghali | 311 | } |
312 | } |
||
16814 | jghali | 313 | setCurrentItem(currItem); |
16546 | jghali | 314 | updateGeometry(); |
18480 | jghali | 315 | //repaint(); |
16546 | jghali | 316 | } |
317 | |||
318 | void PropertiesPalette_Shape::handleUpdateRequest(int updateFlags) |
||
319 | { |
||
320 | if ((updateFlags & reqCustomShapeUpdate) && (m_haveDoc && m_doc)) |
||
321 | { |
||
322 | setCustomShapeIcon(m_doc->SubMode); |
||
323 | } |
||
324 | } |
||
325 | |||
326 | void PropertiesPalette_Shape::setCurrentItem(PageItem *item) |
||
327 | { |
||
328 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
329 | return; |
||
330 | //CB We shouldnt really need to process this if our item is the same one |
||
331 | //maybe we do if the item has been changed by scripter.. but that should probably |
||
332 | //set some status if so. |
||
333 | //FIXME: This wont work until when a canvas deselect happens, m_item must be NULL. |
||
334 | //if (m_item == i) |
||
335 | // return; |
||
336 | |||
16814 | jghali | 337 | if (item && !m_doc) |
16546 | jghali | 338 | setDoc(item->doc()); |
339 | |||
340 | m_haveItem = false; |
||
341 | m_item = item; |
||
342 | |||
16814 | jghali | 343 | if (!m_item) return; |
344 | |||
16546 | jghali | 345 | if (m_item->FrameType == 0) |
346 | customShape->setIcon(customShape->getIconPixmap(0)); |
||
347 | if (m_item->FrameType == 1) |
||
348 | customShape->setIcon(customShape->getIconPixmap(1)); |
||
349 | if (m_item->FrameType > 3) |
||
350 | customShape->setIcon(customShape->getIconPixmap(m_item->FrameType-2)); |
||
351 | |||
352 | roundRect->setValue(m_item->cornerRadius()*m_unitRatio); |
||
353 | displayTextFlowMode(m_item->textFlowMode()); |
||
354 | |||
355 | if (m_item->asPathText()) |
||
356 | { |
||
357 | stackedWidget->setCurrentIndex(0); |
||
358 | } |
||
359 | else if (m_item->asTextFrame()) |
||
360 | { |
||
361 | stackedWidget->setCurrentIndex(0); |
||
362 | } |
||
363 | else |
||
364 | { |
||
365 | stackedWidget->setCurrentIndex(1); |
||
366 | fillRuleGroup->setVisible(m_item->itemType() != PageItem::ImageFrame); |
||
367 | } |
||
368 | setLocked(m_item->locked()); |
||
16890 | jghali | 369 | setSizeLocked(m_item->sizeLocked()); |
16546 | jghali | 370 | nonZero->setChecked(!m_item->fillRule); |
371 | evenOdd->setChecked(m_item->fillRule); |
||
372 | |||
373 | // Frame type 3 is obsolete: CR 2005-02-06 |
||
374 | //if (((i->itemType() == PageItem::TextFrame) || (i->itemType() == PageItem::ImageFrame) || (i->itemType() == 3)) && (!i->ClipEdited)) |
||
375 | if (((m_item->asTextFrame()) || (m_item->asImageFrame())) && (!m_item->ClipEdited) && ((m_item->FrameType == 0) || (m_item->FrameType == 2))) |
||
376 | roundRect->setEnabled(true); |
||
377 | else |
||
378 | { |
||
379 | roundRect->setEnabled ((m_item->asPolygon()) && (!m_item->ClipEdited) && ((m_item->FrameType == 0) || (m_item->FrameType == 2))); |
||
380 | } |
||
381 | if (m_item->asOSGFrame()) |
||
382 | { |
||
383 | setEnabled(false); |
||
384 | roundRect->setEnabled(false); |
||
385 | editShape->setEnabled(false); |
||
386 | customShape->setEnabled(false); |
||
387 | } |
||
388 | if (m_item->asSymbolFrame()) |
||
389 | { |
||
390 | setEnabled(false); |
||
391 | } |
||
17806 | fschmid | 392 | if (m_item->asTable()) |
393 | { |
||
394 | setEnabled(true); |
||
395 | roundRect->setEnabled(false); |
||
396 | editShape->setEnabled(false); |
||
397 | customShape->setEnabled(false); |
||
398 | } |
||
17057 | fschmid | 399 | m_haveItem = true; |
400 | displayTextFlowMode(m_item->textFlowMode()); |
||
16546 | jghali | 401 | } |
402 | |||
403 | void PropertiesPalette_Shape::handleTextFlow() |
||
404 | { |
||
405 | PageItem::TextFlowMode mode = PageItem::TextFlowDisabled; |
||
406 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
407 | return; |
||
408 | if ((m_haveDoc) && (m_haveItem)) |
||
409 | { |
||
410 | if (!m_item->isGroup()) |
||
411 | { |
||
412 | if (textFlowDisabled->isChecked()) |
||
413 | mode = PageItem::TextFlowDisabled; |
||
414 | if (textFlowUsesFrameShape->isChecked()) |
||
415 | mode = PageItem::TextFlowUsesFrameShape; |
||
416 | if (textFlowUsesBoundingBox->isChecked()) |
||
417 | mode = PageItem::TextFlowUsesBoundingBox; |
||
418 | if (textFlowUsesContourLine->isChecked()) |
||
419 | mode = PageItem::TextFlowUsesContourLine; |
||
420 | if (textFlowUsesImageClipping->isChecked()) |
||
421 | mode = PageItem::TextFlowUsesImageClipping; |
||
422 | } |
||
423 | m_item->setTextFlowMode(mode); |
||
17099 | jghali | 424 | m_doc->changed(); |
17057 | fschmid | 425 | m_doc->invalidateAll(); |
17038 | fschmid | 426 | m_doc->regionsChanged()->update(QRect()); |
16546 | jghali | 427 | } |
428 | } |
||
429 | |||
430 | void PropertiesPalette_Shape::handleShapeEdit() |
||
431 | { |
||
432 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
433 | return; |
||
434 | if ((m_haveDoc) && (m_haveItem)) |
||
435 | { |
||
436 | m_tmpSelection->clear(); |
||
437 | if (m_item->asRegularPolygon()) |
||
438 | { |
||
439 | m_ScMW->view->requestMode(modeEditPolygon); |
||
440 | roundRect->setEnabled(false); |
||
441 | } |
||
442 | else if (m_item->asArc()) |
||
443 | { |
||
444 | m_ScMW->view->requestMode(modeEditArc); |
||
445 | roundRect->setEnabled(false); |
||
446 | } |
||
447 | else if (m_item->asSpiral()) |
||
448 | { |
||
449 | m_ScMW->view->requestMode(modeEditSpiral); |
||
450 | roundRect->setEnabled(false); |
||
451 | } |
||
452 | else |
||
453 | { |
||
454 | m_ScMW->view->requestMode(modeEditClip); |
||
455 | roundRect->setEnabled(false); |
||
456 | connect(m_ScMW->nodePalette, SIGNAL(paletteClosed()), this, SLOT(handleShapeEditEnded())); |
||
457 | } |
||
17099 | jghali | 458 | m_doc->changed(); |
16546 | jghali | 459 | } |
460 | } |
||
461 | |||
462 | void PropertiesPalette_Shape::handleShapeEditEnded() |
||
463 | { |
||
464 | disconnect(m_ScMW->nodePalette, SIGNAL(paletteClosed()), this, SLOT(handleShapeEditEnded())); |
||
465 | if ((m_haveDoc) && (m_haveItem)) |
||
466 | { |
||
467 | if (m_tmpSelection->count() > 0) |
||
468 | { |
||
469 | m_doc->m_Selection->copy(*m_tmpSelection, false); |
||
470 | m_doc->m_Selection->connectItemToGUI(); |
||
471 | } |
||
472 | m_tmpSelection->clear(); |
||
473 | } |
||
474 | } |
||
475 | |||
476 | void PropertiesPalette_Shape::handleCornerRadius() |
||
477 | { |
||
478 | if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning()) |
||
479 | return; |
||
480 | m_item->setCornerRadius(roundRect->value() / m_unitRatio); |
||
481 | m_ScMW->view->SetFrameRounded(); |
||
17099 | jghali | 482 | m_doc->changed(); |
16546 | jghali | 483 | m_doc->regionsChanged()->update(QRect()); |
484 | } |
||
485 | |||
486 | void PropertiesPalette_Shape::handleFillRule() |
||
487 | { |
||
488 | if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning()) |
||
489 | return; |
||
490 | m_item->fillRule = evenOdd->isChecked(); |
||
491 | m_item->update(); |
||
492 | } |
||
493 | |||
494 | void PropertiesPalette_Shape::handleNewShape(int f, int c, qreal *vals) |
||
495 | { |
||
496 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
497 | return; |
||
498 | if ((m_haveDoc) && (m_haveItem)) |
||
499 | { |
||
500 | if ((m_item->itemType() == PageItem::PolyLine) || (m_item->itemType() == PageItem::PathText)) |
||
501 | return; |
||
502 | |||
503 | m_doc->item_setFrameShape(m_item, f, c, vals); |
||
504 | |||
505 | //ScribusDoc::changed() is called in item_setFrameShape() |
||
506 | //Hope this is enough |
||
507 | //emit DocChanged(); |
||
508 | |||
509 | if ((m_item->itemType() == PageItem::ImageFrame) || (m_item->itemType() == PageItem::TextFrame)) |
||
510 | { |
||
511 | roundRect->setEnabled(f == 0); |
||
512 | return; |
||
513 | } |
||
514 | // m_item->convertTo(PageItem::Polygon); |
||
515 | // newSelection(6); |
||
516 | roundRect->setEnabled(f == 0); |
||
17097 | fschmid | 517 | m_doc->invalidateAll(); |
518 | m_doc->regionsChanged()->update(QRect()); |
||
16546 | jghali | 519 | } |
520 | } |
||
521 | |||
522 | void PropertiesPalette_Shape::displayTextFlowMode(PageItem::TextFlowMode mode) |
||
523 | { |
||
524 | if (!m_ScMW || m_ScMW->scriptIsRunning() || !m_haveItem) |
||
525 | return; |
||
526 | if (!m_item->isGroup()) |
||
527 | { |
||
528 | if (mode == PageItem::TextFlowDisabled) |
||
529 | textFlowDisabled->setChecked(true); |
||
530 | else if (mode == PageItem::TextFlowUsesFrameShape) |
||
531 | textFlowUsesFrameShape->setChecked(true); |
||
532 | else if (mode == PageItem::TextFlowUsesBoundingBox) |
||
533 | textFlowUsesBoundingBox->setChecked(true); |
||
534 | else if (mode == PageItem::TextFlowUsesContourLine) |
||
535 | textFlowUsesContourLine->setChecked(true); |
||
536 | else if (mode == PageItem::TextFlowUsesImageClipping) |
||
537 | textFlowUsesImageClipping->setChecked(true); |
||
538 | if ((m_item->asImageFrame()) && (m_item->imageClip.size() != 0)) |
||
539 | textFlowUsesImageClipping->setEnabled(true); |
||
540 | else |
||
541 | textFlowUsesImageClipping->setEnabled(false); |
||
542 | } |
||
543 | } |
||
544 | |||
545 | void PropertiesPalette_Shape::languageChange() |
||
546 | { |
||
547 | QString ptSuffix = tr(" pt"); |
||
548 | QString suffix = m_doc ? unitGetSuffixFromIndex(m_doc->unitIndex()) : ptSuffix; |
||
549 | roundRect->setSuffix(suffix); |
||
550 | |||
551 | shapeGroup->setTitle( tr("Shape:")); |
||
552 | customShape->setToolTip( tr("Choose the shape of frame...")); |
||
553 | editShape->setText( tr("&Edit...")); |
||
554 | roundRect->setToolTip( tr("Set radius of corner rounding")); |
||
555 | roundRectLabel->setText( tr("R&ound Corners:")); |
||
556 | fillRuleGroup->setTitle( tr("Fill Rule")); |
||
557 | evenOdd->setText( tr("Even-Odd")); |
||
558 | nonZero->setText( tr("Non Zero")); |
||
559 | |||
17250 | jghali | 560 | evenOdd->setToolTip( "<qt>" + tr("This rule determines the "insideness" of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses. If this number is odd, the point is inside, if even, the point is outside.") + "</qt>"); |
17252 | jghali | 561 | nonZero->setToolTip( "<qt>" + tr("This rule determines the "insideness" of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray. Starting with a count of zero, add one each time a path segment crosses the ray from left to right and subtract one each time a path segment crosses the ray from right to left. If the result is zero then the point is outside the path. Otherwise, it is inside.") + "</qt>"); |
17250 | jghali | 562 | |
16546 | jghali | 563 | textFlowGroup->setTitle( tr("Text &Flow Around Frame")); |
564 | textFlowDisabled->setText( tr("Disabled")); |
||
565 | textFlowUsesFrameShape->setText( tr("Use Frame &Shape")); |
||
566 | textFlowUsesBoundingBox->setText( tr("Use &Bounding Box")); |
||
567 | textFlowUsesContourLine->setText( tr("&Use Contour Line")); |
||
568 | textFlowUsesImageClipping->setText( tr("Use Image Clip Path")); |
||
569 | } |
||
570 | |||
571 | void PropertiesPalette_Shape::unitChange() |
||
572 | { |
||
573 | if (!m_doc) |
||
574 | return; |
||
575 | |||
576 | m_unitRatio = m_doc->unitRatio(); |
||
577 | m_unitIndex = m_doc->unitIndex(); |
||
578 | |||
579 | roundRect->blockSignals(true); |
||
580 | roundRect->setNewUnit( m_unitIndex ); |
||
581 | roundRect->blockSignals(false); |
||
582 | } |