X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiTexinfo.cpp;h=cc901c9c2866876f33dbf1fd8a48a4f8bb083652;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=dfa5b8356bc7c145ca0bb42b3b08e98bdd3a46c5;hpb=7c392af6eab5e06a4836146859cbd9f2c3764420;p=lyx.git diff --git a/src/frontends/qt4/GuiTexinfo.cpp b/src/frontends/qt4/GuiTexinfo.cpp index dfa5b8356b..cc901c9c28 100644 --- a/src/frontends/qt4/GuiTexinfo.cpp +++ b/src/frontends/qt4/GuiTexinfo.cpp @@ -14,21 +14,17 @@ #include "GuiTexinfo.h" #include "FuncRequest.h" -#include "support/debug.h" #include "support/filetools.h" +#include "support/foreach.h" #include "support/FileName.h" -#include "support/lstrings.h" #include "qt_helpers.h" -#include #include #include #include - -#include -#include +#include using namespace std; using namespace lyx::support; @@ -36,56 +32,28 @@ using namespace lyx::support; namespace lyx { namespace frontend { - -static string texFileFromList(string const & file, string const & type) +static QString texFileFromList(QString const & file, QString const & type) { - string file_ = file; - // do we need to add the suffix? - if (!(getExtension(file) == type)) - file_ += '.' + type; - - lyxerr << "Searching for file " << file_ << endl; - - string lstfile = type + "Files.lst"; - if (type == "cls") - lstfile = "clsFiles.lst"; - else if (type == "sty") - lstfile = "styFiles.lst"; - else if (type == "bst") - lstfile = "bstFiles.lst"; - else if (type == "bib") - lstfile = "bibFiles.lst"; - FileName const abslstfile = libFileSearch(string(), lstfile); - if (abslstfile.empty()) { - lyxerr << "File `'" << lstfile << "' not found." << endl; - return string(); - } - // FIXME UNICODE - string const allClasses = to_utf8(abslstfile.fileContents("UTF-8")); - int entries = 0; - string classfile = token(allClasses, '\n', entries); - int count = 0; - while ((!contains(classfile, file) || - (onlyFilename(classfile) != file)) && - (++count < 1000)) { - classfile = token(allClasses, '\n', ++entries); - } - - // now we have filename with full path - lyxerr << "with full path: " << classfile << endl; - - return classfile; + QString lstfile = type + "Files.lst"; + FileName const abslstfile = libFileSearch(QString(), lstfile); + if (abslstfile.empty()) + return QString(); + QString cs = toqstr(abslstfile.fileContents("UTF-8")); + cs.replace("\r", ""); + QStringList const result = cs.split("\n").filter(file); + if (result.empty()) + return QString(); + return result.at(0); } GuiTexInfo::GuiTexInfo(GuiView & lv) - : GuiDialog(lv, "texinfo") + : GuiDialog(lv, "texinfo", qt_("TeX Information")) { setupUi(this); - setViewTitle(_("TeX Information")); - warningPosted = false; - activeStyle = ClsType; + warningPosted_ = false; + activeStyle_ = ClsType; connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose())); @@ -101,8 +69,6 @@ GuiTexInfo::GuiTexInfo(GuiView & lv) connect(fileListLW, SIGNAL(itemSelectionChanged()), this, SLOT(enableViewPB())); - updateStyles(ClsType); - bc().setPolicy(ButtonPolicy::OkCancelPolicy); bc().setCancel(closePB); } @@ -114,13 +80,6 @@ void GuiTexInfo::change_adaptor() } -void GuiTexInfo::closeEvent(QCloseEvent * e) -{ - slotClose(); - e->accept(); -} - - void GuiTexInfo::rescanClicked() { // build new *Files.lst @@ -132,11 +91,13 @@ void GuiTexInfo::rescanClicked() void GuiTexInfo::viewClicked() { - size_t const fitem = fileListLW->currentRow(); - vector const & data = texdata_[activeStyle]; - string file = data[fitem]; + // takes advantage of enum order + static QString const ext[] = { "cls", "sty", "bst" }; + int const fitem = fileListLW->currentRow(); + QStringList const & data = texdata_[activeStyle_]; + QString file = data[fitem]; if (!pathCB->isChecked()) - file = texFileFromList(data[fitem], fileType(activeStyle)); + file = texFileFromList(data[fitem], ext[activeStyle_]); viewFile(file); } @@ -157,53 +118,51 @@ void GuiTexInfo::enableViewPB() void GuiTexInfo::updateStyles(TexFileType type) { - ContentsType & data = texdata_[type]; + static QString const filenames[] = { + "clsFiles.lst", "styFiles.lst", "bstFiles.lst" + }; - static string filenames[] = { "clsFile.lst", "styFiles.lst", "bstFiles.lst" }; - string filename = filenames[type]; + QString const filename = filenames[type]; - getTexFileList(filename, data); + QStringList data = texFileList(filename); if (data.empty()) { // build filelists of all availabe bst/cls/sty-files. // Done through kpsewhich and an external script, // saved in *Files.lst rescanTexStyles(); - getTexFileList(filename, data); + data = texFileList(filename); } - bool const withFullPath = pathCB->isChecked(); - if (withFullPath) - return; - vector::iterator it1 = data.begin(); - vector::iterator end1 = data.end(); - for (; it1 != end1; ++it1) - *it1 = onlyFilename(*it1); + if (!pathCB->isChecked()) { + for (int i = 0; i != data.size(); ++i) + data[i] = onlyFilename(data[i]); + } // sort on filename only (no path) - sort(data.begin(), data.end()); + data.sort(); fileListLW->clear(); - ContentsType::const_iterator it = data.begin(); - ContentsType::const_iterator end = data.end(); - for (; it != end; ++it) - fileListLW->addItem(toqstr(*it)); + foreach (QString const & item, data) + fileListLW->addItem(item); - activeStyle = type; + activeStyle_ = type; + texdata_[type] = data; } void GuiTexInfo::updateStyles() { - updateStyles(activeStyle); + updateStyles(activeStyle_); } -void GuiTexInfo::viewFile(string const & filename) const +void GuiTexInfo::viewFile(QString const & filename) const { - dispatch(FuncRequest(LFUN_DIALOG_SHOW, "file " + filename)); + dispatch(FuncRequest(LFUN_DIALOG_SHOW, "file " + fromqstr(filename))); } /// get a class with full path from the list +/* string GuiTexInfo::classOptions(string const & classname) const { FileName const filename(texFileFromList(classname, "cls")); @@ -223,14 +182,7 @@ string GuiTexInfo::classOptions(string const & classname) const } return optionList; } - - -string GuiTexInfo::fileType(TexFileType type) const -{ - // takes advantage of enum order - static string const ext[] = { "cls", "sty", "bst" }; - return ext[type]; -} +*/ Dialog * createGuiTexInfo(GuiView & lv) { return new GuiTexInfo(lv); } @@ -240,4 +192,4 @@ Dialog * createGuiTexInfo(GuiView & lv) { return new GuiTexInfo(lv); } } // namespace lyx -#include "GuiTexinfo_moc.cpp" +#include "moc_GuiTexinfo.cpp"