~smartboyhw/ubuntu/raring/calligra/2.6.0-0ubuntu1

« back to all changes in this revision

Viewing changes to krita/ui/kis_view2.cpp

  • Committer: Package Import Robot
  • Author(s): Philip Muškovac
  • Date: 2012-10-23 21:09:16 UTC
  • mfrom: (1.1.13)
  • Revision ID: package-import@ubuntu.com-20121023210916-m82w6zxnxhaxz7va
Tags: 1:2.5.90-0ubuntu1
* New upstream alpha release (LP: #1070436)
  - Add libkactivities-dev and libopenimageio-dev to build-depends
  - Add kubuntu_build_calligraactive.diff to build calligraactive by default
  - Add package for calligraauthor and move files that are shared between
    calligrawords and calligraauthor to calligrawords-common
* Document the patches
* Remove numbers from patches so they follow the same naming scheme as
  the rest of our patches.
* calligra-data breaks replaces krita-data (<< 1:2.5.3) (LP: #1071686)

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
#include <kxmlguiwindow.h>
62
62
#include <kxmlguifactory.h>
63
63
#include <kmessagebox.h>
64
 
#include <ktemporaryfile.h>
65
64
#include <kactioncollection.h>
66
65
 
67
66
#include <KoStore.h>
79
78
#include <KoTemplateCreateDia.h>
80
79
#include <KoCanvasControllerWidget.h>
81
80
#include <KoDocumentEntry.h>
 
81
#include <KoProperties.h>
82
82
 
83
83
#include <kis_image.h>
84
84
#include <kis_undo_adapter.h>
85
85
#include "kis_composite_progress_proxy.h"
86
86
#include <kis_layer.h>
87
87
 
88
 
#include "kra/kis_kra_loader.h"
 
88
#include "canvas/kis_canvas2.h"
 
89
#include "canvas/kis_canvas_controller.h"
 
90
#include "canvas/kis_grid_manager.h"
 
91
#include "canvas/kis_perspective_grid_manager.h"
 
92
#include "dialogs/kis_dlg_preferences.h"
 
93
#include "kis_canvas_resource_provider.h"
89
94
#include "kis_config.h"
90
95
#include "kis_config_notifier.h"
91
 
#include "kis_statusbar.h"
92
 
#include "canvas/kis_canvas2.h"
93
 
#include "canvas/kis_canvas_controller.h"
 
96
#include "kis_control_frame.h"
94
97
#include "kis_coordinates_converter.h"
 
98
#include "kis_custom_palette.h"
95
99
#include "kis_doc2.h"
96
100
#include "kis_factory2.h"
97
101
#include "kis_filter_manager.h"
98
 
#include "kis_canvas_resource_provider.h"
99
 
#include "kis_selection_manager.h"
 
102
#include "kis_group_layer.h"
100
103
#include "kis_image_manager.h"
101
 
#include "kis_control_frame.h"
102
 
#include "kis_paintop_box.h"
103
 
#include "kis_zoom_manager.h"
104
 
#include "canvas/kis_grid_manager.h"
105
 
#include "canvas/kis_perspective_grid_manager.h"
106
104
#include "kis_mask_manager.h"
107
 
#include "dialogs/kis_dlg_preferences.h"
108
 
#include "kis_group_layer.h"
109
 
#include "kis_custom_palette.h"
110
 
#include "kis_resource_server_provider.h"
111
105
#include "kis_node.h"
112
106
#include "kis_node_manager.h"
113
 
#include "kis_selection.h"
114
 
#include "kis_print_job.h"
115
107
#include "kis_painting_assistants_manager.h"
116
108
#include <kis_paint_layer.h>
 
109
#include "kis_paintop_box.h"
 
110
#include "kis_part2.h"
 
111
#include "kis_print_job.h"
117
112
#include "kis_progress_widget.h"
 
113
#include "kis_resource_server_provider.h"
 
114
#include "kis_selection.h"
 
115
#include "kis_selection_manager.h"
118
116
#include "kis_shape_layer.h"
 
117
#include "kis_statusbar.h"
 
118
#include "kis_zoom_manager.h"
 
119
#include "kra/kis_kra_loader.h"
119
120
#include "widgets/kis_floating_message.h"
120
121
 
 
122
 
121
123
#include <QDebug>
122
124
#include <QPoint>
123
125
#include "kis_paintop_box.h"
152
154
    KisView2Private()
153
155
        : canvas(0)
154
156
        , doc(0)
 
157
        , part(0)
155
158
        , viewConverter(0)
156
159
        , canvasController(0)
157
160
        , resourceProvider(0)
192
195
 
193
196
    KisCanvas2 *canvas;
194
197
    KisDoc2 *doc;
 
198
    KisPart2 *part;
195
199
    KisCoordinatesConverter * viewConverter;
196
200
    KisCanvasController * canvasController;
197
201
    KisCanvasResourceProvider * resourceProvider;
216
220
};
217
221
 
218
222
 
219
 
KisView2::KisView2(KisDoc2 * doc, QWidget * parent)
220
 
    : KoView(doc, parent),
 
223
KisView2::KisView2(KisPart2 *part, KisDoc2 * doc, QWidget * parent)
 
224
    : KoView(part, doc, parent),
221
225
      m_d(new KisView2Private())
222
226
{
 
227
    setComponentData(KisFactory2::componentData());
 
228
    setXMLFile("krita.rc");
 
229
 
223
230
    // populate theme menu
224
231
    m_d->themeManager = new Digikam::ThemeManager(this);
225
232
 
226
233
    setFocusPolicy(Qt::NoFocus);
227
234
 
228
 
    if (!doc->isReadWrite()) {
229
 
        setXMLFile("krita_readonly.rc");
230
 
    } else {
231
 
        setXMLFile("krita.rc");
232
 
    }
233
 
 
234
235
    if (mainWindow()) {
235
236
        actionCollection()->addAction(KStandardAction::KeyBindings, "keybindings", mainWindow()->guiFactory(), SLOT(configureShortcuts()));
236
237
    }
237
238
 
238
239
    m_d->doc = doc;
 
240
    m_d->part = part;
239
241
    m_d->viewConverter = new KisCoordinatesConverter();
240
242
 
241
243
    KisCanvasController *canvasController = new KisCanvasController(this, actionCollection());
458
460
 
459
461
            QByteArray ba = event->mimeData()->data("application/x-krita-node");
460
462
 
461
 
            KisDoc2 tempDoc;
 
463
            KisPart2 *p = new KisPart2();
 
464
            KisDoc2 tempDoc(p);
 
465
            p->setDocument(&tempDoc);
 
466
 
462
467
            tempDoc.loadNativeFormatFromStore(ba);
463
468
 
464
469
            KisImageWSP tempImage = tempDoc.image();
556
561
                        m_d->imageManager->importImage(KUrl(url));
557
562
                    }
558
563
                    else if (action == replaceCurrentDocument) {
559
 
                        if (m_d->doc->isModified()) {
560
 
                            m_d->doc->save();
 
564
                        if (m_d->part->isModified()) {
 
565
                            m_d->part->save();
561
566
                        }
562
567
                        if (shell() != 0) {
563
568
                            shell()->openDocument(url);
677
682
    return image()->globalSelection();
678
683
}
679
684
 
 
685
bool KisView2::selectionEditable()
 
686
{
 
687
    KisLayerSP layer = activeLayer();
 
688
    if (layer) {
 
689
        KoProperties properties;
 
690
        QList<KisNodeSP> masks = layer->childNodes(QStringList("KisSelectionMask"), properties);
 
691
        if (masks.size() == 1) {
 
692
            return masks[0]->isEditable();
 
693
        }
 
694
    }
 
695
    // global selection is always editable
 
696
    return true;
 
697
}
680
698
 
681
699
KisUndoAdapter * KisView2::undoAdapter()
682
700
{
837
855
 
838
856
        connect(image(), SIGNAL(sigSizeChanged(qint32, qint32)), this, SLOT(slotImageSizeChanged()));
839
857
        connect(image(), SIGNAL(sigResolutionChanged(double, double)), this, SLOT(slotImageSizeChanged()));
 
858
        connect(image(), SIGNAL(sigNodeChanged(KisNodeSP)), this, SLOT(slotNodeChanged()));
840
859
        connect(image()->undoAdapter(), SIGNAL(selectionChanged()), selectionManager(), SLOT(selectionChanged()));
841
860
 
842
861
        /**
917
936
    canvas()->update();
918
937
}
919
938
 
 
939
void KisView2::slotNodeChanged()
 
940
{
 
941
    updateGUI();
 
942
}
920
943
 
921
944
void KisView2::loadPlugins()
922
945
{
978
1001
 
979
1002
void KisView2::slotCreateTemplate()
980
1003
{
981
 
    int width = 60;
982
 
    int height = 60;
983
 
    QPixmap pix = m_d->doc->generatePreview(QSize(width, height));
984
 
 
985
 
    KTemporaryFile *tempFile = new KTemporaryFile();
986
 
    tempFile->setSuffix(".kra");
987
 
 
988
 
    //Check that creation of temp file was successful
989
 
    if (!tempFile->open()) {
990
 
        qWarning("Creation of temporary file to store template failed.");
991
 
        return;
992
 
    }
993
 
    QString fileName = tempFile->fileName();
994
 
    tempFile->close(); // need to close on Windows before we can open it again to save
995
 
    delete tempFile; // now the file has disappeared and we can create a new file with the generated name
996
 
 
997
 
    m_d->doc->saveNativeFormat(fileName);
998
 
    KoTemplateCreateDia::createTemplate("krita_template", KisFactory2::componentData(),
999
 
                                        fileName, pix, this);
1000
 
 
1001
 
    KisFactory2::componentData().dirs()->addResourceType("krita_template", "data", "krita/templates/");
1002
 
 
1003
 
    QDir d;
1004
 
    d.remove(fileName);
 
1004
    KoTemplateCreateDia::createTemplate("krita_template", ".kra",
 
1005
                                        KisFactory2::componentData(), m_d->doc, this);
1005
1006
}
1006
1007
 
1007
1008
void KisView2::slotDocumentSaved()
1097
1098
        return;
1098
1099
    }
1099
1100
    pDoc->setSaveInBatchMode(true);
1100
 
    pDoc->saveAs(fileName);
 
1101
    m_d->part->saveAs(fileName);
1101
1102
    pDoc->setSaveInBatchMode(false);
1102
1103
 
1103
1104
    shell()->updateCaption();
1164
1165
            KMessageBox::error(this, "Alternative names exhausted, try manually saving with a higher number", "Couldn't save incremental backup");
1165
1166
            return;
1166
1167
        }
1167
 
        pDoc->saveAs(fileName);
 
1168
        m_d->part->saveAs(fileName);
1168
1169
 
1169
1170
        shell()->updateCaption();
1170
1171
    }
1186
1187
            newVersion = baseNewVersion;
1187
1188
            newVersion.prepend("~");
1188
1189
            newVersion.append(".");
1189
 
            qDebug() << backupFileName << " version1";
1190
1190
            backupFileName.replace(regex, newVersion);
1191
 
            qDebug() << backupFileName << " version2";
1192
1191
            fileAlreadyExists = KIO::NetAccess::exists(backupFileName, KIO::NetAccess::DestinationSide, this);
1193
1192
            if (fileAlreadyExists) {
1194
1193
                // Prepare the base for new version filename, increment by 1
1199
1198
                    baseNewVersion.prepend("0");
1200
1199
                }
1201
1200
            }
1202
 
            qDebug() << "idiot";
1203
1201
        } while (fileAlreadyExists);
1204
1202
 
1205
1203
        // Save both as backup and on current file for interapplication workflow
1206
1204
        pDoc->setSaveInBatchMode(true);
1207
 
        pDoc->saveAs(backupFileName);
1208
 
        pDoc->saveAs(fileName);
 
1205
        m_d->part->saveAs(backupFileName);
 
1206
        m_d->part->saveAs(fileName);
1209
1207
        pDoc->setSaveInBatchMode(false);
1210
1208
 
1211
1209
        shell()->updateCaption();
1298
1296
    }
1299
1297
}
1300
1298
 
 
1299
void KisView2::showFloatingMessage(const QString message, const QIcon& icon)
 
1300
{
 
1301
    KisFloatingMessage *floatingMessage = new KisFloatingMessage(message, mainWindow()->centralWidget());
 
1302
    floatingMessage->setShowOverParent(true);
 
1303
    floatingMessage->setIcon(icon);
 
1304
    floatingMessage->showMessage();
 
1305
}
1301
1306
 
1302
1307
#include "kis_view2.moc"