// -*- C++ -*-
-
-#ifndef _LYX_VC_H_
-#define _LYX_VC_H_
-
-#ifdef __GNUG__
-#pragma interface
-#endif
+/**
+ * \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
#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:
///
the appropiate actions is taken. Returns true if the file is under
control by a VCS.
*/
- bool file_found_hook(LString const & fn);
-
+ bool file_found_hook(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
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(LString const & fn);
+ static bool file_not_found_hook(string const & fn);
///
- void scanMaster();
- ///
- void setBuffer(Buffer*);
+ void buffer(Buffer *);
/// Register the document as an VC file.
void registrer();
/// Undo last check-in.
void undoLast();
- ///
- void viewLog(LString const &);
+ /**
+ * Generate a log file and return the filename.
+ * It is the caller's responsibility to unlink the
+ * file after use.
+ */
+ const string getLogFile() const;
///
- void showLog();
-
- ///
void toggleReadOnly();
-
+
/// Is the document under administration by RCS?
bool inUse();
/// Returns the version number.
- LString const getVersion() const;
+ //string const & version() const;
+ /// Returns the version number.
+ string const versionString() const;
/// Returns the userid of the person who has locked the doc.
- LString const getLocker() const;
-protected:
-private:
- ///
- int doVCCommand(LString const&);
-
- /** The master VC file. For RCS this is *,v or RCS/ *,v. master should
- have full path.
- */
- LString 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. */
- LString version;
-
- /// The user currently keeping the lock on the VC file.
- LString locker;
+ 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);
+ VCS * vcs;
};
#endif