+ issue #0002053: Support of themes
This commit is contained in:
parent
0765dc1aae
commit
cd0b369425
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user