]> git.lyx.org Git - lyx.git/blobdiff - src/LyXVC.h
Routines for calculating numerical labels for BibTeX citations.
[lyx.git] / src / LyXVC.h
index 9e4b7c44317314edf741e6d53e50f22cc70c53a0..b81269f4473c3873cecc1a9e88c4773c1ecbd29a 100644 (file)
@@ -4,7 +4,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -26,15 +26,14 @@ class Buffer;
 
 /** Version Control for LyX.
     This is the class giving the verison control features to LyX. It is
-    intended to support different kinds of version control, but at this point
-    we will only support RCS. Later CVS is a likely candidate for support.
+    intended to support different kinds of version control.
     The support in LyX is based loosely upon the version control in GNU Emacs,
-    but is not as extensive as that one. See examples/VC.lyx for a simple
+    but is not as extensive as that one. See Extended Manual for a simple
     tutorial and manual for the use of the version control system in LyX.
 
     LyXVC use this algorithm when it searches for VC files:
-    for RCS it searches for <filename>,v and RCS/<filename>,v similar
-    should be done for CVS. By doing this there doesn't need to be any
+    for RCS it searches for <filename>,v and RCS/<filename>,v similarly
+    CVS/Entries for cvs and .svn/entries. By doing this there doesn't need to be any
     special support for VC in the lyx format, and this is especially good
     when the lyx format will be a subset of LaTeX.
 */
@@ -45,11 +44,11 @@ public:
        ///
        ~LyXVC();
        /** 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) if this file is found, the loaded
-         file is assumed to be under controll by VC (only RCS so far), and
-         the appropiate actions is taken. Returns true if the file is under
-         control by a VCS.
+         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
+         for SVN) if this file or entry is found, the loaded file is assumed to be
+         under controll by VC, and the appropiate actions is taken.
+         Returns true if the file is under control by a VCS.
          */
        bool file_found_hook(support::FileName const & fn);
 
@@ -66,39 +65,83 @@ public:
        void setBuffer(Buffer *);
 
        /// Register the document as an VC file.
-       void registrer();
+       bool registrer();
 
-       /// Unlock and commit changes.
-       void checkIn();
 
-       /// Lock and prepare to edit document.
-       void checkOut();
+       // std::string used as a return value in functions below are
+       // workaround to defer messages to be displayed in UI. If message()
+       // is used directly, message string is immediately overwritten
+       // 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?
+       bool checkInEnabled() const;
+
+       /// Lock/update and prepare to edit document. Returns log.
+       std::string checkOut();
+       /// Does the current VC supports this operation?
+       bool checkOutEnabled() const;
+
+       /// Synchronize the whole archive with repository
+       std::string repoUpdate();
+       /// Does the current VC supports this operation?
+       bool repoUpdateEnabled() const;
+
+       /**
+        * Toggle locking property of the edited file,
+        * i.e. whether the file uses locking mechanism.
+        */
+       std::string lockingToggle();
+       /// Does the current VC support this operation?
+       bool lockingToggleEnabled() const;
 
        /// Revert to last version
        void revert();
 
        /// Undo last check-in.
        void undoLast();
+       /// Does the current VC supports this operation?
+       bool undoLastEnabled() const;
 
        /**
         * Generate a log file and return the filename.
-        * It is the caller's responsibility to unlink the
+        * It is the caller's responsibility to remove the
         * file after use.
         */
        const std::string getLogFile() const;
 
-       ///
+       /**
+        * We do not support this generally. In RCS/SVN file read-only flag
+        * is often connected with locking state and one has to be careful to
+        * keep things in synchro once we would allow user to toggle
+        * read-only flags.
+        */
        void toggleReadOnly();
 
-       /// Is the document under administration by RCS?
-       bool inUse();
+       /// Is the document under administration by VCS?
+       bool inUse() const;
 
+       /// FIXME resurrect version once we add version info
+       /// into SVN. RCS parser is already prepared.
        /// Returns the version number.
        //std::string const & version() const;
        /// Returns the version number.
        std::string const versionString() const;
 
-       /// Returns the userid of the person who has locked the doc.
+       /**
+        * Returns the userid of the person who has locked the doc.
+        * FIXME This property is descendant from the original VCS
+        * and used in RCS for user id or "unlocked" strings.
+        * It would be problem to use this under SVN since getting
+        * the locker would need connection to server any time we
+        * load document. SVN currently (mis)uses this as a signal
+        * for locking state, as we do not have API for vcstatus().
+        * The RCS code for user id parsing is working but we don't display
+        * it anywhere. One possibility is to provide proper vcstatus()
+        * interface and kill the whole locker thing.
+        */
        std::string const & locker() const;
 
 private: