void PluginServer::set_title(const char *string)
{
- if(title) delete [] title;
+ delete [] title;
title = cstrdup(string);
}
}
-int PluginServer::get_plugin_png_path(char *png_path, const char *plugin_icons)
+void PluginServer::get_plugin_png_name(char *png_name)
{
- char *pp = png_path, *ep = pp + BCTEXTLEN-1;
- pp += snprintf(pp, ep-pp, "%s/picon", File::get_plugin_path());
- if( strcmp(DEFAULT_PICON, plugin_icons) )
- pp += snprintf(pp, ep-pp, "_%s", plugin_icons);
- if( pp < ep ) *pp++ = '/';
+ char *pp = png_name, *ep = pp + BCSTRLEN-1;
char *cp = strrchr(path, '/');
cp = !cp ? path : cp+1;
char *sp = strrchr(cp, '.');
if( !sp ) sp = cp+strlen(cp);
while( pp < ep && cp < sp ) *pp++ = *cp++;
- pp += snprintf(pp, ep-pp, ".png");
- *pp = 0;
- struct stat st;
- if( stat(png_path, &st) ) return 0;
- if( !S_ISREG(st.st_mode) ) return 0;
- if( st.st_size == 0 ) return 0;
- return st.st_size;
+ snprintf(pp, ep-pp, ".png");
+}
+
+int PluginServer::get_plugin_png_path(char *png_path, const char *plugin_icons)
+{
+ char png_name[BCSTRLEN];
+ get_plugin_png_name(png_name);
+ char *pp = png_path, *ep = pp + BCTEXTLEN-1;
+ pp += snprintf(pp, ep-pp, "%s/picon/%s/%s",
+ File::get_plugin_path(), plugin_icons, png_name);
+ return access(png_path,R_OK) ? 1 : 0;
}
int PluginServer::get_plugin_png_path(char *png_path)
{
- int len = get_plugin_png_path(png_path, mwindow->preferences->plugin_icons);
- if( !len ) len = get_plugin_png_path(png_path, DEFAULT_PICON);
- return len;
+ int ret = get_plugin_png_path(png_path, mwindow->preferences->plugin_icons);
+ if( ret ) ret = get_plugin_png_path(png_path, DEFAULT_PICON);
+ return ret;
}
VFrame *PluginServer::get_plugin_images()
{
char png_path[BCTEXTLEN];
- if( !get_plugin_png_path(png_path) ) return 0;
- return VFramePng::vframe_png(png_path,0,0);
+ if( !get_plugin_png_path(png_path) )
+ return VFramePng::vframe_png(png_path,0,0);
+ char png_name[BCSTRLEN];
+ get_plugin_png_name(png_name);
+ unsigned char *data = mwindow->theme->get_image_data(png_name, 0);
+ return data ? new VFramePng(data, 0.) : 0;
}
VFrame *PluginServer::get_picon()