#include "buffer.h"
#include "gettext.h"
#include "support/filetools.h"
+#include "support/lyxlib.h"
#include "lyxfunc.h"
#include "LyXView.h"
+using std::endl;
+using std::pair;
LyXVC::LyXVC()
{
fl_hide_form(browser->LaTeXLog);
fl_free_form(browser->LaTeXLog);
}
- if (vcs) {
- delete vcs;
- }
+ delete vcs;
}
}
-bool LyXVC::file_not_found_hook(string const &)
+bool LyXVC::file_not_found_hook(string const & fn)
{
- // file is not under any VCS.
+ // Check if file is under RCS
+ if (!RCS::find_file(fn).empty())
+ return true;
+ if (!CVS::find_file(fn).empty())
+ return true;
return false;
}
// so... we use RCS as default, later this should perhaps be
// a lyxrc option.
if (!vcs) {
- vcs = new RCS(owner_->getFileName());
+ vcs = new RCS(owner_->fileName());
vcs->owner(owner_);
}
// If the document is changed, we might want to save it
if (!vcs->owner()->isLyxClean() &&
AskQuestion(_("Changes in document:"),
- MakeDisplayPath(vcs->owner()->getFileName(), 50),
+ MakeDisplayPath(vcs->owner()->fileName(), 50),
_("Save document and proceed?"))) {
vcs->owner()->getUser()->owner()
->getLyXFunc()->Dispatch(LFUN_MENUWRITE);
}
lyxerr[Debug::LYXVC] << "LyXVC: registrer" << endl;
- string tmp = askForText(_("LyX VC: Initial description"),
- _("(no initial description)"));
- if (tmp.empty()) {
+ pair<bool, string> tmp =
+ askForText(_("LyX VC: Initial description"),
+ _("(no initial description)"));
+ if (!tmp.first || tmp.second.empty()) {
+ // should we insist on checking tmp.second.empty()?
lyxerr[Debug::LYXVC] << "LyXVC: user cancelled" << endl;
- WriteAlert(_("Info"), _("This document has NOT been registered."));
+ WriteAlert(_("Info"),
+ _("This document has NOT been registered."));
return;
}
- vcs->registrer(tmp);
+ vcs->registrer(tmp.second);
}
// If the document is changed, we might want to save it
if (!vcs->owner()->isLyxClean() &&
AskQuestion(_("Changes in document:"),
- MakeDisplayPath(vcs->owner()->getFileName(), 50),
+ MakeDisplayPath(vcs->owner()->fileName(), 50),
_("Save document and proceed?"))) {
vcs->owner()->getUser()->owner()
->getLyXFunc()->Dispatch(LFUN_MENUWRITE);
}
lyxerr[Debug::LYXVC] << "LyXVC: checkIn" << endl;
- string tmp = askForText(_("LyX VC: Log Message"));
- if (tmp.empty()) tmp = "(no log msg)";
-
- vcs->checkIn(tmp);
-
+ pair<bool, string> tmp = askForText(_("LyX VC: Log Message"));
+ if (tmp.first) {
+ if (tmp.second.empty()) {
+ tmp.second = _("(no log message)");
+ }
+ vcs->checkIn(tmp.second);
+ } else {
+ lyxerr[Debug::LYXVC] << "LyXVC: user cancelled" << endl;
+ }
}
lyxerr[Debug::LYXVC] << "LyXVC: checkOut" << endl;
if (!vcs->owner()->isLyxClean()
&& !AskQuestion(_("Changes in document:"),
- MakeDisplayPath(vcs->owner()->getFileName(), 50),
+ MakeDisplayPath(vcs->owner()->fileName(), 50),
_("Ignore changes and proceed with check out?"))) {
return;
}
void LyXVC::toggleReadOnly()
{
- switch (vcs->stat()) {
+ switch (vcs->status()) {
case VCS::UNLOCKED:
lyxerr[Debug::LYXVC] << "LyXVC: toggle to locked" << endl;
checkOut();
fl_raise_form(browser->LaTeXLog);
} else {
fl_show_form(browser->LaTeXLog,
- FL_PLACE_MOUSE | FL_FREE_SIZE, FL_FULLBORDER,
+ FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT,
_("VC History"));
if (ow < 0) {
ow = browser->LaTeXLog->w;
void LyXVC::showLog()
{
- string tmpf = tmpnam(0);
+ string tmpf = lyx::tempName(string(), "lyxvclog");
vcs->getLog(tmpf);
viewLog(tmpf);
- unlink(tmpf.c_str());
+ lyx::unlink(tmpf);
}