]> git.lyx.org Git - lyx.git/blobdiff - src/lyxvc.h
Simplify the mechanics of generating the 'inactive' pixmap.
[lyx.git] / src / lyxvc.h
index cfb3529a61a2d89cd7df320f60dd3e9b6950ac7a..7c9b22f89fd18b88be059be2d5c19786a8502c7d 100644 (file)
@@ -1,31 +1,39 @@
 // -*- C++ -*-
+/**
+ * \file lyxvc.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
-#ifndef _LYX_VC_H_
-#define _LYX_VC_H_
+#ifndef LYX_VC_H
+#define LYX_VC_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include <boost/scoped_ptr.hpp>
+
+#include <string>
 
-#include "LString.h"
-#include "latexoptions.h"
 
+class VCS;
 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.
-  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
-  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
-  special support for VC in the lyx format, and this is especially good
-  when the lyx format will be a subset of LaTeX.
-  */
+/** 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.
+    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
+    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
+    special support for VC in the lyx format, and this is especially good
+    when the lyx format will be a subset of LaTeX.
+*/
 class LyXVC {
 public:
        ///
@@ -39,8 +47,8 @@ public:
          the appropiate actions is taken. Returns true if the file is under
          control by a VCS.
          */
-       bool file_found_hook(string const & fn);
-       
+       bool file_found_hook(std::string const & fn);
+
        /** 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
@@ -48,12 +56,10 @@ public:
          viewing/editing. Returns true if the file is under control by a VCS
          and the user wants to view/edit it.
          */
-       static bool file_not_found_hook(string const & fn);
+       static bool file_not_found_hook(std::string const & fn);
 
        ///
-       void scanMaster();
-       ///
-       void setBuffer(Buffer*);
+       void buffer(Buffer *);
 
        /// Register the document as an VC file.
        void registrer();
@@ -70,73 +76,33 @@ public:
        /// Undo last check-in.
        void undoLast();
 
-       ///
-       void viewLog(string const &);
+       /**
+        * Generate a log file and return the filename.
+        * It is the caller's responsibility to unlink the
+        * file after use.
+        */
+       const std::string getLogFile() const;
 
        ///
-       void showLog();
-
-       /// 
        void toggleReadOnly();
-       
+
        /// Is the document under administration by RCS?
        bool inUse();
 
        /// Returns the version number.
-       string const getVersion() const;
+       //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.
-       string const getLocker() const;
-protected:
-private:
-       ///
-       int doVCCommand(string const&);
-       
-       /** The master VC file. For RCS this is *,v or RCS/ *,v. master should
-         have full path.
-         */
-       string master;
-
-       /** The version of the VC file. I am not sure if this can be a
-       string of if it must be a
-         float/int. */
-       string version;
-
-       /// The user currently keeping the lock on the VC file.
-       string locker;
+       std::string const & locker() const;
 
+private:
        ///
-       enum VCStatus {
-               ///
-               UNLOCKED,
-               ///
-               LOCKED
-       };
-
-       /// The status of the VC controlled file.
-       VCStatus vcstat;
-
-       ///     
-       enum Backend {
-               ///
-               UNKNOWN_VCS,
-               ///
-               RCS_VCS
-       };
-
-       /// The VC backend used. (so far this can only be RCS)
-       Backend backend;
-
-       /// The buffer using this VC
-       Buffer *_owner;
+       Buffer * owner_;
 
        ///
-       FD_LaTeXLog *browser; // FD_LaTeXLog is just a browser with a
-       // close button. Unfortunately we can not use the standard callbacks.
-       ///
-       static void logClose(FL_OBJECT*, long);
-       ///
-       static void logUpdate(FL_OBJECT*, long);
+       boost::scoped_ptr<VCS> vcs;
 };
 
 #endif