Rev 18138 | Rev 18534 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4430 | cbradney | 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 | */ |
||
1789 | fschmid | 7 | |
3540 | cbradney | 8 | |
10862 | cbradney | 9 | #include "propertiespalette.h" |
3457 | avox | 10 | |
10200 | cbradney | 11 | #include <QCloseEvent> |
9931 | fschmid | 12 | #include <QComboBox> |
10200 | cbradney | 13 | #include <QEvent> |
14 | #include <QFocusEvent> |
||
8501 | cbradney | 15 | #include <QKeyEvent> |
13951 | fschmid | 16 | #include <QTransform> |
10200 | cbradney | 17 | #include <QObject> |
9931 | fschmid | 18 | #include <QPoint> |
10200 | cbradney | 19 | #include <QSpacerItem> |
20 | #include <QStackedWidget> |
||
9931 | fschmid | 21 | #include <QTimer> |
10200 | cbradney | 22 | #include <QToolBox> |
23 | #include <QToolTip> |
||
24 | #include <QVBoxLayout> |
||
25 | #include <QValidator> |
||
26 | #include <QWidget> |
||
3934 | cbradney | 27 | |
17539 | jghali | 28 | #if defined(_MSC_VER) && !defined(_USE_MATH_DEFINES) |
14170 | jghali | 29 | #define _USE_MATH_DEFINES |
30 | #endif |
||
9931 | fschmid | 31 | #include <cmath> |
3934 | cbradney | 32 | #include "arrowchooser.h" |
121 | Franz | 33 | #include "autoform.h" |
12092 | fschmid | 34 | #include "basepointwidget.h" |
3934 | cbradney | 35 | #include "commonstrings.h" |
7747 | jghali | 36 | #include "colorlistbox.h" |
9796 | fschmid | 37 | #include "sccolorengine.h" |
3934 | cbradney | 38 | #include "cpalette.h" |
17353 | fschmid | 39 | #include "pageitem_table.h" |
10601 | mrdocs | 40 | #include "pageitem_textframe.h" |
16546 | jghali | 41 | #include "propertiespalette_group.h" |
42 | #include "propertiespalette_image.h" |
||
43 | #include "propertiespalette_line.h" |
||
44 | #include "propertiespalette_shape.h" |
||
16856 | craig | 45 | #include "propertiespalette_table.h" |
16546 | jghali | 46 | #include "propertiespalette_text.h" |
47 | #include "propertiespalette_utils.h" |
||
48 | #include "propertiespalette_xyz.h" |
||
3934 | cbradney | 49 | #include "sccombobox.h" |
50 | #include "scfonts.h" |
||
173 | Franz | 51 | #include "scribus.h" |
5243 | cbradney | 52 | #include "scribuscore.h" |
4695 | cbradney | 53 | #include "scraction.h" |
3934 | cbradney | 54 | #include "scribusview.h" |
55 | #include "selection.h" |
||
56 | #include "spalette.h" |
||
710 | cbradney | 57 | #include "styleselect.h" |
13606 | jghali | 58 | #include "tabmanager.h" |
16546 | jghali | 59 | #include "transparencypalette.h" |
806 | cbradney | 60 | #include "units.h" |
1263 | tsoots | 61 | #include "undomanager.h" |
2531 | craig | 62 | #include "util.h" |
10200 | cbradney | 63 | #include "util_icon.h" |
14284 | fschmid | 64 | #include "util_math.h" |
11206 | fschmid | 65 | #include "dasheditor.h" |
14389 | cbradney | 66 | #include "fontcombo.h" |
67 | #include "colorcombo.h" |
||
504 | cbradney | 68 | |
14284 | fschmid | 69 | //using namespace std; |
504 | cbradney | 70 | |
16546 | jghali | 71 | PropertiesPalette::PropertiesPalette( QWidget* parent) : ScDockPalette( parent, "PropertiesPalette", 0) |
265 | Franz | 72 | { |
17709 | craig | 73 | undoManager = UndoManager::instance(); |
5781 | cbradney | 74 | m_ScMW=0; |
16546 | jghali | 75 | m_doc=0; |
76 | m_haveDoc = false; |
||
77 | m_haveItem = false; |
||
8605 | cbradney | 78 | m_unitRatio = 1.0; |
16546 | jghali | 79 | |
16560 | fschmid | 80 | setObjectName(QString::fromLocal8Bit("PropertiesPalette")); |
10529 | fschmid | 81 | setSizePolicy( QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); |
3 | paul | 82 | |
1448 | cbradney | 83 | QFont f(font()); |
217 | Franz | 84 | f.setPointSize(f.pointSize()-1); |
85 | setFont(f); |
||
332 | Franz | 86 | |
17383 | fschmid | 87 | TabStack = new ScTreeWidget( this ); |
17387 | fschmid | 88 | // Uncomment this line if the new behaviour makes any trouble. |
89 | // TabStack->setToolBoxMode(true); |
||
332 | Franz | 90 | |
17383 | fschmid | 91 | xyzPal = new PropertiesPalette_XYZ( this ); |
92 | idXYZItem = TabStack->addItem( xyzPal, "X, Y, &Z" ); |
||
3 | paul | 93 | |
17383 | fschmid | 94 | shapePal = new PropertiesPalette_Shape( this ); |
95 | idShapeItem = TabStack->addItem( shapePal, "&Shape" ); |
||
68 | Franz | 96 | |
17383 | fschmid | 97 | groupPal = new PropertiesPalette_Group( this ); |
98 | idGroupItem = TabStack->addItem(groupPal, "Groups"); |
||
3 | paul | 99 | |
17383 | fschmid | 100 | textPal = new PropertiesPalette_Text( this ); |
101 | idTextItem = TabStack->addItem( textPal, "&Text" ); |
||
3 | paul | 102 | |
17383 | fschmid | 103 | imagePal = new PropertiesPalette_Image(this); |
104 | idImageItem=TabStack->addItem( imagePal, "&Image" ); |
||
11125 | fschmid | 105 | |
17383 | fschmid | 106 | linePal = new PropertiesPalette_Line(this); |
107 | idLineItem=TabStack->addItem( linePal, "&Line" ); |
||
3 | paul | 108 | |
17383 | fschmid | 109 | Cpal = new Cpalette(this); |
110 | idColorsItem = TabStack->addItem(Cpal, "&Colors" ); |
||
6451 | fschmid | 111 | |
17383 | fschmid | 112 | Tpal = new Tpalette(this); |
113 | idTransparencyItem = TabStack->addItem(Tpal, "&Transparency" ); |
||
8494 | fschmid | 114 | |
17383 | fschmid | 115 | tablePal = new PropertiesPalette_Table(this); |
116 | idTableItem = TabStack->addItem(tablePal, "T&able" ); |
||
6451 | fschmid | 117 | |
16546 | jghali | 118 | setWidget( TabStack ); |
119 | |||
2199 | cbradney | 120 | languageChange(); |
216 | Franz | 121 | |
16546 | jghali | 122 | connect(linePal, SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int))); |
5564 | mrdocs | 123 | |
16546 | jghali | 124 | connect(groupPal, SIGNAL(shapeChanged(int)) , this, SLOT(handleNewShape(int))); |
125 | connect(groupPal, SIGNAL(shapeEditStarted()), this, SLOT(handleShapeEdit())); |
||
126 | |||
17936 | craig | 127 | connect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
13024 | cbradney | 128 | |
16546 | jghali | 129 | connect(Cpal, SIGNAL(NewSpecial(double, double, double, double, double, double, double, double, double, double)), this, SLOT(NewSpGradient(double, double, double, double, double, double, double, double, double, double ))); |
130 | connect(Cpal, SIGNAL(editGradient(int)), this, SLOT(toggleGradientEdit(int))); |
||
131 | connect(Tpal, SIGNAL(NewSpecial(double, double, double, double, double, double, double, double, double, double)), this, SLOT(NewSpGradientM(double, double, double, double, double, double, double, double ))); |
||
132 | connect(Tpal, SIGNAL(editGradient()), this, SLOT(toggleGradientEditM())); |
||
13024 | cbradney | 133 | |
16546 | jghali | 134 | m_haveItem = false; |
16856 | craig | 135 | for (int ws = 1; ws < 9; ++ws) |
2148 | fschmid | 136 | TabStack->setItemEnabled(ws, false); |
137 | TabStack->setCurrentIndex(0); |
||
10529 | fschmid | 138 | TabStack->widget(0)->setEnabled(false); |
2148 | fschmid | 139 | TabStack->setItemEnabled(0, false); |
3 | paul | 140 | } |
2156 | fschmid | 141 | |
10862 | cbradney | 142 | void PropertiesPalette::closeEvent(QCloseEvent *closeEvent) |
7526 | fschmid | 143 | { |
14754 | jghali | 144 | if (m_ScMW && !m_ScMW->scriptIsRunning()) |
7526 | fschmid | 145 | { |
16546 | jghali | 146 | if ((m_haveDoc) && (m_haveItem)) |
7526 | fschmid | 147 | { |
10529 | fschmid | 148 | if (Cpal->gradEditButton->isChecked()) |
7526 | fschmid | 149 | { |
12766 | jghali | 150 | m_ScMW->view->requestMode(modeNormal); |
16546 | jghali | 151 | m_ScMW->view->RefreshGradient(m_item); |
7526 | fschmid | 152 | } |
153 | } |
||
154 | } |
||
16546 | jghali | 155 | ScDockPalette::closeEvent(closeEvent); |
7526 | fschmid | 156 | } |
157 | |||
10862 | cbradney | 158 | void PropertiesPalette::setMainWindow(ScribusMainWindow* mw) |
5257 | cbradney | 159 | { |
5781 | cbradney | 160 | m_ScMW=mw; |
5622 | jghali | 161 | QPoint p1 = mapToGlobal(pos()); |
5781 | cbradney | 162 | QPoint p2 = m_ScMW->mapFromGlobal(p1); |
8556 | subik | 163 | //Qt4 reparent(m_ScMW, this->getWFlags(), p2); |
164 | setParent(m_ScMW); |
||
165 | move(p2); |
||
166 | |||
16546 | jghali | 167 | this->xyzPal->setMainWindow(mw); |
168 | this->shapePal->setMainWindow(mw); |
||
169 | this->groupPal->setMainWindow(mw); |
||
170 | this->imagePal->setMainWindow(mw); |
||
171 | this->linePal->setMainWindow(mw); |
||
172 | this->textPal->setMainWindow(mw); |
||
16856 | craig | 173 | this->tablePal->setMainWindow(mw); |
16546 | jghali | 174 | |
175 | //connect(this->Cpal, SIGNAL(gradientChanged()), m_ScMW, SLOT(updtGradFill())); |
||
176 | //connect(this->Cpal, SIGNAL(strokeGradientChanged()), m_ScMW, SLOT(updtGradStroke())); |
||
17388 | jghali | 177 | connect(this->Tpal, SIGNAL(gradientChanged()), this, SLOT(handleGradientChanged())); |
17353 | fschmid | 178 | connect(m_ScMW, SIGNAL(AppModeChanged(int,int)), this, SLOT(AppModeChanged())); |
5257 | cbradney | 179 | } |
180 | |||
10862 | cbradney | 181 | void PropertiesPalette::SelTab(int t) |
3 | paul | 182 | { |
14754 | jghali | 183 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 184 | return; |
14767 | fschmid | 185 | foreach (QObject *o, TabStack->widget(t)->children()) |
186 | { |
||
187 | // Layouts, boxes etc aren't widgets at all |
||
188 | // so let's skip them silently... |
||
189 | QWidget *w = qobject_cast<QWidget*>(o); |
||
190 | if (w) |
||
191 | { |
||
192 | QWidget *i = TabStack->widget(t); |
||
193 | while ((i = i->nextInFocusChain()) != TabStack->widget(t)) |
||
194 | { |
||
195 | if (((i->focusPolicy() & Qt::TabFocus) == Qt::TabFocus) && !i->focusProxy() && i->isEnabled()) |
||
196 | { |
||
197 | i->setFocus(); |
||
198 | break; |
||
199 | } |
||
200 | } |
||
201 | } |
||
202 | } |
||
3 | paul | 203 | } |
204 | |||
10862 | cbradney | 205 | void PropertiesPalette::setDoc(ScribusDoc *d) |
3 | paul | 206 | { |
16546 | jghali | 207 | if((d == (ScribusDoc*) m_doc) || (m_ScMW && m_ScMW->scriptIsRunning())) |
7677 | jghali | 208 | return; |
209 | |||
16546 | jghali | 210 | if (m_doc) |
211 | { |
||
212 | disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
213 | disconnect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
214 | } |
||
14300 | fschmid | 215 | |
16546 | jghali | 216 | m_doc = d; |
217 | m_item = NULL; |
||
17909 | fschmid | 218 | setEnabled(!m_doc->drawAsPreview); |
16546 | jghali | 219 | Cpal->setDocument(m_doc); |
7900 | fschmid | 220 | Cpal->setCurrentItem(NULL); |
16546 | jghali | 221 | Tpal->setDocument(m_doc); |
14300 | fschmid | 222 | Tpal->setCurrentItem(NULL); |
16546 | jghali | 223 | |
16832 | jghali | 224 | m_unitRatio = m_doc->unitRatio(); |
225 | m_unitIndex = m_doc->unitIndex(); |
||
8613 | cbradney | 226 | //qt4 FIXME here |
16546 | jghali | 227 | m_haveDoc = true; |
228 | m_haveItem = false; |
||
335 | Franz | 229 | |
16546 | jghali | 230 | xyzPal->setDoc(m_doc); |
231 | shapePal->setDoc(m_doc); |
||
232 | groupPal->setDoc(m_doc); |
||
233 | imagePal->setDoc(m_doc); |
||
234 | linePal->setDoc(m_doc); |
||
235 | textPal->setDoc(m_doc); |
||
16856 | craig | 236 | tablePal->setDocument(m_doc); |
335 | Franz | 237 | |
7677 | jghali | 238 | updateColorList(); |
4546 | subik | 239 | |
16546 | jghali | 240 | connect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
241 | connect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
242 | } |
||
4729 | subik | 243 | |
16546 | jghali | 244 | void PropertiesPalette::unsetDoc() |
245 | { |
||
246 | if (m_doc) |
||
247 | { |
||
248 | disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
249 | disconnect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
250 | } |
||
17909 | fschmid | 251 | setEnabled(true); |
16546 | jghali | 252 | m_haveDoc = false; |
253 | m_haveItem = false; |
||
254 | m_doc=NULL; |
||
255 | m_item = NULL; |
||
14854 | fschmid | 256 | |
16546 | jghali | 257 | xyzPal->unsetItem(); |
258 | xyzPal->unsetDoc(); |
||
259 | shapePal->unsetItem(); |
||
260 | shapePal->unsetDoc(); |
||
261 | groupPal->unsetItem(); |
||
262 | groupPal->unsetDoc(); |
||
263 | imagePal->unsetItem(); |
||
264 | imagePal->unsetDoc(); |
||
265 | linePal->unsetItem(); |
||
266 | linePal->unsetDoc(); |
||
267 | textPal->unsetItem(); |
||
268 | textPal->unsetDoc(); |
||
16856 | craig | 269 | tablePal->unsetItem(); |
270 | tablePal->unsetDocument(); |
||
3 | paul | 271 | |
7900 | fschmid | 272 | Cpal->setCurrentItem(NULL); |
273 | Cpal->setDocument(NULL); |
||
14300 | fschmid | 274 | Tpal->setCurrentItem(NULL); |
275 | Tpal->setDocument(NULL); |
||
16546 | jghali | 276 | |
277 | m_haveItem = false; |
||
16856 | craig | 278 | for (int ws = 1; ws < 9; ++ws) |
11003 | fschmid | 279 | TabStack->setItemEnabled(ws, false); |
280 | TabStack->widget(0)->setEnabled(false); |
||
281 | TabStack->setItemEnabled(idXYZItem, false); |
||
3 | paul | 282 | } |
283 | |||
10862 | cbradney | 284 | void PropertiesPalette::unsetItem() |
4738 | cbradney | 285 | { |
16546 | jghali | 286 | m_haveItem = false; |
287 | m_item = NULL; |
||
7900 | fschmid | 288 | Cpal->setCurrentItem(NULL); |
14300 | fschmid | 289 | Tpal->setCurrentItem(NULL); |
17327 | fschmid | 290 | tablePal->unsetItem(); |
16546 | jghali | 291 | handleSelectionChanged(); |
4738 | cbradney | 292 | } |
4546 | subik | 293 | |
10862 | cbradney | 294 | void PropertiesPalette::setTextFlowMode(PageItem::TextFlowMode mode) |
5620 | jghali | 295 | { |
16546 | jghali | 296 | if (!m_ScMW || m_ScMW->scriptIsRunning() || !m_haveItem) |
5620 | jghali | 297 | return; |
16546 | jghali | 298 | shapePal->displayTextFlowMode(mode); |
299 | groupPal->displayTextFlowMode(mode); |
||
300 | } |
||
301 | |||
302 | PageItem* PropertiesPalette::currentItemFromSelection() |
||
303 | { |
||
304 | PageItem *currentItem = NULL; |
||
305 | |||
306 | if (m_doc) |
||
8494 | fschmid | 307 | { |
16943 | fschmid | 308 | currentItem = m_doc->m_Selection->itemAt(0); |
309 | /* if (m_doc->m_Selection->count() > 1) |
||
16546 | jghali | 310 | { |
16943 | fschmid | 311 | int lowestItem = 999999; |
16546 | jghali | 312 | for (int a=0; a<m_doc->m_Selection->count(); ++a) |
313 | { |
||
314 | currentItem = m_doc->m_Selection->itemAt(a); |
||
16943 | fschmid | 315 | lowestItem = qMin(lowestItem, m_doc->Items->indexOf(currentItem)); |
16546 | jghali | 316 | } |
317 | currentItem = m_doc->Items->at(lowestItem); |
||
318 | } |
||
319 | else if (m_doc->m_Selection->count() == 1) |
||
320 | { |
||
321 | currentItem = m_doc->m_Selection->itemAt(0); |
||
16943 | fschmid | 322 | } */ |
8494 | fschmid | 323 | } |
16546 | jghali | 324 | |
325 | return currentItem; |
||
5620 | jghali | 326 | } |
327 | |||
17353 | fschmid | 328 | void PropertiesPalette::AppModeChanged() |
329 | { |
||
330 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
331 | return; |
||
332 | if ((m_haveDoc) && (m_haveItem)) |
||
333 | { |
||
334 | if (m_item->isTable()) |
||
335 | { |
||
336 | TabStack->setItemEnabled(idTextItem, m_doc->appMode == modeEditTable); |
||
337 | if (m_doc->appMode == modeEditTable) |
||
338 | connect(m_item->asTable(), SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
339 | else |
||
340 | disconnect(m_item->asTable(), SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
341 | } |
||
342 | textPal->handleSelectionChanged(); |
||
343 | } |
||
344 | } |
||
345 | |||
16546 | jghali | 346 | void PropertiesPalette::setCurrentItem(PageItem *i) |
3 | paul | 347 | { |
14754 | jghali | 348 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 349 | return; |
3894 | cbradney | 350 | //CB We shouldnt really need to process this if our item is the same one |
351 | //maybe we do if the item has been changed by scripter.. but that should probably |
||
352 | //set some status if so. |
||
16546 | jghali | 353 | //FIXME: This wont work until when a canvas deselect happens, m_item must be NULL. |
354 | //if (m_item == i) |
||
3894 | cbradney | 355 | // return; |
11741 | jghali | 356 | |
16546 | jghali | 357 | if (!i) |
358 | { |
||
359 | unsetItem(); |
||
360 | return; |
||
361 | } |
||
362 | |||
363 | int oldTabIndex = TabStack->currentIndex(); |
||
364 | |||
365 | if (!m_doc) |
||
11741 | jghali | 366 | setDoc(i->doc()); |
367 | |||
17936 | craig | 368 | disconnect(TabStack, SIGNAL(currentChanged2(int)) , this, SLOT(SelTab(int))); |
16546 | jghali | 369 | disconnect(linePal , SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int))); |
4546 | subik | 370 | |
16546 | jghali | 371 | m_haveItem = false; |
372 | m_item = i; |
||
13222 | fschmid | 373 | |
17327 | fschmid | 374 | tablePal->setItem(m_item); |
375 | |||
16546 | jghali | 376 | Tpal->setCurrentItem(m_item); |
14300 | fschmid | 377 | Tpal->updateFromItem(); |
12471 | cbradney | 378 | |
16546 | jghali | 379 | setTextFlowMode(m_item->textFlowMode()); |
12471 | cbradney | 380 | |
16546 | jghali | 381 | connect(linePal , SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int))); |
14308 | fschmid | 382 | |
16546 | jghali | 383 | //CB replaces old emits from PageItem::emitAllToGUI() |
384 | setLocked(i->locked()); |
||
14308 | fschmid | 385 | |
16546 | jghali | 386 | if ((m_item->isGroup()) && (!m_item->isSingleSel)) |
232 | Franz | 387 | { |
8494 | fschmid | 388 | TabStack->setItemEnabled(idXYZItem, true); |
389 | TabStack->setItemEnabled(idShapeItem, false); |
||
6451 | fschmid | 390 | TabStack->setItemEnabled(idGroupItem, true); |
14077 | fschmid | 391 | TabStack->setItemEnabled(idLineItem, false); |
15060 | fschmid | 392 | TabStack->setItemEnabled(idColorsItem, false); |
8494 | fschmid | 393 | TabStack->setItemEnabled(idTextItem, false); |
394 | TabStack->setItemEnabled(idImageItem, false); |
||
17387 | fschmid | 395 | TabStack->setItemEnabled(idTableItem, false); |
6451 | fschmid | 396 | } |
397 | else |
||
398 | TabStack->setItemEnabled(idGroupItem, false); |
||
16546 | jghali | 399 | |
400 | m_haveItem = true; |
||
401 | |||
402 | if (oldTabIndex != TabStack->currentIndex()) |
||
215 | Franz | 403 | { |
16546 | jghali | 404 | //Must be called only when necessary : cause focus problem |
405 | //in spinboxes when processing valueChanged() signals |
||
406 | SelTab(TabStack->currentIndex()); |
||
215 | Franz | 407 | } |
4546 | subik | 408 | |
16546 | jghali | 409 | xyzPal->handleSelectionChanged(); |
410 | shapePal->handleSelectionChanged(); |
||
411 | groupPal->handleSelectionChanged(); |
||
412 | imagePal->handleSelectionChanged(); |
||
413 | linePal->handleSelectionChanged(); |
||
414 | textPal->handleSelectionChanged(); |
||
16856 | craig | 415 | tablePal->handleSelectionChanged(); |
16546 | jghali | 416 | |
417 | if (m_item->asOSGFrame()) |
||
13839 | fschmid | 418 | { |
419 | TabStack->setItemEnabled(idXYZItem, true); |
||
420 | TabStack->setItemEnabled(idShapeItem, true); |
||
421 | TabStack->setItemEnabled(idGroupItem, false); |
||
422 | TabStack->setItemEnabled(idLineItem, false); |
||
423 | TabStack->setItemEnabled(idColorsItem, true); |
||
16856 | craig | 424 | TabStack->setItemEnabled(idTableItem, false); |
14300 | fschmid | 425 | TabStack->setItemEnabled(idTransparencyItem, false); |
13839 | fschmid | 426 | TabStack->setItemEnabled(idTextItem, false); |
427 | TabStack->setItemEnabled(idImageItem, false); |
||
17387 | fschmid | 428 | TabStack->setItemEnabled(idTableItem, false); |
13839 | fschmid | 429 | } |
16546 | jghali | 430 | if (m_item->asSymbolFrame()) |
15060 | fschmid | 431 | { |
432 | TabStack->setItemEnabled(idXYZItem, true); |
||
433 | TabStack->setItemEnabled(idShapeItem, false); |
||
434 | TabStack->setItemEnabled(idGroupItem, true); |
||
435 | TabStack->setItemEnabled(idLineItem, false); |
||
436 | TabStack->setItemEnabled(idColorsItem, false); |
||
437 | TabStack->setItemEnabled(idTextItem, false); |
||
438 | TabStack->setItemEnabled(idImageItem, false); |
||
439 | TabStack->setItemEnabled(idTransparencyItem, false); |
||
17387 | fschmid | 440 | TabStack->setItemEnabled(idTableItem, false); |
15060 | fschmid | 441 | } |
17936 | craig | 442 | connect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
3 | paul | 443 | } |
444 | |||
16546 | jghali | 445 | void PropertiesPalette::handleSelectionChanged() |
3 | paul | 446 | { |
16546 | jghali | 447 | if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 448 | return; |
13606 | jghali | 449 | int currentTab = TabStack->currentIndex(); |
17936 | craig | 450 | disconnect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
16546 | jghali | 451 | |
452 | PageItem* currItem = currentItemFromSelection(); |
||
453 | if (m_doc->m_Selection->count() > 1) |
||
215 | Franz | 454 | { |
16856 | craig | 455 | for (int ws = 1; ws < 9; ++ws) |
11316 | fschmid | 456 | TabStack->setItemEnabled(ws, false); |
10529 | fschmid | 457 | TabStack->widget(0)->setEnabled(true); |
6451 | fschmid | 458 | TabStack->setItemEnabled(idXYZItem, true); |
18138 | fschmid | 459 | TabStack->setItemEnabled(idLineItem, true); |
6451 | fschmid | 460 | TabStack->setItemEnabled(idColorsItem, true); |
14300 | fschmid | 461 | TabStack->setItemEnabled(idTransparencyItem, true); |
16856 | craig | 462 | TabStack->setItemEnabled(idTableItem, false); // At least not for now. |
16546 | jghali | 463 | if (m_haveItem && m_item) |
13606 | jghali | 464 | { |
16546 | jghali | 465 | if ((m_item->isGroup()) && (!m_item->isSingleSel)) |
13606 | jghali | 466 | TabStack->setItemEnabled(idGroupItem, true); |
467 | } |
||
215 | Franz | 468 | } |
3 | paul | 469 | else |
215 | Franz | 470 | { |
16546 | jghali | 471 | int itemType = currItem ? (int) currItem->itemType() : -1; |
472 | m_haveItem = (itemType != -1); |
||
473 | |||
16943 | fschmid | 474 | // int visID = TabStack->currentIndex(); |
10529 | fschmid | 475 | TabStack->widget(0)->setEnabled(true); |
6451 | fschmid | 476 | TabStack->setItemEnabled(idXYZItem, true); |
477 | TabStack->setItemEnabled(idColorsItem, true); |
||
14300 | fschmid | 478 | TabStack->setItemEnabled(idTransparencyItem, true); |
17387 | fschmid | 479 | TabStack->setItemEnabled(idTableItem, false); |
16546 | jghali | 480 | switch (itemType) |
5226 | cbradney | 481 | { |
217 | Franz | 482 | case -1: |
16546 | jghali | 483 | m_haveItem = false; |
16856 | craig | 484 | for (int ws = 1; ws < 9; ++ws) |
2148 | fschmid | 485 | TabStack->setItemEnabled(ws, false); |
10529 | fschmid | 486 | TabStack->widget(0)->setEnabled(false); |
6451 | fschmid | 487 | TabStack->setItemEnabled(idXYZItem, false); |
16546 | jghali | 488 | Cpal->displayGradient(0); |
217 | Franz | 489 | break; |
13839 | fschmid | 490 | case PageItem::ImageFrame: |
491 | case PageItem::LatexFrame: |
||
492 | case PageItem::OSGFrame: |
||
16546 | jghali | 493 | if (currItem->asOSGFrame()) |
13839 | fschmid | 494 | { |
495 | TabStack->setItemEnabled(idXYZItem, true); |
||
496 | TabStack->setItemEnabled(idShapeItem, true); |
||
497 | TabStack->setItemEnabled(idGroupItem, false); |
||
498 | TabStack->setItemEnabled(idLineItem, false); |
||
499 | TabStack->setItemEnabled(idColorsItem, true); |
||
14300 | fschmid | 500 | TabStack->setItemEnabled(idTransparencyItem, false); |
13839 | fschmid | 501 | TabStack->setItemEnabled(idTextItem, false); |
502 | TabStack->setItemEnabled(idImageItem, false); |
||
503 | } |
||
4941 | fschmid | 504 | else |
13839 | fschmid | 505 | { |
506 | TabStack->setItemEnabled(idShapeItem, true); |
||
507 | TabStack->setItemEnabled(idTextItem, false); |
||
508 | TabStack->setItemEnabled(idImageItem, true); |
||
509 | TabStack->setItemEnabled(idLineItem, true); |
||
510 | } |
||
217 | Franz | 511 | break; |
13839 | fschmid | 512 | case PageItem::TextFrame: |
6451 | fschmid | 513 | TabStack->setItemEnabled(idShapeItem, true); |
514 | TabStack->setItemEnabled(idTextItem, true); |
||
515 | TabStack->setItemEnabled(idImageItem, false); |
||
516 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 517 | break; |
13839 | fschmid | 518 | case PageItem::Line: |
6451 | fschmid | 519 | TabStack->setItemEnabled(idShapeItem, false); |
520 | TabStack->setItemEnabled(idTextItem, false); |
||
521 | TabStack->setItemEnabled(idImageItem, false); |
||
522 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 523 | break; |
13839 | fschmid | 524 | case PageItem::ItemType1: |
525 | case PageItem::ItemType3: |
||
526 | case PageItem::Polygon: |
||
16191 | fschmid | 527 | case PageItem::RegularPolygon: |
16215 | fschmid | 528 | case PageItem::Arc: |
6451 | fschmid | 529 | TabStack->setItemEnabled(idShapeItem, true); |
530 | TabStack->setItemEnabled(idTextItem, false); |
||
531 | TabStack->setItemEnabled(idImageItem, false); |
||
532 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 533 | break; |
13839 | fschmid | 534 | case PageItem::PolyLine: |
16311 | fschmid | 535 | case PageItem::Spiral: |
6451 | fschmid | 536 | TabStack->setItemEnabled(idShapeItem, true); |
537 | TabStack->setItemEnabled(idTextItem, false); |
||
538 | TabStack->setItemEnabled(idImageItem, false); |
||
539 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 540 | break; |
13839 | fschmid | 541 | case PageItem::PathText: |
6451 | fschmid | 542 | TabStack->setItemEnabled(idShapeItem, true); |
543 | TabStack->setItemEnabled(idTextItem, true); |
||
544 | TabStack->setItemEnabled(idImageItem, false); |
||
545 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 546 | break; |
15060 | fschmid | 547 | case PageItem::Symbol: |
16105 | fschmid | 548 | case PageItem::Group: |
15060 | fschmid | 549 | TabStack->setItemEnabled(idShapeItem, false); |
550 | TabStack->setItemEnabled(idTextItem, false); |
||
551 | TabStack->setItemEnabled(idImageItem, false); |
||
18138 | fschmid | 552 | TabStack->setItemEnabled(idLineItem, true); |
553 | TabStack->setItemEnabled(idGroupItem, false); |
||
15060 | fschmid | 554 | TabStack->setItemEnabled(idColorsItem, false); |
555 | TabStack->setItemEnabled(idTransparencyItem, false); |
||
556 | break; |
||
16856 | craig | 557 | case PageItem::Table: |
558 | TabStack->setItemEnabled(idTableItem, true); |
||
559 | TabStack->setItemEnabled(idShapeItem, true); |
||
17353 | fschmid | 560 | TabStack->setItemEnabled(idTextItem, m_doc->appMode == modeEditTable); |
16856 | craig | 561 | TabStack->setItemEnabled(idImageItem, false); |
562 | TabStack->setItemEnabled(idLineItem, false); |
||
563 | TabStack->setItemEnabled(idGroupItem, false); |
||
564 | TabStack->setItemEnabled(idColorsItem, false); |
||
565 | TabStack->setItemEnabled(idTransparencyItem, false); |
||
566 | break; |
||
3 | paul | 567 | } |
215 | Franz | 568 | } |
13606 | jghali | 569 | if (TabStack->isItemEnabled(currentTab) && (TabStack->currentIndex() != currentTab)) |
570 | TabStack->setCurrentIndex(currentTab); |
||
3 | paul | 571 | updateGeometry(); |
572 | repaint(); |
||
17936 | craig | 573 | connect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
3 | paul | 574 | |
16546 | jghali | 575 | if (currItem) |
6451 | fschmid | 576 | { |
16546 | jghali | 577 | setCurrentItem(currItem); |
6451 | fschmid | 578 | } |
4049 | cbradney | 579 | } |
580 | |||
10862 | cbradney | 581 | void PropertiesPalette::unitChange() |
3 | paul | 582 | { |
16546 | jghali | 583 | if (!m_haveDoc) |
11633 | jghali | 584 | return; |
16546 | jghali | 585 | bool tmp = m_haveItem; |
586 | m_haveItem = false; |
||
8605 | cbradney | 587 | double oldRatio = m_unitRatio; |
16546 | jghali | 588 | m_unitRatio = m_doc->unitRatio(); |
589 | m_unitIndex = m_doc->unitIndex(); |
||
3 | paul | 590 | |
16546 | jghali | 591 | xyzPal->unitChange(); |
592 | shapePal->unitChange(); |
||
593 | groupPal->unitChange(); |
||
594 | imagePal->unitChange(); |
||
595 | linePal->unitChange(); |
||
596 | textPal->unitChange(); |
||
272 | Franz | 597 | |
16546 | jghali | 598 | Cpal->unitChange(oldRatio, m_unitRatio, m_doc->unitIndex()); |
599 | Tpal->unitChange(oldRatio, m_unitRatio, m_doc->unitIndex()); |
||
600 | m_haveItem = tmp; |
||
13811 | pierre | 601 | } |
3 | paul | 602 | |
16546 | jghali | 603 | void PropertiesPalette::NewLineMode(int mode) |
13811 | pierre | 604 | { |
14754 | jghali | 605 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
13811 | pierre | 606 | return; |
16546 | jghali | 607 | xyzPal->setLineMode(mode); |
608 | xyzPal->displayWH(m_item->width(), m_item->height()); |
||
3 | paul | 609 | updateGeometry(); |
610 | repaint(); |
||
611 | } |
||
612 | |||
16546 | jghali | 613 | void PropertiesPalette::handleNewShape(int frameType) |
3 | paul | 614 | { |
14754 | jghali | 615 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 616 | return; |
16546 | jghali | 617 | if ((m_haveDoc) && (m_haveItem)) |
2247 | fschmid | 618 | { |
16546 | jghali | 619 | if ((m_item->itemType() == PageItem::PolyLine) || (m_item->itemType() == PageItem::PathText)) |
3 | paul | 620 | return; |
13346 | subik | 621 | |
16546 | jghali | 622 | if ((m_item->itemType() == PageItem::ImageFrame) || (m_item->itemType() == PageItem::TextFrame)) |
13346 | subik | 623 | { |
16546 | jghali | 624 | shapePal->setRoundRectEnabled(frameType == 0); |
3 | paul | 625 | return; |
7359 | fschmid | 626 | } |
16546 | jghali | 627 | // m_item->convertTo(PageItem::Polygon); |
628 | // newSelection(6); |
||
629 | shapePal->setRoundRectEnabled(frameType == 0); |
||
215 | Franz | 630 | } |
3 | paul | 631 | } |
632 | |||
14981 | fschmid | 633 | void PropertiesPalette::NewSpGradient(double x1, double y1, double x2, double y2, double fx, double fy, double sg, double sk, double cx, double cy) |
294 | Franz | 634 | { |
14754 | jghali | 635 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
294 | Franz | 636 | return; |
16546 | jghali | 637 | if ((m_haveDoc) && (m_haveItem)) |
294 | Franz | 638 | { |
14197 | fschmid | 639 | QRectF upRect; |
17747 | craig | 640 | UndoTransaction *trans = NULL; |
641 | if(UndoManager::undoEnabled()) |
||
642 | trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "p","",Um::ILine)); |
||
14300 | fschmid | 643 | if (m_ScMW->view->editStrokeGradient == 1) |
14197 | fschmid | 644 | { |
17709 | craig | 645 | m_item->setGradientStrokeStartX(x1 / m_unitRatio); |
646 | m_item->setGradientStrokeStartY(y1 / m_unitRatio); |
||
647 | m_item->setGradientStrokeEndX(x2 / m_unitRatio); |
||
648 | m_item->setGradientStrokeEndY(y2 / m_unitRatio); |
||
649 | m_item->setGradientStrokeFocalX(fx / m_unitRatio); |
||
650 | m_item->setGradientStrokeFocalY(fy / m_unitRatio); |
||
651 | m_item->setGradientStrokeScale(sg); |
||
652 | m_item->setGradientStrokeSkew(sk); |
||
653 | if (m_item->strokeGradientType() == 6) |
||
14278 | fschmid | 654 | { |
17709 | craig | 655 | m_item->setGradientStrokeFocalX(m_item->gradientStrokeStartX()); |
656 | m_item->setGradientStrokeFocalY(m_item->gradientStrokeStartY()); |
||
14278 | fschmid | 657 | } |
16546 | jghali | 658 | m_item->update(); |
17709 | craig | 659 | upRect = QRectF(QPointF(m_item->gradientStrokeStartX(), m_item->gradientStrokeStartY()), QPointF(m_item->gradientStrokeEndX(), m_item->gradientStrokeEndY())); |
660 | double radEnd = distance(m_item->gradientStrokeEndX() - m_item->gradientStrokeStartX(), m_item->gradientStrokeEndY() - m_item->gradientStrokeStartY()); |
||
661 | double rotEnd = xy2Deg(m_item->gradientStrokeEndX() - m_item->gradientStrokeStartX(), m_item->gradientStrokeEndY() - m_item->gradientStrokeStartY()); |
||
14284 | fschmid | 662 | QTransform m; |
17709 | craig | 663 | m.translate(m_item->gradientStrokeStartX(), m_item->gradientStrokeStartY()); |
14284 | fschmid | 664 | m.rotate(rotEnd); |
665 | m.rotate(-90); |
||
17709 | craig | 666 | m.rotate(m_item->gradientStrokeSkew()); |
667 | m.translate(radEnd * m_item->gradientStrokeScale(), 0); |
||
14284 | fschmid | 668 | QPointF shP = m.map(QPointF(0,0)); |
17709 | craig | 669 | upRect = upRect.united(QRectF(shP, QPointF(m_item->gradientStrokeEndX(), m_item->gradientStrokeEndY())).normalized()); |
670 | upRect = upRect.united(QRectF(shP, QPointF(m_item->gradientStrokeStartX(), m_item->gradientStrokeStartY())).normalized()); |
||
14284 | fschmid | 671 | upRect |= QRectF(shP, QPointF(0, 0)).normalized(); |
16546 | jghali | 672 | upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); |
14197 | fschmid | 673 | } |
14952 | fschmid | 674 | else if (m_ScMW->view->editStrokeGradient == 3) |
675 | { |
||
17709 | craig | 676 | m_item->setGradientControl1(FPoint(x1 / m_unitRatio, y1 / m_unitRatio)); |
677 | m_item->setGradientControl2(FPoint(x2 / m_unitRatio, y2 / m_unitRatio)); |
||
678 | m_item->setGradientControl3(FPoint(fx / m_unitRatio, fy / m_unitRatio)); |
||
679 | m_item->setGradientControl4(FPoint(sg / m_unitRatio, sk / m_unitRatio)); |
||
16546 | jghali | 680 | m_item->update(); |
681 | upRect = QRectF(QPointF(-m_item->width(), -m_item->height()), QPointF(m_item->width() * 2, m_item->height() * 2)).normalized(); |
||
14952 | fschmid | 682 | } |
14981 | fschmid | 683 | else if (m_ScMW->view->editStrokeGradient == 4) |
684 | { |
||
17709 | craig | 685 | m_item->setGradientControl1(FPoint(x1 / m_unitRatio, y1 / m_unitRatio)); |
686 | m_item->setGradientControl2(FPoint(x2 / m_unitRatio, y2 / m_unitRatio)); |
||
687 | m_item->setGradientControl3(FPoint(fx / m_unitRatio, fy / m_unitRatio)); |
||
688 | m_item->setGradientControl4(FPoint(sg / m_unitRatio, sk / m_unitRatio)); |
||
689 | m_item->setGradientControl5(FPoint(cx / m_unitRatio, cy / m_unitRatio)); |
||
16546 | jghali | 690 | m_item->update(); |
691 | upRect = QRectF(QPointF(-m_item->width(), -m_item->height()), QPointF(m_item->width() * 2, m_item->height() * 2)).normalized(); |
||
14981 | fschmid | 692 | } |
14197 | fschmid | 693 | else |
694 | { |
||
17747 | craig | 695 | if (m_item->gradientType() == 13 && UndoManager::undoEnabled()) |
14278 | fschmid | 696 | { |
17709 | craig | 697 | SimpleState *ss= new SimpleState("Refresh"); |
698 | ss->set("UNDO_UPDATE_CONICAL","undo_update_conical"); |
||
699 | undoManager->action(m_item,ss); |
||
14278 | fschmid | 700 | } |
17709 | craig | 701 | m_item->setGradientStartX(x1 / m_unitRatio); |
702 | m_item->setGradientStartY(y1 / m_unitRatio); |
||
703 | m_item->setGradientEndX(x2 / m_unitRatio); |
||
704 | m_item->setGradientEndY(y2 / m_unitRatio); |
||
705 | m_item->setGradientFocalX(fx / m_unitRatio); |
||
706 | m_item->setGradientFocalY(fy / m_unitRatio); |
||
707 | m_item->setGradientScale(sg); |
||
708 | m_item->setGradientSkew(sk); |
||
709 | if (m_item->strokeGradientType() == 6) |
||
710 | { |
||
711 | m_item->setGradientFocalX(m_item->gradientStartX()); |
||
712 | m_item->setGradientFocalY(m_item->gradientStartY()); |
||
713 | } |
||
17747 | craig | 714 | if (m_item->gradientType() == 13 && UndoManager::undoEnabled()) |
17709 | craig | 715 | { |
16786 | fschmid | 716 | m_item->createConicalMesh(); |
17709 | craig | 717 | SimpleState *ss= new SimpleState("Refresh"); |
718 | ss->set("REDO_UPDATE_CONICAL","redo_update_conical"); |
||
719 | undoManager->action(m_item,ss); |
||
720 | } |
||
16546 | jghali | 721 | m_item->update(); |
17709 | craig | 722 | upRect = QRectF(QPointF(m_item->gradientStartX(), m_item->gradientStartY()), QPointF(m_item->gradientEndX(), m_item->gradientEndY())); |
723 | double radEnd = distance(m_item->gradientEndX() - m_item->gradientStartX(), m_item->gradientEndY() - m_item->gradientStartY()); |
||
724 | double rotEnd = xy2Deg(m_item->gradientEndX() - m_item->gradientStartX(), m_item->gradientEndY() - m_item->gradientStartY()); |
||
14284 | fschmid | 725 | QTransform m; |
17709 | craig | 726 | m.translate(m_item->gradientStartX(), m_item->gradientStartY()); |
14284 | fschmid | 727 | m.rotate(rotEnd); |
728 | m.rotate(-90); |
||
17709 | craig | 729 | m.rotate(m_item->gradientSkew()); |
730 | m.translate(radEnd * m_item->gradientScale(), 0); |
||
14284 | fschmid | 731 | QPointF shP = m.map(QPointF(0,0)); |
17709 | craig | 732 | upRect |= QRectF(shP, QPointF(m_item->gradientEndX(), m_item->gradientEndY())).normalized(); |
733 | upRect |= QRectF(shP, QPointF(m_item->gradientStartX(), m_item->gradientStartY())).normalized(); |
||
14284 | fschmid | 734 | upRect |= QRectF(shP, QPointF(0, 0)).normalized(); |
16546 | jghali | 735 | upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); |
14197 | fschmid | 736 | } |
17747 | craig | 737 | if(trans) |
738 | { |
||
739 | trans->commit(); |
||
740 | delete trans; |
||
741 | trans = NULL; |
||
742 | } |
||
16546 | jghali | 743 | upRect.translate(m_item->xPos(), m_item->yPos()); |
744 | m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0)); |
||
17099 | jghali | 745 | m_doc->changed(); |
294 | Franz | 746 | } |
747 | } |
||
748 | |||
14300 | fschmid | 749 | void PropertiesPalette::toggleGradientEdit(int stroke) |
735 | fschmid | 750 | { |
14754 | jghali | 751 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
735 | fschmid | 752 | return; |
16546 | jghali | 753 | if ((m_haveDoc) && (m_haveItem)) |
735 | fschmid | 754 | { |
14197 | fschmid | 755 | m_ScMW->view->editStrokeGradient = stroke; |
14300 | fschmid | 756 | if (stroke == 1) |
14197 | fschmid | 757 | { |
758 | if (Cpal->gradEditButtonStroke->isChecked()) |
||
759 | m_ScMW->view->requestMode(modeEditGradientVectors); |
||
760 | else |
||
761 | m_ScMW->view->requestMode(modeNormal); |
||
762 | } |
||
735 | fschmid | 763 | else |
14197 | fschmid | 764 | { |
15024 | fschmid | 765 | if ((Cpal->gradEditButton->isChecked()) || (Cpal->editMeshColors->isChecked())) |
766 | { |
||
767 | if ((stroke == 5) || (stroke == 6) || (stroke == 7)) |
||
768 | m_ScMW->view->requestMode(modeEditMeshGradient); |
||
16870 | fschmid | 769 | else if ((stroke == 8) || (stroke == 9) || (stroke == 10) || (stroke == 11)) |
16869 | fschmid | 770 | m_ScMW->view->requestMode(modeEditMeshPatch); |
15024 | fschmid | 771 | else |
772 | m_ScMW->view->requestMode(modeEditGradientVectors); |
||
773 | } |
||
14197 | fschmid | 774 | else |
775 | m_ScMW->view->requestMode(modeNormal); |
||
776 | } |
||
16546 | jghali | 777 | m_ScMW->view->RefreshGradient(m_item); |
735 | fschmid | 778 | } |
779 | } |
||
780 | |||
14300 | fschmid | 781 | void PropertiesPalette::NewSpGradientM(double x1, double y1, double x2, double y2, double fx, double fy, double sg, double sk) |
782 | { |
||
14754 | jghali | 783 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
14300 | fschmid | 784 | return; |
16546 | jghali | 785 | if ((m_haveDoc) && (m_haveItem)) |
14300 | fschmid | 786 | { |
787 | QRectF upRect; |
||
17747 | craig | 788 | UndoTransaction *trans = NULL; |
789 | if(UndoManager::undoEnabled()) |
||
790 | trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "o","",Um::ILine)); |
||
17709 | craig | 791 | m_item->setGradientMaskStartX(x1 / m_unitRatio); |
792 | m_item->setGradientMaskStartY(y1 / m_unitRatio); |
||
793 | m_item->setGradientMaskEndX(x2 / m_unitRatio); |
||
794 | m_item->setGradientMaskEndY(y2 / m_unitRatio); |
||
795 | m_item->setGradientMaskFocalX(fx / m_unitRatio); |
||
796 | m_item->setGradientMaskFocalY(fy / m_unitRatio); |
||
797 | m_item->setGradientMaskScale(sg); |
||
798 | m_item->setGradientMaskSkew(sk); |
||
16546 | jghali | 799 | if ((m_item->GrMask == 1) || (m_item->GrMask == 4)) |
14300 | fschmid | 800 | { |
17709 | craig | 801 | m_item->setGradientMaskFocalX(m_item->GrMaskStartX); |
802 | m_item->setGradientMaskFocalY(m_item->GrMaskStartY); |
||
14300 | fschmid | 803 | } |
16546 | jghali | 804 | m_item->update(); |
17747 | craig | 805 | if(trans) |
806 | { |
||
807 | trans->commit(); |
||
808 | delete trans; |
||
809 | trans = NULL; |
||
810 | } |
||
16546 | jghali | 811 | upRect = QRectF(QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY), QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY)); |
812 | double radEnd = distance(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY); |
||
813 | double rotEnd = xy2Deg(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY); |
||
14300 | fschmid | 814 | QTransform m; |
16546 | jghali | 815 | m.translate(m_item->GrMaskStartX, m_item->GrMaskStartY); |
14300 | fschmid | 816 | m.rotate(rotEnd); |
817 | m.rotate(-90); |
||
16546 | jghali | 818 | m.rotate(m_item->GrMaskSkew); |
819 | m.translate(radEnd * m_item->GrMaskScale, 0); |
||
14300 | fschmid | 820 | QPointF shP = m.map(QPointF(0,0)); |
16546 | jghali | 821 | upRect |= QRectF(shP, QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY)).normalized(); |
822 | upRect |= QRectF(shP, QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY)).normalized(); |
||
14300 | fschmid | 823 | upRect |= QRectF(shP, QPointF(0, 0)).normalized(); |
16546 | jghali | 824 | upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); |
825 | upRect.translate(m_item->xPos(), m_item->yPos()); |
||
826 | m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0)); |
||
17099 | jghali | 827 | m_doc->changed(); |
14300 | fschmid | 828 | } |
829 | } |
||
830 | |||
831 | void PropertiesPalette::toggleGradientEditM() |
||
832 | { |
||
14754 | jghali | 833 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
14300 | fschmid | 834 | return; |
16546 | jghali | 835 | if ((m_haveDoc) && (m_haveItem)) |
14300 | fschmid | 836 | { |
837 | m_ScMW->view->editStrokeGradient = 2; |
||
838 | if (Tpal->gradEditButton->isChecked()) |
||
839 | m_ScMW->view->requestMode(modeEditGradientVectors); |
||
840 | else |
||
841 | m_ScMW->view->requestMode(modeNormal); |
||
842 | } |
||
843 | } |
||
844 | |||
10862 | cbradney | 845 | void PropertiesPalette::updateColorList() |
3540 | cbradney | 846 | { |
16546 | jghali | 847 | if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning()) |
3540 | cbradney | 848 | return; |
68 | Franz | 849 | |
16546 | jghali | 850 | groupPal->updateColorList(); |
851 | textPal->updateColorList(); |
||
16856 | craig | 852 | tablePal->updateColorList(); |
16546 | jghali | 853 | Cpal->updateColorList(); |
854 | Tpal->updateColorList(); |
||
68 | Franz | 855 | |
16546 | jghali | 856 | assert (m_doc->PageColors.document()); |
68 | Franz | 857 | } |
858 | |||
10862 | cbradney | 859 | bool PropertiesPalette::userActionOn() |
1263 | tsoots | 860 | { |
16546 | jghali | 861 | bool userActionOn = false; |
862 | userActionOn = xyzPal->userActionOn(); |
||
863 | userActionOn |= imagePal->userActionOn(); |
||
864 | return userActionOn; |
||
1502 | tsoots | 865 | } |
866 | |||
10862 | cbradney | 867 | void PropertiesPalette::changeEvent(QEvent *e) |
10859 | cbradney | 868 | { |
869 | if (e->type() == QEvent::LanguageChange) |
||
870 | { |
||
871 | languageChange(); |
||
16546 | jghali | 872 | return; |
10859 | cbradney | 873 | } |
16546 | jghali | 874 | ScDockPalette::changeEvent(e); |
10859 | cbradney | 875 | } |
876 | |||
10862 | cbradney | 877 | void PropertiesPalette::languageChange() |
2199 | cbradney | 878 | { |
10495 | cbradney | 879 | setWindowTitle( tr("Properties")); |
4546 | subik | 880 | |
10529 | fschmid | 881 | TabStack->setItemText(idXYZItem, tr("X, Y, &Z")); |
882 | TabStack->setItemText(idTextItem, tr("&Text")); |
||
883 | TabStack->setItemText(idImageItem, tr("&Image")); |
||
884 | TabStack->setItemText(idShapeItem, tr("&Shape")); |
||
885 | TabStack->setItemText(idLineItem, tr("&Line")); |
||
886 | TabStack->setItemText(idColorsItem, tr("&Colors")); |
||
887 | TabStack->setItemText(idGroupItem, tr("&Group")); |
||
14492 | cbradney | 888 | TabStack->setItemText(idTransparencyItem, tr("&Transparency")); |
16856 | craig | 889 | TabStack->setItemText(idTableItem, tr("T&able")); |
4546 | subik | 890 | |
16546 | jghali | 891 | xyzPal->languageChange(); |
892 | shapePal->languageChange(); |
||
893 | groupPal->languageChange(); |
||
894 | imagePal->languageChange(); |
||
895 | linePal->languageChange(); |
||
896 | textPal->languageChange(); |
||
16856 | craig | 897 | tablePal->languageChange(); |
2199 | cbradney | 898 | } |
899 | |||
10862 | cbradney | 900 | void PropertiesPalette::setGradientEditMode(bool on) |
3540 | cbradney | 901 | { |
10529 | fschmid | 902 | Cpal->gradEditButton->setChecked(on); |
3540 | cbradney | 903 | } |
904 | |||
16870 | fschmid | 905 | void PropertiesPalette::endPatchAdd() |
906 | { |
||
907 | Cpal->endPatchAdd(); |
||
908 | } |
||
909 | |||
10862 | cbradney | 910 | void PropertiesPalette::updateColorSpecialGradient() |
3540 | cbradney | 911 | { |
16546 | jghali | 912 | if (!m_haveDoc) |
3549 | cbradney | 913 | return; |
16546 | jghali | 914 | if(m_doc->m_Selection->isEmpty()) |
3593 | cbradney | 915 | return; |
16546 | jghali | 916 | |
917 | groupPal->updateColorSpecialGradient(); |
||
918 | |||
919 | PageItem *currItem=m_doc->m_Selection->itemAt(0); |
||
7921 | cbradney | 920 | if (currItem) |
14300 | fschmid | 921 | { |
922 | if (m_ScMW->view->editStrokeGradient == 0) |
||
18134 | jghali | 923 | Cpal->setSpecialGradient(currItem->GrStartX, currItem->GrStartY, currItem->GrEndX, currItem->GrEndY, currItem->GrFocalX, currItem->GrFocalY, currItem->GrScale, currItem->GrSkew, 0, 0); |
14300 | fschmid | 924 | else if (m_ScMW->view->editStrokeGradient == 1) |
18134 | jghali | 925 | Cpal->setSpecialGradient(currItem->GrStrokeStartX, currItem->GrStrokeStartY, currItem->GrStrokeEndX, currItem->GrStrokeEndY, currItem->GrStrokeFocalX, currItem->GrStrokeFocalY, currItem->GrStrokeScale, currItem->GrStrokeSkew, 0, 0); |
14952 | fschmid | 926 | else if (m_ScMW->view->editStrokeGradient == 3) |
18134 | jghali | 927 | Cpal->setSpecialGradient(currItem->GrControl1.x(), currItem->GrControl1.y(), currItem->GrControl2.x(), currItem->GrControl2.y(), currItem->GrControl3.x(), currItem->GrControl3.y(), currItem->GrControl4.x(), currItem->GrControl4.y(), 0, 0); |
14981 | fschmid | 928 | else if (m_ScMW->view->editStrokeGradient == 4) |
18134 | jghali | 929 | Cpal->setSpecialGradient(currItem->GrControl1.x(), currItem->GrControl1.y(), currItem->GrControl2.x(), currItem->GrControl2.y(), currItem->GrControl3.x(), currItem->GrControl3.y(), currItem->GrControl4.x(), currItem->GrControl4.y(), currItem->GrControl5.x(), currItem->GrControl5.y()); |
15024 | fschmid | 930 | else if ((m_ScMW->view->editStrokeGradient == 5) || (m_ScMW->view->editStrokeGradient == 6)) |
931 | Cpal->setMeshPoint(); |
||
16869 | fschmid | 932 | else if (m_ScMW->view->editStrokeGradient == 8) |
933 | Cpal->setMeshPatchPoint(); |
||
16870 | fschmid | 934 | else if (m_ScMW->view->editStrokeGradient == 9) |
935 | Cpal->setMeshPatch(); |
||
16546 | jghali | 936 | else if (!currItem->isGroup()) |
18134 | jghali | 937 | Tpal->setSpecialGradient(currItem->GrMaskStartX, currItem->GrMaskStartY, currItem->GrMaskEndX, currItem->GrMaskEndY, currItem->GrMaskFocalX, currItem->GrMaskFocalY, currItem->GrMaskScale, currItem->GrMaskSkew); |
14300 | fschmid | 938 | } |
3540 | cbradney | 939 | } |
940 | |||
10862 | cbradney | 941 | void PropertiesPalette::setLocked(bool isLocked) |
4695 | cbradney | 942 | { |
16546 | jghali | 943 | shapePal->setLocked(isLocked); |
4695 | cbradney | 944 | } |
945 | |||
16546 | jghali | 946 | void PropertiesPalette::handleShapeEdit() |
4695 | cbradney | 947 | { |
14754 | jghali | 948 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
6451 | fschmid | 949 | return; |
16546 | jghali | 950 | if ((m_haveDoc) && (m_haveItem)) |
6451 | fschmid | 951 | { |
16546 | jghali | 952 | shapePal->setRoundRectEnabled(false); |
6451 | fschmid | 953 | } |
954 | } |
||
17388 | jghali | 955 | |
956 | void PropertiesPalette::handleGradientChanged() |
||
957 | { |
||
958 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
959 | return; |
||
960 | if ((m_haveDoc) && (m_haveItem)) |
||
961 | { |
||
962 | VGradient vg(Tpal->gradEdit->gradient()); |
||
963 | m_doc->itemSelection_SetMaskGradient(vg); |
||
964 | } |
||
17709 | craig | 965 | } |