Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSessionResource Class Reference

#include <KisSessionResource.h>

+ Inheritance diagram for KisSessionResource:

Classes

struct  Private
 

Public Member Functions

KoResourceSP clone () const override
 
QString defaultFileExtension () const override
 
 KisSessionResource (const KisSessionResource &rhs)
 
 KisSessionResource (const QString &filename)
 
KisSessionResourceoperator= (const KisSessionResource &rhs)=delete
 
void storeCurrentWindows ()
 
 ~KisSessionResource ()
 
- Public Member Functions inherited from KisWindowLayoutResource
void applyLayout ()
 
KoResourceSP clone () const override
 
QString defaultFileExtension () const override
 
 KisWindowLayoutResource (const KisWindowLayoutResource &rhs)
 
 KisWindowLayoutResource (const QString &filename)
 
bool loadFromDevice (QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override
 
KisWindowLayoutResourceoperator= (const KisWindowLayoutResource &rhs)=delete
 
QPair< QString, QString > resourceType () const override
 
bool saveToDevice (QIODevice *dev) const override
 
 ~KisWindowLayoutResource () override
 
- Public Member Functions inherited from KoResource
bool active () const
 
void addMetaData (QString key, QVariant value)
 store the given key, value pair in the resource
 
virtual void clearSideLoadedResources ()
 
virtual QList< KoResourceLoadResultembeddedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
QString filename () const
 
QImage image () const
 
bool isDirty () const
 
virtual bool isEphemeral () const
 
virtual bool isSerializable () const
 
 KoResource ()
 
 KoResource (const KoResource &rhs)
 
 KoResource (const QString &filename)
 
virtual QList< KoResourceLoadResultlinkedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
bool load (KisResourcesInterfaceSP resourcesInterface)
 
QString md5Sum (bool generateIfEmpty=true) const
 
QMap< QString, QVariant > metadata () const
 get a map with all the metadata
 
virtual QString name () const
 
KoResourceoperator= (const KoResource &rhs)=delete
 
bool permanent () const
 
virtual QList< int > requiredCanvasResources () const
 
QList< KoResourceLoadResultrequiredResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
int resourceId () const
 
bool save ()
 
void setActive (bool active)
 
void setDirty (bool value)
 Mark the preset as modified but not saved.
 
void setFilename (const QString &filename)
 
void setImage (const QImage &image)
 
void setMD5Sum (const QString &md5sum)
 Set the md5sum of this resource. It must be in hex-encoded string format.
 
void setName (const QString &name)
 
void setPermanent (bool permanent)
 
void setResourceId (int id)
 
void setStorageLocation (const QString &location)
 
void setValid (bool valid)
 
void setVersion (int version)
 
virtual QList< KoResourceLoadResultsideLoadedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
KoResourceSignature signature () const
 
QString storageLocation () const
 
QList< KoResourceLoadResulttakeSideLoadedResources (KisResourcesInterfaceSP globalResourcesInterface)
 
virtual QImage thumbnail () const
 thumbnail the thumbnail image to use in resource selectors
 
virtual QString thumbnailPath () const
 thumbnailPath returns the path to a separate thumbnail image, outside the actual resource file itself. If the path is relative, it is supposed start in the same location as the resource itself. If it's absolute, that is, it starts with "/", it is from the root of the storage.
 
virtual void updateThumbnail ()
 updateThumbnail updates the thumbnail for this resource. Reimplement if your thumbnail is something else than the image set with setImage.
 
bool valid () const
 
int version () const
 Get the version of the resource.
 
virtual ~KoResource ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Protected Member Functions

void loadXml (const QDomElement &root) const override
 
QPair< QString, QString > resourceType () const override
 
void saveXml (QDomDocument &doc, QDomElement &root) const override
 
- Protected Member Functions inherited from KisWindowLayoutResource
void setWindows (const QList< QPointer< KisMainWindow > > &mainWindows)
 

Private Member Functions

void restore ()
 

Private Attributes

QScopedPointer< Privated
 

Friends

class KisPart
 

Additional Inherited Members

- Static Public Member Functions inherited from KisWindowLayoutResource
static KisWindowLayoutResourceSP fromCurrentWindows (const QString &filename, const QList< QPointer< KisMainWindow > > &mainWindows, bool showImageInAllWindows, bool primaryWorkspaceFollowsFocus, KisMainWindow *primaryWindow)
 
- Public Attributes inherited from KoResource
bool active {true}
 
QString filename
 
QImage image
 
QString md5sum
 
QMap< QString, QVariant > metadata
 
bool modified {false}
 
QString name
 
bool permanent {false}
 
int resourceId {-1}
 
QString storageLocation
 
bool valid {false}
 
int version {-1}
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Detailed Description

Definition at line 14 of file KisSessionResource.h.

Constructor & Destructor Documentation

◆ KisSessionResource() [1/2]

KisSessionResource::KisSessionResource ( const QString & filename)

Definition at line 40 of file KisSessionResource.cpp.

42 , d(new Private)
43{}
QScopedPointer< Private > d
KisWindowLayoutResource(const QString &filename)
QString filename

◆ ~KisSessionResource()

KisSessionResource::~KisSessionResource ( )

Definition at line 45 of file KisSessionResource.cpp.

46{}

◆ KisSessionResource() [2/2]

KisSessionResource::KisSessionResource ( const KisSessionResource & rhs)

Definition at line 48 of file KisSessionResource.cpp.

50 , d(new Private(*rhs.d))
51{
52}

Member Function Documentation

◆ clone()

KoResourceSP KisSessionResource::clone ( ) const
overridevirtual

Implements KoResource.

Definition at line 54 of file KisSessionResource.cpp.

55{
56 return KoResourceSP(new KisSessionResource(*this));
57}
KisSessionResource(const QString &filename)
QSharedPointer< KoResource > KoResourceSP

References KisSessionResource().

◆ defaultFileExtension()

QString KisSessionResource::defaultFileExtension ( ) const
overridevirtual
Returns
the default file extension which should be used when saving the resource

Reimplemented from KoResource.

Definition at line 116 of file KisSessionResource.cpp.

117{
118 return ".ksn";
119}

◆ loadXml()

void KisSessionResource::loadXml ( const QDomElement & root) const
overrideprotectedvirtual

Reimplemented from KisWindowLayoutResource.

Definition at line 167 of file KisSessionResource.cpp.

168{
170
171 d->views.clear();
172 for (auto viewElement = root.firstChildElement("view");
173 !viewElement.isNull();
174 viewElement = viewElement.nextSiblingElement("view")) {
175 Private::View view;
176
177 view.file = QUrl(viewElement.attribute("src")).toLocalFile();
178 view.windowId = QUuid(viewElement.attribute("window"));
179 view.viewConfig.fromXML(viewElement);
180
181 d->views.append(view);
182 }
183 //Load session
184 d->profileName.clear();
185 auto sessionElement = root.firstChildElement("session");
186 d->profileName = QString(sessionElement.attribute("profile"));
187
188}
virtual void loadXml(const QDomElement &root) const

References d, KisSessionResource::Private::View::file, KisPropertiesConfiguration::fromXML(), KisWindowLayoutResource::loadXml(), KisSessionResource::Private::View::viewConfig, and KisSessionResource::Private::View::windowId.

◆ operator=()

KisSessionResource & KisSessionResource::operator= ( const KisSessionResource & rhs)
delete

◆ resourceType()

QPair< QString, QString > KisSessionResource::resourceType ( ) const
inlineoverrideprotectedvirtual
Returns
the resource type

Implements KoResource.

Definition at line 33 of file KisSessionResource.h.

34 {
35 return QPair<QString, QString>(ResourceType::Sessions, "");
36 }
const QString Sessions

References ResourceType::Sessions.

◆ restore()

void KisSessionResource::restore ( )
private

Definition at line 59 of file KisSessionResource.cpp.

60{
61 auto *kisPart = KisPart::instance();
62
64
65 QMap<QString, KisDocument *> documents;
66
67 // Find documents which are already open so we don't need to reload them
68 QList<QPointer<KisView>> oldViews = kisPart->views();
69 Q_FOREACH(const QPointer<KisView> view, oldViews) {
70 KisDocument *document = view->document();
71 const QString path = document->path();
72 documents.insert(path, document);
73 }
74
75 Q_FOREACH(auto &viewData, d->views) {
76 QString path = viewData.file;
77
78 KisMainWindow *window = viewData.getWindow();
79
80 if (!window) {
81 qDebug() << "Warning: session file contains inconsistent data.";
82 } else {
83 KisDocument *document = documents.value(path);
84
85 if (!document) {
86 document = kisPart->createDocument();
87
88 bool ok = document->openPath(path);
89 if (!ok) {
90 delete document;
91 continue;
92 }
93
94 kisPart->addDocument(document);
95 documents.insert(path, document);
96 }
97 //update profile
98 QString profileName;
99 profileName = d->profileName;
100 window->viewManager()->changeAuthorProfile(profileName);
102
103
104 KisView *view = window->newView(document);
105 view->restoreViewState(viewData.viewConfig);
106 }
107 }
108
109 Q_FOREACH(QPointer<KisView> view, oldViews) {
110 view->closeView();
111 }
112
113}
bool openPath(const QString &path, OpenFlags flags=None)
openPath Open a Path
Main window for Krita.
KisView * newView(QObject *document, QMdiSubWindow *subWindow=0)
KisViewManager * viewManager
static KisPart * instance()
Definition KisPart.cpp:131
void slotUpdateAuthorProfileActions()
void changeAuthorProfile(const QString &profileName)
void restoreViewState(const KisPropertiesConfiguration &config)
Definition KisView.cpp:1293

References KisWindowLayoutResource::applyLayout(), KisViewManager::changeAuthorProfile(), d, KisPart::instance(), KisMainWindow::newView(), KisDocument::openPath(), KisView::restoreViewState(), KisViewManager::slotUpdateAuthorProfileActions(), and KisMainWindow::viewManager.

◆ saveXml()

void KisSessionResource::saveXml ( QDomDocument & doc,
QDomElement & root ) const
overrideprotectedvirtual

Reimplemented from KisWindowLayoutResource.

Definition at line 141 of file KisSessionResource.cpp.

142{
144
145 Q_FOREACH(const auto view, d->views) {
146 QDomElement elem = doc.createElement("view");
147
148 elem.setAttribute("window", view.windowId.toString());
149 // we convert to QUrl to maintain compatibility with Krita 4.4
150 elem.setAttribute("src", QUrl::fromLocalFile(view.file).toString());
151 view.viewConfig.toXML(doc, elem);
152
153 root.appendChild(elem);
154
155 // Save profile
156 KConfigGroup appAuthorGroup(KSharedConfig::openConfig(), "Author");
157 QString profileName = appAuthorGroup.readEntry("active-profile", "");
158
159 QDomElement session = doc.createElement("session");
160 session.setAttribute("profile", profileName);
161 root.appendChild(session);
162
163 }
164
165}
virtual void saveXml(QDomDocument &doc, QDomElement &root) const

References d, and KisWindowLayoutResource::saveXml().

◆ storeCurrentWindows()

void KisSessionResource::storeCurrentWindows ( )

Definition at line 121 of file KisSessionResource.cpp.

122{
123 KisPart *kisPart = KisPart::instance();
124 const auto &windows = kisPart->mainWindows();
125 setWindows(windows);
126
127 d->views.clear();
128 Q_FOREACH(const KisView *view, kisPart->views()) {
129 if (view->document()->path().isEmpty()) continue;
130
131 auto viewData = Private::View();
132 viewData.windowId = view->mainWindow()->id();
133 viewData.file = view->document()->path();
134 view->saveViewState(viewData.viewConfig);
135 d->views.append(viewData);
136 }
137
138 setValid(true);
139}
QList< QPointer< KisMainWindow > > mainWindows
Definition KisPart.cpp:107
QList< QPointer< KisView > > views
Definition KisPart.cpp:106
KisMainWindow * mainWindow() const
Definition KisView.cpp:1093
QPointer< KisDocument > document
Definition KisView.cpp:121
void saveViewState(KisPropertiesConfiguration &config) const
Definition KisView.cpp:1276
void setWindows(const QList< QPointer< KisMainWindow > > &mainWindows)
void setValid(bool valid)

References d, KisView::document, KisMainWindow::id, KisPart::instance(), KisView::mainWindow(), KisPart::mainWindows, KisView::saveViewState(), KoResource::setValid(), KisWindowLayoutResource::setWindows(), and KisPart::views.

Friends And Related Symbol Documentation

◆ KisPart

friend class KisPart
friend

Definition at line 42 of file KisSessionResource.h.

Member Data Documentation

◆ d

QScopedPointer<Private> KisSessionResource::d
private

Definition at line 45 of file KisSessionResource.h.


The documentation for this class was generated from the following files: