static void skin_view_on_cursor_changed(GtkTreeView * treeview, gpointer data) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; GList *node; gchar *name; gchar *comp = NULL; selection = gtk_tree_view_get_selection(treeview); if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return; gtk_tree_model_get(model, &iter, SKIN_VIEW_COL_NAME, &name, -1); for (node = skinlist; node; node = g_list_next(node)) { comp = ((SkinNode *) node->data)->path; if (g_strrstr(comp, name)) break; } g_free(name); active_skin_load (comp); }
void on_skin_view_drag_data_received(GtkWidget * widget, GdkDragContext * context, gint x, gint y, GtkSelectionData * selection_data, guint info, guint time, gpointer user_data) { const gchar * data = (const gchar *) gtk_selection_data_get_data (selection_data); g_return_if_fail (data); const gchar * end = strchr (data, '\r'); if (! end) end = strchr (data, '\n'); if (! end) end = data + strlen (data); gchar * path = g_strndup (data, end - data); if (strstr (path, "://")) { gchar * path2 = uri_to_filename (path); if (path2) { g_free (path); path = path2; } } if (file_is_archive(path)) { if (! active_skin_load (path)) return; skin_install_skin(path); if (skin_view) skin_view_update ((GtkTreeView *) skin_view); } }