summaryrefslogtreecommitdiffstats
path: root/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
diff options
context:
space:
mode:
Diffstat (limited to 'x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch')
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch1407
1 files changed, 0 insertions, 1407 deletions
diff --git a/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch b/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
deleted file mode 100644
index 278e99a..0000000
--- a/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
+++ /dev/null
@@ -1,1407 +0,0 @@
-*** ../old/gtk+-1.2.8/gtk/gtkfilesel.h Sun Feb 13 01:59:45 2000
---- gtk/gtkfilesel.h Wed Jul 26 10:19:19 2000
-***************
-*** 57,69 ****
---- 57,73 ----
- GtkWidget *selection_text;
- GtkWidget *main_vbox;
- GtkWidget *ok_button;
- GtkWidget *cancel_button;
- GtkWidget *help_button;
-+
-+ /* These are not used. Just fillers in the class structure */
- GtkWidget *history_pulldown;
- GtkWidget *history_menu;
- GList *history_list;
-+ /* ***************** */
-+
- GtkWidget *fileop_dialog;
- GtkWidget *fileop_entry;
- gchar *fileop_file;
- gpointer cmpl_state;
-
-***************
-*** 71,81 ****
- GtkWidget *fileop_del_file;
- GtkWidget *fileop_ren_file;
-
- GtkWidget *button_area;
- GtkWidget *action_area;
-!
- };
-
- struct _GtkFileSelectionClass
- {
- GtkWindowClass parent_class;
---- 75,92 ----
- GtkWidget *fileop_del_file;
- GtkWidget *fileop_ren_file;
-
- GtkWidget *button_area;
- GtkWidget *action_area;
-!
-! GtkWidget *history_combo;
-! GList *prev_history;
-! GList *next_history;
-! GtkWidget *mask_entry;
-! gchar *mask;
-! gchar *saved_entry;
-!
- };
-
- struct _GtkFileSelectionClass
- {
- GtkWindowClass parent_class;
-*** ../old/gtk+-1.2.8/gtk/gtkfilesel.c Thu Jan 27 09:39:54 2000
---- gtk/gtkfilesel.c Wed Jul 26 10:19:19 2000
-***************
-*** 52,61 ****
---- 52,63 ----
- #include "gtkmenu.h"
- #include "gtkmenuitem.h"
- #include "gtkoptionmenu.h"
- #include "gtkclist.h"
- #include "gtkdialog.h"
-+ #include "gtkcombo.h"
-+ #include "gtkframe.h"
- #include "gtkintl.h"
-
- #define DIR_LIST_WIDTH 180
- #define DIR_LIST_HEIGHT 180
- #define FILE_LIST_WIDTH 180
-***************
-*** 150,159 ****
---- 152,165 ----
- */
- gchar *text;
- gint is_a_completion;
- gint is_directory;
-
-+ gint file_size;
-+ gint file_time;
-+ gint uid;
-+ gint gid;
- /* Private fields
- */
- gint text_alloc;
- };
-
-***************
-*** 304,318 ****
- gint column,
- GdkEventButton *bevent,
- gpointer user_data);
-
- static void gtk_file_selection_dir_button (GtkWidget *widget,
-! gint row,
-! gint column,
- GdkEventButton *bevent,
- gpointer data);
-
- static void gtk_file_selection_populate (GtkFileSelection *fs,
- gchar *rel_path,
- gint try_complete);
- static void gtk_file_selection_abort (GtkFileSelection *fs);
-
---- 310,330 ----
- gint column,
- GdkEventButton *bevent,
- gpointer user_data);
-
- static void gtk_file_selection_dir_button (GtkWidget *widget,
-! gint row,
-! gint column,
- GdkEventButton *bevent,
- gpointer data);
-
-+ static void gtk_file_selection_undir_button (GtkWidget *widget,
-+ gint row,
-+ gint column,
-+ GdkEventButton *bevent,
-+ gpointer data);
-+
- static void gtk_file_selection_populate (GtkFileSelection *fs,
- gchar *rel_path,
- gint try_complete);
- static void gtk_file_selection_abort (GtkFileSelection *fs);
-
-***************
-*** 321,337 ****
---- 333,447 ----
-
- static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
- static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
- static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
-
-+ static gboolean gtk_file_selection_history_combo_callback (GtkWidget *widget, GdkEventKey *event, gpointer data);
-+ static gboolean gtk_file_selection_history_combo_list_key_handler(GtkWidget *widget,
-+ GdkEventKey *event,
-+ gpointer user_data);
-+ static gboolean gtk_file_selection_history_combo_list_callback (GtkWidget *thelist,
-+ GdkEventButton *event,
-+ gpointer user_data);
-+ static void gtk_file_selection_mask_entry_callback (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_home_button (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_up_button (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_prev_button (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_next_button (GtkWidget *widget, gpointer data);
-+ static void gtk_file_selection_refresh_button (GtkWidget *widget, gpointer data);
-+
-+ static gint gtk_file_selection_match_char (gchar, gchar *mask);
-+ static gint gtk_file_selection_match_mask (gchar *,gchar *);
-
-
- static GtkWindowClass *parent_class = NULL;
-
- /* Saves errno when something cmpl does fails. */
- static gint cmpl_errno;
-
-+ /* General notes:
-+ * Make prev and next inactive if their respective *
-+ * histories are empty.
-+ * Add facilities for handling hidden files and *
-+ * directories *
-+ * Add an api to access the mask, and hidden files *
-+ * check box? (prob not in 1.2.x series) *
-+ */
-+
-+ /* Routine for applying mask to filenames *
-+ * Need to be optimized to minimize recursion *
-+ * help the for loop by looking for the next *
-+ * instance of the mask character following *
-+ * the '*'. ei *.c -- look for '.' *
-+ * Also, swap all *? pairs (-> ?*), as that *
-+ * will make it possible to look ahead (? *
-+ * makes it very nondeterministic as in *?.c *
-+ * which really is ?*.c *
-+ * Allow multiply masks, separted by commas *
-+ * Allow more flexible [] handling (ie [a-zA-Z] *
-+ * *
-+ */
-+ static gint gtk_file_selection_match_char (gchar text, gchar *mask){
-+ gchar *maskc;
-+ gint x;
-+ gint s;
-+
-+ if (mask[0] == '[')
-+ {
-+ if (!strchr (mask,']')) return 0;
-+ maskc = g_strdup(mask + 1); /* get the portion of mask inside []*/
-+
-+ (*(strchr (maskc,']'))) = 0;
-+ s = strlen ((char *)maskc);
-+
-+ for (x = 0; x < s; x++){
-+ if (text == maskc[x])
-+ {
-+ g_free (maskc);
-+ return s + 2;
-+ }
-+ }
-+ g_free (maskc);
-+ return 0;
-+ }
-+
-+ if (mask[0] == '?') return 1;
-+ if (mask[0] == text) return 1;
-+
-+ return 0;
-+ }
-+
-+
-+ static gint gtk_file_selection_match_mask (gchar *text, gchar *mask){
-+
-+ int mc;
-+ int tc;
-+
-+ tc = 0; mc = 0;
-+
-+ if (mask[0] == 0 && text[0] == 0) return 1;
-+
-+ if (mask[0] == '*')
-+ {
-+ for (tc = 0; tc <= strlen(text); tc++)
-+ {
-+ if (gtk_file_selection_match_mask (text + tc, mask + 1))
-+ return 1;
-+ }
-+ return 0;
-+ }
-+ mc = gtk_file_selection_match_char (text[0], mask);
-+
-+ if(mc)
-+ return gtk_file_selection_match_mask (text + 1, mask + mc);
-+ else
-+ return 0;
-+ }
-+
- GtkType
- gtk_file_selection_get_type (void)
- {
- static GtkType file_selection_type = 0;
-
-***************
-*** 372,389 ****
---- 482,514 ----
- {
- GtkWidget *entry_vbox;
- GtkWidget *label;
- GtkWidget *list_hbox;
- GtkWidget *confirm_area;
-+ GtkWidget *vbox;
-+ GtkWidget *hbox;
- GtkWidget *pulldown_hbox;
- GtkWidget *scrolled_win;
-+ GtkWidget *mask_label;
-+ GtkWidget *bigframe;
-+ GtkWidget *label_lookingin;
-+ GtkWidget *up_button;
-+ GtkWidget *home_button;
-+ GtkWidget *prev_button;
-+ GtkWidget *next_button;
-+ GtkWidget *refresh_button;
-
- char *dir_title [2];
- char *file_title [2];
-
- filesel->cmpl_state = cmpl_init_state ();
-
-+ filesel->mask=NULL;
-+ filesel->prev_history=NULL;
-+ filesel->next_history=NULL;
-+ filesel->saved_entry=NULL;
-+
- /* The dialog-sized vertical box */
- filesel->main_vbox = gtk_vbox_new (FALSE, 10);
- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
- gtk_container_add (GTK_CONTAINER (filesel), filesel->main_vbox);
- gtk_widget_show (filesel->main_vbox);
-***************
-*** 397,440 ****
- gtk_widget_show (filesel->button_area);
-
- gtk_file_selection_show_fileop_buttons(filesel);
-
- /* hbox for pulldown menu */
-! pulldown_hbox = gtk_hbox_new (TRUE, 5);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
- gtk_widget_show (pulldown_hbox);
-
-! /* Pulldown menu */
-! filesel->history_pulldown = gtk_option_menu_new ();
-! gtk_widget_show (filesel->history_pulldown);
-! gtk_box_pack_start (GTK_BOX (pulldown_hbox), filesel->history_pulldown,
-! FALSE, FALSE, 0);
-!
- /* The horizontal box containing the directory and file listboxes */
- list_hbox = gtk_hbox_new (FALSE, 5);
-! gtk_box_pack_start (GTK_BOX (filesel->main_vbox), list_hbox, TRUE, TRUE, 0);
- gtk_widget_show (list_hbox);
-
- /* The directories clist */
- dir_title[0] = _("Directories");
- dir_title[1] = NULL;
- filesel->dir_list = gtk_clist_new_with_titles (1, (gchar**) dir_title);
- gtk_widget_set_usize (filesel->dir_list, DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
- gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
-! (GtkSignalFunc) gtk_file_selection_dir_button,
- (gpointer) filesel);
- gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
-
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-! gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
-! gtk_box_pack_start (GTK_BOX (list_hbox), scrolled_win, TRUE, TRUE, 0);
- gtk_widget_show (filesel->dir_list);
- gtk_widget_show (scrolled_win);
-
- /* The files clist */
- file_title[0] = _("Files");
- file_title[1] = NULL;
- filesel->file_list = gtk_clist_new_with_titles (1, (gchar**) file_title);
- gtk_widget_set_usize (filesel->file_list, FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
---- 522,654 ----
- gtk_widget_show (filesel->button_area);
-
- gtk_file_selection_show_fileop_buttons(filesel);
-
- /* hbox for pulldown menu */
-! pulldown_hbox = gtk_hbox_new (FALSE, 5);
- gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
- gtk_widget_show (pulldown_hbox);
-
-! /* The combo box that replaces the pulldown menu */
-! label_lookingin = gtk_label_new (_("Looking in:"));
-! gtk_widget_show (label_lookingin);
-! gtk_box_pack_start (GTK_BOX (pulldown_hbox), label_lookingin, FALSE, FALSE, 0);
-!
-! filesel->history_combo = gtk_combo_new();
-! gtk_widget_show(filesel->history_combo);
-! gtk_combo_set_value_in_list(GTK_COMBO(filesel->history_combo),FALSE,FALSE);
-! gtk_box_pack_start (GTK_BOX(pulldown_hbox),filesel->history_combo,
-! TRUE,TRUE, 0);
-! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->entry),"key-press-event",
-! (GtkSignalFunc) gtk_file_selection_history_combo_callback,
-! (gpointer) filesel);
-!
-! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->list),"button-press-event",
-! (GtkSignalFunc) gtk_file_selection_history_combo_list_callback,
-! (gpointer) filesel);
-!
-! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->list),"key-press-event",
-! (GtkSignalFunc) gtk_file_selection_history_combo_list_key_handler,
-! (gpointer) filesel);
-!
-! /* frame to put the following hbox in */
-! bigframe = gtk_frame_new (NULL);
-! gtk_widget_show (bigframe);
-! gtk_box_pack_start (GTK_BOX (filesel->main_vbox), bigframe, TRUE, TRUE, 0);
-!
- /* The horizontal box containing the directory and file listboxes */
- list_hbox = gtk_hbox_new (FALSE, 5);
-! gtk_container_add (GTK_CONTAINER(bigframe), list_hbox);
-! gtk_container_set_border_width (GTK_CONTAINER (list_hbox), 5);
- gtk_widget_show (list_hbox);
-
-+ /* vbox to put the buttons and directory listing in */
-+ vbox = gtk_vbox_new (FALSE, 0);
-+ gtk_widget_show (vbox);
-+ gtk_box_pack_start (GTK_BOX (list_hbox), vbox, FALSE, FALSE, 0);
-+
-+ hbox = gtk_hbox_new (FALSE, 0);
-+ gtk_widget_show (hbox);
-+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-+
-+ home_button = gtk_button_new_with_label (_("Home"));
-+ gtk_widget_show (home_button);
-+ gtk_signal_connect (GTK_OBJECT (home_button), "clicked",
-+ (GtkSignalFunc) gtk_file_selection_home_button,
-+ (gpointer) filesel);
-+ gtk_box_pack_start (GTK_BOX (hbox), home_button, TRUE,TRUE, 0);
-+
-+ prev_button = gtk_button_new_with_label (_("Prev"));
-+ gtk_signal_connect (GTK_OBJECT (prev_button), "clicked",
-+ (GtkSignalFunc) gtk_file_selection_prev_button,
-+ (gpointer) filesel);
-+ gtk_widget_show (prev_button);
-+ gtk_box_pack_start (GTK_BOX (hbox), prev_button, TRUE,TRUE, 0);
-+
-+ up_button = gtk_button_new_with_label (_("Up"));
-+ gtk_signal_connect (GTK_OBJECT (up_button), "clicked",
-+ (GtkSignalFunc) gtk_file_selection_up_button,
-+ (gpointer) filesel);
-+ gtk_widget_show (up_button);
-+ gtk_box_pack_start (GTK_BOX (hbox), up_button, TRUE,TRUE, 0);
-+
-+ next_button = gtk_button_new_with_label (_("Next"));
-+ gtk_widget_show (next_button);
-+ gtk_signal_connect (GTK_OBJECT (next_button), "clicked",
-+ (GtkSignalFunc) gtk_file_selection_next_button,
-+ (gpointer) filesel);
-+ gtk_box_pack_start (GTK_BOX (hbox), next_button, TRUE,TRUE, 0);
-+
-+ refresh_button = gtk_button_new_with_label (_("Refresh"));
-+ gtk_widget_show (refresh_button);
-+ gtk_signal_connect (GTK_OBJECT (refresh_button), "clicked",
-+ (GtkSignalFunc) gtk_file_selection_refresh_button,
-+ (gpointer) filesel);
-+ gtk_box_pack_start (GTK_BOX (hbox), refresh_button, TRUE, TRUE, 0);
-+
- /* The directories clist */
- dir_title[0] = _("Directories");
- dir_title[1] = NULL;
- filesel->dir_list = gtk_clist_new_with_titles (1, (gchar**) dir_title);
- gtk_widget_set_usize (filesel->dir_list, DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
- gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
-! (GtkSignalFunc) gtk_file_selection_dir_button,
-! (gpointer) filesel);
-! gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "unselect_row",
-! (GtkSignalFunc) gtk_file_selection_undir_button,
- (gpointer) filesel);
- gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
-
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-! gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE,TRUE, 5);
- gtk_widget_show (filesel->dir_list);
- gtk_widget_show (scrolled_win);
-
-+ /* vbox area for mask entry and files clist */
-+ vbox = gtk_vbox_new (FALSE, 0);
-+ gtk_widget_show (vbox);
-+ gtk_box_pack_start (GTK_BOX (list_hbox), vbox, TRUE, TRUE, 0);
-+
-+ hbox = gtk_hbox_new (FALSE, 5);
-+ gtk_widget_show (hbox);
-+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-+
-+ mask_label = gtk_label_new (_("Mask:"));
-+ gtk_widget_show (mask_label);
-+ gtk_box_pack_start (GTK_BOX (hbox), mask_label, FALSE, FALSE, 0);
-+
-+ filesel->mask_entry = gtk_entry_new ();
-+ gtk_widget_show (filesel->mask_entry);
-+ gtk_signal_connect(GTK_OBJECT(filesel->mask_entry),"activate",
-+ (GtkSignalFunc) gtk_file_selection_mask_entry_callback,
-+ (gpointer) filesel);
-+ gtk_box_pack_start (GTK_BOX (hbox),filesel->mask_entry, TRUE, TRUE, 0);
-+
-+
- /* The files clist */
- file_title[0] = _("Files");
- file_title[1] = NULL;
- filesel->file_list = gtk_clist_new_with_titles (1, (gchar**) file_title);
- gtk_widget_set_usize (filesel->file_list, FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
-***************
-*** 445,456 ****
-
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-! gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
-! gtk_box_pack_start (GTK_BOX (list_hbox), scrolled_win, TRUE, TRUE, 0);
- gtk_widget_show (filesel->file_list);
- gtk_widget_show (scrolled_win);
-
- /* action area for packing buttons into. */
- filesel->action_area = gtk_hbox_new (TRUE, 0);
---- 659,669 ----
-
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-! gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 5);
- gtk_widget_show (filesel->file_list);
- gtk_widget_show (scrolled_win);
-
- /* action area for packing buttons into. */
- filesel->action_area = gtk_hbox_new (TRUE, 0);
-***************
-*** 653,698 ****
-
- void
- gtk_file_selection_complete (GtkFileSelection *filesel,
- const gchar *pattern)
- {
- g_return_if_fail (filesel != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
- g_return_if_fail (pattern != NULL);
-
- if (filesel->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
-! gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
- }
-
- static void
- gtk_file_selection_destroy (GtkObject *object)
- {
- GtkFileSelection *filesel;
- GList *list;
-- HistoryCallbackArg *callback_arg;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (object));
-
- filesel = GTK_FILE_SELECTION (object);
-
- if (filesel->fileop_dialog)
-! gtk_widget_destroy (filesel->fileop_dialog);
-
-! if (filesel->history_list)
- {
-! list = filesel->history_list;
- while (list)
-! {
-! callback_arg = list->data;
-! g_free (callback_arg->directory);
-! g_free (callback_arg);
- list = list->next;
-! }
-! g_list_free (filesel->history_list);
-! filesel->history_list = NULL;
- }
-
- cmpl_free_state (filesel->cmpl_state);
- filesel->cmpl_state = NULL;
-
---- 866,949 ----
-
- void
- gtk_file_selection_complete (GtkFileSelection *filesel,
- const gchar *pattern)
- {
-+ gchar *new_pattern;
-+ gint x;
-+
- g_return_if_fail (filesel != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
- g_return_if_fail (pattern != NULL);
-
- if (filesel->selection_entry)
- gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
-!
-! if(strchr(pattern,'*') || strchr(pattern,'?'))
-! {
-! for(x=strlen(pattern);x>=0;x--)
-! {
-! if(pattern[x]=='/') break;
-! }
-! gtk_entry_set_text(GTK_ENTRY(filesel->mask_entry),g_strdup(pattern+x+1));
-!
-! if(filesel->mask) g_free(filesel->mask);
-!
-! filesel->mask=g_strdup(pattern+x+1);
-! new_pattern=g_strdup(pattern);
-! new_pattern[x+1]=0;
-! gtk_file_selection_populate (filesel, (gchar*) new_pattern, TRUE);
-! g_free(new_pattern);
-! }
-! else
-! {
-! gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
-! }
- }
-
- static void
- gtk_file_selection_destroy (GtkObject *object)
- {
- GtkFileSelection *filesel;
- GList *list;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (object));
-
- filesel = GTK_FILE_SELECTION (object);
-
- if (filesel->fileop_dialog)
-! gtk_widget_destroy (filesel->fileop_dialog);
-
-! if (filesel->next_history)
- {
-! list = filesel->next_history;
- while (list)
-! {
-! g_free (list->data);
- list = list->next;
-! }
-! }
-! g_list_free (filesel->next_history);
-! filesel->next_history = NULL;
-!
-! if (filesel->prev_history)
-! {
-! list = filesel->prev_history;
-! while (list)
-! {
-! g_free (list->data);
-! list = list->next;
-! }
-! }
-! g_list_free (filesel->prev_history);
-! filesel->prev_history = NULL;
-!
-! if (filesel->mask)
-! {
-! g_free (filesel->mask);
-! filesel->mask = NULL;
- }
-
- cmpl_free_state (filesel->cmpl_state);
- filesel->cmpl_state = NULL;
-
-***************
-*** 1091,1103 ****
- char *text;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- if (event->keyval == GDK_Tab)
- {
-- fs = GTK_FILE_SELECTION (user_data);
- text = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
-
- text = g_strdup (text);
-
- gtk_file_selection_populate (fs, text, TRUE);
---- 1342,1355 ----
- char *text;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
-+ fs = GTK_FILE_SELECTION (user_data);
-+
- if (event->keyval == GDK_Tab)
- {
- text = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
-
- text = g_strdup (text);
-
- gtk_file_selection_populate (fs, text, TRUE);
-***************
-*** 1106,1217 ****
-
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
-
- return TRUE;
- }
-
- return FALSE;
- }
-
-
- static void
-! gtk_file_selection_history_callback (GtkWidget *widget, gpointer data)
-! {
- GtkFileSelection *fs = data;
-- HistoryCallbackArg *callback_arg;
- GList *list;
-
- g_return_if_fail (fs != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
-! list = fs->history_list;
-!
-! while (list) {
-! callback_arg = list->data;
-!
-! if (callback_arg->menu_item == widget)
-! {
-! gtk_file_selection_populate (fs, callback_arg->directory, FALSE);
-! break;
-! }
-!
-! list = list->next;
-! }
- }
-
-! static void
-! gtk_file_selection_update_history_menu (GtkFileSelection *fs,
-! gchar *current_directory)
-! {
-! HistoryCallbackArg *callback_arg;
-! GtkWidget *menu_item;
- GList *list;
-! gchar *current_dir;
-! gint dir_len;
-! gint i;
-!
- g_return_if_fail (fs != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-- g_return_if_fail (current_directory != NULL);
--
-- list = fs->history_list;
-
-! if (fs->history_menu)
- {
-! while (list) {
-! callback_arg = list->data;
-! g_free (callback_arg->directory);
-! g_free (callback_arg);
-! list = list->next;
-! }
-! g_list_free (fs->history_list);
-! fs->history_list = NULL;
-
-- gtk_widget_destroy (fs->history_menu);
- }
-!
-! fs->history_menu = gtk_menu_new();
-
-! current_dir = g_strdup (current_directory);
-
-! dir_len = strlen (current_dir);
-
-! for (i = dir_len; i >= 0; i--)
- {
-! /* the i == dir_len is to catch the full path for the first
-! * entry. */
-! if ( (current_dir[i] == '/') || (i == dir_len))
-! {
-! /* another small hack to catch the full path */
-! if (i != dir_len)
-! current_dir[i + 1] = '\0';
-! menu_item = gtk_menu_item_new_with_label (current_dir);
-!
-! callback_arg = g_new (HistoryCallbackArg, 1);
-! callback_arg->menu_item = menu_item;
-!
-! /* since the autocompletion gets confused if you don't
-! * supply a trailing '/' on a dir entry, set the full
-! * (current) path to "" which just refreshes the filesel */
-! if (dir_len == i) {
-! callback_arg->directory = g_strdup ("");
-! } else {
-! callback_arg->directory = g_strdup (current_dir);
-! }
-!
-! fs->history_list = g_list_append (fs->history_list, callback_arg);
-!
-! gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
-! (GtkSignalFunc) gtk_file_selection_history_callback,
-! (gpointer) fs);
-! gtk_menu_append (GTK_MENU (fs->history_menu), menu_item);
-! gtk_widget_show (menu_item);
- }
- }
-
-! gtk_option_menu_set_menu (GTK_OPTION_MENU (fs->history_pulldown),
-! fs->history_menu);
- g_free (current_dir);
- }
-
- static void
- gtk_file_selection_file_button (GtkWidget *widget,
---- 1358,1617 ----
-
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
-
- return TRUE;
- }
-+ if (fs->saved_entry)
-+ {
-+ gtk_clist_unselect_all ((GtkCList *) (fs->dir_list));
-+ gtk_entry_set_text(GTK_ENTRY(fs->selection_entry),fs->saved_entry);
-+ g_free (fs->saved_entry);
-+ fs->saved_entry = NULL;
-+ }
-+
-
- return FALSE;
- }
-
-+ static void
-+ gtk_file_selection_home_button (GtkWidget *widget, gpointer data){
-+ GList *list;
-+
-+ GtkFileSelection *fs=data;
-+
-+ list = fs->next_history;
-+ if (list)
-+ {
-+ g_free (list->data);
-+ list = list->next;
-+ }
-+ g_list_free (fs->next_history);
-+ fs->next_history = NULL;
-+
-+ gtk_file_selection_populate (fs,"~/",FALSE);
-+ }
-
- static void
-! gtk_file_selection_up_button (GtkWidget *widget, gpointer data){
- GtkFileSelection *fs = data;
- GList *list;
-
- g_return_if_fail (fs != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
-! list = fs->next_history;
-! if (list)
-! {
-! g_free (list->data);
-! list = list->next;
-! }
-! g_list_free (fs->next_history);
-! fs->next_history = NULL;
-!
-! gtk_file_selection_populate (fs, "../", FALSE); /*change directories. */
-!
- }
-
-! static void
-! gtk_file_selection_prev_button (GtkWidget *widget, gpointer data){
-! GtkFileSelection *fs = data;
- GList *list;
-! GList *first;
-! gchar *path;
-!
- g_return_if_fail (fs != NULL);
- g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-
-! list = fs->prev_history;
-!
-! if (list && g_list_length(list) > 1)
- {
-! first = list; /* get first element */
-! list = list->next; /* pop off current directory */
-!
-! list->prev = NULL; /* make this the new head. */
-!
-! fs->prev_history = list; /* update prev_history list */
-! fs->next_history = g_list_prepend(fs->next_history,first->data); /* put it on next_history */
-!
-! first->next = NULL; /* orphan the old first node */
-! g_list_free (first); /* free the node (data is now in use by next_history) */
-!
-!
-!
-! path = g_malloc(strlen(list->data)+4); /* plenty of space */
-! strcpy(path,list->data); /* get the 2nd path in the history */
-! strcat(path,"/"); /* append a '/' */
-! gtk_file_selection_populate (fs, path, FALSE); /* change directories. */
-! g_free (path);
-! }
-! }
-!
-! static void
-! gtk_file_selection_next_button (GtkWidget *widget, gpointer data){
-! GtkFileSelection *fs = data;
-! GList *list;
-! GList *first;
-! gchar *path;
-!
-! g_return_if_fail (fs != NULL);
-! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-!
-! list = fs->next_history;
-!
-! if (list && g_list_length(list) > 0)
-! {
-! first = list; /*get first element*/
-! list = list->next; /*pop off current directory*/
-!
-! if (list)
-! list->prev = NULL;
-!
-! fs->next_history = list; /*update prev_history list*/
-!
-! path = g_malloc(strlen(first->data)+4); /*plenty of space*/
-! strcpy(path,first->data);
-! strcat(path,"/"); /*append a / */
-! gtk_file_selection_populate (fs, path, FALSE); /*change directories.*/
-! g_free(path);
-!
-! first->next = NULL; /* orphan the old first node */
-! g_list_free (first); /* free the node (data is now in use by next_history) */
-
- }
-! }
-
-! void static
-! gtk_file_selection_refresh_button (GtkWidget *widget, gpointer data){
-! GtkFileSelection *fs = data;
-
-! g_return_if_fail (fs != NULL);
-! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-!
-! gtk_file_selection_populate (fs,"",FALSE);
-! }
-
-! static void
-! gtk_file_selection_mask_entry_callback (GtkWidget *widget, gpointer data){
-! GtkFileSelection *fs = data;
-!
-! if(fs->mask)
-! g_free (fs->mask);
-!
-! fs->mask = g_strdup(gtk_entry_get_text (GTK_ENTRY(fs->mask_entry)));
-!
-! if (strlen(fs->mask) == 0)
- {
-! g_free (fs->mask);
-! fs->mask = NULL;
-! }
-!
-! gtk_file_selection_refresh_button (widget,data);
-! }
-!
-! static gboolean gtk_file_selection_history_combo_list_key_handler(GtkWidget *widget,
-! GdkEventKey *event,
-! gpointer user_data)
-! {
-! /*
-! g_print("Key pressed! \n");
-! */
-!
-! return TRUE;
-! }
-!
-! static gboolean gtk_file_selection_history_combo_list_callback (GtkWidget *thelist,
-! GdkEventButton *event,
-! gpointer user_data)
-! {
-!
-! GtkFileSelection *fs = user_data;
-! GList *list;
-! gchar *path;
-!
-! list = fs->next_history;
-! if(list)
-! {
-! g_free (list->data);
-! list = list->next;
-! }
-! g_list_free (fs->next_history);
-! fs->next_history = NULL;
-!
-! path = g_malloc(strlen(gtk_entry_get_text(GTK_ENTRY (((GtkCombo *)fs->history_combo)->entry)))+4);
-! strcpy (path,gtk_entry_get_text(GTK_ENTRY( ((GtkCombo *)fs->history_combo)->entry)));
-! strcat (path,"/");
-!
-! gtk_file_selection_populate (fs,path,TRUE);
-!
-! g_free (path);
-!
-! return TRUE;
-! }
-!
-! static gboolean
-! gtk_file_selection_history_combo_callback (GtkWidget *widget, GdkEventKey *event, gpointer data)
-! {
-! GtkEntry *entry=(GtkEntry *)widget;
-! GtkFileSelection *fs=data;
-! GList *list;
-! gchar *path;
-!
-! g_return_val_if_fail (fs != NULL,FALSE);
-! g_return_val_if_fail (GTK_IS_FILE_SELECTION (fs),FALSE);
-!
-!
-! if (event->keyval == GDK_Return)
-! {
-! list = fs->next_history;
-! if (list)
-! {
-! g_free (list->data);
-! list = list->next;
- }
-+ g_list_free (fs->next_history);
-+ fs->next_history = NULL;
-+
-+ path = g_malloc(strlen(gtk_entry_get_text(entry))+4);
-+ strcpy (path,gtk_entry_get_text(entry));
-+ strcat (path,"/");
-+ gtk_file_selection_populate (fs,path,TRUE);
-+ g_free (path);
-+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
-+ return TRUE;
- }
-+ else
-+ {
-+ return FALSE;
-+ }
-+
-+ }
-+
-+ static void
-+ gtk_file_selection_update_history_menu (GtkFileSelection *fs,
-+ gchar *current_directory)
-+ {
-+ gchar *current_dir;
-
-! g_return_if_fail (fs != NULL);
-! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-! g_return_if_fail (current_directory != NULL);
-!
-! current_dir = g_strdup (current_directory);
-!
-! if(fs->prev_history)
-! {
-! if (strcmp((fs->prev_history)->data,current_dir))
-! { /*if this item isn't on the top of the list */
-! fs->prev_history = g_list_prepend(fs->prev_history,g_strdup(current_dir));
-! }
-! } else {
-! fs->prev_history = g_list_prepend(fs->prev_history,g_strdup(current_dir));
-! }
-!
-! gtk_combo_set_popdown_strings (GTK_COMBO (fs->history_combo),fs->prev_history);
-!
- g_free (current_dir);
- }
-
- static void
- gtk_file_selection_file_button (GtkWidget *widget,
-***************
-*** 1245,1255 ****
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
- break;
- }
- else
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-!
- g_free (filename);
- }
- }
-
- static void
---- 1645,1655 ----
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
- break;
- }
- else
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-!
- g_free (filename);
- }
- }
-
- static void
-***************
-*** 1257,1266 ****
---- 1657,1667 ----
- gint row,
- gint column,
- GdkEventButton *bevent,
- gpointer user_data)
- {
-+ GList *list;
- GtkFileSelection *fs = NULL;
- gchar *filename, *temp = NULL;
-
- g_return_if_fail (GTK_IS_CLIST (widget));
-
-***************
-*** 1275,1293 ****
- {
- if (bevent)
- switch (bevent->type)
- {
- case GDK_2BUTTON_PRESS:
- gtk_file_selection_populate (fs, filename, FALSE);
- break;
-!
- default:
-! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
- break;
- }
- else
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-
- g_free (filename);
- }
- }
-
---- 1676,1758 ----
- {
- if (bevent)
- switch (bevent->type)
- {
- case GDK_2BUTTON_PRESS:
-+ list = fs->next_history;
-+ if (list)
-+ {
-+ g_free (list->data);
-+ list = list->next;
-+ }
-+ g_list_free (fs->next_history);
-+ fs->next_history = NULL;
-+
- gtk_file_selection_populate (fs, filename, FALSE);
-+ gtk_entry_set_text(GTK_ENTRY(fs->selection_entry),fs->saved_entry);
-+ g_free (fs->saved_entry);
-+ fs->saved_entry = NULL;
- break;
-!
- default:
-! /* here we need to add the "filename" to the beginning of what's already
-! in the entry. Save what's in the entry, then restore it on the double click
-! */
-! if (fs->saved_entry) g_free (fs->saved_entry);
-! fs->saved_entry=g_strdup(gtk_entry_get_text(GTK_ENTRY (fs->selection_entry)));
-!
-! temp=g_strconcat(filename,fs->saved_entry,NULL);
-! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), temp);
-! g_free (temp);
-!
- break;
- }
- else
- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-+
-+ g_free (filename);
-+ }
-+ }
-+
-+ static void
-+ gtk_file_selection_undir_button (GtkWidget *widget,
-+ gint row,
-+ gint column,
-+ GdkEventButton *bevent,
-+ gpointer user_data)
-+ {
-+ GtkFileSelection *fs = NULL;
-+ gchar *filename, *temp = NULL;
-+
-+ g_return_if_fail (GTK_IS_CLIST (widget));
-+
-+ fs = GTK_FILE_SELECTION (user_data);
-+ g_return_if_fail (fs != NULL);
-+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
-+
-+ gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp);
-+ filename = g_strdup (temp);
-+
-+ if (filename)
-+ {
-+ if (bevent)
-+ switch (bevent->type)
-+ {
-+ default:
-+ /* here we need to add the "filename" to the beginning of what's already
-+ in the entry. Save what's in the entry, then restore it on the double click
-+ */
-+ if (fs->saved_entry)
-+ {
-+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry),fs->saved_entry);
-+ g_free (fs->saved_entry);
-+ fs->saved_entry = NULL;
-+ }
-+ break;
-+ }
-+ else
-+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename); //?????
-
- g_free (filename);
- }
- }
-
-***************
-*** 1344,1388 ****
- gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,file_list_width);
-
- while (poss)
- {
- if (cmpl_is_a_completion (poss))
-! {
-! possible_count += 1;
-!
-! filename = cmpl_this_completion (poss);
-
- text[0] = filename;
-
-! if (cmpl_is_directory (poss))
-! {
-! if (strcmp (filename, "./") != 0 &&
-! strcmp (filename, "../") != 0)
- {
- int width = gdk_string_width(fs->dir_list->style->font,
- filename);
- row = gtk_clist_append (GTK_CLIST (fs->dir_list), text);
- if(width > dir_list_width)
- {
- dir_list_width = width;
- gtk_clist_set_column_width(GTK_CLIST(fs->dir_list),0,
- width);
- }
-! }
- }
-! else
- {
-! int width = gdk_string_width(fs->file_list->style->font,
-! filename);
-! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
-! if(width > file_list_width)
-! {
-! file_list_width = width;
-! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
-! width);
-! }
-! }
- }
-
- poss = cmpl_next_completion (cmpl_state);
- }
-
---- 1809,1871 ----
- gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,file_list_width);
-
- while (poss)
- {
- if (cmpl_is_a_completion (poss))
-! {
-! possible_count += 1;
-!
-! filename = cmpl_this_completion (poss);
-
- text[0] = filename;
-
-! if (cmpl_is_directory (poss))
-! {
-! if (strcmp (filename, "./") != 0 &&
-! strcmp (filename, "../") != 0)
- {
- int width = gdk_string_width(fs->dir_list->style->font,
- filename);
- row = gtk_clist_append (GTK_CLIST (fs->dir_list), text);
- if(width > dir_list_width)
- {
- dir_list_width = width;
- gtk_clist_set_column_width(GTK_CLIST(fs->dir_list),0,
- width);
- }
-! }
- }
-! else
- {
-! if(fs->mask)
-! {
-! if (gtk_file_selection_match_mask(filename,fs->mask))
-! {
-! int width = gdk_string_width(fs->file_list->style->font,
-! filename);
-! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
-! if(width > file_list_width)
-! {
-! file_list_width = width;
-! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
-! width);
-! }
-! }
-! }
-! else
-! {
-! int width = gdk_string_width(fs->file_list->style->font,
-! filename);
-! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
-! if(width > file_list_width)
-! {
-! file_list_width = width;
-! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
-! width);
-! }
-! }
-! }
- }
-
- poss = cmpl_next_completion (cmpl_state);
- }
-
-***************
-*** 1430,1440 ****
- }
- }
- else
- {
- if (fs->selection_entry)
-! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
- }
-
- if (!did_recurse)
- {
- if (fs->selection_entry)
---- 1913,1925 ----
- }
- }
- else
- {
- if (fs->selection_entry)
-! /* Here we need to take the old filename and keep it!*/
-! /*gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");*/
-! ;
- }
-
- if (!did_recurse)
- {
- if (fs->selection_entry)
-***************
-*** 1448,1462 ****
-
- gtk_label_set_text (GTK_LABEL (fs->selection_text), sel_text);
- g_free (sel_text);
- }
-
-! if (fs->history_pulldown)
-! {
-! gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
-! }
-!
- }
- }
-
- static void
- gtk_file_selection_abort (GtkFileSelection *fs)
---- 1933,1944 ----
-
- gtk_label_set_text (GTK_LABEL (fs->selection_text), sel_text);
- g_free (sel_text);
- }
-
-! gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
-!
- }
- }
-
- static void
- gtk_file_selection_abort (GtkFileSelection *fs)
-***************
-*** 2758,2762 ****
---- 3240,3306 ----
- if(err == CMPL_ERRNO_TOO_LONG)
- return "Name too long";
- else
- return g_strerror (err);
- }
-+
-+
-+ /* Testing area */
-+ #ifdef TORRIE_DEBUG
-+
-+ /* Get the selected filename and print it to the console */
-+ void file_ok_sel( GtkWidget *w,
-+ GtkFileSelection *fs )
-+ {
-+ g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
-+ }
-+
-+ void destroy( GtkWidget *widget,
-+ gpointer data )
-+ {
-+ gtk_main_quit ();
-+ }
-+
-+ int main( int argc,
-+ char *argv[] )
-+ {
-+ GtkWidget *filew;
-+
-+ gtk_init (&argc, &argv);
-+
-+ /* Create a new file selection widget */
-+ filew = gtk_file_selection_new ("Michael's Glorious File Selector");
-+ // gtk_file_selection_complete(GTK_FILE_SELECTION(filew),"bob");
-+
-+
-+ gtk_signal_connect (GTK_OBJECT (filew), "destroy",
-+ (GtkSignalFunc) destroy, &filew);
-+ /* Connect the ok_button to file_ok_sel function */
-+ gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
-+ "clicked", (GtkSignalFunc) file_ok_sel, filew );
-+
-+ /* Connect the cancel_button to destroy the widget */
-+ gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION
-+ (filew)->cancel_button),
-+ "clicked", (GtkSignalFunc) gtk_widget_destroy,
-+ GTK_OBJECT (filew));
-+
-+
-+ gtk_widget_show(filew);
-+
-+ /*
-+ g_print("%d",gtk_file_selection_match_mask("mask.c","m*.c"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.c","m???.c"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.c","m??*.c"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c???"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c*"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.cout","n*.c???"));
-+ g_print("%d",gtk_file_selection_match_mask("mask.c","[mn]*"));
-+ g_print("%d",gtk_file_selection_match_mask("COPYING","*.xpm"));
-+ */
-+ gtk_main ();
-+
-+ return 0;
-+ }
-+ /* example-end */
-+ #endif