changeset 15930:846a00760176

use file select dialog
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Mon, 26 Mar 2007 04:06:15 +0000
parents 9ac4e6b097d3
children f00f2e283ffb
files finch/gntrequest.c finch/libgnt/gntfilesel.c
diffstat 2 files changed, 12 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/finch/gntrequest.c	Mon Mar 26 03:58:42 2007 +0000
+++ b/finch/gntrequest.c	Mon Mar 26 04:06:15 2007 +0000
@@ -28,6 +28,7 @@
 #include <gntcheckbox.h>
 #include <gntcombobox.h>
 #include <gntentry.h>
+#include <gntfilesel.h>
 #include <gntlabel.h>
 #include <gntline.h>
 #include <gnttree.h>
@@ -39,7 +40,7 @@
 typedef struct
 {
 	void *user_data;
-	GntWidget *entry, *dialog;
+	GntWidget *dialog;
 	GCallback *cbs;
 } PurpleGntFileRequest;
 
@@ -549,8 +550,10 @@
 file_ok_cb(GntWidget *wid, gpointer fq)
 {
 	PurpleGntFileRequest *data = fq;
+	char *file = gnt_file_sel_get_selected_file(GNT_FILE_SEL(data->dialog));
 	if (data->cbs[0] != NULL)
-		((PurpleRequestFileCb)data->cbs[0])(data->user_data, gnt_entry_get_text(GNT_ENTRY(data->entry)));
+		((PurpleRequestFileCb)data->cbs[0])(data->user_data, file);
+	g_free(file);
 
 	purple_request_close(PURPLE_REQUEST_FILE, data->dialog);
 }
@@ -568,8 +571,8 @@
 				GCallback ok_cb, GCallback cancel_cb,
 				void *user_data)
 {
-	GntWidget *window = gnt_vbox_new(FALSE);
-	GntWidget *entry, *hbox, *button;
+	GntWidget *window = gnt_file_sel_new();
+	GntFileSel *sel = GNT_FILE_SEL(window);
 	PurpleGntFileRequest *data = g_new0(PurpleGntFileRequest, 1);
 
 	data->user_data = user_data;
@@ -577,31 +580,12 @@
 	data->cbs[0] = ok_cb;
 	data->cbs[1] = cancel_cb;
 	data->dialog = window;
-	data->entry = entry = gnt_entry_new(g_strconcat(purple_home_dir(), G_DIR_SEPARATOR_S, filename, NULL));
-	gnt_widget_set_size(entry, 30, 1);
-	gnt_box_set_toplevel(GNT_BOX(window), TRUE);
 	gnt_box_set_title(GNT_BOX(window), title ? title : (savedialog ? _("Save File...") : _("Open File...")));
-#if 0
-	/* After the string freeze */
-	gnt_box_add_widget(GNT_BOX(window), gnt_label_new(_("Please enter a full path for a file")));
-#endif
-	gnt_box_add_widget(GNT_BOX(window), entry);
-
-	hbox = gnt_hbox_new(TRUE);
-	gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID);
-
-	button = gnt_button_new(_("Cancel"));
-	g_signal_connect(G_OBJECT(button), "activate",
-		G_CALLBACK(file_cancel_cb), data);
-	gnt_box_add_widget(GNT_BOX(hbox), button);
-
-	button = gnt_button_new(_("OK"));
-	g_signal_connect(G_OBJECT(button), "activate",
-		G_CALLBACK(file_ok_cb), data);
-	gnt_box_add_widget(GNT_BOX(hbox), button);
-
-	gnt_box_add_widget(GNT_BOX(window), hbox);
-
+	gnt_file_sel_set_current_location(sel, purple_home_dir());  /* XXX: */
+	g_signal_connect(G_OBJECT(sel->cancel), "activate",
+			G_CALLBACK(file_cancel_cb), data);
+	g_signal_connect(G_OBJECT(sel->select), "activate",
+			G_CALLBACK(file_ok_cb), data);
 	g_signal_connect_swapped(G_OBJECT(window), "destroy",
 			G_CALLBACK(file_request_destroy), data);
 
--- a/finch/libgnt/gntfilesel.c	Mon Mar 26 03:58:42 2007 +0000
+++ b/finch/libgnt/gntfilesel.c	Mon Mar 26 04:06:15 2007 +0000
@@ -492,27 +492,3 @@
 	return list;
 }
 
-void gnt_file_sel_set_multi_select(GntFileSel *sel, gboolean set)
-{
-	sel->multiselect = set;
-}
-
-GList *gnt_file_sel_get_selected_multi_files(GntFileSel *sel)
-{
-	GList *list = NULL, *iter;
-	char *str = gnt_file_sel_get_selected_file(sel);
-
-	for (iter = sel->tags; iter; iter = iter->next) {
-		list = g_list_prepend(list, g_strdup(iter->data));
-		if (g_utf8_collate(str, iter->data)) {
-			g_free(str);
-			str = NULL;
-		}
-	}
-	if (str)
-		list = g_list_prepend(list, str);
-	list = g_list_reverse(list);
-	return list;
-}
-
-