GtkTreeIter* iter,
GtkWidget* treeview)
{
- gchar* filename;
- gint a;
- gchar* b;
- gtk_tree_model_get (model, iter, 0, &filename, 1, &a, 2, &b, -1);
-
- /* FIXME: Convert filename to UTF8 */
- gchar* text = g_strdup_printf ("%s", filename);
- g_object_set (renderer, "text", text, NULL);
- g_free (text);
-
- g_free (filename);
- g_free (b);
+ gchar* displayname;
+
+ gtk_tree_model_get (model, iter, 0, &displayname, -1);
+
+ g_object_set (renderer, "text", displayname, NULL);
+
+ g_free (displayname);
}
static void
}
static gboolean
-_include_exclude_from_file (const gchar* filename,
- GSList** includes,
- GSList** excludes)
+_metadata_from_file (const gchar* filename,
+ GSList** includes,
+ GSList** excludes,
+ gchar** name,
+ gchar** description)
{
GIOChannel* channel;
gboolean found_meta;
{
if (g_str_has_prefix (line, "// ==/UserScript=="))
found_meta = FALSE;
- else if (g_str_has_prefix (line, "// @require") ||
- g_str_has_prefix (line, "// @resource"))
+ else if (g_str_has_prefix (line, "// @require ") ||
+ g_str_has_prefix (line, "// @resource "))
{
/* We don't support these, so abort here */
g_free (line);
g_slist_free (*excludes);
return FALSE;
}
- else if (g_str_has_prefix (line, "// @include"))
+ else if (includes && g_str_has_prefix (line, "// @include "))
{
- rest_of_line = g_strdup (line + strlen ("// @include"));
+ rest_of_line = g_strdup (line + strlen ("// @include "));
rest_of_line = g_strstrip (rest_of_line);
*includes = g_slist_prepend (*includes, rest_of_line);
}
- else if (g_str_has_prefix (line, "// @exclude"))
+ else if (excludes && g_str_has_prefix (line, "// @exclude "))
{
- rest_of_line = g_strdup (line + strlen ("// @exclude"));
+ rest_of_line = g_strdup (line + strlen ("// @exclude "));
rest_of_line = g_strstrip (rest_of_line);
*excludes = g_slist_prepend (*excludes, rest_of_line);
}
+ else if (name && g_str_has_prefix (line, "// @name "))
+ {
+ rest_of_line = g_strdup (line + strlen ("// @name "));
+ rest_of_line = g_strstrip (rest_of_line);
+ *name = rest_of_line;
+ }
+ else if (description && g_str_has_prefix (line, "// @description "))
+ {
+ rest_of_line = g_strdup (line + strlen ("// @description "));
+ rest_of_line = g_strstrip (rest_of_line);
+ *description = rest_of_line;
+ }
}
g_free (line);
}
fullname = g_build_filename (addon_path, filename, NULL);
includes = NULL;
excludes = NULL;
- if (!_include_exclude_from_file (fullname, &includes, &excludes))
+ if (!_metadata_from_file (fullname,
+ &includes, &excludes, NULL, NULL))
{
g_free (fullname);
continue;
gchar* addon_path;
GDir* addon_dir;
const gchar* filename;
+ const gchar* displayname;
+ gchar* fullname;
+ gchar* name;
GtkTreeIter iter;
g_return_if_fail (MIDORI_IS_ADDONS (addons));
if (!g_str_has_suffix (filename, _addons_get_extension (addons)))
continue;
+ displayname = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
+ if (!displayname)
+ displayname = filename;
+
+ if (kind == MIDORI_ADDON_USER_SCRIPTS)
+ {
+ fullname = g_build_filename (addon_path, filename, NULL);
+ name = NULL;
+ if (!_metadata_from_file (fullname, NULL, NULL,
+ &name, NULL))
+ {
+ g_free (fullname);
+ continue;
+ }
+ if (name)
+ displayname = name;
+ g_free (fullname);
+ }
+
gtk_list_store_append (liststore, &iter);
gtk_list_store_set (liststore, &iter,
- 0, filename, 1, 0, 2, "", -1);
+ 0, displayname, 1, 0, 2, "", -1);
}
g_dir_close (addon_dir);
}