Revision: 7 http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=7&view=rev Author: mcginleyr1 Date: 2008-05-12 16:53:22 -0700 (Mon, 12 May 2008)
Log Message: ----------- 2007-05-12 Robert McGinley <mcginleyr1(at)gmail(dot)com> filetree/src/filetree.c - Since this is based directly of the filebrowser code (why reinvent the tree) I removed the extraneous code that does functionality that I do not want in the file tree (can always be re added). Also started converting things to tree stores and tree view.
Modified Paths: -------------- trunk/filetree/src/filetree.c
Modified: trunk/filetree/src/filetree.c =================================================================== --- trunk/filetree/src/filetree.c 2008-05-12 23:26:24 UTC (rev 6) +++ trunk/filetree/src/filetree.c 2008-05-12 23:53:22 UTC (rev 7) @@ -78,9 +78,8 @@
static GtkWidget *file_view_vbox; static GtkWidget *file_view; -static GtkListStore *file_store; -static GtkTreeIter *last_dir_iter = NULL; -static GtkEntryCompletion *entry_completion = NULL; +static GtkTreeStore *file_store; +static GtkTreeIter *toplevel, *child;
static gchar *open_cmd; /* in locale-encoding */ static gchar *config_file; @@ -431,39 +430,6 @@ }
-static void on_find_in_files(GtkMenuItem *menuitem, gpointer user_data) -{ - GtkTreeSelection *treesel; - GtkTreeModel *model; - GList *list; - gchar *dir; - gboolean is_dir = FALSE; - - treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(file_view)); - if (! check_single_selection(treesel)) - return; - - list = gtk_tree_selection_get_selected_rows(treesel, &model); - is_dir = is_folder_selected(list); - - if (is_dir) - { - GtkTreePath *treepath = list->data; /* first selected item */ - - dir = get_tree_path_filename(treepath); - } - else - dir = g_strdup(current_dir); - - g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL); - g_list_free(list); - - setptr(dir, p_utils->get_utf8_from_locale(dir)); - p_search->show_find_in_files_dialog(dir); - g_free(dir); -} - - static void on_hidden_files_clicked(GtkCheckMenuItem *item) { show_hidden_files = gtk_check_menu_item_get_active(item); @@ -500,15 +466,9 @@ G_CALLBACK(on_external_open), NULL); popup_items.open_external = item;
-// image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_MENU); -// gtk_widget_show(image); -// item = gtk_image_menu_item_new_with_mnemonic(_("_Find in Files")); -// gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image); -// gtk_widget_show(item); -// gtk_container_add(GTK_CONTAINER(menu), item); -// g_signal_connect((gpointer) item, "activate", G_CALLBACK(on_find_in_files), NULL); -// popup_items.find_in_files = item;
+ + item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); @@ -591,37 +551,44 @@
static void prepare_file_view(void) { - GtkCellRenderer *text_renderer, *icon_renderer; + GtkCellRenderer *text_renderer, *icon_renderer, *expand_renderer; GtkTreeViewColumn *expandColumn *column; GtkTreeSelection *select; PangoFontDescription *pfd;
- file_store = gtk_list_store_new(FILEVIEW_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); + file_store = gtk_tree_store_new(FILEVIEW_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
- gtk_tree_view_set_model(GTK_TREE_VIEW(file_view), GTK_TREE_MODEL(file_store)); + //gtk_tree_view_set_model(GTK_TREE_VIEW(file_view), GTK_TREE_MODEL(file_store));
- icon_renderer = gtk_cell_renderer_pixbuf_new(); - text_renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new(); - gtk_tree_view_column_pack_start(column, icon_renderer, FALSE); - gtk_tree_view_column_set_attributes(column, icon_renderer, "stock-id", FILEVIEW_COLUMN_ICON, NULL); - gtk_tree_view_column_pack_start(column, text_renderer, TRUE); - gtk_tree_view_column_set_attributes(column, text_renderer, "text", FILEVIEW_COLUMN_NAME, NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(file_view), column); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(file_view), FALSE); +// icon_renderer = gtk_cell_renderer_pixbuf_new(); +// text_renderer = gtk_cell_renderer_text_new(); +// column = gtk_tree_view_column_new(); + + + +// gtk_tree_view_column_pack_start(column, NULL , FALSE); +// gtk_tree_view_set_expander_column(column); + + +// gtk_tree_view_column_pack_start(column, icon_renderer, FALSE); + // gtk_tree_view_column_set_attributes(column, icon_renderer, "stock-id", FILEVIEW_COLUMN_ICON, NULL); + // gtk_tree_view_column_pack_start(column, text_renderer, TRUE); + // gtk_tree_view_column_set_attributes(column, text_renderer, "text", FILEVIEW_COLUMN_NAME, NULL); +// gtk_tree_view_append_column(GTK_TREE_VIEW(file_view), column); +// gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(file_view), FALSE);
- gtk_tree_view_set_enable_search(GTK_TREE_VIEW(file_view), TRUE); - gtk_tree_view_set_search_column(GTK_TREE_VIEW(file_view), FILEVIEW_COLUMN_NAME); +// gtk_tree_view_set_enable_search(GTK_TREE_VIEW(file_view), TRUE); +// gtk_tree_view_set_search_column(GTK_TREE_VIEW(file_view), FILEVIEW_COLUMN_NAME);
- pfd = pango_font_description_from_string(prefs->tagbar_font); - gtk_widget_modify_font(file_view, pfd); - pango_font_description_free(pfd); +// pfd = pango_font_description_from_string(prefs->tagbar_font); +// gtk_widget_modify_font(file_view, pfd); +// pango_font_description_free(pfd);
/* selection handling */ - select = gtk_tree_view_get_selection(GTK_TREE_VIEW(file_view)); - gtk_tree_selection_set_mode(select, GTK_SELECTION_MULTIPLE); +// select = gtk_tree_view_get_selection(GTK_TREE_VIEW(file_view)); +// gtk_tree_selection_set_mode(select, GTK_SELECTION_MULTIPLE);
- g_signal_connect(G_OBJECT(file_view), "realize", G_CALLBACK(on_current_path), NULL); +// g_signal_connect(G_OBJECT(file_view), "realize", G_CALLBACK(on_current_path), NULL); g_signal_connect(G_OBJECT(file_view), "button-press-event", G_CALLBACK(on_button_press), NULL); g_signal_connect(G_OBJECT(file_view), "button-release-event", @@ -656,64 +623,6 @@ return toolbar; }
- -static gboolean completion_match_func(GtkEntryCompletion *completion, const gchar *key, - GtkTreeIter *iter, gpointer user_data) -{ - gchar *str, *icon; - gboolean result = FALSE; - - gtk_tree_model_get(GTK_TREE_MODEL(file_store), iter, - FILEVIEW_COLUMN_ICON, &icon, FILEVIEW_COLUMN_NAME, &str, -1); - - if (str != NULL && icon != NULL && p_utils->str_equal(icon, GTK_STOCK_DIRECTORY) && - ! g_str_has_suffix(key, G_DIR_SEPARATOR_S)) - { - /* key is something like "/tmp/te" and str is a filename like "test", - * so strip the path from key to make them comparable */ - gchar *base_name = g_path_get_basename(key); - gchar *str_lowered = g_utf8_strdown(str, -1); - result = g_str_has_prefix(str_lowered, base_name); - g_free(base_name); - g_free(str_lowered); - } - g_free(str); - g_free(icon); - - return result; -} - - -static gboolean completion_match_selected(GtkEntryCompletion *widget, GtkTreeModel *model, - GtkTreeIter *iter, gpointer user_data) -{ - gchar *str; - gtk_tree_model_get(model, iter, FILEVIEW_COLUMN_NAME, &str, -1); - if (str != NULL) - { - - } - g_free(str); - - return TRUE; -} - - -static void completion_create(void) -{ - entry_completion = gtk_entry_completion_new(); - - gtk_entry_completion_set_inline_completion(entry_completion, FALSE); - gtk_entry_completion_set_popup_completion(entry_completion, TRUE); - gtk_entry_completion_set_text_column(entry_completion, FILEVIEW_COLUMN_NAME); - gtk_entry_completion_set_match_func(entry_completion, completion_match_func, NULL, NULL); - - g_signal_connect(entry_completion, "match-selected", - G_CALLBACK(completion_match_selected), NULL); - -} - - #define CHECK_READ_SETTING(var, error, tmp) \ if ((error) != NULL) \ { \ @@ -769,7 +678,6 @@
file_view = gtk_tree_view_new(); // prepare_file_view(); - completion_create();
scrollwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.