return ret;
}
+void vd_select_row(ViewDir *vd, FileData *fd)
+{
+ switch(vd->type)
+ {
+ case DIRVIEW_LIST: vdlist_select_row(vd, fd); break;
+ case DIRVIEW_TREE: vdtree_select_row(vd, fd); break;
+ }
+}
+
gint vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter)
{
gint ret = FALSE;
popup_menu_position_clamp(menu, x, y, 0);
}
+void vd_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data)
+{
+ ViewDir *vd = data;
+ GtkTreeModel *store;
+ GtkTreeIter iter;
+ FileData *fd;
+
+ store = gtk_tree_view_get_model(tview);
+ gtk_tree_model_get_iter(store, &iter, tpath);
+ switch (vd->type)
+ {
+ case DIRVIEW_LIST:
+ gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1);
+ break;
+ case DIRVIEW_TREE:
+ {
+ NodeData *nd;
+ gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &nd, -1);
+ fd = (nd) ? nd->fd : NULL;
+ };
+ break;
+ }
+
+ vd_select_row(vd, fd);
+}
+
+static GdkColor *vd_color_shifted(GtkWidget *widget)
+{
+ static GdkColor color;
+ static GtkWidget *done = NULL;
+
+ if (done != widget)
+ {
+ GtkStyle *style;
+
+ style = gtk_widget_get_style(widget);
+ memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
+ shift_color(&color, -1, 0);
+ done = widget;
+ }
+
+ return &color;
+}
+
+void vd_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
+ GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
+{
+ ViewDir *vd = data;
+ gboolean set;
+
+ gtk_tree_model_get(tree_model, iter, DIR_COLUMN_COLOR, &set, -1);
+ g_object_set(G_OBJECT(cell),
+ "cell-background-gdk", vd_color_shifted(vd->view),
+ "cell-background-set", set, NULL);
+}
+
void vd_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data);
+void vd_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data);
+void vd_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data);
+
#endif
*-----------------------------------------------------------------------------
*/
-static void vdlist_select_row(ViewDir *vd, FileData *fd)
+void vdlist_select_row(ViewDir *vd, FileData *fd)
{
if (fd && vd->select_func)
{
return TRUE;
}
-static void vdlist_select_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data)
-{
- ViewDir *vd = data;
- GtkTreeModel *store;
- GtkTreeIter iter;
- FileData *fd;
-
- store = gtk_tree_view_get_model(tview);
- gtk_tree_model_get_iter(store, &iter, tpath);
- gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1);
-
- vdlist_select_row(vd, fd);
-}
-
-static GdkColor *vdlist_color_shifted(GtkWidget *widget)
-{
- static GdkColor color;
- static GtkWidget *done = NULL;
-
- if (done != widget)
- {
- GtkStyle *style;
-
- style = gtk_widget_get_style(widget);
- memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
- shift_color(&color, -1, 0);
- done = widget;
- }
-
- return &color;
-}
-
-static void vdlist_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
- GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
-{
- ViewDir *vd = data;
- gboolean set;
-
- gtk_tree_model_get(tree_model, iter, DIR_COLUMN_COLOR, &set, -1);
- g_object_set(G_OBJECT(cell),
- "cell-background-gdk", vdlist_color_shifted(vd->view),
- "cell-background-set", set, NULL);
-}
-
static void vdlist_destroy_cb(GtkWidget *widget, gpointer data)
{
ViewDir *vd = data;
gtk_tree_view_set_enable_search(GTK_TREE_VIEW(vd->view), FALSE);
g_signal_connect(G_OBJECT(vd->view), "row_activated",
- G_CALLBACK(vdlist_select_cb), vd);
+ G_CALLBACK(vd_activate_cb), vd);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vd->view));
gtk_tree_selection_set_mode(selection, GTK_SELECTION_NONE);
renderer = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_column_pack_start(column, renderer, FALSE);
gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", DIR_COLUMN_ICON);
- gtk_tree_view_column_set_cell_data_func(column, renderer, vdlist_color_cb, vd, NULL);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, vd_color_cb, vd, NULL);
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer, "text", DIR_COLUMN_NAME);
- gtk_tree_view_column_set_cell_data_func(column, renderer, vdlist_color_cb, vd, NULL);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, vd_color_cb, vd, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(vd->view), column);
ViewDir *vdlist_new(ViewDir *vd, const gchar *path);
+void vdlist_select_row(ViewDir *vd, FileData *fd);
+
gint vdlist_set_path(ViewDir *vd, const gchar *path);
void vdlist_refresh(ViewDir *vd);
return selection_is_ok;
}
-static void vdtree_select_row(ViewDir *vd, FileData *fd)
+void vdtree_select_row(ViewDir *vd, FileData *fd)
{
GtkTreeSelection *selection;
GtkTreeIter iter;
vdtree_populate_path(vd, path, FALSE, FALSE);
}
-static void vdtree_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data)
-{
- ViewDir *vd = data;
- GtkTreeModel *store;
- GtkTreeIter iter;
- NodeData *nd;
-
- store = gtk_tree_view_get_model(tview);
- gtk_tree_model_get_iter(store, &iter, tpath);
- gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &nd, -1);
-
- vdtree_select_row(vd, nd->fd);
-}
-
-static GdkColor *vdtree_color_shifted(GtkWidget *widget)
-{
- static GdkColor color;
- static GtkWidget *done = NULL;
-
- if (done != widget)
- {
- GtkStyle *style;
-
- style = gtk_widget_get_style(widget);
- memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
- shift_color(&color, -1, 0);
- done = widget;
- }
-
- return &color;
-}
-
-static void vdtree_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
- GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
-{
- ViewDir *vd = data;
- gboolean set;
-
- gtk_tree_model_get(tree_model, iter, DIR_COLUMN_COLOR, &set, -1);
- g_object_set(G_OBJECT(cell),
- "cell-background-gdk", vdtree_color_shifted(vd->view),
- "cell-background-set", set, NULL);
-}
-
static gboolean vdtree_destroy_node_cb(GtkTreeModel *store, GtkTreePath *tpath, GtkTreeIter *iter, gpointer data)
{
NodeData *nd;
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
g_signal_connect(G_OBJECT(vd->view), "row_activated",
- G_CALLBACK(vdtree_activate_cb), vd);
+ G_CALLBACK(vd_activate_cb), vd);
g_signal_connect(G_OBJECT(vd->view), "row_expanded",
G_CALLBACK(vdtree_row_expanded), vd);
g_signal_connect(G_OBJECT(vd->view), "row_collapsed",
renderer = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_column_pack_start(column, renderer, FALSE);
gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", DIR_COLUMN_ICON);
- gtk_tree_view_column_set_cell_data_func(column, renderer, vdtree_color_cb, vd, NULL);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, vd_color_cb, vd, NULL);
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer, "text", DIR_COLUMN_NAME);
- gtk_tree_view_column_set_cell_data_func(column, renderer, vdtree_color_cb, vd, NULL);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, vd_color_cb, vd, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(vd->view), column);
ViewDir *vdtree_new(ViewDir *vd, const gchar *path);
+void vdtree_select_row(ViewDir *vd, FileData *fd);
+
gint vdtree_set_path(ViewDir *vd, const gchar *path);
void vdtree_refresh(ViewDir *vd);