- plugins: allow hinticons for plugins

Default is <plugin>_hint.png; an entry 'hinticon=another_name' in
<plugin>.cfg overrides this; use icon in plugindir first; if not found
use icon in one of the other wellknown neutrino icon directories.
This commit is contained in:
svenhoefer
2014-10-06 22:04:13 +02:00
committed by [CST] Focus
parent fa11feb735
commit ebbed374af
3 changed files with 15 additions and 1 deletions

View File

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

View File

@@ -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 ; }

View File

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