#include <config.h>#include <gtk/gtk.h>#include <glib/gi18n.h>#include <string.h>#include "baobab.h"#include "baobab-treeview.h"#include "baobab-utils.h"#include "callbacks.h"Go to the source code of this file.
Functions | |
| static GtkTreeStore * | create_model (void) |
| static GtkListStore * | create_search_model (void) |
| static void | on_tv_row_expanded (GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data) |
| static void | on_tv_cur_changed (GtkTreeView *treeview, gpointer data) |
| static gboolean | on_tv_button_press (GtkWidget *widget, GdkEventButton *event, gpointer data) |
| GtkWidget * | create_directory_treeview (void) |
| GtkWidget * | create_filesearch_treeview (void) |
|
|
Definition at line 226 of file baobab-treeview.c. References baobab, COL_BAR, COL_DIR_NAME, COL_DIR_SIZE, COL_ELEMENTS, COL_HARDLINK, COL_PERC, create_model(), _baobab_application::main_xml, _baobab_application::model, on_tv_button_press(), on_tv_cur_changed(), and on_tv_row_expanded(). Referenced by main(). 00227 { 00228 GtkCellRenderer *cell; 00229 GtkTreeViewColumn *col; 00230 GtkWidget *scrolled; 00231 00232 GtkWidget *tvw = glade_xml_get_widget (baobab.main_xml, "treeview1"); 00233 00234 g_signal_connect (tvw, "row-expanded", 00235 G_CALLBACK (on_tv_row_expanded), NULL); 00236 g_signal_connect (tvw, "cursor-changed", 00237 G_CALLBACK (on_tv_cur_changed), NULL); 00238 g_signal_connect (tvw, "button-press-event", 00239 G_CALLBACK (on_tv_button_press), NULL); 00240 00241 /* dir name column */ 00242 cell = gtk_cell_renderer_text_new (); 00243 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00244 COL_DIR_NAME, "text", 00245 COL_DIR_NAME, NULL); 00246 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00247 00248 /* percentage bar column */ 00249 cell = gtk_cell_renderer_pixbuf_new (); 00250 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "pixbuf", 00251 COL_BAR, NULL); 00252 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00253 00254 /* directory size column */ 00255 cell = gtk_cell_renderer_text_new (); 00256 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00257 COL_DIR_SIZE, "text", 00258 COL_DIR_SIZE, NULL); 00259 g_object_set (G_OBJECT (cell), "xalign", (gfloat) 1.0, NULL); 00260 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00261 00262 /* percentage column */ 00263 cell = gtk_cell_renderer_text_new (); 00264 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00265 COL_PERC, "text", 00266 COL_PERC, NULL); 00267 g_object_set (G_OBJECT (cell), "xalign", (gfloat) 1.0, NULL); 00268 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00269 00270 /* objects column */ 00271 cell = gtk_cell_renderer_text_new (); 00272 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00273 COL_ELEMENTS, "text", 00274 COL_ELEMENTS, NULL); 00275 g_object_set (G_OBJECT (cell), "xalign", (gfloat) 1.0, NULL); 00276 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00277 00278 /* hardlink column */ 00279 cell = gtk_cell_renderer_text_new (); 00280 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00281 COL_HARDLINK, "text", 00282 COL_HARDLINK, NULL); 00283 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00284 00285 gtk_tree_view_collapse_all (GTK_TREE_VIEW (tvw)); 00286 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tvw), FALSE); 00287 scrolled = glade_xml_get_widget (baobab.main_xml, "scrolledwindow1"); 00288 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), 00289 GTK_POLICY_NEVER, 00290 GTK_POLICY_AUTOMATIC); 00291 00292 baobab.model = create_model (); 00293 00294 gtk_tree_view_set_model (GTK_TREE_VIEW (tvw), 00295 GTK_TREE_MODEL (baobab.model)); 00296 g_object_unref (baobab.model); 00297 00298 return tvw; 00299 }
|
|
|
Definition at line 302 of file baobab-treeview.c. References baobab, COL0_ICON, COL1_STRING, COL2_STRING, create_search_model(), _baobab_application::main_xml, _baobab_application::model_search, on_tv_button_press(), and on_tv_cur_changed(). Referenced by main(). 00303 { 00304 GtkWidget *tvw; 00305 GtkCellRenderer *cell; 00306 GtkTreeViewColumn *col; 00307 00308 tvw = glade_xml_get_widget (baobab.main_xml, "tree_search"); 00309 00310 g_signal_connect (tvw, "cursor-changed", 00311 G_CALLBACK (on_tv_cur_changed), NULL); 00312 g_signal_connect (tvw, "button-press-event", 00313 G_CALLBACK (on_tv_button_press), NULL); 00314 00315 /* icons column */ 00316 cell = gtk_cell_renderer_pixbuf_new (); 00317 g_object_set (cell, "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR, 00318 NULL); 00319 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "pixbuf", 00320 COL0_ICON, NULL); 00321 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00322 00323 /* First text column */ 00324 cell = gtk_cell_renderer_text_new (); 00325 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00326 COL1_STRING, "text", 00327 COL1_STRING, NULL); 00328 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00329 00330 /* second text column */ 00331 cell = gtk_cell_renderer_text_new (); 00332 col = gtk_tree_view_column_new_with_attributes (NULL, cell, "markup", 00333 COL2_STRING, "text", 00334 COL2_STRING, NULL); 00335 gtk_tree_view_append_column (GTK_TREE_VIEW (tvw), col); 00336 00337 baobab.model_search = create_search_model (); 00338 gtk_tree_view_set_model (GTK_TREE_VIEW (tvw), 00339 GTK_TREE_MODEL (baobab.model_search)); 00340 g_object_unref (baobab.model_search); 00341 00342 return tvw; 00343 }
|
|
|
Definition at line 35 of file baobab-treeview.c. References COL_H_SIZE, and NUM_TREE_COLUMNS. Referenced by create_directory_treeview(). 00036 { 00037 GtkTreeStore *mdl = gtk_tree_store_new (NUM_TREE_COLUMNS, 00038 G_TYPE_STRING, /* COL_DIR_NAME */ 00039 G_TYPE_STRING, /* COL_H_FULLPATH */ 00040 GDK_TYPE_PIXBUF,/* COL_BAR */ 00041 G_TYPE_FLOAT, /* COL_H_PERC */ 00042 G_TYPE_STRING, /* COL_DIR_SIZE */ 00043 G_TYPE_UINT64, /* COL_H_SIZE */ 00044 G_TYPE_STRING, /* COL_PERC */ 00045 G_TYPE_UINT64, /* COL_H_ALLOCSIZE */ 00046 G_TYPE_STRING, /* COL_ELEMENTS */ 00047 G_TYPE_INT, /* COL_H_ELEMENTS */ 00048 G_TYPE_STRING, /* COL_HARDLINK */ 00049 G_TYPE_UINT64 /* COL_H_HARDLINK */ 00050 ); 00051 00052 /* Defaults to sort-by-size */ 00053 gtk_tree_sortable_set_sort_column_id ((GtkTreeSortable *) mdl, 00054 COL_H_SIZE, 00055 GTK_SORT_DESCENDING); 00056 00057 return mdl; 00058 }
|
|
|
Definition at line 61 of file baobab-treeview.c. References COL1_STRING, COL_FULLPATH, COL_SIZE, message(), and NUM_COLUMNS. Referenced by create_filesearch_treeview(). 00062 { 00063 GtkListStore *mdl; 00064 GtkTreeIter iter; 00065 gchar *escaped; 00066 const gchar *message = N_("Use the Edit->Find menu item " 00067 "or the search toolbar button."); 00068 00069 escaped = g_markup_printf_escaped ("<i>%s</i>", _(message)); 00070 00071 mdl = gtk_list_store_new (NUM_COLUMNS, 00072 GDK_TYPE_PIXBUF, /* icon */ 00073 G_TYPE_STRING, 00074 G_TYPE_STRING, 00075 G_TYPE_STRING, /* fullpath */ 00076 G_TYPE_LONG, /* last access */ 00077 G_TYPE_DOUBLE, /* size */ 00078 G_TYPE_STRING, /* filetype */ 00079 G_TYPE_UINT /* owner id (gushort) */ 00080 ); 00081 00082 gtk_list_store_append (mdl, &iter); 00083 gtk_list_store_set (mdl, &iter, 00084 COL1_STRING, " ", COL_FULLPATH, "", -1); 00085 gtk_list_store_append (mdl, &iter); 00086 gtk_list_store_set (mdl, &iter, 00087 COL1_STRING, escaped, 00088 COL_FULLPATH, "", -1); 00089 00090 g_free (escaped); 00091 00092 /* Defaults to sort-by-size */ 00093 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (mdl), 00094 COL_SIZE, 00095 GTK_SORT_DESCENDING); 00096 00097 return mdl; 00098 }
|
|
||||||||||||||||
|
Definition at line 148 of file baobab-treeview.c. References baobab, COL_FULLPATH, COL_H_FULLPATH, contents_changed(), _baobab_application::CONTENTS_CHANGED_DELAYED, get_NB_page(), get_trash_path(), _baobab_application::model, _baobab_application::model_search, popupmenu_list(), popupmenu_list_search(), _baobab_application::selected_path, set_glade_widget_sens(), _baobab_application::STOP_SCANNING, VIEW_SEARCH, and VIEW_TREE. Referenced by create_directory_treeview(), and create_filesearch_treeview(). 00151 { 00152 GtkTreePath *path; 00153 GtkTreeIter iter; 00154 gchar *trash_path, *dir_path; 00155 gboolean is_trash = FALSE; 00156 00157 if (get_NB_page () == VIEW_TREE) { 00158 if (baobab.CONTENTS_CHANGED_DELAYED) { 00159 baobab.CONTENTS_CHANGED_DELAYED = FALSE; 00160 if (baobab.STOP_SCANNING) { 00161 contents_changed (); 00162 } 00163 } 00164 } 00165 00166 gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), 00167 event->x, event->y, 00168 &path, NULL, NULL, NULL); 00169 if (!path) 00170 return TRUE; 00171 00172 /* check if a valid and scanned folder has been selected */ 00173 if (baobab.selected_path) { 00174 g_free (baobab.selected_path); 00175 baobab.selected_path = NULL; 00176 } 00177 00178 if (get_NB_page () == VIEW_TREE) { 00179 gtk_tree_model_get_iter (GTK_TREE_MODEL (baobab.model), &iter, 00180 path); 00181 gtk_tree_model_get (GTK_TREE_MODEL (baobab.model), &iter, 00182 COL_H_FULLPATH, &baobab.selected_path, -1); 00183 00184 } 00185 else { 00186 gtk_tree_model_get_iter (GTK_TREE_MODEL (baobab.model_search), 00187 &iter, path); 00188 gtk_tree_model_get (GTK_TREE_MODEL (baobab.model_search), &iter, 00189 COL_FULLPATH, &baobab.selected_path, -1); 00190 } 00191 00192 if (strcmp (baobab.selected_path, "") == 0) { 00193 set_glade_widget_sens("menu_treemap",FALSE); 00194 gtk_tree_path_free (path); 00195 return FALSE; 00196 } 00197 00198 if (get_NB_page () == VIEW_SEARCH) 00199 set_glade_widget_sens("menu_treemap",FALSE); 00200 else 00201 set_glade_widget_sens("menu_treemap",TRUE); 00202 00203 /* right-click */ 00204 if (event->button == 3) { 00205 trash_path = get_trash_path(baobab.selected_path); 00206 dir_path = g_path_get_dirname(baobab.selected_path); 00207 if (trash_path) 00208 if (strcmp(trash_path, dir_path)==0) 00209 is_trash = TRUE; 00210 if (get_NB_page () == VIEW_TREE) 00211 popupmenu_list (path, event, is_trash); 00212 if (get_NB_page () == VIEW_SEARCH) 00213 popupmenu_list_search (path, event, is_trash); 00214 00215 g_free(trash_path); 00216 g_free(dir_path); 00217 return FALSE; 00218 } 00219 00220 gtk_tree_path_free (path); 00221 00222 return FALSE; 00223 }
|
|
||||||||||||
|
Definition at line 110 of file baobab-treeview.c. References baobab, COL_FULLPATH, COL_H_FULLPATH, get_NB_page(), _baobab_application::model, _baobab_application::model_search, set_glade_widget_sens(), set_statusbar(), VIEW_SEARCH, and VIEW_TREE. Referenced by create_directory_treeview(), and create_filesearch_treeview(). 00111 { 00112 00113 GtkTreeIter iter; 00114 gchar *text = NULL; 00115 00116 gtk_tree_selection_get_selected (gtk_tree_view_get_selection (treeview), NULL, &iter); 00117 00118 if (get_NB_page () == VIEW_TREE) { 00119 if (gtk_tree_store_iter_is_valid (baobab.model, &iter)) { 00120 gtk_tree_model_get (GTK_TREE_MODEL (baobab.model), &iter, 00121 COL_H_FULLPATH, &text, -1); 00122 } 00123 } 00124 else if (get_NB_page () == VIEW_SEARCH) { 00125 if (gtk_list_store_iter_is_valid (baobab.model_search, &iter)) { 00126 gtk_tree_model_get (GTK_TREE_MODEL (baobab.model_search), 00127 &iter, COL_FULLPATH, &text, -1); 00128 } 00129 } 00130 00131 set_glade_widget_sens("menu_treemap",FALSE); 00132 if (text) { 00133 gchar *msg; 00134 00135 /* make sure it is utf8 */ 00136 msg = g_filename_display_name (text); 00137 00138 set_statusbar (msg); 00139 if (get_NB_page () == VIEW_TREE && strcmp (text, "") != 0 ) 00140 set_glade_widget_sens("menu_treemap",TRUE); 00141 00142 g_free (msg); 00143 g_free (text); 00144 } 00145 }
|
|
||||||||||||||||||||
|
Definition at line 101 of file baobab-treeview.c. Referenced by create_directory_treeview().
|