]> git.lyx.org Git - lyx.git/blobdiff - src/LyXVC.h
More requires --> required, for C++2a.
[lyx.git] / src / LyXVC.h
index df6f273ffca72c03709d018d1bef2fb13d1fbe86..d3dc1c6ff8d4887976aa500626e1f7548f0c958b 100644 (file)
@@ -12,7 +12,8 @@
 #ifndef LYX_VC_H
 #define LYX_VC_H
 
-#include <boost/scoped_ptr.hpp>
+#include "support/docstring.h"
+#include "support/unique_ptr.h"
 
 #include <string>
 
@@ -39,10 +40,19 @@ class Buffer;
 */
 class LyXVC {
 public:
+       /// Return status of a command
+       enum CommandResult {
+               Cancelled,    ///< command was cancelled
+               ErrorBefore,  ///< error before executing command
+               ErrorCommand, ///< error while executing command
+               VCSuccess     ///< command was executed successfully
+       };
        ///
        LyXVC();
-       ///
-       ~LyXVC();
+       /// Status of the underlying VCS
+       docstring vcstatus() const;
+       /// Is \p fn under version control?
+       static bool fileInVC(support::FileName const & fn);
        /** Not a good name perhaps. This function should be called whenever
          LyX loads a file. This function then checks for a master VC file (for
          RCS this is *,v or RCS/ *,v ; for CVS this is CVS/Entries and .svn/entries
@@ -52,7 +62,7 @@ public:
          */
        bool file_found_hook(support::FileName const & fn);
 
-       /** Is \p fn in under version control?
+       /** Is \p fn under version control?
          This function should be run when a file is requested for loading,
          but it does not exist. This function will then check for a VC master
          file with the same name (see above function). If this exists the
@@ -75,19 +85,31 @@ public:
        // by the next multiple messages on the top of the processed dispatch
        // machinery.
 
-       /// Unlock and commit changes. Returns log.
-       std::string checkIn();
-       /// Does the current VC supports this operation?
+       ///
+       std::string rename(support::FileName const &);
+       /// Does the current VC support this operation?
+       bool renameEnabled() const;
+       ///
+       std::string copy(support::FileName const &);
+       /// Does the current VC support this operation?
+       bool copyEnabled() const;
+
+       /// Unlock and commit changes.
+       /// \p log is non-empty on success and may be empty on failure.
+       CommandResult checkIn(std::string & log);
+       /// Does the current VC support this operation?
        bool checkInEnabled() const;
+       /// Should a log message be provided for next checkin?
+       bool isCheckInWithConfirmation() const;
 
        /// Lock/update and prepare to edit document. Returns log.
        std::string checkOut();
-       /// Does the current VC supports this operation?
+       /// Does the current VC support this operation?
        bool checkOutEnabled() const;
 
        /// Synchronize the whole archive with repository
        std::string repoUpdate();
-       /// Does the current VC supports this operation?
+       /// Does the current VC support this operation?
        bool repoUpdateEnabled() const;
 
        /**
@@ -103,7 +125,7 @@ public:
 
        /// Undo last check-in.
        void undoLast();
-       /// Does the current VC supports this operation?
+       /// Does the current VC support this operation?
        bool undoLastEnabled() const;
        /**
         * Prepare revision rev of the file into newly created temporary file
@@ -117,7 +139,7 @@ public:
         * for retrieving normal revisions (rev>0) or backtracking (rev<0).
         */
        bool prepareFileRevision(std::string const & rev, std::string & f);
-       /// Does the current VC supports this operation?
+       /// Does the current VC support this operation?
        bool prepareFileRevisionEnabled();
 
        /**
@@ -133,9 +155,10 @@ public:
         * keep things in synchro once we would allow user to toggle
         * read-only flags.
         */
-       void toggleReadOnly();
+       std::string toggleReadOnly();
 
        /// Is the document under administration by VCS?
+       /// returns false for unregistered documents in a path managed by VCS
        bool inUse() const;
 
        /// Returns the RCS + version number for messages
@@ -153,7 +176,8 @@ public:
                Tree = 2,
                Author = 3,
                Date = 4,
-               Time = 5
+               Time = 5,
+               FileAbbrev = 6
        };
 
        /**
@@ -168,7 +192,7 @@ private:
        Buffer * owner_;
 
        ///
-       boost::scoped_ptr<VCS> vcs;
+       unique_ptr<VCS> vcs;
 };