21#include <QApplication>
24#include <QDeadlineTimer>
25#include <QStandardPaths>
27#include <QDesktopServices>
35#include <QPrintDialog>
43#include <QActionGroup>
47#include <klocalizedstring.h>
49#include <kselectaction.h>
138 if(
dynamic_cast<QWheelEvent*
>(event)
139 ||
dynamic_cast<QKeyEvent*
>(event)
140 ||
dynamic_cast<QMouseEvent*
>(event)) {
284 d->
mainWindow =
dynamic_cast<QMainWindow*
>(parent);
347 KoColor foreground(Qt::black, cs);
349 KoColor background(Qt::white, cs);
410 KSharedConfigPtr config = KSharedConfig::openConfig();
411 KConfigGroup miscGroup = config->group(
"Misc");
412 const uint handleRadius = miscGroup.readEntry(
"HandleRadius", 5);
455 doc->disconnect(
this);
470 d->
softProof->setChecked(imageView->softProofing());
471 d->
gamutCheck->setChecked(imageView->gamutCheck());
476 if (
KisConfig(
true).readEntry<bool>(
"EnablePositionLabel",
false)) {
478 SIGNAL(documentMousePositionChanged(QPointF)),
480 SLOT(documentMousePositionChanged(QPointF)));
520 QSignalBlocker b(d->viewPrintSize);
521 d->viewPrintSize->setChecked(value);
523 d->
viewPrintSize->setChecked(imageView->canvasController()->usePrintResolutionMode());
529 imageView->zoomManager()->zoomAction(),
531 imageView->zoomManager()->zoomAction()->setUsePrintResolutionMode(imageView->canvasController()->usePrintResolutionMode());
534 imageView->canvasController(),
570 image(), SIGNAL(sigSizeChanged(QPointF,QPointF)),
574 image(), SIGNAL(sigResolutionChanged(
double,
double)),
774 connect(tAction, SIGNAL(toggled(
bool)),
this, SLOT(
showStatusBar(
bool)));
777 tAction->setChecked(
false);
778 connect(tAction, SIGNAL(toggled(
bool)),
this, SLOT(
switchCanvasOnly(
bool)));
897 const int busyWaitDelay = 1000;
899 dialog.blockIfImageIsBusy();
901 return dialog.result() == QDialog::Accepted;
930 KisImageReadOnlyBarrierLock l(srcDoc->
image());
931 doc = srcDoc->
clone(
true);
936 if (name.isEmpty()) {
939 name = i18n(
"%1 (Copy)", name);
955 QMainWindow* w = qobject_cast<QMainWindow*>(qApp->activeWindow());
976 QString path = QFileInfo(
document()->localFilePath()).canonicalPath();
979 if (QDir(path).exists()) {
983 dialog.setDirectoryUrl(QUrl(
document()->localFilePath()));
984 return dialog.filename();
987 return QFileInfo(
document()->localFilePath()).canonicalPath();
1002 bool fileAlreadyExists;
1004 QString version =
"000";
1009 QString fileName = QFileInfo(
document()->localFilePath()).fileName();
1014 QRegExp regex(
"_\\d{1,4}[.]|_\\d{1,4}[a-z][.]|_\\d{1,4}[~]|_\\d{1,4}[a-z][~]");
1015 regex.indexIn(fileName);
1017 foundVersion = matches.at(0).isEmpty() ? false :
true;
1022 QRegExp regexAux(
"_\\d{1,4}[~]|_\\d{1,4}[a-z][~]");
1023 regexAux.indexIn(fileName);
1024 QStringList matchesAux = regexAux.capturedTexts();
1025 isBackup = matchesAux.at(0).isEmpty() ? false :
true;
1029 version = matches.at(matches.count() - 1);
1030#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1031 if (version.contains(QRegExp(
"[a-z]"))) {
1033 if (QRegExp(
"[a-z]").containedIn(version)) {
1037 letter = version.right(1);
1042 version.remove(0, 1);
1046 QRegExp regex2(
"[.][a-z]{2,4}$");
1047 regex2.indexIn(fileName);
1049 QString extensionPlusVersion = matches2.at(0);
1050 extensionPlusVersion.prepend(version);
1051 extensionPlusVersion.prepend(
"_");
1052#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1053 fileName.replace(regex2, extensionPlusVersion);
1055 regex2.replaceIn(fileName, extensionPlusVersion);
1060 int intVersion = version.toInt(0);
1062 QString baseNewVersion = QString::number(intVersion);
1063 while (baseNewVersion.length() < version.length()) {
1064 baseNewVersion.prepend(
"0");
1069 newVersion = baseNewVersion;
1070 newVersion.prepend(
"_");
1071 if (!letter.isNull()) newVersion.append(letter);
1073 newVersion.append(
"~");
1075 newVersion.append(
".");
1077#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1078 fileName.replace(regex, newVersion);
1080 regex.replaceIn(fileName, newVersion);
1082 fileAlreadyExists = QFileInfo(path +
'/' + fileName).exists();
1083 if (fileAlreadyExists) {
1084 if (!letter.isNull()) {
1085 char letterCh = letter.at(0).toLatin1();
1087 letter = QString(QChar(letterCh));
1092 }
while (fileAlreadyExists && letter !=
"{");
1094 if (letter ==
"{") {
1095 QMessageBox::critical(
mainWindow(), i18nc(
"@title:window",
"Couldn't save incremental version"), i18n(
"Alternative names exhausted, try manually saving with a higher number"));
1098 QString newFilePath = path +
'/' + fileName;
1103 QUrl::fromLocalFile(
document()->path()));
1110 if (
document()->path().isEmpty()) {
1116 bool workingOnBackup;
1117 bool fileAlreadyExists;
1118 QString version =
"000";
1122 QString fileName = QFileInfo(
document()->localFilePath()).fileName();
1125 QRegExp regex(
"~\\d{1,4}[.]|~\\d{1,4}[a-z][.]");
1126 regex.indexIn(fileName);
1128 workingOnBackup = matches.at(0).isEmpty() ? false :
true;
1130 if (workingOnBackup) {
1132 version = matches.at(matches.count() - 1);
1133#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1134 if (version.contains(QRegExp(
"[a-z]"))) {
1136 if (QRegExp(
"[a-z]").containedIn(version)) {
1139 letter = version.right(1);
1144 version.remove(0, 1);
1147 int intVersion = version.toInt(0);
1149 QString baseNewVersion = QString::number(intVersion);
1151 while (baseNewVersion.length() < version.length()) {
1152 baseNewVersion.prepend(
"0");
1157 newVersion = baseNewVersion;
1158 newVersion.prepend(
"~");
1159 if (!letter.isNull()) newVersion.append(letter);
1160 newVersion.append(
".");
1161#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1162 backupFileName.replace(regex, newVersion);
1164 regex.replaceIn(backupFileName, newVersion);
1166 fileAlreadyExists = QFile(path +
'/' + backupFileName).exists();
1167 if (fileAlreadyExists) {
1168 if (!letter.isNull()) {
1169 char letterCh = letter.at(0).toLatin1();
1171 letter = QString(QChar(letterCh));
1176 }
while (fileAlreadyExists && letter !=
"{");
1178 if (letter ==
"{") {
1179 QMessageBox::critical(
mainWindow(), i18nc(
"@title:window",
"Couldn't save incremental backup"), i18n(
"Alternative names exhausted, try manually saving with a higher number"));
1182 QFile::copy(path +
'/' + fileName, path +
'/' + backupFileName);
1187 const quint8 HARDCODED_DIGIT_COUNT = 3;
1188 QString baseNewVersion =
"000";
1189 QString backupFileName = QFileInfo(
document()->localFilePath()).fileName();
1190 QRegExp regex2(
"[.][a-z]{2,4}$");
1191 regex2.indexIn(backupFileName);
1193 QString extensionPlusVersion = matches2.at(0);
1194 extensionPlusVersion.prepend(baseNewVersion);
1195 extensionPlusVersion.prepend(
"~");
1196#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1197 backupFileName.replace(regex2, extensionPlusVersion);
1199 regex2.replaceIn(backupFileName, extensionPlusVersion);
1204 newVersion = baseNewVersion;
1205 newVersion.prepend(
"~");
1206 newVersion.append(
".");
1207#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
1208 backupFileName.replace(regex, newVersion);
1210 regex.replaceIn(backupFileName, newVersion);
1212 fileAlreadyExists = QFile(path +
'/' + backupFileName).exists();
1213 if (fileAlreadyExists) {
1215 int intVersion = baseNewVersion.toInt(0);
1217 baseNewVersion = QString::number(intVersion);
1218 while (baseNewVersion.length() < HARDCODED_DIGIT_COUNT) {
1219 baseNewVersion.prepend(
"0");
1222 }
while (fileAlreadyExists);
1226 QFile::copy(path +
'/' + fileName, path +
'/' + backupFileName);
1255 if(mw && mw->statusBar()) {
1256 mw->statusBar()->setVisible(toggled);
1275 dbgUI <<
"Unable to switch to canvas-only mode, main window not found";
1294 !
main->canvasDetached();
1296 if (useCanvasOffsetCompensation) {
1329 if (toggleFullscreen) {
1331 origin =
main->geometry().topLeft() -
main->screen()->geometry().topLeft();
1341 if (
main->statusBar()) {
1343 if (
main->statusBar()->dynamicPropertyNames().contains(
"wasvisible")) {
1344 if (
main->statusBar()->property(
"wasvisible").toBool()) {
1345 main->statusBar()->setVisible(
true);
1350 main->statusBar()->setProperty(
"wasvisible",
main->statusBar()->isVisible());
1351 main->statusBar()->setVisible(
false);
1357 KisAction* action = qobject_cast<KisAction*>(
main->actionCollection()->action(
"view_toggledockers"));
1359 action->setCheckable(
true);
1361 if (action->isChecked()) {
1363 action->setChecked(
false);
1375 if (toggleFullscreen) {
1377 main->setWindowState(
main->windowState() | Qt::WindowFullScreen);
1379 main->setWindowState(
main->windowState() & ~Qt::WindowFullScreen);
1385 if (
main->menuBar()->dynamicPropertyNames().contains(
"wasvisible")) {
1386 if (
main->menuBar()->property(
"wasvisible").toBool()) {
1387 main->menuBar()->setVisible(
true);
1392 main->menuBar()->setProperty(
"wasvisible",
main->menuBar()->isVisible());
1393 main->menuBar()->setVisible(
false);
1399 Q_FOREACH (QToolBar* toolbar, toolBars) {
1401 if (toolbar->dynamicPropertyNames().contains(
"wasvisible")) {
1402 if (toolbar->property(
"wasvisible").toBool()) {
1403 toolbar->setVisible(
true);
1408 toolbar->setProperty(
"wasvisible", toolbar->isVisible());
1409 toolbar->setVisible(
false);
1430 QTimer::singleShot(0,
this, [
this] () {
1437 actionCollection()->action(
"view_show_canvas_only")->shortcut().toString(QKeySequence::NativeText)), QIcon(),
1447 if (useCanvasOffsetCompensation && toggled) {
1450 const bool allowedZoomMode =
1454 if (allowedZoomMode) {
1456 QTimer::singleShot(0,
this, [
this] () {
1478 QString folderInStandardAppData;
1479 QString folderInPrivateAppData;
1482 if (!folderInPrivateAppData.isEmpty()) {
1484 const auto pathToDisplay = [](
const QString &path) {
1492 return QDir::toNativeSeparators(path).replace(QChar(
'\\'), QStringLiteral(
u"\\\u200B"));
1495 QMessageBox mbox(qApp->activeWindow());
1496 mbox.setIcon(QMessageBox::Information);
1497 mbox.setWindowTitle(i18nc(
"@title:window resource folder",
"Open Resource Folder"));
1500 mbox.setText(i18nc(
"@info resource folder",
1501 "<p>You are using the Microsoft Store package version of Krita. "
1502 "Even though Krita can be configured to place resources under the "
1503 "user AppData location, Windows may actually store the files "
1504 "inside a private app location.</p>\n"
1505 "<p>You should check both locations to determine where "
1506 "the files are located.</p>\n"
1507 "<p><b>User AppData</b>:<br/>\n"
1509 "<p><b>Private app location</b>:<br/>\n"
1511 pathToDisplay(folderInStandardAppData),
1512 pathToDisplay(folderInPrivateAppData)
1514 mbox.setTextInteractionFlags(Qt::NoTextInteraction);
1516 const auto *btnOpenUserAppData = mbox.addButton(i18nc(
"@action:button resource folder",
"Open in &user AppData"), QMessageBox::AcceptRole);
1517 const auto *btnOpenPrivateAppData = mbox.addButton(i18nc(
"@action:button resource folder",
"Open in &private app location"), QMessageBox::AcceptRole);
1519 mbox.addButton(QMessageBox::Close);
1520 mbox.setDefaultButton(QMessageBox::Close);
1523 if (mbox.clickedButton() == btnOpenPrivateAppData) {
1524 resourcePath = folderInPrivateAppData;
1525 }
else if (mbox.clickedButton() == btnOpenUserAppData) {
1534 QDesktopServices::openUrl(QUrl::fromLocalFile(resourcePath));
1541 Q_FOREACH (QDockWidget* dock, dockers) {
1546 if (qobject_cast<KoToolDocker*>(dock)) {
1550 QObjectList objects;
1551 objects.append(dock);
1552 while (!objects.isEmpty()) {
1553 QObject*
object = objects.takeFirst();
1554 objects.append(object->children());
1573 d->
currentImageView->showFloatingMessage(message, icon, timeout, priority, alignment);
1592 int timeoutMsec = 500;
1595 messageToClear.clear();
1602 if (haveZoomMessage) {
1603 if (haveRotationMessage) {
1608 }
else if (haveRotationMessage) {
1619 return qobject_cast<KisMainWindow*>(
d->
mainWindow);
1637 d->
currentImageView->canvasController()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
1638 d->
currentImageView->canvasController()->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
1640 d->
currentImageView->canvasController()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
1641 d->
currentImageView->canvasController()->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
1664 KConfigGroup appAuthorGroup(KSharedConfig::openConfig(),
"Author");
1665 if (profileName.isEmpty() || profileName == i18nc(
"choice for author profile",
"Anonymous")) {
1666 appAuthorGroup.writeEntry(
"active-profile",
"");
1668 appAuthorGroup.writeEntry(
"active-profile", profileName);
1670 appAuthorGroup.sync();
1683 d->
actionAuthor->addAction(i18nc(
"choice for author profile",
"Anonymous"));
1685 KConfigGroup authorGroup(KSharedConfig::openConfig(),
"Author");
1689 QDir dir(authorInfo);
1690 Q_FOREACH(QString entry, dir.entryList(filters)) {
1691 int ln = QString(
".authorinfo").size();
1693 if (!profiles.contains(entry)) {
1694 profiles.append(entry);
1697 Q_FOREACH (
const QString &profile , profiles) {
1701 KConfigGroup appAuthorGroup(KSharedConfig::openConfig(),
"Author");
1702 QString profileName = appAuthorGroup.readEntry(
"active-profile",
"");
1704 if (profileName ==
"anonymous" || profileName.isEmpty()) {
1706 }
else if (profiles.contains(profileName)) {
1726 QSet<KoShape*> dummy;
1793 if (isOpacityPresetMode) {
float value(const T *src, size_t ch)
QList< QString > QStringList
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
QDeadlineTimer zoomRotationMessageTimer
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 showFloatingZoomMessage(const QString &message)
void slotActivateTransformTool()
void setCurrentView(KisView *view)
void slotSaveIncremental()
void brushOutlineToggled()
void openResourcesDirectory()
void setQtMainWindow(QMainWindow *newMainWindow)
KisImageManager * imageManager()
void handleFloatingZoomRotationMessage(QString &messageToClear)
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)
void showFloatingRotationMessage(const QString &message)
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())