Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMainWindow.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 SPDX-FileCopyrightText: 1998, 1999 Torben Weis <weis@kde.org>
3 SPDX-FileCopyrightText: 2000-2004 David Faure <faure@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KIS_MAIN_WINDOW_H
9#define KIS_MAIN_WINDOW_H
10
11#include "kritaui_export.h"
12
13#include <QPointer>
14#include <QPrinter>
15#include <QUuid>
16#include <QUrl>
17
20#include <KoCanvasSupervisor.h>
21#include "KisView.h"
23#include <KoResource.h>
24
25class QCloseEvent;
26class QMoveEvent;
27
29
30class KisDocument;
32class QDockWidget;
33class KisView;
34class KisViewManager;
36
37
46class KRITAUI_EXPORT KisMainWindow : public KXmlGuiWindow, public KoCanvasSupervisor
47{
48 Q_OBJECT
49
50public:
51 enum OpenFlag {
52 None = 0,
53 Import = 0x1,
54 BatchMode = 0x2,
55 RecoveryFile = 0x4
56 };
57 Q_DECLARE_FLAGS(OpenFlags, OpenFlag)
58
59public:
60
64 explicit KisMainWindow(QUuid id = QUuid());
65
69 ~KisMainWindow() override;
70
71 QMenu *createPopupMenu() override;
72
73
74 QUuid id() const;
75
80 virtual void showView(KisView *view, QMdiSubWindow *subWindow = 0);
81
86
93 bool openDocument(const QString &path, OpenFlags flags);
94
98 void showDocument(KisDocument *document);
99
100
109 void showWelcomeScreen(bool show);
110
121 bool saveDocument(KisDocument *document, bool saveas, bool isExporting, bool isAdvancedExporting = false);
122
124 QList<QDockWidget*> dockWidgets() const;
125
126 QDockWidget* dockWidget(const QString &id);
127
129
130 KoCanvasResourceProvider *resourceManager() const;
131
132 int viewCount() const;
133
134 void saveWindowState(bool restoreNormalState =false);
135
136 const KConfigGroup &windowStateConfig() const;
137
143 bool restoreWorkspace(KoResourceSP res);
144 bool restoreWorkspaceState(const QByteArray &state);
145
146 static void swapWorkspaces(KisMainWindow *a, KisMainWindow *b);
147
149
150 KisView *addViewAndNotifyLoadingCompleted(KisDocument *document,
151 QMdiSubWindow *subWindow = 0);
152
153 QStringList showOpenFileDialog(bool isImporting);
154
158 QWidget *canvasWindow() const;
159 bool canvasDetached() const;
160
170 bool hackIsSaving() const;
171
173 bool installBundle(const QString &fileName) const;
174
179 QImage layoutThumbnail();
180
181Q_SIGNALS:
182
187
193
196
199
202
204
207
208public Q_SLOTS:
209
210
214 void clearRecentFiles();
215
219 void removeRecentFile(QString url);
220
221
228 void slotFileNew();
229
236 void slotFileOpen(bool isImporting = false);
237
244 void slotFileOpenRecent(const QUrl &);
245
249 void slotPreferences();
250
254 void slotFileSave();
255
256 void slotChangeInterfaceScale();
257
258
259 void slotShowSessionManager();
260
261#ifdef Q_OS_ANDROID
262 void slotShowDonationManagementDialog();
263 void slotFlashWindowHack();
264#endif
265
269 void newOptionWidgets(KoCanvasController *controller, const QList<QPointer<QWidget> > & optionWidgetList);
270
271 KisView *newView(QObject *document, QMdiSubWindow *subWindow = 0);
272
273 void notifyChildViewDestroyed(KisView *view);
274
276 void setActiveView(KisView *view);
277 void unsetActiveView();
278
279 void subWindowActivated();
280
281 void windowFocused();
282
286 void setCanvasDetached(bool detached);
287
291 void viewFullscreen(bool fullScreen);
292
297 bool checkActiveBundlesAvailable();
298 bool checkPaintOpAvailable();
299
300 void synchronizeDynamicActions();
301
302private Q_SLOTS:
303 void slotLoadCompleted();
304 void slotLoadCanceled(const QString &);
305 void slotSaveCompleted();
306 void slotSaveCanceled(const QString &);
307 void forceDockTabFonts();
308
309 void slotUpdateWidgetStyle();
310
311 void slotUpdateSaveActionTitle(const QString &documentPath);
312 void slotUpdateReadWriteMode(bool readWrite);
313
317 void slotFileSaveAs();
318
320
322
324
326
330 void slotDocumentInfo();
331
335 bool slotFileCloseAll();
336
340 virtual void showAboutApplication();
341
345 void slotFileQuit();
346
350 void slotConfigureToolbars();
351
356 void slotNewToolbarConfig();
357
361 void slotResetConfigurations();
362
366 void slotToolbarToggled(bool toggle);
367
371 void showDockerTitleBars(bool show);
372
378 void slotImportFile();
379
385 void slotExportFile();
386
387 void slotExportAdvance();
388
392 void toggleDockersVisibility(bool visible, bool onWelcomePage = false);
393
397 void updateTheme();
398 void slotThemeChanged();
399
400 void undo();
401 void redo();
402 void updateWindowMenu();
403 void updateSubwindowFlags();
404 void setActiveSubWindow(QWidget *window);
405 void configChanged();
406
407 void newWindow();
408 void closeCurrentWindow();
409 void checkSanity();
410
412 void showErrorAndDie();
413
414 void initializeGeometry();
415 void showManual();
416 void switchTab(int index);
417
418 void slotXmlGuiMakingChanges(bool finished);
419
420 void orientationChanged();
421
422 void restoreWorkspace();
423
424 void openCommandBar();
425
426 void slotStoragesWarning(const QString &location = QString());
427
428protected:
429
430 void closeEvent(QCloseEvent * e) override;
431 void resizeEvent(QResizeEvent * e) override;
432 void showEvent(QShowEvent *event) override;
433
434 // QWidget overrides
435 void dragMoveEvent(QDragMoveEvent *event) override;
436 void dragLeaveEvent(QDragLeaveEvent *event) override;
437
438 bool windowsLayoutSavingAllowed() const override;
439
440private:
441
443 void dragMove(QDragMoveEvent *event);
444 void dragLeave();
445
446private:
447
453 void addView(KisView *view, QMdiSubWindow *subWindow = 0);
454
455 friend class KisPart;
456
457
464 QDockWidget* createDockWidget(KoDockFactoryBase* factory);
465
466 bool openDocumentInternal(const QString &path, KisMainWindow::OpenFlags f = KisMainWindow::OpenFlags());
467
468 void saveWindowSettings();
469
470 QPointer<KisView> activeKisView();
471
472 void createActions();
473
474 void applyToolBarLayout();
475
476 QByteArray borrowWorkspace(KisMainWindow *borrower);
477
478 void customizeTabBar();
479
480 void setMainWindowLayoutForCurrentMainWidget(int widgetIndex, bool widgetIndexChanged);
481 void adjustLayoutForWelcomePage();
482 void applyActionIconOverridesFromLocalXML();
483
484private:
485 class Private;
486 Private * const d;
487
490};
491
492Q_DECLARE_OPERATORS_FOR_FLAGS(KisMainWindow::OpenFlags)
493
494#endif
Q_DECLARE_FLAGS(KisUpdaterContextSnapshotEx, KisUpdaterContextSnapshotExTag)
KDE top level main window with predefined action layout
virtual bool windowsLayoutSavingAllowed() const
void closeEvent(QCloseEvent *) override
Main window for Krita.
void importAnimation()
void guiLoadingFinished()
const KConfigGroup & windowStateConfig() const
void themeChanged()
This signal is emitted when the color theme changes.
KisViewManager * viewManager() const
QWidget * canvasWindow() const
void newWindow()
void keyBindingsChanged()
This signal is emitted when the shortcut key configuration has changed.
void loadCompleted()
void renderAnimationAgain()
void importVideoAnimation()
QUuid id() const
Private *const d
void renderAnimation()
QString m_errorMessage
KisView * activeView() const
void documentSaved()
void restoringDone()
This signal is emitted right after the docker states have been successfully restored from config.
void activeViewChanged()
emitted when the current view has changed
A widget for displaying if no documents are open. This will display in the MDI area.
virtual QList< KoCanvasObserverBase * > canvasObservers() const =0
Q_DECLARE_OPERATORS_FOR_FLAGS(KisBaseRectsWalker::SubtreeVisitFlags)