Rev 18524 | Rev 18753 | 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())); |
||
18534 | jghali | 242 | |
243 | // Handle properties update when switching document |
||
244 | handleSelectionChanged(); |
||
16546 | jghali | 245 | } |
4729 | subik | 246 | |
16546 | jghali | 247 | void PropertiesPalette::unsetDoc() |
248 | { |
||
249 | if (m_doc) |
||
250 | { |
||
251 | disconnect(m_doc->m_Selection, SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
252 | disconnect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged())); |
||
253 | } |
||
17909 | fschmid | 254 | setEnabled(true); |
16546 | jghali | 255 | m_haveDoc = false; |
256 | m_haveItem = false; |
||
257 | m_doc=NULL; |
||
258 | m_item = NULL; |
||
14854 | fschmid | 259 | |
16546 | jghali | 260 | xyzPal->unsetItem(); |
261 | xyzPal->unsetDoc(); |
||
262 | shapePal->unsetItem(); |
||
263 | shapePal->unsetDoc(); |
||
264 | groupPal->unsetItem(); |
||
265 | groupPal->unsetDoc(); |
||
266 | imagePal->unsetItem(); |
||
267 | imagePal->unsetDoc(); |
||
268 | linePal->unsetItem(); |
||
269 | linePal->unsetDoc(); |
||
270 | textPal->unsetItem(); |
||
271 | textPal->unsetDoc(); |
||
16856 | craig | 272 | tablePal->unsetItem(); |
273 | tablePal->unsetDocument(); |
||
3 | paul | 274 | |
7900 | fschmid | 275 | Cpal->setCurrentItem(NULL); |
276 | Cpal->setDocument(NULL); |
||
14300 | fschmid | 277 | Tpal->setCurrentItem(NULL); |
278 | Tpal->setDocument(NULL); |
||
16546 | jghali | 279 | |
280 | m_haveItem = false; |
||
16856 | craig | 281 | for (int ws = 1; ws < 9; ++ws) |
11003 | fschmid | 282 | TabStack->setItemEnabled(ws, false); |
283 | TabStack->widget(0)->setEnabled(false); |
||
284 | TabStack->setItemEnabled(idXYZItem, false); |
||
3 | paul | 285 | } |
286 | |||
10862 | cbradney | 287 | void PropertiesPalette::unsetItem() |
4738 | cbradney | 288 | { |
16546 | jghali | 289 | m_haveItem = false; |
290 | m_item = NULL; |
||
7900 | fschmid | 291 | Cpal->setCurrentItem(NULL); |
14300 | fschmid | 292 | Tpal->setCurrentItem(NULL); |
17327 | fschmid | 293 | tablePal->unsetItem(); |
16546 | jghali | 294 | handleSelectionChanged(); |
4738 | cbradney | 295 | } |
4546 | subik | 296 | |
10862 | cbradney | 297 | void PropertiesPalette::setTextFlowMode(PageItem::TextFlowMode mode) |
5620 | jghali | 298 | { |
16546 | jghali | 299 | if (!m_ScMW || m_ScMW->scriptIsRunning() || !m_haveItem) |
5620 | jghali | 300 | return; |
16546 | jghali | 301 | shapePal->displayTextFlowMode(mode); |
302 | groupPal->displayTextFlowMode(mode); |
||
303 | } |
||
304 | |||
305 | PageItem* PropertiesPalette::currentItemFromSelection() |
||
306 | { |
||
307 | PageItem *currentItem = NULL; |
||
308 | |||
309 | if (m_doc) |
||
8494 | fschmid | 310 | { |
16943 | fschmid | 311 | currentItem = m_doc->m_Selection->itemAt(0); |
312 | /* if (m_doc->m_Selection->count() > 1) |
||
16546 | jghali | 313 | { |
16943 | fschmid | 314 | int lowestItem = 999999; |
16546 | jghali | 315 | for (int a=0; a<m_doc->m_Selection->count(); ++a) |
316 | { |
||
317 | currentItem = m_doc->m_Selection->itemAt(a); |
||
16943 | fschmid | 318 | lowestItem = qMin(lowestItem, m_doc->Items->indexOf(currentItem)); |
16546 | jghali | 319 | } |
320 | currentItem = m_doc->Items->at(lowestItem); |
||
321 | } |
||
322 | else if (m_doc->m_Selection->count() == 1) |
||
323 | { |
||
324 | currentItem = m_doc->m_Selection->itemAt(0); |
||
16943 | fschmid | 325 | } */ |
8494 | fschmid | 326 | } |
16546 | jghali | 327 | |
328 | return currentItem; |
||
5620 | jghali | 329 | } |
330 | |||
17353 | fschmid | 331 | void PropertiesPalette::AppModeChanged() |
332 | { |
||
333 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
334 | return; |
||
335 | if ((m_haveDoc) && (m_haveItem)) |
||
336 | { |
||
337 | if (m_item->isTable()) |
||
338 | { |
||
339 | TabStack->setItemEnabled(idTextItem, m_doc->appMode == modeEditTable); |
||
340 | if (m_doc->appMode == modeEditTable) |
||
341 | connect(m_item->asTable(), SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
342 | else |
||
343 | disconnect(m_item->asTable(), SIGNAL(selectionChanged()), this, SLOT(handleSelectionChanged())); |
||
344 | } |
||
345 | textPal->handleSelectionChanged(); |
||
346 | } |
||
347 | } |
||
348 | |||
16546 | jghali | 349 | void PropertiesPalette::setCurrentItem(PageItem *i) |
3 | paul | 350 | { |
14754 | jghali | 351 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 352 | return; |
3894 | cbradney | 353 | //CB We shouldnt really need to process this if our item is the same one |
354 | //maybe we do if the item has been changed by scripter.. but that should probably |
||
355 | //set some status if so. |
||
16546 | jghali | 356 | //FIXME: This wont work until when a canvas deselect happens, m_item must be NULL. |
357 | //if (m_item == i) |
||
3894 | cbradney | 358 | // return; |
11741 | jghali | 359 | |
16546 | jghali | 360 | if (!i) |
361 | { |
||
362 | unsetItem(); |
||
363 | return; |
||
364 | } |
||
365 | |||
366 | int oldTabIndex = TabStack->currentIndex(); |
||
367 | |||
368 | if (!m_doc) |
||
11741 | jghali | 369 | setDoc(i->doc()); |
370 | |||
17936 | craig | 371 | disconnect(TabStack, SIGNAL(currentChanged2(int)) , this, SLOT(SelTab(int))); |
16546 | jghali | 372 | disconnect(linePal , SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int))); |
4546 | subik | 373 | |
16546 | jghali | 374 | m_haveItem = false; |
375 | m_item = i; |
||
13222 | fschmid | 376 | |
17327 | fschmid | 377 | tablePal->setItem(m_item); |
378 | |||
16546 | jghali | 379 | Tpal->setCurrentItem(m_item); |
14300 | fschmid | 380 | Tpal->updateFromItem(); |
12471 | cbradney | 381 | |
16546 | jghali | 382 | setTextFlowMode(m_item->textFlowMode()); |
12471 | cbradney | 383 | |
16546 | jghali | 384 | connect(linePal , SIGNAL(lineModeChanged(int)), this, SLOT(NewLineMode(int))); |
14308 | fschmid | 385 | |
16546 | jghali | 386 | //CB replaces old emits from PageItem::emitAllToGUI() |
387 | setLocked(i->locked()); |
||
14308 | fschmid | 388 | |
16546 | jghali | 389 | if ((m_item->isGroup()) && (!m_item->isSingleSel)) |
232 | Franz | 390 | { |
8494 | fschmid | 391 | TabStack->setItemEnabled(idXYZItem, true); |
392 | TabStack->setItemEnabled(idShapeItem, false); |
||
6451 | fschmid | 393 | TabStack->setItemEnabled(idGroupItem, true); |
14077 | fschmid | 394 | TabStack->setItemEnabled(idLineItem, false); |
15060 | fschmid | 395 | TabStack->setItemEnabled(idColorsItem, false); |
8494 | fschmid | 396 | TabStack->setItemEnabled(idTextItem, false); |
397 | TabStack->setItemEnabled(idImageItem, false); |
||
17387 | fschmid | 398 | TabStack->setItemEnabled(idTableItem, false); |
6451 | fschmid | 399 | } |
400 | else |
||
401 | TabStack->setItemEnabled(idGroupItem, false); |
||
16546 | jghali | 402 | |
403 | m_haveItem = true; |
||
404 | |||
405 | if (oldTabIndex != TabStack->currentIndex()) |
||
215 | Franz | 406 | { |
16546 | jghali | 407 | //Must be called only when necessary : cause focus problem |
408 | //in spinboxes when processing valueChanged() signals |
||
409 | SelTab(TabStack->currentIndex()); |
||
215 | Franz | 410 | } |
4546 | subik | 411 | |
18534 | jghali | 412 | if (!sender()) |
413 | { |
||
414 | xyzPal->handleSelectionChanged(); |
||
415 | shapePal->handleSelectionChanged(); |
||
416 | groupPal->handleSelectionChanged(); |
||
417 | imagePal->handleSelectionChanged(); |
||
418 | linePal->handleSelectionChanged(); |
||
419 | textPal->handleSelectionChanged(); |
||
420 | tablePal->handleSelectionChanged(); |
||
421 | Cpal->handleSelectionChanged(); |
||
422 | } |
||
16546 | jghali | 423 | |
424 | if (m_item->asOSGFrame()) |
||
13839 | fschmid | 425 | { |
426 | TabStack->setItemEnabled(idXYZItem, true); |
||
427 | TabStack->setItemEnabled(idShapeItem, true); |
||
428 | TabStack->setItemEnabled(idGroupItem, false); |
||
429 | TabStack->setItemEnabled(idLineItem, false); |
||
430 | TabStack->setItemEnabled(idColorsItem, true); |
||
16856 | craig | 431 | TabStack->setItemEnabled(idTableItem, false); |
14300 | fschmid | 432 | TabStack->setItemEnabled(idTransparencyItem, false); |
13839 | fschmid | 433 | TabStack->setItemEnabled(idTextItem, false); |
434 | TabStack->setItemEnabled(idImageItem, false); |
||
17387 | fschmid | 435 | TabStack->setItemEnabled(idTableItem, false); |
13839 | fschmid | 436 | } |
16546 | jghali | 437 | if (m_item->asSymbolFrame()) |
15060 | fschmid | 438 | { |
439 | TabStack->setItemEnabled(idXYZItem, true); |
||
440 | TabStack->setItemEnabled(idShapeItem, false); |
||
441 | TabStack->setItemEnabled(idGroupItem, true); |
||
442 | TabStack->setItemEnabled(idLineItem, false); |
||
443 | TabStack->setItemEnabled(idColorsItem, false); |
||
444 | TabStack->setItemEnabled(idTextItem, false); |
||
445 | TabStack->setItemEnabled(idImageItem, false); |
||
446 | TabStack->setItemEnabled(idTransparencyItem, false); |
||
17387 | fschmid | 447 | TabStack->setItemEnabled(idTableItem, false); |
15060 | fschmid | 448 | } |
17936 | craig | 449 | connect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
3 | paul | 450 | } |
451 | |||
16546 | jghali | 452 | void PropertiesPalette::handleSelectionChanged() |
3 | paul | 453 | { |
16546 | jghali | 454 | if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 455 | return; |
13606 | jghali | 456 | int currentTab = TabStack->currentIndex(); |
17936 | craig | 457 | disconnect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
16546 | jghali | 458 | |
459 | PageItem* currItem = currentItemFromSelection(); |
||
460 | if (m_doc->m_Selection->count() > 1) |
||
215 | Franz | 461 | { |
16856 | craig | 462 | for (int ws = 1; ws < 9; ++ws) |
11316 | fschmid | 463 | TabStack->setItemEnabled(ws, false); |
10529 | fschmid | 464 | TabStack->widget(0)->setEnabled(true); |
6451 | fschmid | 465 | TabStack->setItemEnabled(idXYZItem, true); |
18138 | fschmid | 466 | TabStack->setItemEnabled(idLineItem, true); |
6451 | fschmid | 467 | TabStack->setItemEnabled(idColorsItem, true); |
14300 | fschmid | 468 | TabStack->setItemEnabled(idTransparencyItem, true); |
16856 | craig | 469 | TabStack->setItemEnabled(idTableItem, false); // At least not for now. |
16546 | jghali | 470 | if (m_haveItem && m_item) |
13606 | jghali | 471 | { |
16546 | jghali | 472 | if ((m_item->isGroup()) && (!m_item->isSingleSel)) |
13606 | jghali | 473 | TabStack->setItemEnabled(idGroupItem, true); |
474 | } |
||
215 | Franz | 475 | } |
3 | paul | 476 | else |
215 | Franz | 477 | { |
16546 | jghali | 478 | int itemType = currItem ? (int) currItem->itemType() : -1; |
479 | m_haveItem = (itemType != -1); |
||
480 | |||
16943 | fschmid | 481 | // int visID = TabStack->currentIndex(); |
10529 | fschmid | 482 | TabStack->widget(0)->setEnabled(true); |
6451 | fschmid | 483 | TabStack->setItemEnabled(idXYZItem, true); |
484 | TabStack->setItemEnabled(idColorsItem, true); |
||
14300 | fschmid | 485 | TabStack->setItemEnabled(idTransparencyItem, true); |
17387 | fschmid | 486 | TabStack->setItemEnabled(idTableItem, false); |
16546 | jghali | 487 | switch (itemType) |
5226 | cbradney | 488 | { |
217 | Franz | 489 | case -1: |
16546 | jghali | 490 | m_haveItem = false; |
16856 | craig | 491 | for (int ws = 1; ws < 9; ++ws) |
2148 | fschmid | 492 | TabStack->setItemEnabled(ws, false); |
10529 | fschmid | 493 | TabStack->widget(0)->setEnabled(false); |
6451 | fschmid | 494 | TabStack->setItemEnabled(idXYZItem, false); |
16546 | jghali | 495 | Cpal->displayGradient(0); |
217 | Franz | 496 | break; |
13839 | fschmid | 497 | case PageItem::ImageFrame: |
498 | case PageItem::LatexFrame: |
||
499 | case PageItem::OSGFrame: |
||
16546 | jghali | 500 | if (currItem->asOSGFrame()) |
13839 | fschmid | 501 | { |
502 | TabStack->setItemEnabled(idXYZItem, true); |
||
503 | TabStack->setItemEnabled(idShapeItem, true); |
||
504 | TabStack->setItemEnabled(idGroupItem, false); |
||
505 | TabStack->setItemEnabled(idLineItem, false); |
||
506 | TabStack->setItemEnabled(idColorsItem, true); |
||
14300 | fschmid | 507 | TabStack->setItemEnabled(idTransparencyItem, false); |
13839 | fschmid | 508 | TabStack->setItemEnabled(idTextItem, false); |
509 | TabStack->setItemEnabled(idImageItem, false); |
||
510 | } |
||
4941 | fschmid | 511 | else |
13839 | fschmid | 512 | { |
513 | TabStack->setItemEnabled(idShapeItem, true); |
||
514 | TabStack->setItemEnabled(idTextItem, false); |
||
515 | TabStack->setItemEnabled(idImageItem, true); |
||
516 | TabStack->setItemEnabled(idLineItem, true); |
||
517 | } |
||
217 | Franz | 518 | break; |
13839 | fschmid | 519 | case PageItem::TextFrame: |
6451 | fschmid | 520 | TabStack->setItemEnabled(idShapeItem, true); |
521 | TabStack->setItemEnabled(idTextItem, true); |
||
522 | TabStack->setItemEnabled(idImageItem, false); |
||
523 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 524 | break; |
13839 | fschmid | 525 | case PageItem::Line: |
6451 | fschmid | 526 | TabStack->setItemEnabled(idShapeItem, false); |
527 | TabStack->setItemEnabled(idTextItem, false); |
||
528 | TabStack->setItemEnabled(idImageItem, false); |
||
529 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 530 | break; |
13839 | fschmid | 531 | case PageItem::ItemType1: |
532 | case PageItem::ItemType3: |
||
533 | case PageItem::Polygon: |
||
16191 | fschmid | 534 | case PageItem::RegularPolygon: |
16215 | fschmid | 535 | case PageItem::Arc: |
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::PolyLine: |
16311 | fschmid | 542 | case PageItem::Spiral: |
6451 | fschmid | 543 | TabStack->setItemEnabled(idShapeItem, true); |
544 | TabStack->setItemEnabled(idTextItem, false); |
||
545 | TabStack->setItemEnabled(idImageItem, false); |
||
546 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 547 | break; |
13839 | fschmid | 548 | case PageItem::PathText: |
6451 | fschmid | 549 | TabStack->setItemEnabled(idShapeItem, true); |
550 | TabStack->setItemEnabled(idTextItem, true); |
||
551 | TabStack->setItemEnabled(idImageItem, false); |
||
552 | TabStack->setItemEnabled(idLineItem, true); |
||
217 | Franz | 553 | break; |
15060 | fschmid | 554 | case PageItem::Symbol: |
16105 | fschmid | 555 | case PageItem::Group: |
15060 | fschmid | 556 | TabStack->setItemEnabled(idShapeItem, false); |
557 | TabStack->setItemEnabled(idTextItem, false); |
||
558 | TabStack->setItemEnabled(idImageItem, false); |
||
18138 | fschmid | 559 | TabStack->setItemEnabled(idLineItem, true); |
560 | TabStack->setItemEnabled(idGroupItem, false); |
||
15060 | fschmid | 561 | TabStack->setItemEnabled(idColorsItem, false); |
562 | TabStack->setItemEnabled(idTransparencyItem, false); |
||
563 | break; |
||
16856 | craig | 564 | case PageItem::Table: |
565 | TabStack->setItemEnabled(idTableItem, true); |
||
566 | TabStack->setItemEnabled(idShapeItem, true); |
||
17353 | fschmid | 567 | TabStack->setItemEnabled(idTextItem, m_doc->appMode == modeEditTable); |
16856 | craig | 568 | TabStack->setItemEnabled(idImageItem, false); |
569 | TabStack->setItemEnabled(idLineItem, false); |
||
570 | TabStack->setItemEnabled(idGroupItem, false); |
||
571 | TabStack->setItemEnabled(idColorsItem, false); |
||
572 | TabStack->setItemEnabled(idTransparencyItem, false); |
||
573 | break; |
||
3 | paul | 574 | } |
215 | Franz | 575 | } |
13606 | jghali | 576 | if (TabStack->isItemEnabled(currentTab) && (TabStack->currentIndex() != currentTab)) |
577 | TabStack->setCurrentIndex(currentTab); |
||
3 | paul | 578 | updateGeometry(); |
579 | repaint(); |
||
17936 | craig | 580 | connect(TabStack, SIGNAL(currentChanged2(int)), this, SLOT(SelTab(int))); |
3 | paul | 581 | |
16546 | jghali | 582 | if (currItem) |
6451 | fschmid | 583 | { |
16546 | jghali | 584 | setCurrentItem(currItem); |
6451 | fschmid | 585 | } |
4049 | cbradney | 586 | } |
587 | |||
10862 | cbradney | 588 | void PropertiesPalette::unitChange() |
3 | paul | 589 | { |
16546 | jghali | 590 | if (!m_haveDoc) |
11633 | jghali | 591 | return; |
16546 | jghali | 592 | bool tmp = m_haveItem; |
593 | m_haveItem = false; |
||
8605 | cbradney | 594 | double oldRatio = m_unitRatio; |
16546 | jghali | 595 | m_unitRatio = m_doc->unitRatio(); |
596 | m_unitIndex = m_doc->unitIndex(); |
||
3 | paul | 597 | |
16546 | jghali | 598 | xyzPal->unitChange(); |
599 | shapePal->unitChange(); |
||
600 | groupPal->unitChange(); |
||
601 | imagePal->unitChange(); |
||
602 | linePal->unitChange(); |
||
603 | textPal->unitChange(); |
||
272 | Franz | 604 | |
16546 | jghali | 605 | Cpal->unitChange(oldRatio, m_unitRatio, m_doc->unitIndex()); |
606 | Tpal->unitChange(oldRatio, m_unitRatio, m_doc->unitIndex()); |
||
607 | m_haveItem = tmp; |
||
13811 | pierre | 608 | } |
3 | paul | 609 | |
16546 | jghali | 610 | void PropertiesPalette::NewLineMode(int mode) |
13811 | pierre | 611 | { |
14754 | jghali | 612 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
13811 | pierre | 613 | return; |
16546 | jghali | 614 | xyzPal->setLineMode(mode); |
615 | xyzPal->displayWH(m_item->width(), m_item->height()); |
||
3 | paul | 616 | updateGeometry(); |
617 | repaint(); |
||
618 | } |
||
619 | |||
16546 | jghali | 620 | void PropertiesPalette::handleNewShape(int frameType) |
3 | paul | 621 | { |
14754 | jghali | 622 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
173 | Franz | 623 | return; |
16546 | jghali | 624 | if ((m_haveDoc) && (m_haveItem)) |
2247 | fschmid | 625 | { |
16546 | jghali | 626 | if ((m_item->itemType() == PageItem::PolyLine) || (m_item->itemType() == PageItem::PathText)) |
3 | paul | 627 | return; |
13346 | subik | 628 | |
16546 | jghali | 629 | if ((m_item->itemType() == PageItem::ImageFrame) || (m_item->itemType() == PageItem::TextFrame)) |
13346 | subik | 630 | { |
16546 | jghali | 631 | shapePal->setRoundRectEnabled(frameType == 0); |
3 | paul | 632 | return; |
7359 | fschmid | 633 | } |
16546 | jghali | 634 | // m_item->convertTo(PageItem::Polygon); |
635 | // newSelection(6); |
||
636 | shapePal->setRoundRectEnabled(frameType == 0); |
||
215 | Franz | 637 | } |
3 | paul | 638 | } |
639 | |||
14981 | fschmid | 640 | 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 | 641 | { |
14754 | jghali | 642 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
294 | Franz | 643 | return; |
16546 | jghali | 644 | if ((m_haveDoc) && (m_haveItem)) |
294 | Franz | 645 | { |
14197 | fschmid | 646 | QRectF upRect; |
17747 | craig | 647 | UndoTransaction *trans = NULL; |
648 | if(UndoManager::undoEnabled()) |
||
649 | trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "p","",Um::ILine)); |
||
14300 | fschmid | 650 | if (m_ScMW->view->editStrokeGradient == 1) |
14197 | fschmid | 651 | { |
17709 | craig | 652 | m_item->setGradientStrokeStartX(x1 / m_unitRatio); |
653 | m_item->setGradientStrokeStartY(y1 / m_unitRatio); |
||
654 | m_item->setGradientStrokeEndX(x2 / m_unitRatio); |
||
655 | m_item->setGradientStrokeEndY(y2 / m_unitRatio); |
||
656 | m_item->setGradientStrokeFocalX(fx / m_unitRatio); |
||
657 | m_item->setGradientStrokeFocalY(fy / m_unitRatio); |
||
658 | m_item->setGradientStrokeScale(sg); |
||
659 | m_item->setGradientStrokeSkew(sk); |
||
660 | if (m_item->strokeGradientType() == 6) |
||
14278 | fschmid | 661 | { |
17709 | craig | 662 | m_item->setGradientStrokeFocalX(m_item->gradientStrokeStartX()); |
663 | m_item->setGradientStrokeFocalY(m_item->gradientStrokeStartY()); |
||
14278 | fschmid | 664 | } |
16546 | jghali | 665 | m_item->update(); |
17709 | craig | 666 | upRect = QRectF(QPointF(m_item->gradientStrokeStartX(), m_item->gradientStrokeStartY()), QPointF(m_item->gradientStrokeEndX(), m_item->gradientStrokeEndY())); |
667 | double radEnd = distance(m_item->gradientStrokeEndX() - m_item->gradientStrokeStartX(), m_item->gradientStrokeEndY() - m_item->gradientStrokeStartY()); |
||
668 | double rotEnd = xy2Deg(m_item->gradientStrokeEndX() - m_item->gradientStrokeStartX(), m_item->gradientStrokeEndY() - m_item->gradientStrokeStartY()); |
||
14284 | fschmid | 669 | QTransform m; |
17709 | craig | 670 | m.translate(m_item->gradientStrokeStartX(), m_item->gradientStrokeStartY()); |
14284 | fschmid | 671 | m.rotate(rotEnd); |
672 | m.rotate(-90); |
||
17709 | craig | 673 | m.rotate(m_item->gradientStrokeSkew()); |
674 | m.translate(radEnd * m_item->gradientStrokeScale(), 0); |
||
14284 | fschmid | 675 | QPointF shP = m.map(QPointF(0,0)); |
17709 | craig | 676 | upRect = upRect.united(QRectF(shP, QPointF(m_item->gradientStrokeEndX(), m_item->gradientStrokeEndY())).normalized()); |
677 | upRect = upRect.united(QRectF(shP, QPointF(m_item->gradientStrokeStartX(), m_item->gradientStrokeStartY())).normalized()); |
||
14284 | fschmid | 678 | upRect |= QRectF(shP, QPointF(0, 0)).normalized(); |
16546 | jghali | 679 | upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); |
14197 | fschmid | 680 | } |
14952 | fschmid | 681 | else if (m_ScMW->view->editStrokeGradient == 3) |
682 | { |
||
17709 | craig | 683 | m_item->setGradientControl1(FPoint(x1 / m_unitRatio, y1 / m_unitRatio)); |
684 | m_item->setGradientControl2(FPoint(x2 / m_unitRatio, y2 / m_unitRatio)); |
||
685 | m_item->setGradientControl3(FPoint(fx / m_unitRatio, fy / m_unitRatio)); |
||
686 | m_item->setGradientControl4(FPoint(sg / m_unitRatio, sk / m_unitRatio)); |
||
16546 | jghali | 687 | m_item->update(); |
688 | upRect = QRectF(QPointF(-m_item->width(), -m_item->height()), QPointF(m_item->width() * 2, m_item->height() * 2)).normalized(); |
||
14952 | fschmid | 689 | } |
14981 | fschmid | 690 | else if (m_ScMW->view->editStrokeGradient == 4) |
691 | { |
||
17709 | craig | 692 | m_item->setGradientControl1(FPoint(x1 / m_unitRatio, y1 / m_unitRatio)); |
693 | m_item->setGradientControl2(FPoint(x2 / m_unitRatio, y2 / m_unitRatio)); |
||
694 | m_item->setGradientControl3(FPoint(fx / m_unitRatio, fy / m_unitRatio)); |
||
695 | m_item->setGradientControl4(FPoint(sg / m_unitRatio, sk / m_unitRatio)); |
||
696 | m_item->setGradientControl5(FPoint(cx / m_unitRatio, cy / m_unitRatio)); |
||
16546 | jghali | 697 | m_item->update(); |
698 | upRect = QRectF(QPointF(-m_item->width(), -m_item->height()), QPointF(m_item->width() * 2, m_item->height() * 2)).normalized(); |
||
14981 | fschmid | 699 | } |
14197 | fschmid | 700 | else |
701 | { |
||
17747 | craig | 702 | if (m_item->gradientType() == 13 && UndoManager::undoEnabled()) |
14278 | fschmid | 703 | { |
17709 | craig | 704 | SimpleState *ss= new SimpleState("Refresh"); |
705 | ss->set("UNDO_UPDATE_CONICAL","undo_update_conical"); |
||
706 | undoManager->action(m_item,ss); |
||
14278 | fschmid | 707 | } |
17709 | craig | 708 | m_item->setGradientStartX(x1 / m_unitRatio); |
709 | m_item->setGradientStartY(y1 / m_unitRatio); |
||
710 | m_item->setGradientEndX(x2 / m_unitRatio); |
||
711 | m_item->setGradientEndY(y2 / m_unitRatio); |
||
712 | m_item->setGradientFocalX(fx / m_unitRatio); |
||
713 | m_item->setGradientFocalY(fy / m_unitRatio); |
||
714 | m_item->setGradientScale(sg); |
||
715 | m_item->setGradientSkew(sk); |
||
716 | if (m_item->strokeGradientType() == 6) |
||
717 | { |
||
718 | m_item->setGradientFocalX(m_item->gradientStartX()); |
||
719 | m_item->setGradientFocalY(m_item->gradientStartY()); |
||
720 | } |
||
17747 | craig | 721 | if (m_item->gradientType() == 13 && UndoManager::undoEnabled()) |
17709 | craig | 722 | { |
16786 | fschmid | 723 | m_item->createConicalMesh(); |
17709 | craig | 724 | SimpleState *ss= new SimpleState("Refresh"); |
725 | ss->set("REDO_UPDATE_CONICAL","redo_update_conical"); |
||
726 | undoManager->action(m_item,ss); |
||
727 | } |
||
16546 | jghali | 728 | m_item->update(); |
17709 | craig | 729 | upRect = QRectF(QPointF(m_item->gradientStartX(), m_item->gradientStartY()), QPointF(m_item->gradientEndX(), m_item->gradientEndY())); |
730 | double radEnd = distance(m_item->gradientEndX() - m_item->gradientStartX(), m_item->gradientEndY() - m_item->gradientStartY()); |
||
731 | double rotEnd = xy2Deg(m_item->gradientEndX() - m_item->gradientStartX(), m_item->gradientEndY() - m_item->gradientStartY()); |
||
14284 | fschmid | 732 | QTransform m; |
17709 | craig | 733 | m.translate(m_item->gradientStartX(), m_item->gradientStartY()); |
14284 | fschmid | 734 | m.rotate(rotEnd); |
735 | m.rotate(-90); |
||
17709 | craig | 736 | m.rotate(m_item->gradientSkew()); |
737 | m.translate(radEnd * m_item->gradientScale(), 0); |
||
14284 | fschmid | 738 | QPointF shP = m.map(QPointF(0,0)); |
17709 | craig | 739 | upRect |= QRectF(shP, QPointF(m_item->gradientEndX(), m_item->gradientEndY())).normalized(); |
740 | upRect |= QRectF(shP, QPointF(m_item->gradientStartX(), m_item->gradientStartY())).normalized(); |
||
14284 | fschmid | 741 | upRect |= QRectF(shP, QPointF(0, 0)).normalized(); |
16546 | jghali | 742 | upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); |
14197 | fschmid | 743 | } |
17747 | craig | 744 | if(trans) |
745 | { |
||
746 | trans->commit(); |
||
747 | delete trans; |
||
748 | trans = NULL; |
||
749 | } |
||
16546 | jghali | 750 | upRect.translate(m_item->xPos(), m_item->yPos()); |
751 | m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0)); |
||
17099 | jghali | 752 | m_doc->changed(); |
294 | Franz | 753 | } |
754 | } |
||
755 | |||
14300 | fschmid | 756 | void PropertiesPalette::toggleGradientEdit(int stroke) |
735 | fschmid | 757 | { |
14754 | jghali | 758 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
735 | fschmid | 759 | return; |
16546 | jghali | 760 | if ((m_haveDoc) && (m_haveItem)) |
735 | fschmid | 761 | { |
14197 | fschmid | 762 | m_ScMW->view->editStrokeGradient = stroke; |
14300 | fschmid | 763 | if (stroke == 1) |
14197 | fschmid | 764 | { |
765 | if (Cpal->gradEditButtonStroke->isChecked()) |
||
766 | m_ScMW->view->requestMode(modeEditGradientVectors); |
||
767 | else |
||
768 | m_ScMW->view->requestMode(modeNormal); |
||
769 | } |
||
735 | fschmid | 770 | else |
14197 | fschmid | 771 | { |
15024 | fschmid | 772 | if ((Cpal->gradEditButton->isChecked()) || (Cpal->editMeshColors->isChecked())) |
773 | { |
||
774 | if ((stroke == 5) || (stroke == 6) || (stroke == 7)) |
||
775 | m_ScMW->view->requestMode(modeEditMeshGradient); |
||
16870 | fschmid | 776 | else if ((stroke == 8) || (stroke == 9) || (stroke == 10) || (stroke == 11)) |
16869 | fschmid | 777 | m_ScMW->view->requestMode(modeEditMeshPatch); |
15024 | fschmid | 778 | else |
779 | m_ScMW->view->requestMode(modeEditGradientVectors); |
||
780 | } |
||
14197 | fschmid | 781 | else |
782 | m_ScMW->view->requestMode(modeNormal); |
||
783 | } |
||
16546 | jghali | 784 | m_ScMW->view->RefreshGradient(m_item); |
735 | fschmid | 785 | } |
786 | } |
||
787 | |||
14300 | fschmid | 788 | void PropertiesPalette::NewSpGradientM(double x1, double y1, double x2, double y2, double fx, double fy, double sg, double sk) |
789 | { |
||
14754 | jghali | 790 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
14300 | fschmid | 791 | return; |
16546 | jghali | 792 | if ((m_haveDoc) && (m_haveItem)) |
14300 | fschmid | 793 | { |
794 | QRectF upRect; |
||
17747 | craig | 795 | UndoTransaction *trans = NULL; |
796 | if(UndoManager::undoEnabled()) |
||
797 | trans = new UndoTransaction(undoManager->beginTransaction(Um::Selection,Um::ILine,Um::GradPos + "o","",Um::ILine)); |
||
17709 | craig | 798 | m_item->setGradientMaskStartX(x1 / m_unitRatio); |
799 | m_item->setGradientMaskStartY(y1 / m_unitRatio); |
||
800 | m_item->setGradientMaskEndX(x2 / m_unitRatio); |
||
801 | m_item->setGradientMaskEndY(y2 / m_unitRatio); |
||
802 | m_item->setGradientMaskFocalX(fx / m_unitRatio); |
||
803 | m_item->setGradientMaskFocalY(fy / m_unitRatio); |
||
804 | m_item->setGradientMaskScale(sg); |
||
805 | m_item->setGradientMaskSkew(sk); |
||
16546 | jghali | 806 | if ((m_item->GrMask == 1) || (m_item->GrMask == 4)) |
14300 | fschmid | 807 | { |
17709 | craig | 808 | m_item->setGradientMaskFocalX(m_item->GrMaskStartX); |
809 | m_item->setGradientMaskFocalY(m_item->GrMaskStartY); |
||
14300 | fschmid | 810 | } |
16546 | jghali | 811 | m_item->update(); |
17747 | craig | 812 | if(trans) |
813 | { |
||
814 | trans->commit(); |
||
815 | delete trans; |
||
816 | trans = NULL; |
||
817 | } |
||
16546 | jghali | 818 | upRect = QRectF(QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY), QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY)); |
819 | double radEnd = distance(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY); |
||
820 | double rotEnd = xy2Deg(m_item->GrMaskEndX - m_item->GrMaskStartX, m_item->GrMaskEndY - m_item->GrMaskStartY); |
||
14300 | fschmid | 821 | QTransform m; |
16546 | jghali | 822 | m.translate(m_item->GrMaskStartX, m_item->GrMaskStartY); |
14300 | fschmid | 823 | m.rotate(rotEnd); |
824 | m.rotate(-90); |
||
16546 | jghali | 825 | m.rotate(m_item->GrMaskSkew); |
826 | m.translate(radEnd * m_item->GrMaskScale, 0); |
||
14300 | fschmid | 827 | QPointF shP = m.map(QPointF(0,0)); |
16546 | jghali | 828 | upRect |= QRectF(shP, QPointF(m_item->GrMaskEndX, m_item->GrMaskEndY)).normalized(); |
829 | upRect |= QRectF(shP, QPointF(m_item->GrMaskStartX, m_item->GrMaskStartY)).normalized(); |
||
14300 | fschmid | 830 | upRect |= QRectF(shP, QPointF(0, 0)).normalized(); |
16546 | jghali | 831 | upRect |= QRectF(shP, QPointF(m_item->width(), m_item->height())).normalized(); |
832 | upRect.translate(m_item->xPos(), m_item->yPos()); |
||
833 | m_doc->regionsChanged()->update(upRect.adjusted(-10.0, -10.0, 10.0, 10.0)); |
||
17099 | jghali | 834 | m_doc->changed(); |
14300 | fschmid | 835 | } |
836 | } |
||
837 | |||
838 | void PropertiesPalette::toggleGradientEditM() |
||
839 | { |
||
14754 | jghali | 840 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
14300 | fschmid | 841 | return; |
16546 | jghali | 842 | if ((m_haveDoc) && (m_haveItem)) |
14300 | fschmid | 843 | { |
844 | m_ScMW->view->editStrokeGradient = 2; |
||
845 | if (Tpal->gradEditButton->isChecked()) |
||
846 | m_ScMW->view->requestMode(modeEditGradientVectors); |
||
847 | else |
||
848 | m_ScMW->view->requestMode(modeNormal); |
||
849 | } |
||
850 | } |
||
851 | |||
10862 | cbradney | 852 | void PropertiesPalette::updateColorList() |
3540 | cbradney | 853 | { |
16546 | jghali | 854 | if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning()) |
3540 | cbradney | 855 | return; |
68 | Franz | 856 | |
16546 | jghali | 857 | groupPal->updateColorList(); |
858 | textPal->updateColorList(); |
||
16856 | craig | 859 | tablePal->updateColorList(); |
16546 | jghali | 860 | Cpal->updateColorList(); |
861 | Tpal->updateColorList(); |
||
68 | Franz | 862 | |
16546 | jghali | 863 | assert (m_doc->PageColors.document()); |
68 | Franz | 864 | } |
865 | |||
10862 | cbradney | 866 | bool PropertiesPalette::userActionOn() |
1263 | tsoots | 867 | { |
16546 | jghali | 868 | bool userActionOn = false; |
869 | userActionOn = xyzPal->userActionOn(); |
||
870 | userActionOn |= imagePal->userActionOn(); |
||
871 | return userActionOn; |
||
1502 | tsoots | 872 | } |
873 | |||
10862 | cbradney | 874 | void PropertiesPalette::changeEvent(QEvent *e) |
10859 | cbradney | 875 | { |
876 | if (e->type() == QEvent::LanguageChange) |
||
877 | { |
||
878 | languageChange(); |
||
16546 | jghali | 879 | return; |
10859 | cbradney | 880 | } |
16546 | jghali | 881 | ScDockPalette::changeEvent(e); |
10859 | cbradney | 882 | } |
883 | |||
10862 | cbradney | 884 | void PropertiesPalette::languageChange() |
2199 | cbradney | 885 | { |
10495 | cbradney | 886 | setWindowTitle( tr("Properties")); |
4546 | subik | 887 | |
10529 | fschmid | 888 | TabStack->setItemText(idXYZItem, tr("X, Y, &Z")); |
889 | TabStack->setItemText(idTextItem, tr("&Text")); |
||
890 | TabStack->setItemText(idImageItem, tr("&Image")); |
||
891 | TabStack->setItemText(idShapeItem, tr("&Shape")); |
||
892 | TabStack->setItemText(idLineItem, tr("&Line")); |
||
893 | TabStack->setItemText(idColorsItem, tr("&Colors")); |
||
894 | TabStack->setItemText(idGroupItem, tr("&Group")); |
||
14492 | cbradney | 895 | TabStack->setItemText(idTransparencyItem, tr("&Transparency")); |
16856 | craig | 896 | TabStack->setItemText(idTableItem, tr("T&able")); |
4546 | subik | 897 | |
16546 | jghali | 898 | xyzPal->languageChange(); |
899 | shapePal->languageChange(); |
||
900 | groupPal->languageChange(); |
||
901 | imagePal->languageChange(); |
||
902 | linePal->languageChange(); |
||
903 | textPal->languageChange(); |
||
16856 | craig | 904 | tablePal->languageChange(); |
2199 | cbradney | 905 | } |
906 | |||
10862 | cbradney | 907 | void PropertiesPalette::setGradientEditMode(bool on) |
3540 | cbradney | 908 | { |
10529 | fschmid | 909 | Cpal->gradEditButton->setChecked(on); |
3540 | cbradney | 910 | } |
911 | |||
16870 | fschmid | 912 | void PropertiesPalette::endPatchAdd() |
913 | { |
||
914 | Cpal->endPatchAdd(); |
||
915 | } |
||
916 | |||
10862 | cbradney | 917 | void PropertiesPalette::updateColorSpecialGradient() |
3540 | cbradney | 918 | { |
16546 | jghali | 919 | if (!m_haveDoc) |
3549 | cbradney | 920 | return; |
16546 | jghali | 921 | if(m_doc->m_Selection->isEmpty()) |
3593 | cbradney | 922 | return; |
16546 | jghali | 923 | |
924 | groupPal->updateColorSpecialGradient(); |
||
925 | |||
926 | PageItem *currItem=m_doc->m_Selection->itemAt(0); |
||
7921 | cbradney | 927 | if (currItem) |
14300 | fschmid | 928 | { |
929 | if (m_ScMW->view->editStrokeGradient == 0) |
||
18134 | jghali | 930 | Cpal->setSpecialGradient(currItem->GrStartX, currItem->GrStartY, currItem->GrEndX, currItem->GrEndY, currItem->GrFocalX, currItem->GrFocalY, currItem->GrScale, currItem->GrSkew, 0, 0); |
14300 | fschmid | 931 | else if (m_ScMW->view->editStrokeGradient == 1) |
18134 | jghali | 932 | Cpal->setSpecialGradient(currItem->GrStrokeStartX, currItem->GrStrokeStartY, currItem->GrStrokeEndX, currItem->GrStrokeEndY, currItem->GrStrokeFocalX, currItem->GrStrokeFocalY, currItem->GrStrokeScale, currItem->GrStrokeSkew, 0, 0); |
14952 | fschmid | 933 | else if (m_ScMW->view->editStrokeGradient == 3) |
18134 | jghali | 934 | 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 | 935 | else if (m_ScMW->view->editStrokeGradient == 4) |
18134 | jghali | 936 | 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 | 937 | else if ((m_ScMW->view->editStrokeGradient == 5) || (m_ScMW->view->editStrokeGradient == 6)) |
938 | Cpal->setMeshPoint(); |
||
16869 | fschmid | 939 | else if (m_ScMW->view->editStrokeGradient == 8) |
940 | Cpal->setMeshPatchPoint(); |
||
16870 | fschmid | 941 | else if (m_ScMW->view->editStrokeGradient == 9) |
942 | Cpal->setMeshPatch(); |
||
16546 | jghali | 943 | else if (!currItem->isGroup()) |
18134 | jghali | 944 | Tpal->setSpecialGradient(currItem->GrMaskStartX, currItem->GrMaskStartY, currItem->GrMaskEndX, currItem->GrMaskEndY, currItem->GrMaskFocalX, currItem->GrMaskFocalY, currItem->GrMaskScale, currItem->GrMaskSkew); |
14300 | fschmid | 945 | } |
3540 | cbradney | 946 | } |
947 | |||
10862 | cbradney | 948 | void PropertiesPalette::setLocked(bool isLocked) |
4695 | cbradney | 949 | { |
16546 | jghali | 950 | shapePal->setLocked(isLocked); |
4695 | cbradney | 951 | } |
952 | |||
16546 | jghali | 953 | void PropertiesPalette::handleShapeEdit() |
4695 | cbradney | 954 | { |
14754 | jghali | 955 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
6451 | fschmid | 956 | return; |
16546 | jghali | 957 | if ((m_haveDoc) && (m_haveItem)) |
6451 | fschmid | 958 | { |
16546 | jghali | 959 | shapePal->setRoundRectEnabled(false); |
6451 | fschmid | 960 | } |
961 | } |
||
17388 | jghali | 962 | |
963 | void PropertiesPalette::handleGradientChanged() |
||
964 | { |
||
965 | if (!m_ScMW || m_ScMW->scriptIsRunning()) |
||
966 | return; |
||
967 | if ((m_haveDoc) && (m_haveItem)) |
||
968 | { |
||
969 | VGradient vg(Tpal->gradEdit->gradient()); |
||
970 | m_doc->itemSelection_SetMaskGradient(vg); |
||
971 | } |
||
17709 | craig | 972 | } |