#include "support/Messages.h"
#include "support/os.h"
#include "support/Package.h"
-#include "support/Path.h"
+#include "support/PathChanger.h"
#include "support/Systemcall.h"
#ifdef Q_WS_MACX
size_t const nr_sorted_png_map = sizeof(sorted_png_map) / sizeof(PngMap);
+// This list specifies which system's theme icon is related to which lyx
+// command. It was based on:
+// http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
+// this must be sorted alphabetically
+// Upper case comes before lower case
+PngMap sorted_theme_icon_map[] = {
+ { "bookmark-goto 0", "go-jump" },
+ { "buffer-new", "document-new" },
+ { "buffer-print", "document-print" },
+ { "buffer-write", "document-save" },
+ { "buffer-write-as", "document-save-as" },
+ { "buffer-zoom-in", "zoom-in" },
+ { "buffer-zoom-out", "zoom-out" },
+ { "copy", "edit-copy" },
+ { "cut", "edit-cut" },
+ { "depth-decrement", "format-indent-less" },
+ { "depth-increment", "format-indent-more" },
+ { "dialog-show print", "document-print" },
+ { "dialog-show spellchecker", "tools-check-spelling" },
+ { "dialog-show-new-inset graphics", "insert-image" },
+ { "dialog-toggle findreplaceadv", "edit-find-replace" },
+ { "file-open", "document-open" },
+ { "font-bold", "format-text-bold" },
+ { "font-ital", "format-text-italic" },
+ { "font-strikeout", "format-text-strikethrough" },
+ { "font-underline", "format-text-underline" },
+ { "lyx-quit", "application-exit" },
+ { "paste", "edit-paste" },
+ { "redo", "edit-redo" },
+ { "undo", "edit-undo" },
+ { "window-close", "window-close" },
+ { "window-new", "window-new" }
+};
+
+size_t const nr_sorted_theme_icon_map = sizeof(sorted_theme_icon_map) / sizeof(PngMap);
+
QString findPng(QString const & name)
{
PngMap const * const begin = sorted_png_map;
PngMap const * const end = begin + nr_sorted_png_map;
- LASSERT(sorted(begin, end), /**/);
+ LATTEST(sorted(begin, end));
PngMap const * const it = find_if(begin, end, CompareKey(name));
} // namespace anon
+QString themeIconName(QString const & action)
+{
+ PngMap const * const begin = sorted_theme_icon_map;
+ PngMap const * const end = begin + nr_sorted_theme_icon_map;
+ LASSERT(sorted(begin, end), /**/);
+
+ PngMap const * const it = find_if(begin, end, CompareKey(action));
+
+ if (it != end)
+ return it->value;
+ return QString();
+}
+
+
QString iconName(FuncRequest const & f, bool unknown)
{
initializeResources();
QIcon getIcon(FuncRequest const & f, bool unknown)
{
+#if (QT_VERSION >= 0x040600)
+ if (lyxrc.use_system_theme_icons) {
+ QString action = toqstr(lyxaction.getActionName(f.action()));
+ if (!f.argument().empty())
+ action += " " + toqstr(f.argument());
+ QString const theme_icon = themeIconName(action);
+ if (QIcon::hasThemeIcon(theme_icon))
+ return QIcon::fromTheme(theme_icon);
+ }
+#endif
+
QString icon = iconName(f, unknown);
if (icon.isEmpty())
return QIcon();
QCoreApplication::setOrganizationDomain("lyx.org");
QCoreApplication::setApplicationName(lyx_package);
+ qsrand(QDateTime::currentDateTime().toTime_t());
+
// Install translator for GUI elements.
installTranslator(&d->qt_trans_);
return;
BookmarksSection::Bookmark const & bm =
theSession().bookmarks().bookmark(idx);
- LASSERT(!bm.filename.empty(), /**/);
+ LASSERT(!bm.filename.empty(), return);
string const file = bm.filename.absFileName();
// if the file is not opened, open it.
if (!theBufferList().exists(bm.filename)) {
void GuiApplication::unregisterView(GuiView * gv)
{
- LASSERT(d->views_[gv->id()] == gv, /**/);
+ LAPPERR(d->views_[gv->id()] == gv);
d->views_.remove(gv->id());
if (current_view_ == gv)
current_view_ = 0;
GuiView & GuiApplication::view(int id) const
{
- LASSERT(d->views_.contains(id), /**/);
+ LAPPERR(d->views_.contains(id));
return *d->views_.value(id);
}
frontend::FontLoader & theFontLoader()
{
- LASSERT(frontend::guiApp, /**/);
+ LAPPERR(frontend::guiApp);
return frontend::guiApp->fontLoader();
}
frontend::FontMetrics const & theFontMetrics(FontInfo const & f)
{
- LASSERT(frontend::guiApp, /**/);
+ LAPPERR(frontend::guiApp);
return frontend::guiApp->fontLoader().metrics(f);
}
frontend::Clipboard & theClipboard()
{
- LASSERT(frontend::guiApp, /**/);
+ LAPPERR(frontend::guiApp);
return frontend::guiApp->clipboard();
}
frontend::Selection & theSelection()
{
- LASSERT(frontend::guiApp, /**/);
+ LAPPERR(frontend::guiApp);
return frontend::guiApp->selection();
}