comparison src/view_dir_list.c @ 389:b78077f65eff

Merge few more vdlist/vdtree functions.
author zas_
date Wed, 16 Apr 2008 21:58:05 +0000
parents 5186f8e38cb8
children 4a5e1377f3d7
comparison
equal deleted inserted replaced
388:5186f8e38cb8 389:b78077f65eff
60 } 60 }
61 61
62 return -1; 62 return -1;
63 } 63 }
64 64
65 static gint vdlist_rename_row_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data)
66 {
67 ViewDir *vd = data;
68 GtkTreeModel *store;
69 GtkTreeIter iter;
70 FileData *fd;
71 gchar *old_path;
72 gchar *new_path;
73 gchar *base;
74
75 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
76 if (!gtk_tree_model_get_iter(store, &iter, td->path)) return FALSE;
77 gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1);
78 if (!fd) return FALSE;
79
80 old_path = g_strdup(fd->path);
81
82 base = remove_level_from_path(old_path);
83 new_path = concat_dir_and_file(base, new);
84 g_free(base);
85
86 if (file_util_rename_dir(fd, new_path, vd->view))
87 {
88 if (vd->layout && strcmp(vd->path, old_path) == 0)
89 {
90 layout_set_path(vd->layout, new_path);
91 }
92 else
93 {
94 vdlist_refresh(vd);
95 }
96 }
97
98 g_free(old_path);
99 g_free(new_path);
100 return FALSE;
101 }
102
103 void vdlist_rename_by_row(ViewDir *vd, FileData *fd)
104 {
105 GtkTreeModel *store;
106 GtkTreePath *tpath;
107 GtkTreeIter iter;
108
109 if (vdlist_find_row(vd, fd, &iter) < 0) return;
110 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
111 tpath = gtk_tree_model_get_path(store, &iter);
112
113 tree_edit_by_path(GTK_TREE_VIEW(vd->view), tpath, 0, fd->name,
114 vdlist_rename_row_cb, vd);
115 gtk_tree_path_free(tpath);
116 }
117 65
118 FileData *vdlist_row_by_path(ViewDir *vd, const gchar *path, gint *row) 66 FileData *vdlist_row_by_path(ViewDir *vd, const gchar *path, gint *row)
119 { 67 {
120 GList *work; 68 GList *work;
121 gint n; 69 gint n;
272 GtkTreeIter iter; 220 GtkTreeIter iter;
273 221
274 GdkRectangle vrect; 222 GdkRectangle vrect;
275 GdkRectangle crect; 223 GdkRectangle crect;
276 224
277 if (!fd || vdlist_find_row(vd, fd, &iter) < 0) return 0; 225 if (!fd || vd_find_row(vd, fd, &iter) < 0) return 0;
278 226
279 column = gtk_tree_view_get_column(GTK_TREE_VIEW(vd->view), 0); 227 column = gtk_tree_view_get_column(GTK_TREE_VIEW(vd->view), 0);
280 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); 228 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
281 tpath = gtk_tree_model_get_path(store, &iter); 229 tpath = gtk_tree_model_get_path(store, &iter);
282 230
294 static void vdlist_scroll_to_row(ViewDir *vd, FileData *fd, gfloat y_align) 242 static void vdlist_scroll_to_row(ViewDir *vd, FileData *fd, gfloat y_align)
295 { 243 {
296 GtkTreeIter iter; 244 GtkTreeIter iter;
297 245
298 if (GTK_WIDGET_REALIZED(vd->view) && 246 if (GTK_WIDGET_REALIZED(vd->view) &&
299 vdlist_find_row(vd, fd, &iter) >= 0) 247 vd_find_row(vd, fd, &iter) >= 0)
300 { 248 {
301 GtkTreeModel *store; 249 GtkTreeModel *store;
302 GtkTreePath *tpath; 250 GtkTreePath *tpath;
303 251
304 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); 252 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
611 GtkTreeModel *store; 559 GtkTreeModel *store;
612 GtkTreeIter iter; 560 GtkTreeIter iter;
613 GtkTreePath *tpath; 561 GtkTreePath *tpath;
614 gint cw, ch; 562 gint cw, ch;
615 563
616 if (vdlist_find_row(vd, vd->click_fd, &iter) < 0) return; 564 if (vd_find_row(vd, vd->click_fd, &iter) < 0) return;
617 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); 565 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
618 tpath = gtk_tree_model_get_path(store, &iter); 566 tpath = gtk_tree_model_get_path(store, &iter);
619 tree_view_get_cell_clamped(GTK_TREE_VIEW(vd->view), tpath, 0, TRUE, x, y, &cw, &ch); 567 tree_view_get_cell_clamped(GTK_TREE_VIEW(vd->view), tpath, 0, TRUE, x, y, &cw, &ch);
620 gtk_tree_path_free(tpath); 568 gtk_tree_path_free(tpath);
621 *y += ch; 569 *y += ch;