diff --git a/src/gui/plugins.cpp b/src/gui/plugins.cpp index 489c0a2ea..7373851bd 100644 --- a/src/gui/plugins.cpp +++ b/src/gui/plugins.cpp @@ -122,6 +122,7 @@ void CPlugins::scanDir(const char *dir) fname += '/'; new_plugin.cfgfile = fname.append(new_plugin.filename); new_plugin.cfgfile.append(".cfg"); + new_plugin.plugindir = dir; bool plugin_ok = parseCfg(&new_plugin); if (plugin_ok) { @@ -209,6 +210,7 @@ bool CPlugins::parseCfg(plugin *plugin_data) plugin_data->hide = false; plugin_data->type = CPlugins::P_TYPE_DISABLED; plugin_data->integration = CPlugins::I_TYPE_DISABLED; + plugin_data->hinticon = plugin_data->filename + "_hint"; for (int i = 0; i < linecount; i++) { @@ -239,6 +241,10 @@ bool CPlugins::parseCfg(plugin *plugin_data) { plugin_data->depend = parm; } + else if (cmd == "hinticon") + { + plugin_data->hinticon = parm; + } else if (cmd == "type") { plugin_data->type = getPluginType(atoi(parm)); @@ -288,6 +294,10 @@ bool CPlugins::parseCfg(plugin *plugin_data) inFile.close(); + std::string _hintIcon = plugin_data->plugindir + "/" + plugin_data->hinticon + ".png"; + if (access(_hintIcon.c_str(), F_OK) == 0) + plugin_data->hinticon = _hintIcon; + overrideType(plugin_data, g_settings.plugins_disabled, P_TYPE_DISABLED) || overrideType(plugin_data, g_settings.plugins_game, P_TYPE_GAME) || overrideType(plugin_data, g_settings.plugins_tool, P_TYPE_TOOL) || diff --git a/src/gui/plugins.h b/src/gui/plugins.h index a2cfd6867..4172b7fb0 100644 --- a/src/gui/plugins.h +++ b/src/gui/plugins.h @@ -80,6 +80,8 @@ class CPlugins int key; std::string cfgfile; std::string pluginfile; + std::string plugindir; + std::string hinticon; int version; std::string name; // UTF-8 encoded std::string description; // UTF-8 encoded @@ -130,6 +132,8 @@ class CPlugins inline int getNumberOfPlugins (void ) const { return plugin_list.size() ; } inline const char * getName (const int number) const { return plugin_list[number].name.c_str() ; } inline const char * getPluginFile (const int number) const { return plugin_list[number].pluginfile.c_str(); } + inline const char * getPluginDir (const int number) const { return plugin_list[number].plugindir.c_str() ; } + inline const char * getHintIcon (const int number) const { return plugin_list[number].hinticon.c_str() ; } inline const char * getFileName (const int number) const { return plugin_list[number].filename.c_str() ; } inline const std::string & getDescription (const int number) const { return plugin_list[number].description ; } inline int getType (const int number) const { return plugin_list[number].type ; } diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 761752d4f..1afd623b2 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -974,7 +974,7 @@ void CMenuWidget::integratePlugins(void *pluginsExec, CPlugins::i_type_t integra printf("[neutrino] integratePlugins: add %s\n", g_PluginList->getName(count)); sprintf(id_plugin, "%d", count); CMenuForwarder *fw_plugin = new CMenuForwarder(g_PluginList->getName(count), true, NULL, _pluginsExec, id_plugin); - fw_plugin->setHint("", g_PluginList->getDescription(count)); + fw_plugin->setHint(g_PluginList->getHintIcon(count), g_PluginList->getDescription(count)); addItem(fw_plugin); } }