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)));
 

Reply via email to