X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxvc.C;h=4431b6d30f67e0f43d819539375e580cad3c77aa;hb=c7db12d1acf83fb5191fab908e0153fa752f4530;hp=4ab17afc9caa0b037cede8b6d88c26e695b6810e;hpb=d6665cba427b04ae37f42c846398cad518d2be0f;p=lyx.git diff --git a/src/lyxvc.C b/src/lyxvc.C index 4ab17afc9c..4431b6d30f 100644 --- a/src/lyxvc.C +++ b/src/lyxvc.C @@ -4,18 +4,21 @@ #pragma implementation #endif -#include - -#include FORMS_H_LOCATION #include "lyxvc.h" #include "vc-backend.h" #include "debug.h" -#include "lyx_gui_misc.h" #include "buffer.h" +#include "BufferView.h" #include "gettext.h" -#include "support/filetools.h" -#include "lyxfunc.h" #include "LyXView.h" +#include "lyxfunc.h" + +#include "frontends/Alert.h" + +#include "support/filetools.h" +#include "support/lyxlib.h" + +#include using std::endl; using std::pair; @@ -23,18 +26,12 @@ using std::pair; LyXVC::LyXVC() { vcs = 0; - browser = 0; owner_ = 0; } LyXVC::~LyXVC() { - if (browser) { - if (browser->LaTeXLog->visible) - fl_hide_form(browser->LaTeXLog); - fl_free_form(browser->LaTeXLog); - } delete vcs; } @@ -79,20 +76,34 @@ void LyXVC::buffer(Buffer * buf) void LyXVC::registrer() { // it is very likely here that the vcs is not created yet... - // so... we use RCS as default, later this should perhaps be - // a lyxrc option. if (!vcs) { - vcs = new RCS(owner_->fileName()); + string const cvs_entries = "CVS/Entries"; + + if (IsFileReadable(cvs_entries)) { + lyxerr[Debug::LYXVC] + << "LyXVC: registering " + << MakeDisplayPath(owner_->fileName()) + << " with CVS" << endl; + vcs = new CVS(cvs_entries, owner_->fileName()); + + } else { + lyxerr[Debug::LYXVC] + << "LyXVC: registering " + << MakeDisplayPath(owner_->fileName()) + << " with RCS" << endl; + 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:"), + if (!vcs->owner()->isLyxClean() && + Alert::askQuestion(_("Changes in document:"), MakeDisplayPath(vcs->owner()->fileName(), 50), _("Save document and proceed?"))) { vcs->owner()->getUser()->owner() - ->getLyXFunc()->Dispatch(LFUN_MENUWRITE); + ->getLyXFunc()->dispatch(LFUN_MENUWRITE); } // Maybe the save fails, or we answered "no". In both cases, @@ -103,16 +114,16 @@ void LyXVC::registrer() lyxerr[Debug::LYXVC] << "LyXVC: registrer" << endl; pair tmp = - askForText(_("LyX VC: Initial description"), + Alert::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"), + Alert::alert(_("Info"), _("This document has NOT been registered.")); return; } - + vcs->registrer(tmp.second); } @@ -120,12 +131,12 @@ void LyXVC::registrer() void LyXVC::checkIn() { // If the document is changed, we might want to save it - if (!vcs->owner()->isLyxClean() && - AskQuestion(_("Changes in document:"), + if (!vcs->owner()->isLyxClean() && + Alert::askQuestion(_("Changes in document:"), MakeDisplayPath(vcs->owner()->fileName(), 50), _("Save document and proceed?"))) { vcs->owner()->getUser()->owner() - ->getLyXFunc()->Dispatch(LFUN_MENUWRITE); + ->getLyXFunc()->dispatch(LFUN_MENUWRITE); } // Maybe the save fails, or we answered "no". In both cases, @@ -135,7 +146,7 @@ void LyXVC::checkIn() } lyxerr[Debug::LYXVC] << "LyXVC: checkIn" << endl; - pair tmp = askForText(_("LyX VC: Log Message")); + pair tmp = Alert::askForText(_("LyX VC: Log Message")); if (tmp.first) { if (tmp.second.empty()) { tmp.second = _("(no log message)"); @@ -150,15 +161,15 @@ void LyXVC::checkIn() void LyXVC::checkOut() { lyxerr[Debug::LYXVC] << "LyXVC: checkOut" << endl; - if (!vcs->owner()->isLyxClean() - && !AskQuestion(_("Changes in document:"), + if (!vcs->owner()->isLyxClean() + && !Alert::askQuestion(_("Changes in document:"), MakeDisplayPath(vcs->owner()->fileName(), 50), _("Ignore changes and proceed with check out?"))) { return; } vcs->checkOut(); - + } @@ -168,7 +179,7 @@ void LyXVC::revert() // Here we should check if the buffer is dirty. And if it is // we should warn the user that reverting will discard all // changes made since the last check in. - if (AskQuestion(_("When you revert, you will loose all changes made"), + if (Alert::askQuestion(_("When you revert, you will loose all changes made"), _("to the document since the last check in."), _("Do you still want to do it?"))) { @@ -205,9 +216,14 @@ bool LyXVC::inUse() } -string const & LyXVC::version() const +//string const & LyXVC::version() const +//{ +// return vcs->version(); +//} + +string const LyXVC::versionString() const { - return vcs->version(); + return vcs->versionString(); } @@ -217,83 +233,13 @@ string const & LyXVC::locker() const } -// This is a hack anyway so I'll put it here in the mean time. -void LyXVC::logClose(FL_OBJECT * obj, long) -{ - LyXVC * This = static_cast(obj->form->u_vdata); - fl_hide_form(This->browser->LaTeXLog); -} - - -// and, hack over hack, here is a C wrapper :) -extern "C" void C_LyXVC_logClose(FL_OBJECT * ob, long data) -{ - LyXVC::logClose(ob, data); -} - - -void LyXVC::logUpdate(FL_OBJECT * obj, long) -{ - LyXVC * This = static_cast(obj->form->u_vdata); - This->showLog(); -} - -extern "C" void C_LyXVC_logUpdate(FL_OBJECT *ob, long data) -{ - LyXVC::logUpdate(ob, data); -} - - -void LyXVC::viewLog(string const & fil) +const string LyXVC::getLogFile() const { - static int ow = -1, oh; - - if (!browser) { - FL_OBJECT * obj; - browser = (FD_LaTeXLog *) fl_calloc(1, sizeof(*browser)); - - browser->LaTeXLog = fl_bgn_form(FL_NO_BOX, 470, 380); - browser->LaTeXLog->u_vdata = this; - obj = fl_add_box(FL_UP_BOX, 0, 0, 470, 380, ""); - browser->browser_latexlog = fl_add_browser(FL_NORMAL_BROWSER, - 10, 10, - 450, 320, ""); - obj = fl_add_button(FL_RETURN_BUTTON, 270, 340, 90, 30, - _("Close")); - fl_set_object_lsize(obj, FL_NORMAL_SIZE); - fl_set_object_callback(obj, C_LyXVC_logClose, 0); - obj = fl_add_button(FL_NORMAL_BUTTON, 370, 340, 90, 30, - idex(_("Update|#Uu"))); - fl_set_button_shortcut(obj, scex(_("Update|#Uu")), 1); - fl_set_object_lsize(obj, FL_NORMAL_SIZE); - fl_set_object_callback(obj, C_LyXVC_logUpdate, 0); - fl_end_form(); - fl_set_form_atclose(browser->LaTeXLog, CancelCloseBoxCB, 0); - } - - if (!fl_load_browser(browser->browser_latexlog, fil.c_str())) - fl_add_browser_line(browser->browser_latexlog, - _("No VC History!")); - - if (browser->LaTeXLog->visible) { - fl_raise_form(browser->LaTeXLog); - } else { - fl_show_form(browser->LaTeXLog, - FL_PLACE_MOUSE | FL_FREE_SIZE, FL_FULLBORDER, - _("VC History")); - if (ow < 0) { - ow = browser->LaTeXLog->w; - oh = browser->LaTeXLog->h; - } - fl_set_form_minsize(browser->LaTeXLog, ow, oh); - } -} + if (!vcs) + return string(); - -void LyXVC::showLog() -{ - string tmpf = tmpnam(0); + string tmpf = lyx::tempName(string(), "lyxvclog"); + lyxerr[Debug::LYXVC] << "Generating logfile " << tmpf << endl; vcs->getLog(tmpf); - viewLog(tmpf); - lyx::unlink(tmpf); + return tmpf; }