diff options
Diffstat (limited to 'kate/app/katesession.h')
-rw-r--r-- | kate/app/katesession.h | 75 |
1 files changed, 63 insertions, 12 deletions
diff --git a/kate/app/katesession.h b/kate/app/katesession.h index 3351db150..01357798b 100644 --- a/kate/app/katesession.h +++ b/kate/app/katesession.h @@ -39,6 +39,7 @@ class KDirWatch; class KPushButton; class TDEListView; class TQCheckBox; +class KateSessionManager; //BEGIN KateSession @@ -51,13 +52,19 @@ class KateSession /** * create a new session and read the config from fileName if it exists + * @param manager the session manager handling this session * @param sessionName session name * @param fileName file where session config is saved to/restored from - * @param isFullName true -> filename is a full filename, used to load/save the session configuration - * false -> filename is a folder name. This is used for new unsaved sessions - * to inject the location where the configuration file should be saved */ - KateSession(const TQString &sessionName, const TQString &fileName, bool isFullName); + KateSession(const KateSessionManager &manager, const TQString &sessionName, const TQString &fileName); + + /** + * duplicate an existing session into a new one with the given new name. + * If the existing session is read-only, the new one will *not* be read-only by default + * @param session the existing session + * @param newSessionName the name of the new session + */ + KateSession(const KateSession &session, const TQString &newSessionName); /** * Destructor @@ -89,7 +96,7 @@ class KateSession /** * @return the session filename if available, otherwise the null string */ - const TQString& getSessionFilename() const { return m_isFullName ? m_filename : TQString::null; } + const TQString& getSessionFilename() const { return m_filename; } /** * @return the number of documents in the session @@ -97,6 +104,12 @@ class KateSession int getDocCount() const { return m_documents.count(); } /** + * Load session info from the saved file + * @param includeGUIInfo if true, also load the information about the GUI elements + */ + void load(bool includeGUIInfo); + + /** * Save session info * @param saveGUIInfo if true, save also the information about the GUI elements * @param setReadOnly necessary to save a session that has to be turned to read only @@ -117,15 +130,18 @@ class KateSession * @return the session config object */ TDEConfig* getConfig() const { return m_config; } + + /** + * create a new filename for a session object + */ + void createFilename(); - + const KateSessionManager &m_manager; // The session manager that handles this session TQString m_sessionName; TQString m_filename; - bool m_isFullName; // true -> m_filename is a full filename - // false -> m_filename is a folder name. bool m_readOnly; - TQStringList m_documents; // document URLs - KSimpleConfig *m_config; // session config + TQStringList m_documents; // document URLs + KSimpleConfig *m_config; // session config }; //END KateSession @@ -146,6 +162,9 @@ class KateSession * * @note The Kate session manager takes ownership of each session object it handles. */ +//FIXME update the sessions.list file when switching to another session or to a new session +//FIXME create a new unnamed session and switch to another session. The first session is saved without +//asking the user for a new session name. This is wrong. class KateSessionManager : public TQObject { Q_OBJECT @@ -174,6 +193,11 @@ class KateSessionManager : public TQObject void saveConfig(); /** + * @return the session files folder name + */ + const TQString& getBaseDir() const { return m_baseDir; } + + /** * @return the active session id */ int getActiveSessionId() const { return m_activeSessionId; } @@ -184,6 +208,12 @@ class KateSessionManager : public TQObject const TQString& getActiveSessionName() /*FIXME const*/ { return m_sessions[m_activeSessionId]->getSessionName(); } /** + * @param sessionId the id of the session of interest + * @return the name of the specified session + */ + const TQString& getSessionName(int sessionId) /*FIXME const*/; + + /** * @return a reference to the active session */ KateSession* getActiveSession() { return m_sessions[m_activeSessionId]; } @@ -227,6 +257,21 @@ class KateSessionManager : public TQObject */ int newSession(const TQString &sessionName = TQString::null, bool activate = true); + /** + * Create a new session and activate it if required + * @param sessionId the id of the session to clone + * @param sessionName the new session name + * @param activate if true, activate the new session after creation + * @return the id of the newly created session + * @emit sessionCreated + */ + int cloneSession(int sessionId, const TQString &sessionName = TQString::null, bool activate = true); + + /** + * Restore the current active session to the last saved state + */ + void reloadActiveSession() { m_sessions[m_activeSessionId]->load(true); } + /** * Restore the last saved session. Can only be used before * any other session has been activated, i.e. on Kate's startup @@ -271,6 +316,7 @@ class KateSessionManager : public TQObject * Rename the specified session * @param sessionId the id of the session to rename * @param newSessionName the new session name + * @emit sessionRenamed */ void renameSession(int sessionId, const TQString &newSessionName); @@ -281,7 +327,6 @@ class KateSessionManager : public TQObject */ void setSessionReadOnlyStatus(int sessionId, bool readOnly); - signals: /** * Emitted once a session has been activated @@ -315,6 +360,12 @@ class KateSessionManager : public TQObject */ void sessionsSwapped(int sessionIdMin, int sessionIdMax); + /** + * Emitted once a session has been renamed + * @param sessionId the id of the new session + */ + void sessionRenamed(int sessionId); + protected: KateSessionManager(); @@ -385,7 +436,7 @@ class KateSessionChooser : public KDialogBase protected: TDEListView *m_listview; }; -//BEGIN KateSessionChooser +//END KateSessionChooser |