79
78
#include <KoTemplateCreateDia.h>
80
79
#include <KoCanvasControllerWidget.h>
81
80
#include <KoDocumentEntry.h>
81
#include <KoProperties.h>
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>
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"
121
123
#include <QDebug>
122
124
#include <QPoint>
123
125
#include "kis_paintop_box.h"
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())
227
setComponentData(KisFactory2::componentData());
228
setXMLFile("krita.rc");
223
230
// populate theme menu
224
231
m_d->themeManager = new Digikam::ThemeManager(this);
226
233
setFocusPolicy(Qt::NoFocus);
228
if (!doc->isReadWrite()) {
229
setXMLFile("krita_readonly.rc");
231
setXMLFile("krita.rc");
234
235
if (mainWindow()) {
235
236
actionCollection()->addAction(KStandardAction::KeyBindings, "keybindings", mainWindow()->guiFactory(), SLOT(configureShortcuts()));
239
241
m_d->viewConverter = new KisCoordinatesConverter();
241
243
KisCanvasController *canvasController = new KisCanvasController(this, actionCollection());
677
682
return image()->globalSelection();
685
bool KisView2::selectionEditable()
687
KisLayerSP layer = activeLayer();
689
KoProperties properties;
690
QList<KisNodeSP> masks = layer->childNodes(QStringList("KisSelectionMask"), properties);
691
if (masks.size() == 1) {
692
return masks[0]->isEditable();
695
// global selection is always editable
681
699
KisUndoAdapter * KisView2::undoAdapter()
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()));
979
1002
void KisView2::slotCreateTemplate()
983
QPixmap pix = m_d->doc->generatePreview(QSize(width, height));
985
KTemporaryFile *tempFile = new KTemporaryFile();
986
tempFile->setSuffix(".kra");
988
//Check that creation of temp file was successful
989
if (!tempFile->open()) {
990
qWarning("Creation of temporary file to store template failed.");
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
997
m_d->doc->saveNativeFormat(fileName);
998
KoTemplateCreateDia::createTemplate("krita_template", KisFactory2::componentData(),
999
fileName, pix, this);
1001
KisFactory2::componentData().dirs()->addResourceType("krita_template", "data", "krita/templates/");
1004
KoTemplateCreateDia::createTemplate("krita_template", ".kra",
1005
KisFactory2::componentData(), m_d->doc, this);
1007
1008
void KisView2::slotDocumentSaved()
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");
1202
qDebug() << "idiot";
1203
1201
} while (fileAlreadyExists);
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);
1211
1209
shell()->updateCaption();