On Tue, Oct 16, 2007 at 11:11:23PM +0200, Andre Poenitz wrote: > > Could somebody on Windows please try this one? > > [It should work] > > Also anu observations on startup speed are welcome.
Slightly more complete patch attached. Andre'
Index: GuiToolbar.cpp =================================================================== --- GuiToolbar.cpp (revision 20995) +++ GuiToolbar.cpp (working copy) @@ -33,7 +33,6 @@ #include "qt_helpers.h" #include "InsertTableWidget.h" -#include "support/filetools.h" #include "support/lstrings.h" #include "support/lyxalgo.h" // sorted @@ -43,20 +42,28 @@ #include <QAction> #include <QPixmap> + +static void initializeResources() +{ + extern void qInitResources(); + static bool initialized = false; + if (!initialized) { + qInitResources(); + initialized = true; + } +} + + namespace lyx { +namespace frontend { using std::string; using std::endl; -using support::FileName; -using support::libFileSearch; using support::subst; using support::compare; -namespace frontend { - - namespace { struct PngMap { @@ -152,8 +159,7 @@ LYXERR(Debug::GUI) << "find_png(" << name << ")\n" << "Looking for math PNG called \"" << png_name << '"' << std::endl; - - return libFileSearch("images/math/", png_name, "png").absFilename(); + return png_name; } } // namespace anon @@ -162,44 +168,41 @@ /// return a icon for the given action static QIcon getIcon(FuncRequest const & f, bool unknown) { - string fullname; + initializeResources(); + QPixmap pm; + string name1; + string name2; switch (f.action) { case LFUN_MATH_INSERT: if (!f.argument().empty()) - fullname = find_png(to_utf8(f.argument()).substr(1)); + name1 = "math/" + find_png(to_utf8(f.argument()).substr(1)); break; case LFUN_MATH_DELIM: case LFUN_MATH_BIGDELIM: - fullname = find_png(to_utf8(f.argument())); + name1 = find_png(to_utf8(f.argument())); break; default: - string const name = lyxaction.getActionName(f.action); - string png_name = name; + name2 = lyxaction.getActionName(f.action); + name1 = name2; if (!f.argument().empty()) - png_name = subst(name + ' ' + to_utf8(f.argument()), ' ', '_'); + name1 = subst(name2 + ' ' + to_utf8(f.argument()), ' ', '_'); + } - fullname = libFileSearch("images", png_name, "png").absFilename(); + if (pm.load(":/images/" + toqstr(name1) + ".png")) + return pm; - if (fullname.empty()) { - // try without the argument - fullname = libFileSearch("images", name, "png").absFilename(); - } - } + if (pm.load(":/images/" + toqstr(name2) + ".png")) + return pm; - if (!fullname.empty()) { - LYXERR(Debug::GUI) << "Full icon name is `" - << fullname << '\'' << endl; - return QIcon(toqstr(fullname)); - } - LYXERR(Debug::GUI) << "Cannot find icon for command \"" << lyxaction.getActionName(f.action) << '(' << to_utf8(f.argument()) << ")\"" << endl; if (unknown) - return QIcon(toqstr(libFileSearch("images", "unknown", "png").absFilename())); - return QIcon(); + pm.load(":/images/unknown.png"); + + return pm; } @@ -261,8 +264,7 @@ TextClass::const_iterator const end = tc.end(); for (; it != end; ++it) { // ignore obsolete entries - if ((*it)->obsoleted_by().empty()) - addItem(toqstr(translateIfPossible((*it)->name()))); + addItem(toqstr(translateIfPossible((*it)->name()))); } // needed to recalculate size hint @@ -290,8 +292,7 @@ return; } } - lyxerr << "ERROR (layoutSelected): layout not found!" - << endl; + lyxerr << "ERROR (layoutSelected): layout not found!" << endl; } @@ -396,8 +397,7 @@ tb->setToolTip(qt_(to_ascii(item.label_))); tb->setStatusTip(qt_(to_ascii(item.label_))); tb->setText(qt_(to_ascii(item.label_))); - FileName icon_path = libFileSearch("images/math", item.name_, "png"); - tb->setIcon(QIcon(toqstr(icon_path.absFilename()))); + tb->setIcon(QPixmap(":images/math/" + toqstr(item.name_) + ".png")); connect(this, SIGNAL(iconSizeChanged(QSize)), tb, SLOT(setIconSize(QSize)));