X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFormTexinfo.C;h=98677ef2ce703776f2c2b5a200f43ff7dea1cb93;hb=d5443737342903de489d527802cd2cdd38987d74;hp=fc067138133282e5633b53b7e6ec5e86c64d40c6;hpb=4fff14150128dcf569ac291f28ab60f11fbab5b4;p=lyx.git diff --git a/src/frontends/xforms/FormTexinfo.C b/src/frontends/xforms/FormTexinfo.C index fc06713813..98677ef2ce 100644 --- a/src/frontends/xforms/FormTexinfo.C +++ b/src/frontends/xforms/FormTexinfo.C @@ -1,118 +1,143 @@ /** * \file FormTexinfo.C - * Copyright 2001 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * \author Herbert Voss - * \date 2001-10-01 + * \author Herbert Voß + * + * Full author contact details are available in file CREDITS. */ #include -#include - -#ifdef __GNUG__ -#pragma implementation -#endif -#include "xformsBC.h" #include "FormTexinfo.h" -#include "form_texinfo.h" +#include "forms/form_texinfo.h" + #include "Tooltips.h" -#include "gettext.h" -#include "debug.h" -#include "xforms_helpers.h" -#include "support/LAssert.h" - - -typedef FormCB > base_class; -FormTexinfo::FormTexinfo(ControlTexinfo & c) - : base_class(c, _("LaTeX Information")), +#include "xformsBC.h" + +#include "support/filetools.h" + +#include "lyx_forms.h" + +using std::string; + +namespace lyx { + +namespace frontend { + + +typedef FormController > base_class; + +FormTexinfo::FormTexinfo(Dialog & parent) + : base_class(parent, _("TeX Information")), activeStyle(ControlTexinfo::cls) {} void FormTexinfo::build() { - dialog_.reset(build_texinfo()); - // courier medium - fl_set_browser_fontstyle(dialog_->browser,FL_FIXED_STYLE); - // with Path is default - fl_set_button(dialog_->button_fullPath, 1); - updateStyles(ControlTexinfo::cls); + dialog_.reset(build_texinfo(this)); - // set up the tooltips - string str = N_("Runs the script \"TexFiles.sh\" to build new file lists."); - tooltips().initTooltip(dialog_->button_rescan, str); + // callback for double click in browser to view the selected file + fl_set_browser_dblclick_callback(dialog_->browser, + C_FormDialogView_InputCB, 2); + + string const classes_List = _("LaTeX classes|LaTeX styles|BibTeX styles"); + fl_addto_choice(dialog_->choice_classes, classes_List.c_str()); - str = N_("Shows the contents of the marked file. Only possible in full path mode."); - tooltips().initTooltip(dialog_->button_view, str); + updateStyles(activeStyle); - str = N_("Runs the script \"texhash\" which builds the a new LaTeX tree. Needed if you install a new TeX class or style. To execute it, you need the write permissions for the tex-dirs, often /var/lib/texmf and other."); - tooltips().initTooltip(dialog_->button_texhash, str); + // set up the tooltips + string str = _("Shows the installed classses and styles for LaTeX/BibTeX; " + "available only if the corresponding LyX layout file exists."); + tooltips().init(dialog_->choice_classes, str); - str = N_("View full path or only file name. Full path is needed to view the contents of a file."); - tooltips().initTooltip(dialog_->button_fullPath, str); + str = _("Show full path or only file name."); + tooltips().init(dialog_->check_fullpath, str); - str = N_("Shows the installed LaTeX Document classes. Remember, that these classes are only available in LyX if a corresponding LyX layout file exists!"); - tooltips().initTooltip(dialog_->radio_cls, str); + str = _("Runs the script \"TexFiles.sh\" to rebuild the file lists."); + tooltips().init(dialog_->button_rescan, str); - str = N_("Shows the installed LaTeX style files, which are available in LyX by default, like \"babel\" or through \\usepackage{} in LaTeX preamble."); - tooltips().initTooltip(dialog_->radio_sty, str); + str = _("Double click to view contents of file."); + tooltips().init(dialog_->browser, str); +#if FL_VERSION == 0 || (FL_REVISION == 0 && FL_FIXLEVEL == 0) + // Work-around xforms' bug; enable tooltips for browser widgets. + setPrehandler(dialog_->browser); +#endif - str = N_("Shows the installed style files for BibTeX. They can be loaded through insert->Lists&Toc->BibTeX Reference->Style."); - tooltips().initTooltip(dialog_->radio_bst, str); + str = _("Runs the script \"texhash\" which builds a new LaTeX tree. " + "Needed if you install a new TeX class or style. You need write " + "permissions for the TeX-dirs, often /var/lib/texmf and others."); + tooltips().init(dialog_->button_texhash, str); } -ButtonPolicy::SMInput FormTexinfo::input(FL_OBJECT * ob, long) { +ButtonPolicy::SMInput FormTexinfo::input(FL_OBJECT * ob, long ob_value) { - if (ob == dialog_->radio_cls) { - updateStyles(ControlTexinfo::cls); + if (ob == dialog_->button_texhash) { + // makes only sense if the rights are set well for + // users (/var/lib/texmf/ls-R) + texhash(); + // texhash requires a rescan and an update of the styles + rescanTexStyles(); + updateStyles(activeStyle); - } else if (ob == dialog_->radio_sty) { - updateStyles(ControlTexinfo::sty); - } else if (ob == dialog_->radio_bst) { - updateStyles(ControlTexinfo::bst); + } else if (ob == dialog_->browser && ob_value == 2) { + // double click in browser: view selected file + ContentsType::size_type const sel = fl_get_browser(ob); + ContentsType const & data = texdata_[activeStyle]; + string file = data[sel-1]; + if (!fl_get_button(dialog_->check_fullpath)) + file = getTexFileFromList(data[sel-1], + controller().getFileType(activeStyle)); + if (sel >= 1 && sel <= data.size()) + controller().viewFile(file); + + // reset the browser so that the following single-click + // callback doesn't do anything + fl_deselect_browser(dialog_->browser); } else if (ob == dialog_->button_rescan) { // build new *Files.lst - controller().rescanStyles(); + rescanTexStyles(); updateStyles(activeStyle); - } else if (ob == dialog_->button_fullPath) { - setEnabled(dialog_->button_view, - fl_get_button(dialog_->button_fullPath)); + } else if (ob == dialog_->check_fullpath) { updateStyles(activeStyle); - } else if (ob == dialog_->button_texhash) { - // makes only sense if the rights are set well for - // users (/var/lib/texmf/ls-R) - controller().runTexhash(); - // update files in fact of texhash - controller().rescanStyles(); - - } else if (ob == dialog_->button_view) { - unsigned int selection = fl_get_browser(dialog_->browser); - // a valid entry? - if (selection > 0) { - controller().viewFile( - fl_get_browser_line(dialog_->browser, - selection)); + } else if (ob == dialog_->choice_classes) { + switch (fl_get_choice(dialog_->choice_classes)) { + case 3: + updateStyles(ControlTexinfo::bst); + break; + case 2: + updateStyles(ControlTexinfo::sty); + break; + case 1: + default: + updateStyles(ControlTexinfo::cls); } } return ButtonPolicy::SMI_VALID; } + void FormTexinfo::updateStyles(ControlTexinfo::texFileSuffix whichStyle) { - fl_clear_browser(dialog_->browser); - - bool const withFullPath = fl_get_button(dialog_->button_fullPath); + ContentsType & data = texdata_[whichStyle]; + bool const withFullPath = fl_get_button(dialog_->check_fullpath); + getTexFileList(whichStyle, data, withFullPath); - string const str = - controller().getContents(whichStyle, withFullPath); - fl_add_browser_line(dialog_->browser, str.c_str()); + fl_clear_browser(dialog_->browser); + ContentsType::const_iterator it = data.begin(); + ContentsType::const_iterator end = data.end(); + for (; it != end; ++it) + fl_add_browser_line(dialog_->browser, (*it).c_str()); activeStyle = whichStyle; } + +} // namespace frontend +} // namespace lyx