38
38
#include "tdebug.h"
39
39
#include "tglobal.h"
40
40
#include "talgorithm.h"
41
#include "ktgraphicalgorithm.h"
44
#include "ktsvgitem.h"
45
#include "ktgraphicobject.h"
46
#include "ktinputdeviceinformation.h"
47
#include "ktgraphicsscene.h"
41
#include "tupgraphicalgorithm.h"
44
#include "tupsvgitem.h"
45
#include "tupgraphicobject.h"
46
#include "tupinputdeviceinformation.h"
47
#include "tupgraphicsscene.h"
48
48
#include "nodemanager.h"
49
#include "ktserializer.h"
50
#include "ktrequestbuilder.h"
51
#include "ktprojectresponse.h"
49
#include "tupserializer.h"
50
#include "tuprequestbuilder.h"
51
#include "tupprojectresponse.h"
54
54
#include <QKeySequence>
84
86
qDeleteAll(k->nodeManagers);
85
87
k->nodeManagers.clear();
88
foreach (QGraphicsView *view, scene->views()) {
89
view->setDragMode(QGraphicsView::RubberBandDrag);
90
foreach (QGraphicsItem *item, scene->items()) {
92
// SQA: Temporary code for debug issues
89
k->scene->clearSelection();
94
foreach (QGraphicsView *view, scene->views()) {
95
view->setDragMode(QGraphicsView::RubberBandDrag);
96
foreach (QGraphicsItem *item, scene->items()) {
97
if (!qgraphicsitem_cast<Node *>(item)) {
98
if (scene->spaceMode() == TupProject::FRAMES_EDITION) {
99
if (item->zValue() >= 10000 && item->toolTip().length()==0) {
100
// if (item->zValue() >= 10000 && !item->toolTip().contains("Tween")) {
101
item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
103
item->setFlag(QGraphicsItem::ItemIsSelectable, false);
104
item->setFlag(QGraphicsItem::ItemIsMovable, false);
107
item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
115
void SelectTool::reset(TupGraphicsScene *scene)
118
T_FUNCINFOX("tools");
121
foreach (QGraphicsView *view, scene->views()) {
122
view->setDragMode(QGraphicsView::RubberBandDrag);
123
foreach (QGraphicsItem *item, scene->items()) {
124
// SQA: Temporary code for debugging issues
95
dom.appendChild(dynamic_cast<KTAbstractSerializable *>(item)->toXml(dom));
127
dom.appendChild(dynamic_cast<TupAbstractSerializable *>(item)->toXml(dom));
96
128
QDomElement root = dom.documentElement();
97
129
tFatal() << "SelectTool::init() - XML: ";
98
130
tFatal() << dom.toString();
101
133
if (!qgraphicsitem_cast<Node *>(item)) {
102
if (scene->spaceMode() == KTProject::FRAMES_EDITION) {
134
if (scene->spaceMode() == TupProject::FRAMES_EDITION) {
103
135
if (item->zValue() >= 10000 && item->toolTip().length()==0) {
136
// if (item->zValue() >= 10000 && !item->toolTip().contains("Tween")) {
104
137
item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
106
139
item->setFlag(QGraphicsItem::ItemIsSelectable, false);
119
152
return QStringList() << tr("Select");
122
void SelectTool::press(const KTInputDeviceInformation *input, KTBrushManager *brushManager, KTGraphicsScene *scene)
155
void SelectTool::press(const TupInputDeviceInformation *input, TupBrushManager *brushManager, TupGraphicsScene *scene)
124
157
Q_UNUSED(brushManager);
143
176
selectedObjects << scene->mouseGrabberItem();
145
178
foreach (QGraphicsItem *item, selectedObjects) {
146
if (item && dynamic_cast<KTAbstractSerializable* > (item)) {
179
if (item && dynamic_cast<TupAbstractSerializable* > (item)) {
147
180
bool found = false;
148
181
foreach (NodeManager *nodeManager, k->nodeManagers) {
149
182
if (item == nodeManager->parentItem()) {
170
204
QTimer::singleShot(0, this, SLOT(syncNodes()));
173
void SelectTool::release(const KTInputDeviceInformation *input, KTBrushManager *brushManager, KTGraphicsScene *scene)
207
void SelectTool::release(const TupInputDeviceInformation *input, TupBrushManager *brushManager, TupGraphicsScene *scene)
176
210
Q_UNUSED(brushManager);
197
231
foreach (QGraphicsItem *item, selectedObjects) {
198
if (item && dynamic_cast<KTAbstractSerializable* > (item)) {
232
if (item && dynamic_cast<TupAbstractSerializable* > (item)) {
199
233
NodeManager *manager = new NodeManager(item, scene);
234
manager->resizeNodes(k->realFactor);
200
235
k->nodeManagers << manager;
204
239
foreach (NodeManager *manager, k->nodeManagers) {
205
240
if (manager->isModified()) {
206
241
QDomDocument doc;
207
doc.appendChild(KTSerializer::properties(manager->parentItem(), doc));
242
doc.appendChild(TupSerializer::properties(manager->parentItem(), doc));
209
244
QGraphicsItem *item = manager->parentItem();
210
KTSvgItem *svg = qgraphicsitem_cast<KTSvgItem *>(item);
245
TupSvgItem *svg = qgraphicsitem_cast<TupSvgItem *>(item);
212
247
int position = -1;
213
KTLibraryObject::Type type;
248
TupLibraryObject::Type type;
217
if (k->scene->spaceMode() == KTProject::FRAMES_EDITION) {
251
if (k->scene->spaceMode() == TupProject::FRAMES_EDITION) {
218
252
position = k->scene->currentFrame()->indexOf(svg);
219
} else if (k->scene->spaceMode() == KTProject::BACKGROUND_EDITION) {
220
KTBackground *bg = k->scene->scene()->background();
253
} else if (k->scene->spaceMode() == TupProject::BACKGROUND_EDITION) {
254
TupBackground *bg = k->scene->scene()->background();
221
255
position = bg->frame()->indexOf(svg);
223
type = KTLibraryObject::Svg;
257
type = TupLibraryObject::Svg;
227
if (k->scene->spaceMode() == KTProject::FRAMES_EDITION) {
260
if (k->scene->spaceMode() == TupProject::FRAMES_EDITION) {
228
261
position = k->scene->currentFrame()->indexOf(manager->parentItem());
229
} else if (k->scene->spaceMode() == KTProject::BACKGROUND_EDITION) {
230
KTBackground *bg = k->scene->scene()->background();
262
tError() << "SelectTool::release() - Vector position: " << position;
263
tError() << "Frame Index: " << k->scene->currentFrameIndex();
264
tError() << "Layer Index: " << k->scene->currentLayerIndex();
265
tError() << "Scene Index: " << k->scene->currentSceneIndex();
266
} else if (k->scene->spaceMode() == TupProject::BACKGROUND_EDITION) {
267
TupBackground *bg = k->scene->scene()->background();
231
268
position = bg->frame()->indexOf(manager->parentItem());
233
type = KTLibraryObject::Item;
270
type = TupLibraryObject::Item;
236
273
if (position != -1) {
241
278
manager->restoreItem();
243
KTProjectRequest event = KTRequestBuilder::createItemRequest(
280
TupProjectRequest event = TupRequestBuilder::createItemRequest(
244
281
k->scene->currentSceneIndex(),
245
282
k->scene->currentLayerIndex(),
246
283
k->scene->currentFrameIndex(), position, QPointF(),
247
284
k->scene->spaceMode(), type,
248
KTProjectRequest::Transform, doc.toString());
285
TupProjectRequest::Transform, doc.toString());
249
286
emit requested(&event);
252
tFatal() << "SelectTool::release() - position is " << position;
289
tError() << "SelectTool::release() - position is " << position;
260
297
void SelectTool::setupActions()
262
299
k->selectionFlag = false;
264
TAction *select = new TAction(QPixmap(THEME_DIR + "icons/selection.png"), tr("Object Selection"), this);
303
TAction *select = new TAction(QPixmap(kAppProp->themeDir() + "icons/selection.png"), tr("Object Selection"), this);
265
304
select->setShortcut(QKeySequence(tr("O")));
267
306
k->actions.insert(tr("Select"), select);
336
if (project->spaceContext() == KTProject::FRAMES_EDITION) {
375
if (project->spaceContext() == TupProject::FRAMES_EDITION) {
338
377
layer = scene->layer(event->layerIndex());
341
380
frame = layer->frame(event->frameIndex());
343
if (event->itemType() == KTLibraryObject::Svg && frame->svgItemsCount()>0) {
382
if (event->itemType() == TupLibraryObject::Svg && frame->svgItemsCount()>0) {
344
383
item = frame->svg(event->itemIndex());
345
384
} else if (frame->graphicItemsCount()>0) {
346
385
item = frame->item(event->itemIndex());
352
} else if (project->spaceContext() == KTProject::BACKGROUND_EDITION) {
353
KTBackground *bg = scene->background();
391
} else if (project->spaceContext() == TupProject::BACKGROUND_EDITION) {
392
TupBackground *bg = scene->background();
355
KTFrame *frame = bg->frame();
394
TupFrame *frame = bg->frame();
357
if (event->itemType() == KTLibraryObject::Svg && frame->svgItemsCount()>0) {
396
if (event->itemType() == TupLibraryObject::Svg && frame->svgItemsCount()>0) {
358
397
item = frame->svg(event->itemIndex());
359
398
} else if (frame->graphicItemsCount()>0) {
360
399
item = frame->item(event->itemIndex());
439
478
|| (event->key() == Qt::Key_Right) || (event->key() == Qt::Key_Down)) {
441
480
if (!k->selectionFlag) {
442
QPair<int, int> flags = KTToolPlugin::setKeyAction(event->key(), event->modifiers());
481
QPair<int, int> flags = TupToolPlugin::setKeyAction(event->key(), event->modifiers());
443
482
if (flags.first != -1 && flags.second != -1)
444
483
emit callForPlugin(flags.first, flags.second);
474
513
foreach (NodeManager *nodeManager, k->nodeManagers)
475
514
nodeManager->setProportion(true);
477
QPair<int, int> flags = KTToolPlugin::setKeyAction(event->key(), event->modifiers());
516
QPair<int, int> flags = TupToolPlugin::setKeyAction(event->key(), event->modifiers());
478
517
if (flags.first != -1 && flags.second != -1)
479
518
emit callForPlugin(flags.first, flags.second);
493
void SelectTool::updateItems(KTGraphicsScene *scene)
532
void SelectTool::updateItems(TupGraphicsScene *scene)
495
534
foreach (QGraphicsView *view, scene->views()) {
496
535
view->setDragMode(QGraphicsView::RubberBandDrag);
497
536
foreach (QGraphicsItem *item, scene->items()) {
498
537
if (!qgraphicsitem_cast<Node *>(item)) {
499
if (scene->spaceMode() == KTProject::FRAMES_EDITION) {
538
if (scene->spaceMode() == TupProject::FRAMES_EDITION) {
500
539
if (item->zValue() >= 10000) {
501
540
item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
542
581
if (manager->isModified()) {
544
583
QDomDocument doc;
545
doc.appendChild(KTSerializer::properties(manager->parentItem(), doc));
584
doc.appendChild(TupSerializer::properties(manager->parentItem(), doc));
547
KTSvgItem *svg = qgraphicsitem_cast<KTSvgItem *>(manager->parentItem());
586
TupSvgItem *svg = qgraphicsitem_cast<TupSvgItem *>(manager->parentItem());
548
587
int position = -1;
549
KTLibraryObject::Type type;
588
TupLibraryObject::Type type;
552
591
position = k->scene->currentFrame()->indexOf(svg);
553
type = KTLibraryObject::Svg;
592
type = TupLibraryObject::Svg;
555
594
position = k->scene->currentFrame()->indexOf(manager->parentItem());
556
type = KTLibraryObject::Item;
595
type = TupLibraryObject::Item;
559
598
foreach (QGraphicsView *view, k->scene->views())
562
601
manager->restoreItem();
564
KTProjectRequest event = KTRequestBuilder::createItemRequest(
603
TupProjectRequest event = TupRequestBuilder::createItemRequest(
565
604
k->scene->currentSceneIndex(),
566
605
k->scene->currentLayerIndex(),
567
606
k->scene->currentFrameIndex(), position, QPointF(),
568
607
k->scene->spaceMode(), type,
569
KTProjectRequest::Transform, doc.toString());
608
TupProjectRequest::Transform, doc.toString());
570
609
emit requested(&event);
578
617
return QCursor(Qt::ArrowCursor);
581
Q_EXPORT_PLUGIN2(kt_select, SelectTool);
620
void SelectTool::resizeNodes(qreal scaleFactor)
622
k->scaleFactor *= scaleFactor;
623
updateRealZoomFactor();
625
foreach (NodeManager *manager, k->nodeManagers)
626
manager->resizeNodes(k->realFactor);
629
void SelectTool::updateZoomFactor(qreal globalFactor)
631
k->scaleFactor = globalFactor;
632
updateRealZoomFactor();
635
void SelectTool::updateRealZoomFactor()
637
if (k->scaleFactor <= 1)
639
else if (k->scaleFactor > 1 && k->scaleFactor < 1.5)
641
else if (k->scaleFactor >= 1.5 && k->scaleFactor < 2)
643
else if (k->scaleFactor >= 2 && k->scaleFactor <= 3)
645
else if (k->scaleFactor > 3)
647
else if (k->scaleFactor > 4)
651
void SelectTool::sceneResponse(const TupSceneResponse *event)
653
if (event->action() == TupProjectRequest::Select)
657
Q_EXPORT_PLUGIN2(tup_select, SelectTool);