Factorize out some code between TocModel.cpp and Menus.cpp.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24801 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2008-05-16 13:49:49 +00:00
parent fb31797d13
commit fb212b9112
5 changed files with 53 additions and 83 deletions

View File

@ -951,45 +951,13 @@ void MenuDefinition::expandToc(Buffer const * buf)
if (cit->first == "tableofcontents") if (cit->first == "tableofcontents")
continue; continue;
string const & floatName = floatlist.getType(cit->first).listName(); if (cit->first == "listing") {
QString label;
bool in_other_list = true;
if (!floatName.empty()) {
label = qt_(floatName);
in_other_list = false;
}
else if (cit->first == "child") {
label = qt_("Child Documents");
in_other_list = false;
} else if (cit->first == "graphics")
label = qt_("List of Graphics");
else if (cit->first == "equation")
label = qt_("List of Equations");
else if (cit->first == "index")
label = qt_("List of Indexes");
else if (cit->first == "listing") {
// FIXME: the listing navigate menu causes a crash for unknown // FIXME: the listing navigate menu causes a crash for unknown
// reason. See http://bugzilla.lyx.org/show_bug.cgi?id=4613 // reason. See http://bugzilla.lyx.org/show_bug.cgi?id=4613
// This is a temporary fix:
//label = qt_("List of Listings");
continue; continue;
} }
else if (cit->first == "marginalnote")
label = qt_("List of Marginal notes");
else if (cit->first == "note")
label = qt_("List of Notes");
else if (cit->first == "footnote")
label = qt_("List of Footnotes");
else if (cit->first == "label")
label = qt_("Labels and References");
else if (cit->first == "citation")
label = qt_("List of Citations");
else
// This should not happen unless the entry is missing above.
label = qt_("Other floats: ") + toqstr(cit->first);
MenuDefinition submenu; MenuDefinition submenu;
if (cit->second.size() >= 30) { if (cit->second.size() >= 30) {
FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first); FuncRequest f(LFUN_DIALOG_SHOW, "toc " + cit->first);
submenu.add(MenuItem(MenuItem::Command, qt_("Open Navigator..."), f)); submenu.add(MenuItem(MenuItem::Command, qt_("Open Navigator..."), f));
@ -997,20 +965,20 @@ void MenuDefinition::expandToc(Buffer const * buf)
TocIterator ccit = cit->second.begin(); TocIterator ccit = cit->second.begin();
TocIterator eend = cit->second.end(); TocIterator eend = cit->second.end();
for (; ccit != eend; ++ccit) { for (; ccit != eend; ++ccit) {
QString const label = limitStringLength(ccit->str()); submenu.add(MenuItem(MenuItem::Command,
submenu.add(MenuItem(MenuItem::Command, label, limitStringLength(ccit->str()),
FuncRequest(ccit->action()))); FuncRequest(ccit->action())));
} }
} }
MenuItem item(MenuItem::Submenu, label); MenuItem item(MenuItem::Submenu, guiName(cit->first, buf->params()));
item.setSubmenu(submenu); item.setSubmenu(submenu);
if (in_other_list) if (floatlist.typeExist(cit->first) || cit->first == "child") {
other_lists.add(item); // Those two types deserve to be in the main menu.
else {
item.setSubmenu(submenu); item.setSubmenu(submenu);
add(item); add(item);
} } else
other_lists.add(item);
} }
if (!other_lists.empty()) { if (!other_lists.empty()) {
MenuItem item(MenuItem::Submenu, qt_("Other Lists")); MenuItem item(MenuItem::Submenu, qt_("Other Lists"));
@ -1018,16 +986,14 @@ void MenuDefinition::expandToc(Buffer const * buf)
add(item); add(item);
} }
// Handle normal TOC // Handle normal TOC
cit = toc_list.find("tableofcontents"); cit = toc_list.find("tableofcontents");
if (cit == end) { if (cit == end) {
addWithStatusCheck(MenuItem(MenuItem::Command, addWithStatusCheck(MenuItem(MenuItem::Command,
qt_("No Table of contents"), qt_("No Table of contents"),
FuncRequest())); FuncRequest()));
} else { } else
expandToc2(cit->second, 0, cit->second.size(), 0); expandToc2(cit->second, 0, cit->second.size(), 0);
}
} }

View File

