X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.h;h=a9bdb84a3353ade2fd01b21b10d15e19d0ad3b30;hb=e45427de389bc188f02ebe0de2c052740dcde09c;hp=5f5f0f77d9713dd508c1ecee5d46f196387b1071;hpb=22b98a7ca439f3a4abf05589065b38ac0e17ae35;p=lyx.git diff --git a/src/VCBackend.h b/src/VCBackend.h index 5f5f0f77d9..a9bdb84a33 100644 --- a/src/VCBackend.h +++ b/src/VCBackend.h @@ -5,6 +5,7 @@ * Licence details can be found in the file COPYING. * * \author Lars Gullik Bjønnes + * \author Pavel Sanda * * Full author contact details are available in file CREDITS. */ @@ -16,6 +17,8 @@ #include +#include "LyXVC.h" + namespace lyx { @@ -64,10 +67,6 @@ public: virtual void getLog(support::FileName const &) = 0; /// return the current version description virtual std::string const versionString() const = 0; - /// return the current version - std::string const & version() const { return version_; } - /// return the user who has locked the file - std::string const & locker() const { return locker_; } /// set the owning buffer void owner(Buffer * b) { owner_ = b; } /// return the owning buffer @@ -77,6 +76,13 @@ public: /// do we need special handling for read-only toggling? /// (also used for check-out operation) virtual bool toggleReadOnlyEnabled() = 0; + /// Return revision info specified by the argument. + virtual std::string revisionInfo(LyXVC::RevisionInfo const info) = 0; + + virtual bool prepareFileRevision(std::string const & rev, std::string & f) = 0; + + virtual bool prepareFileRevisionEnabled() = 0; + protected: /// parse information from the version file virtual void scanMaster() = 0; @@ -100,14 +106,6 @@ protected: /// The status of the VC controlled file. VCStatus vcstatus; - /** - * The version of the VC file. I am not sure if this can be a - * string or if it must be a float/int. - */ - std::string version_; - - /// The user currently keeping the lock on the VC file. - std::string locker_; /// The buffer using this VC Buffer * owner_; }; @@ -157,8 +155,22 @@ public: virtual bool toggleReadOnlyEnabled(); + virtual std::string revisionInfo(LyXVC::RevisionInfo const info); + + virtual bool prepareFileRevision(std::string const & rev, std::string & f); + + virtual bool prepareFileRevisionEnabled(); + protected: virtual void scanMaster(); +private: + /** + * The version of the VC file. I am not sure if this can be a + * string or if it must be a float/int. + */ + std::string version_; + /// The user currently keeping the lock on the VC file (or "Unlocked"). + std::string locker_; }; @@ -204,11 +216,21 @@ public: virtual bool toggleReadOnlyEnabled(); + virtual std::string revisionInfo(LyXVC::RevisionInfo const info); + + virtual bool prepareFileRevision(std::string const & rev, std::string & f); + + virtual bool prepareFileRevisionEnabled(); + protected: virtual void scanMaster(); private: support::FileName file_; + // revision number from scanMaster + std::string version_; + /// The user currently keeping the lock on the VC file. + std::string locker_; }; @@ -249,12 +271,16 @@ public: virtual void getLog(support::FileName const &); virtual std::string const versionString() const { - return "SVN: " + version_; + return "SVN: " + rev_file_cache_; } virtual bool toggleReadOnlyEnabled(); - std::string getFileRevisionInfo(); + virtual std::string revisionInfo(LyXVC::RevisionInfo const info); + + virtual bool prepareFileRevision(std::string const & rev, std::string & f); + + virtual bool prepareFileRevisionEnabled(); protected: virtual void scanMaster(); @@ -271,6 +297,25 @@ private: support::FileName file_; /// is the loaded file under locking policy? bool locked_mode_; + /** + * Real code for obtaining file revision info. Fills all file-related caches + * and returns true if successfull. + * "?" is stored in rev_file_cache_ as a signal if request for obtaining info + * was already unsuccessful. + */ + bool getFileRevisionInfo(); + /// cache for file revision number, "?" if already unsuccessful, isNumber==true + std::string rev_file_cache_; + /// cache for author of last commit + std::string rev_author_cache_; + /// cache for date of last commit + std::string rev_date_cache_; + /// cache for time of last commit + std::string rev_time_cache_; + /// fills rev_tree_cache_, returns true if successfull. + bool getTreeRevisionInfo(); + /// cache for tree revision number, "?" if already unsuccessful + std::string rev_tree_cache_; }; } // namespace lyx