+ issue #0002053: Support of themes

This commit is contained in:
wmayer 2015-06-28 23:30:42 +02:00
parent 0765dc1aae
commit cd0b369425
6 changed files with 32 additions and 14 deletions

View File

@ -188,6 +188,19 @@ bool BitmapFactoryInst::findPixmapInCache(const char* name, QPixmap& px) const
return false;
}
QIcon BitmapFactoryInst::iconFromTheme(const char* name, const QIcon& fallback)
{
QString iconName = QString::fromLatin1(name);
QIcon icon = QIcon::fromTheme(iconName, fallback);
if (icon.isNull()) {
QPixmap px = pixmap(name);
if (!px.isNull())
icon.addPixmap(px);
}
return icon;
}
bool BitmapFactoryInst::loadPixmap(const QString& filename, QPixmap& icon) const
{
QFileInfo fi(filename);

View File

@ -26,6 +26,7 @@
#include <Base/Factory.h>
#include <QPixmap>
#include <QIcon>
// forward declaration
class SoSFImage;
@ -68,6 +69,10 @@ public:
void addPixmapToCache(const char* name, const QPixmap& icon);
/// Checks whether the pixmap is already registered.
bool findPixmapInCache(const char* name, QPixmap& icon) const;
/** Returns the QIcon corresponding to name in the current icon theme.
* If no such icon is found in the current theme fallback is returned instead.
*/
QIcon iconFromTheme(const char* name, const QIcon& fallback = QIcon());
/// Retrieves a pixmap by name
QPixmap pixmap(const char* name) const;
/** Retrieves a pixmap by name and size created by an

View File

@ -660,7 +660,7 @@ Action * Command::createAction(void)
pcAction->setShortcut(QString::fromAscii(sAccel));
applyCommandData(this->className(), pcAction);
if (sPixmap)
pcAction->setIcon(Gui::BitmapFactory().pixmap(sPixmap));
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(sPixmap));
return pcAction;
}
@ -907,7 +907,7 @@ Action * PythonCommand::createAction(void)
pcAction->setShortcut(QString::fromAscii(getAccel()));
applyCommandData(this->getName(), pcAction);
if (strcmp(getResource("Pixmap"),"") != 0)
pcAction->setIcon(Gui::BitmapFactory().pixmap(getResource("Pixmap")));
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(getResource("Pixmap")));
return pcAction;
}
@ -1083,7 +1083,7 @@ Action * PythonGroupCommand::createAction(void)
languageChange();
if (strcmp(getResource("Pixmap"),"") != 0) {
pcAction->setIcon(Gui::BitmapFactory().pixmap(getResource("Pixmap")));
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(getResource("Pixmap")));
}
else {
QList<QAction*> a = pcAction->actions();
@ -1113,13 +1113,13 @@ void PythonGroupCommand::languageChange()
Gui::Command* cmd = rcCmdMgr.getCommandByName((*it)->property("CommandName").toByteArray());
// Python command use getName as context
if (dynamic_cast<PythonCommand*>(cmd)) {
(*it)->setIcon(Gui::BitmapFactory().pixmap(cmd->getPixmap()));
(*it)->setIcon(Gui::BitmapFactory().iconFromTheme(cmd->getPixmap()));
(*it)->setText(QApplication::translate(cmd->getName(), cmd->getMenuText()));
(*it)->setToolTip(QApplication::translate(cmd->getName(), cmd->getToolTipText()));
(*it)->setStatusTip(QApplication::translate(cmd->getName(), cmd->getStatusTip()));
}
else if (cmd) {
(*it)->setIcon(Gui::BitmapFactory().pixmap(cmd->getPixmap()));
(*it)->setIcon(Gui::BitmapFactory().iconFromTheme(cmd->getPixmap()));
(*it)->setText(QApplication::translate(cmd->className(), cmd->getMenuText()));
(*it)->setToolTip(QApplication::translate(cmd->className(), cmd->getToolTipText()));
(*it)->setStatusTip(QApplication::translate(cmd->className(), cmd->getStatusTip()));

View File

@ -717,7 +717,7 @@ Action * StdCmdUndo::createAction(void)
pcAction->setShortcut(QString::fromAscii(sAccel));
applyCommandData(this->className(), pcAction);
if (sPixmap)
pcAction->setIcon(Gui::BitmapFactory().pixmap(sPixmap));
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(sPixmap));
return pcAction;
}
@ -760,7 +760,7 @@ Action * StdCmdRedo::createAction(void)
pcAction->setShortcut(QString::fromAscii(sAccel));
applyCommandData(this->className(), pcAction);
if (sPixmap)
pcAction->setIcon(Gui::BitmapFactory().pixmap(sPixmap));
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(sPixmap));
return pcAction;
}

View File

@ -127,7 +127,7 @@ Action * StdCmdWorkbench::createAction(void)
pcAction->setShortcut(QString::fromAscii(sAccel));
applyCommandData(this->className(), pcAction);
if (sPixmap)
pcAction->setIcon(Gui::BitmapFactory().pixmap(sPixmap));
pcAction->setIcon(Gui::BitmapFactory().iconFromTheme(sPixmap));
return pcAction;
}

View File

@ -563,20 +563,20 @@ Gui::Action * StdCmdDrawStyle::createAction(void)
QAction* a0 = pcAction->addAction(QString());
a0->setCheckable(true);
a0->setIcon(BitmapFactory().pixmap("DrawStyleAsIs"));
a0->setIcon(BitmapFactory().iconFromTheme("DrawStyleAsIs"));
a0->setChecked(true);
QAction* a1 = pcAction->addAction(QString());
a1->setCheckable(true);
a1->setIcon(BitmapFactory().pixmap("DrawStyleFlatLines"));
a1->setIcon(BitmapFactory().iconFromTheme("DrawStyleFlatLines"));
QAction* a2 = pcAction->addAction(QString());
a2->setCheckable(true);
a2->setIcon(BitmapFactory().pixmap("DrawStyleShaded"));
a2->setIcon(BitmapFactory().iconFromTheme("DrawStyleShaded"));
QAction* a3 = pcAction->addAction(QString());
a3->setCheckable(true);
a3->setIcon(BitmapFactory().pixmap("DrawStyleWireFrame"));
a3->setIcon(BitmapFactory().iconFromTheme("DrawStyleWireFrame"));
QAction* a4 = pcAction->addAction(QString());
a4->setCheckable(true);
a4->setIcon(BitmapFactory().pixmap("DrawStylePoints"));
a4->setIcon(BitmapFactory().iconFromTheme("DrawStylePoints"));
pcAction->setIcon(a0->icon());
_pcAction = pcAction;
@ -1364,7 +1364,7 @@ Action * StdViewDockUndockFullscreen::createAction(void)
QCoreApplication::CodecForTr));
fullscr->setShortcut(Qt::Key_F11);
fullscr->setCheckable(true);
fullscr->setIcon(Gui::BitmapFactory().pixmap("view-fullscreen"));
fullscr->setIcon(Gui::BitmapFactory().iconFromTheme("view-fullscreen"));
return pcAction;
}