X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFormTexinfo.C;h=98677ef2ce703776f2c2b5a200f43ff7dea1cb93;hb=d5443737342903de489d527802cd2cdd38987d74;hp=3e358d1a529d209d70c6dd538909d667ce829617;hpb=6fac1dc98003a6a6e02765f078b3d3426d426508;p=lyx.git diff --git a/src/frontends/xforms/FormTexinfo.C b/src/frontends/xforms/FormTexinfo.C index 3e358d1a52..98677ef2ce 100644 --- a/src/frontends/xforms/FormTexinfo.C +++ b/src/frontends/xforms/FormTexinfo.C @@ -1,120 +1,143 @@ /** * \file FormTexinfo.C - * 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 + * \author Herbert Voß * - * Full author contact details are available in file CREDITS - * \date 2001-10-01 + * Full author contact details are available in file CREDITS. */ #include -#include -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "xformsBC.h" #include "FormTexinfo.h" #include "forms/form_texinfo.h" + #include "Tooltips.h" -#include "gettext.h" -#include "debug.h" -#include "xforms_helpers.h" -#include "support/LAssert.h" -#include FORMS_H_LOCATION +#include "xformsBC.h" + +#include "support/filetools.h" + +#include "lyx_forms.h" + +using std::string; +namespace lyx { -typedef FormCB > base_class; -FormTexinfo::FormTexinfo() - : base_class(_("LaTeX Information")), +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(this)); - // courier medium - fl_set_browser_fontstyle(dialog_->browser,FL_FIXED_STYLE); - // with Path is default - fl_set_button(dialog_->check_fullpath, 1); - updateStyles(ControlTexinfo::cls); - // set up the tooltips - string str = _("Runs the script \"TexFiles.sh\" to build new file lists."); - tooltips().init(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); - str = _("Shows the contents of the marked file. Only possible in full path mode."); - tooltips().init(dialog_->button_view, str); + string const classes_List = _("LaTeX classes|LaTeX styles|BibTeX styles"); + fl_addto_choice(dialog_->choice_classes, classes_List.c_str()); - str = _("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().init(dialog_->button_texhash, str); + updateStyles(activeStyle); + + // 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 = _("View full path or only file name. Full path is needed to view the contents of a file."); + str = _("Show full path or only file name."); tooltips().init(dialog_->check_fullpath, str); - str = _("Shows the installed LaTeX Document classes. Remember, that these classes are only available in LyX if a corresponding LyX layout file exists!"); - tooltips().init(dialog_->radio_cls, str); + str = _("Runs the script \"TexFiles.sh\" to rebuild the file lists."); + tooltips().init(dialog_->button_rescan, str); - str = _("Shows the installed LaTeX style files, which are available in LyX by default, like \"babel\" or through \\usepackage{} in LaTeX preamble."); - tooltips().init(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 = _("Shows the installed style files for BibTeX. They can be loaded through insert->Lists&Toc->BibTeX Reference->Style."); - tooltips().init(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_->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); - if (ob == dialog_->radio_cls) { - updateStyles(ControlTexinfo::cls); - } else if (ob == dialog_->radio_sty) { - updateStyles(ControlTexinfo::sty); + } 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); - } else if (ob == dialog_->radio_bst) { - updateStyles(ControlTexinfo::bst); + // 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_->check_fullpath) { - setEnabled(dialog_->button_view, - fl_get_button(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); - + 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