21#include <QApplication>
24#include <QStandardPaths>
26#include <QDesktopServices>
34#include <QPrintDialog>
42#include <QActionGroup>
46#include <klocalizedstring.h>
48#include <kselectaction.h>
137 if(
dynamic_cast<QWheelEvent*
>(event)
138 ||
dynamic_cast<QKeyEvent*
>(event)
139 ||
dynamic_cast<QMouseEvent*
>(event)) {
278 d->
mainWindow =
dynamic_cast<QMainWindow*
>(parent);
341 KoColor foreground(Qt::black, cs);
343 KoColor background(Qt::white, cs);
404 KSharedConfigPtr config = KSharedConfig::openConfig();
405 KConfigGroup miscGroup = config->group(
"Misc");
406 const uint handleRadius = miscGroup.readEntry(
"HandleRadius", 5);
449 doc->disconnect(
this);
464 d->
softProof->setChecked(imageView->softProofing());
465 d->
gamutCheck->setChecked(imageView->gamutCheck());
470 if (
KisConfig(
true).readEntry<bool>(
"EnablePositionLabel",
false)) {
472 SIGNAL(documentMousePositionChanged(QPointF)),
474 SLOT(documentMousePositionChanged(QPointF)));
514 QSignalBlocker b(d->viewPrintSize);
515 d->viewPrintSize->setChecked(value);
517 d->
viewPrintSize->setChecked(imageView->canvasController()->usePrintResolutionMode());
523 imageView->zoomManager()->zoomAction(),
525 imageView->zoomManager()->zoomAction()->setUsePrintResolutionMode(imageView->canvasController()->usePrintResolutionMode());
528 imageView->canvasController(),
564 image(), SIGNAL(sigSizeChanged(QPointF,QPointF)),
568 image(), SIGNAL(sigResolutionChanged(
double,
double)),
771 tAction->setChecked(
false);
891 const int busyWaitDelay = 1000;
893 dialog.blockIfImageIsBusy();
895 return dialog.result() == QDialog::Accepted;
924 KisImageReadOnlyBarrierLock l(srcDoc->
image());
925 doc = srcDoc->
clone(
true);
930 if (name.isEmpty()) {
933 name = i18n(
"%1 (Copy)", name);
949 QMainWindow* w = qobject_cast<QMainWindow*>(qApp->activeWindow());
970 QString path = QFileInfo(
document()->localFilePath()).canonicalPath();
973 if (QDir(path).exists()) {
977 dialog.setDirectoryUrl(QUrl(
document()->localFilePath()));
978 return dialog.filename();
981 return QFileInfo(
document()->localFilePath()).canonicalPath();
996 bool fileAlreadyExists;
998 QString version =
"000";
1003 QString fileName = QFileInfo(
document()->localFilePath()).fileName();
1008 QRegExp regex(
"_\\d{1,4}[.]|_\\d{1,4}[a-z][.]|_\\d{1,4}[~]|_\\d{1,4}[a-z][~]");
1009 regex.indexIn(fileName);
1011 foundVersion = matches.at(0).isEmpty() ? false :
true;
1016 QRegExp regexAux(
"_\\d{1,4}[~]|_\\d{1,4}[a-z][~]");
1017 regexAux.indexIn(fileName);
1018 QStringList matchesAux = regexAux.capturedTexts();
1019 isBackup = matchesAux.at(0).isEmpty() ? false :
true;
1023 version = matches.at(matches.count() - 1);
1024#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1025 if (version.contains(QRegExp(
"[a-z]"))) {
1027 if (QRegExp(
"[a-z]").containedIn(version)) {
1031 letter = version.right(1);
1036 version.remove(0, 1);
1040 QRegExp regex2(
"[.][a-z]{2,4}$");
1041 regex2.indexIn(fileName);
1043 QString extensionPlusVersion = matches2.at(0);
1044 extensionPlusVersion.prepend(version);
1045 extensionPlusVersion.prepend(
"_");
1046#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1047 fileName.replace(regex2, extensionPlusVersion);
1049 regex2.replaceIn(fileName, extensionPlusVersion);
1054 int intVersion = version.toInt(0);
1056 QString baseNewVersion = QString::number(intVersion);
1057 while (baseNewVersion.length() < version.length()) {
1058 baseNewVersion.prepend(
"0");
1063 newVersion = baseNewVersion;
1064 newVersion.prepend(
"_");
1065 if (!letter.isNull()) newVersion.append(letter);
1067 newVersion.append(
"~");
1069 newVersion.append(
".");
1071#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1072 fileName.replace(regex, newVersion);
1074 regex.replaceIn(fileName, newVersion);
1076 fileAlreadyExists = QFileInfo(path +
'/' + fileName).exists();
1077 if (fileAlreadyExists) {
1078 if (!letter.isNull()) {
1079 char letterCh = letter.at(0).toLatin1();
1081 letter = QString(QChar(letterCh));
1086 }
while (fileAlreadyExists && letter !=
"{");
1088 if (letter ==
"{") {
1089 QMessageBox::critical(
mainWindow(), i18nc(
"@title:window",
"Couldn't save incremental version"), i18n(
"Alternative names exhausted, try manually saving with a higher number"));
1092 QString newFilePath = path +
'/' + fileName;
1097 QUrl::fromLocalFile(
document()->path()));
1104 if (
document()->path().isEmpty()) {
1110 bool workingOnBackup;
1111 bool fileAlreadyExists;
1112 QString version =
"000";
1116 QString fileName = QFileInfo(
document()->localFilePath()).fileName();
1119 QRegExp regex(
"~\\d{1,4}[.]|~\\d{1,4}[a-z][.]");
1120 regex.indexIn(fileName);
1122 workingOnBackup = matches.at(0).isEmpty() ? false :
true;
1124 if (workingOnBackup) {
1126 version = matches.at(matches.count() - 1);
1127#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1128 if (version.contains(QRegExp(
"[a-z]"))) {
1130 if (QRegExp(
"[a-z]").containedIn(version)) {
1133 letter = version.right(1);
1138 version.remove(0, 1);
1141 int intVersion = version.toInt(0);
1143 QString baseNewVersion = QString::number(intVersion);
1145 while (baseNewVersion.length() < version.length()) {
1146 baseNewVersion.prepend(
"0");
1151 newVersion = baseNewVersion;
1152 newVersion.prepend(
"~");
1153 if (!letter.isNull()) newVersion.append(letter);
1154 newVersion.append(
".");
1155#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1156 backupFileName.replace(regex, newVersion);
1158 regex.replaceIn(backupFileName, newVersion);
1160 fileAlreadyExists = QFile(path +
'/' + backupFileName).exists();
1161 if (fileAlreadyExists) {
1162 if (!letter.isNull()) {
1163 char letterCh = letter.at(0).toLatin1();
1165 letter = QString(QChar(letterCh));
1170 }
while (fileAlreadyExists && letter !=
"{");
1172 if (letter ==
"{") {
1173 QMessageBox::critical(
mainWindow(), i18nc(
"@title:window",
"Couldn't save incremental backup"), i18n(
"Alternative names exhausted, try manually saving with a higher number"));
1176 QFile::copy(path +
'/' + fileName, path +
'/' + backupFileName);
1181 const quint8 HARDCODED_DIGIT_COUNT = 3;
1182 QString baseNewVersion =
"000";
1183 QString backupFileName = QFileInfo(
document()->localFilePath()).fileName();
1184 QRegExp regex2(
"[.][a-z]{2,4}$");
1185 regex2.indexIn(backupFileName);
1187 QString extensionPlusVersion = matches2.at(0);
1188 extensionPlusVersion.prepend(baseNewVersion);
1189 extensionPlusVersion.prepend(
"~");
1190#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1191 backupFileName.replace(regex2, extensionPlusVersion);
1193 regex2.replaceIn(backupFileName, extensionPlusVersion);
1198 newVersion = baseNewVersion;
1199 newVersion.prepend(
"~");
1200 newVersion.append(
".");
1201#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1202 backupFileName.replace(regex, newVersion);
1204 regex.replaceIn(backupFileName, newVersion);
1206 fileAlreadyExists = QFile(path +
'/' + backupFileName).exists();
1207 if (fileAlreadyExists) {
1209 int intVersion = baseNewVersion.toInt(0);
1211 baseNewVersion = QString::number(intVersion);
1212 while (baseNewVersion.length() < HARDCODED_DIGIT_COUNT) {
1213 baseNewVersion.prepend(
"0");
1216 }
while (fileAlreadyExists);
1220 QFile::copy(path +
'/' + fileName, path +
'/' + backupFileName);
1249 if(mw && mw->statusBar()) {
1250 mw->statusBar()->setVisible(toggled);
1269 dbgUI <<
"Unable to switch to canvas-only mode, main window not found";
1288 !
main->canvasDetached();
1290 if (useCanvasOffsetCompensation) {
1323 if (toggleFullscreen) {
1325 origin =
main->geometry().topLeft() -
main->screen()->geometry().topLeft();
1335 if (
main->statusBar()) {
1337 if (
main->statusBar()->dynamicPropertyNames().contains(
"wasvisible")) {
1338 if (
main->statusBar()->property(
"wasvisible").toBool()) {
1339 main->statusBar()->setVisible(
true);
1344 main->statusBar()->setProperty(
"wasvisible",
main->statusBar()->isVisible());
1345 main->statusBar()->setVisible(
false);
1351 KisAction* action = qobject_cast<KisAction*>(
main->actionCollection()->action(
"view_toggledockers"));
1353 action->setCheckable(
true);
1355 if (action->isChecked()) {
1357 action->setChecked(
false);
1369 if (toggleFullscreen) {
1371 main->setWindowState(
main->windowState() | Qt::WindowFullScreen);
1373 main->setWindowState(
main->windowState() & ~Qt::WindowFullScreen);
1379 if (
main->menuBar()->dynamicPropertyNames().contains(
"wasvisible")) {
1380 if (
main->menuBar()->property(
"wasvisible").toBool()) {
1381 main->menuBar()->setVisible(
true);
1386 main->menuBar()->setProperty(
"wasvisible",
main->menuBar()->isVisible());
1387 main->menuBar()->setVisible(
false);
1393 Q_FOREACH (QToolBar* toolbar, toolBars) {
1395 if (toolbar->dynamicPropertyNames().contains(
"wasvisible")) {
1396 if (toolbar->property(
"wasvisible").toBool()) {
1397 toolbar->setVisible(
true);
1402 toolbar->setProperty(
"wasvisible", toolbar->isVisible());
1403 toolbar->setVisible(
false);
1424 QTimer::singleShot(0,
this, [
this] () {
1431 actionCollection()->action(
"view_show_canvas_only")->shortcut().toString(QKeySequence::NativeText)), QIcon(),
1441 if (useCanvasOffsetCompensation && toggled) {
1444 const bool allowedZoomMode =
1448 if (allowedZoomMode) {
1450 QTimer::singleShot(0,
this, [
this] () {
1472 QString folderInStandardAppData;
1473 QString folderInPrivateAppData;
1476 if (!folderInPrivateAppData.isEmpty()) {
1478 const auto pathToDisplay = [](
const QString &path) {
1486 return QDir::toNativeSeparators(path).replace(QChar(
'\\'), QStringLiteral(
u"\\\u200B"));
1489 QMessageBox mbox(qApp->activeWindow());
1490 mbox.setIcon(QMessageBox::Information);
1491 mbox.setWindowTitle(i18nc(
"@title:window resource folder",
"Open Resource Folder"));
1494 mbox.setText(i18nc(
"@info resource folder",
1495 "<p>You are using the Microsoft Store package version of Krita. "
1496 "Even though Krita can be configured to place resources under the "
1497 "user AppData location, Windows may actually store the files "
1498 "inside a private app location.</p>\n"
1499 "<p>You should check both locations to determine where "
1500 "the files are located.</p>\n"
1501 "<p><b>User AppData</b>:<br/>\n"
1503 "<p><b>Private app location</b>:<br/>\n"
1505 pathToDisplay(folderInStandardAppData),
1506 pathToDisplay(folderInPrivateAppData)
1508 mbox.setTextInteractionFlags(Qt::NoTextInteraction);
1510 const auto *btnOpenUserAppData = mbox.addButton(i18nc(
"@action:button resource folder",
"Open in &user AppData"), QMessageBox::AcceptRole);
1511 const auto *btnOpenPrivateAppData = mbox.addButton(i18nc(
"@action:button resource folder",
"Open in &private app location"), QMessageBox::AcceptRole);
1513 mbox.addButton(QMessageBox::Close);
1514 mbox.setDefaultButton(QMessageBox::Close);
1517 if (mbox.clickedButton() == btnOpenPrivateAppData) {
1518 resourcePath = folderInPrivateAppData;
1519 }
else if (mbox.clickedButton() == btnOpenUserAppData) {
1528 QDesktopServices::openUrl(QUrl::fromLocalFile(resourcePath));
1535 Q_FOREACH (QDockWidget* dock, dockers) {
1540 if (qobject_cast<KoToolDocker*>(dock)) {
1544 QObjectList objects;
1545 objects.append(dock);
1546 while (!objects.isEmpty()) {
1547 QObject*
object = objects.takeFirst();
1548 objects.append(object->children());
1567 d->
currentImageView->showFloatingMessage(message, icon, timeout, priority, alignment);
1574 return qobject_cast<KisMainWindow*>(
d->
mainWindow);
1592 d->
currentImageView->canvasController()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
1593 d->
currentImageView->canvasController()->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
1595 d->
currentImageView->canvasController()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
1596 d->
currentImageView->canvasController()->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
1619 KConfigGroup appAuthorGroup(KSharedConfig::openConfig(),
"Author");
1620 if (profileName.isEmpty() || profileName == i18nc(
"choice for author profile",
"Anonymous")) {
1621 appAuthorGroup.writeEntry(
"active-profile",
"");
1623 appAuthorGroup.writeEntry(
"active-profile", profileName);
1625 appAuthorGroup.sync();
1638 d->
actionAuthor->addAction(i18nc(
"choice for author profile",
"Anonymous"));
1640 KConfigGroup authorGroup(KSharedConfig::openConfig(),
"Author");
1644 QDir dir(authorInfo);
1645 Q_FOREACH(QString entry, dir.entryList(filters)) {
1646 int ln = QString(
".authorinfo").size();
1648 if (!profiles.contains(entry)) {
1649 profiles.append(entry);
1652 Q_FOREACH (
const QString &profile , profiles) {
1656 KConfigGroup appAuthorGroup(KSharedConfig::openConfig(),
"Author");
1657 QString profileName = appAuthorGroup.readEntry(
"active-profile",
"");
1659 if (profileName ==
"anonymous" || profileName.isEmpty()) {
1661 }
else if (profiles.contains(profileName)) {
1681 QSet<KoShape*> dummy;
1748 if (isOpacityPresetMode) {
float value(const T *src, size_t ch)
QList< QString > QStringList
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
A KisActionManager class keeps track of KisActions. These actions are always associated with the GUI....
void setView(QPointer< KisView > imageView)
KisAction * createAction(const QString &name)
KisAction * createStandardAction(KStandardAction::StandardAction, const QObject *receiver, const char *member)
void setDefaultShortcut(const QKeySequence &shortcut)
void mirrorCanvas(bool enable)
WrapAroundAxis wrapAroundModeAxis() const
void setUsePrintResolutionMode(bool value)
bool wrapAroundMode() const
bool levelOfDetailMode() const
void resetCanvasRotation()
void sigUsePrintResolutionModeChanged(bool value)
void setup(KisActionManager *actionManager)
void setView(QPointer< KisView >imageView)
void slotOnScreenResolutionChanged()
void slotImageSizeChanged()
void setFGColor(const KoColor &c)
void setColorHistory(const QList< KoColor > &colors)
void setResourceManager(KoCanvasResourceProvider *resourceManager)
void setBGColor(const KoColor &c)
void addProxy(KoProgressProxy *proxy)
void removeProxy(KoProgressProxy *proxy)
static KisConfigNotifier * instance()
bool hideScrollbars(bool defaultValue=false) const
void setShowDockers(const bool value) const
void setShowStatusBar(const bool value) const
void writeEntry(const QString &name, const T &value)
void writeKoColors(const QString &name, const QList< KoColor > &colors) const
bool fullscreenMode(bool defaultValue=false) const
bool pixelGridEnabled(bool defaultValue=false) const
void setRulersTrackMouse(bool value) const
bool hideScrollbarsFullscreen(bool defaultValue=false) const
bool showCanvasMessages(bool defaultValue=false) const
QList< KoColor > readKoColors(const QString &name) const
OutlineStyle lastUsedOutlineStyle(bool defaultValue=false) const
KoColor readKoColor(const QString &name, const KoColor &color=KoColor()) const
OutlineStyle newOutlineStyle(bool defaultValue=false) const
void setNewOutlineStyle(OutlineStyle style)
void setShowRulers(bool rulers) const
bool showDockers(bool defaultValue=false) const
bool useOpenGL(bool defaultValue=false) const
bool rulersTrackMouse(bool defaultValue=false) const
bool showStatusBar(bool defaultValue=false) const
bool showRulers(bool defaultValue=false) const
void setLastUsedOutlineStyle(OutlineStyle style)
void writeKoColor(const QString &name, const KoColor &color) const
KisPaintopBox * paintopBox()
void setup(QWidget *parent)
void setView(QPointer< KisView > imageView)
void setup(KisActionManager *actionManager)
void setFileBatchMode(const bool batchMode)
KoDocumentInfo * documentInfo() const
QString localFilePath() const
bool saveAs(const QString &path, const QByteArray &mimeType, bool showWarnings, KisPropertiesConfigurationSP exportConfiguration=0)
KisDocument * clone(bool addStorage=false)
creates a clone of the document and returns it. Please make sure that you hold all the necessary lock...
void setup(KisKActionCollection *ac, KisActionManager *actionManager)
void setView(QPointer< KisView >imageView)
void setView(QPointer< KisView >imageView)
void setup(KisActionManager *actionManager)
void setView(QPointer< KisView > view)
void setup(KisActionManager *actionManager)
void setImage(KisImageSP image)
void setView(QPointer< KisView >imageView)
void setup(KisActionManager *actionManager)
KisUndoAdapter * undoAdapter() const
KisCompositeProgressProxy * compositeProgressProxy()
A container for a set of QAction objects.
Q_INVOKABLE QAction * addAction(const QString &name, QAction *action)
QAction * action(int index) const
KisView * addViewAndNotifyLoadingCompleted(KisDocument *document, QMdiSubWindow *subWindow=0)
QList< QDockWidget * > dockWidgets() const
Return the list of dock widgets belonging to this main window.
bool saveDocument(KisDocument *document, bool saveas, bool isExporting, bool isAdvancedExporting=false)
void setView(QPointer< KisView > imageView)
void setup(KisKActionCollection *collection)
void setView(QPointer< KisView >imageView)
void setup(KisKActionCollection *collection, KisActionManager *actionManager)
KisNodeSP activeNode()
Convenience function to get the active layer or mask.
KisPaintDeviceSP activePaintDevice()
Get the paint device the user wants to paint on now.
static KisPart * instance()
void addDocument(KisDocument *document, bool notify=true)
void queueAddRecentURLToAllMainWindowsOnFileSaved(QUrl url, QUrl oldUrl=QUrl())
QString resourceLocationBase() const
resourceLocationBase is the place where all resource storages (folder, bundles etc....
static KisResourceLocator * instance()
void setup(KisActionManager *actionManager)
void setView(QPointer< KisView >imageView)
void addUniqueConnection(Sender sender, Signal signal, Receiver receiver, Method method)
void addConnection(Sender sender, Signal signal, Receiver receiver, Method method, Qt::ConnectionType type=Qt::AutoConnection)
void setView(QPointer< KisView > imageView)
void hideAllStatusBarItems()
void showAllStatusBarItems()
KoProgressUpdater * progressUpdater()
static void createTemplate(const QString &templatesResourcePath, const char *suffix, KisDocument *document, QWidget *parent=0)
The KisTextPropertyManager class.
void setCanvasResourceProvider(KisCanvasResourceProvider *provider)
setCanvasResourceProvider set the canvas resource provider.
KisAction * rulersTrackMouseAction
KisAction * zoomToFitHeight
QScopedPointer< KoProgressUpdater > persistentUnthreadedProgressUpdaterRouter
QPointer< KisFloatingMessage > savedFloatingMessage
KisAction * wrapAroundAction
KisSelectionManager selectionManager
KisAction * wrapAroundHAxisAction
QPointer< KisView > currentImageView
KSelectAction * actionAuthor
KisSignalCompressor guiUpdateCompressor
KisInputManager inputManager
QActionGroup * wrapAroundAxisActions
KisFilterManager filterManager
KisSignalAutoConnectionsStore viewConnections
KisAction * viewPrintSize
BlockingUserInputEventFilter blockingEventFilter
KisIdleTasksManager idleTasksManager
KisAction * showRulersAction
KisCanvasControlsManager canvasControlsManager
QByteArray canvasStateInCanvasOnlyMode
KisGuidesManager guidesManager
QPointer< KoUpdater > persistentUnthreadedProgressUpdater
KisAction * rotateCanvasRight
KisViewManagerPrivate(KisViewManager *_q, KisKActionCollection *_actionCollection, QWidget *_q_parent)
KisMirrorManager mirrorManager
KisAction * saveIncrementalBackup
QPoint canvasOnlyOffsetCompensation
QByteArray canvasStateInNormalMode
KisAction * toggleBrushOutline
KisAction * rotateCanvasLeft
KisActionManager actionManager
KisAction * levelOfDetailAction
QPointer< KoUpdater > persistentImageProgressUpdater
KisDecorationsManager paintingAssistantsManager
KisAction * showPixelGrid
KisAction * wrapAroundVAxisAction
KisImageManager imageManager
KisAction * openResourcesDirectory
KisCanvasResourceProvider canvasResourceProvider
KisAction * resetCanvasRotation
KisAction * wrapAroundHVAxisAction
KisKActionCollection * actionCollection
KisGridManager gridManager
KisAction * saveIncremental
KoCanvasResourceProvider canvasResourceManager
KisControlFrame controlFrame
KisAction * toggleZoomToFit
bool blockUntilOperationsFinishedImpl(KisImageSP image, bool force)
std::optional< CanvasOnlyOptions > canvasOnlyOptions
KisAction * createTemplate
KisAction * zoomToFitWidth
KisTextPropertiesManager textPropertyManager
KisNodeManager nodeManager
void slotUpdatePixelGridAction()
bool blockUntilOperationsFinished(KisImageSP image)
blockUntilOperationsFinished blocks the GUI of the application until execution of actions on image is...
KisMainWindow * mainWindow() const
void slotCreateTemplate()
KisDocument * document() const
static void initializeResourceManager(KoCanvasResourceProvider *resourceManager)
KisFilterManager * filterManager()
The filtermanager handles everything action-related to filters.
void slotSaveRulersTrackMouseState(bool value)
KisActionManager * actionManager() const
void floatingMessageRequested(const QString &message, const QString &iconName)
void updateIcons()
Update the style of all the icons.
KisIdleTasksManager * idleTasksManager()
KisCanvas2 * canvasBase() const
Return the canvas base class.
void switchCanvasOnly(bool toggled)
KisUndoAdapter * undoAdapter()
The undo adapter is used to add commands to the undo stack.
void slotActivateTransformTool()
void setCurrentView(KisView *view)
void slotSaveIncremental()
void brushOutlineToggled()
void openResourcesDirectory()
void setQtMainWindow(QMainWindow *newMainWindow)
KisImageManager * imageManager()
KisSelectionSP selection()
void setShowFloatingMessage(bool show)
void slotUpdateAuthorProfileActions()
void enableControls()
disable and enable toolbar controls. used for disabling them during painting.
QPointer< KoUpdater > createThreadedUpdater(const QString &name)
QWidget * canvas() const
Return the actual widget that is displaying the current image.
void viewChanged()
viewChanged sent out when the view has changed.
KisLayerSP activeLayer()
Convenience method to get at the active layer.
KisPaintDeviceSP activeDevice()
Convenience method to get at the active paint device.
void slotViewAdded(KisView *view)
void blockUntilOperationsFinishedForced(KisImageSP image)
blockUntilOperationsFinished blocks the GUI of the application until execution of actions on image is...
virtual KisKActionCollection * actionCollection() const
void showHideScrollbars()
void slotSaveIncrementalBackup()
void showStatusBar(bool toggled)
KisInputManager * inputManager() const
Filters events and sends them to canvas actions.
QPointer< KoUpdater > createUnthreadedUpdater(const QString &name)
create a new progress updater
QMainWindow * qtMainWindow() const
~KisViewManager() override
KisViewManagerPrivate *const d
KisNodeManager * nodeManager() const
The node manager handles everything about nodes.
void slotSaveShowRulersState(bool value)
void slotToggleBrushOutline()
KisSelectionManager * selectionManager()
void slotViewRemoved(KisView *view)
KisGuidesManager * guidesManager() const
QWidget * mainWindowAsQWidget() const
void slotCreateOpacityResource(bool isOpacityPresetMode, KoToolBase *tool)
KisImageWSP image() const
Return the image this view is displaying.
KisViewManager(QWidget *parent, KisKActionCollection *actionCollection)
void toggleTabletLogger()
static void testingInitializeOpacityToPresetResourceConverter(KoCanvasResourceProvider *resourceManager)
KisGridManager * gridManager() const
void notifyWorkspaceLoaded()
KisZoomManager * zoomManager()
The zoommanager handles everything action-related to zooming.
KisCanvasResourceProvider * canvasResourceProvider()
KisStatusBar * statusBar() const
Return the wrapper class around the statusbar.
KisTextPropertiesManager * textPropertyManager() const
void changeAuthorProfile(const QString &profileName)
KisPaintopBox * paintOpBox() const
bool selectionEditable()
Checks if the current global or local selection is editable.
void showFloatingMessage(const QString &message, const QIcon &icon, int timeout=4500, KisFloatingMessage::Priority priority=KisFloatingMessage::Medium, int alignment=Qt::AlignCenter|Qt::TextWordWrap)
shows a floating message in the top right corner of the canvas
KisViewManager * viewManager
void effectiveZoomChanged(qreal zoom)
void addActiveCanvasResourceDependency(KoActiveCanvasResourceDependencySP dep)
void setHandleRadius(int handleSize)
void setBackgroundColor(const KoColor &color)
KoColor foregroundColor() const
KoColor backgroundColor() const
void setForegroundColor(const KoColor &color)
void addResourceUpdateMediator(KoResourceUpdateMediatorSP mediator)
void addDerivedResourceConverter(KoDerivedResourceConverterSP converter)
void setAboutInfo(const QString &info, const QString &data)
QString aboutInfo(const QString &info) const
QPointer< KoUpdater > startSubtask(int weight=1, const QString &name=QString(), bool isPersistent=false)
static void getAllUserResourceFoldersLocationsForWindowsStore(QString &standardLocation, QString &privateLocation)
getAllAppDataLocationsForWindowsStore Use this to get both private and general appdata folders which ...
static QString getAppDataLocation()
void sigUsePrintResolutionModeChanged(bool value)
void setUsePrintResolutionMode(bool value)
@ ZOOM_HEIGHT
zoom pageheight
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
QSharedPointer< T > toQShared(T *ptr)
int main(int argc, char **argv)
QIcon loadIcon(const QString &name)
void updateIconCommon(QObject *object)
@ BackgroundColor
The active background color selected for this canvas.
@ ForegroundColor
The active foreground color selected for this canvas.
bool isEditable(bool checkVisibility=true) const
virtual KisSelectionMaskSP selectionMask() const
static KisResourceItemChooserSync * instance()
bool operator==(const CanvasOnlyOptions &rhs)
bool hideTitlebarFullscreen
bool hideStatusbarFullscreen
CanvasOnlyOptions(const KisConfig &cfg)
bool hideDockersFullscreen
bool hideToolbarFullscreen
static KoColorSpaceRegistry * instance()
const KoColorSpace * rgb8(const QString &profileName=QString())