@ -14,14 +14,11 @@
#include "TocModel.h" #include "TocModel.h"
#include "Buffer.h" #include "Buffer.h"
#include "BufferParams.h"
#include "BufferView.h" #include "BufferView.h"
#include "DocIterator.h"
#include "Cursor.h" #include "Cursor.h"
#include "FloatList.h" #include "DocIterator.h"
#include "FuncRequest.h" #include "FuncRequest.h"
#include "LyXFunc.h" #include "LyXFunc.h"
#include "TextClass.h"
#include "support/convert.h" #include "support/convert.h"
#include "support/debug.h" #include "support/debug.h"
@ -232,39 +229,6 @@ void TocModels::updateBackend() const
} }
QString TocModels::guiName(string const & type) const
{
if (type == "tableofcontents")
return qt_("Table of Contents");
if (type == "child")
return qt_("Child Documents");
if (type == "graphics")
return qt_("List of Graphics");
if (type == "equation")
return qt_("List of Equations");
if (type == "footnote")
return qt_("List of Footnotes");
if (type == "listing")
return qt_("List of Listings");
if (type == "index")
return qt_("List of Indexes");
if (type == "marginalnote")
return qt_("List of Marginal notes");
if (type == "note")
return qt_("List of Notes");
if (type == "citation")
return qt_("List of Citations");
if (type == "label")
return qt_("Labels and References");
FloatList const & floats = bv_->buffer().params().documentClass().floats();
if (floats.typeExist(type))
return qt_(floats.getType(type).listName());
return qt_(type);
}
void TocModels::reset(BufferView const * bv) void TocModels::reset(BufferView const * bv)
{ {
bv_ = bv; bv_ = bv;
@ -277,7 +241,7 @@ void TocModels::reset(BufferView const * bv)
TocList::const_iterator end = tocs.end(); TocList::const_iterator end = tocs.end();
for (; it != end; ++it) { for (; it != end; ++it) {
types_.push_back(toqstr(it->first)); types_.push_back(toqstr(it->first));
type_names_.push_back(guiName(it->first)); type_names_.push_back(guiName(it->first, bv->buffer().params()));
models_.push_back(new TocModel(it->second)); models_.push_back(new TocModel(it->second));
} }
} }

View File

@ -98,8 +98,6 @@ Q_SIGNALS:
private: private:
/// ///
void clear(); void clear();
/// Return the guiname from a given cmdName of the TOC param
QString guiName(std::string const & type) const;
/// ///
BufferView const * bv_; BufferView const * bv_;
/// ///

View File

@ -19,8 +19,11 @@
#include "frontends/alert.h" #include "frontends/alert.h"
#include "BufferParams.h"
#include "FloatList.h"
#include "Language.h" #include "Language.h"
#include "Length.h" #include "Length.h"
#include "TextClass.h"
#include "support/debug.h" #include "support/debug.h"
#include "support/filetools.h" #include "support/filetools.h"
@ -474,4 +477,38 @@ QStringList fileFilters(QString const & desc)
return list; return list;
} }
QString guiName(string const & type, BufferParams const & bp)
{
if (type == "tableofcontents")
return qt_("Table of Contents");
if (type == "child")
return qt_("Child Documents");
if (type == "graphics")
return qt_("List of Graphics");
if (type == "equation")
return qt_("List of Equations");
if (type == "footnote")
return qt_("List of Footnotes");
if (type == "listing")
return qt_("List of Listings");
if (type == "index")
return qt_("List of Indexes");
if (type == "marginalnote")
return qt_("List of Marginal notes");
if (type == "note")
return qt_("List of Notes");
if (type == "citation")
return qt_("List of Citations");
if (type == "label")
return qt_("Labels and References");
FloatList const & floats = bp.documentClass().floats();
if (floats.typeExist(type))
return qt_(floats.getType(type).listName());
return qt_(type);
}
} // namespace lyx } // namespace lyx

View File

@ -32,6 +32,7 @@ namespace lyx {
namespace support { class FileName; } namespace support { class FileName; }
class BufferParams;
class LyXErr; class LyXErr;
LyXErr & operator<<(LyXErr &, QString const &); LyXErr & operator<<(LyXErr &, QString const &);
@ -121,6 +122,10 @@ QString getExtension(QString const & name);
QString makeAbsPath(QString const & relpath, QString const & base); QString makeAbsPath(QString const & relpath, QString const & base);
QString changeExtension(QString const & oldname, QString const & ext); QString changeExtension(QString const & oldname, QString const & ext);
/// \return the display string associated with given type and buffer
/// parameter.
QString guiName(std::string const & type, BufferParams const & bp);
} // namespace lyx } // namespace lyx
#endif // QTHELPERS_H #endif // QTHELPERS_H