pidgin/gtkutils.c

changeset 39932
1788230a5ef3
parent 39922
113b93e2bd2a
parent 39930
411f3df51bcd
child 39946
f1b741397c35
child 39953
10db0a477198
equal deleted inserted replaced
39927:691b13b22239 39932:1788230a5ef3
106 106
107 GtkListStore *store; 107 GtkListStore *store;
108 } PidginCompletionData; 108 } PidginCompletionData;
109 109
110 struct _icon_chooser { 110 struct _icon_chooser {
111 GtkWidget *icon_filesel; 111 GtkFileChooserNative *icon_filesel;
112 GtkWidget *icon_preview; 112 GtkWidget *icon_preview;
113 GtkWidget *icon_text; 113 GtkWidget *icon_text;
114 114
115 void (*callback)(const char*,gpointer); 115 void (*callback)(const char*,gpointer);
116 gpointer data; 116 gpointer data;
1891 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog) 1891 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog)
1892 { 1892 {
1893 char *filename, *current_folder; 1893 char *filename, *current_folder;
1894 1894
1895 if (response != GTK_RESPONSE_ACCEPT) { 1895 if (response != GTK_RESPONSE_ACCEPT) {
1896 if (response == GTK_RESPONSE_CANCEL) {
1897 gtk_widget_destroy(dialog->icon_filesel);
1898 }
1899 dialog->icon_filesel = NULL;
1900 if (dialog->callback) 1896 if (dialog->callback)
1901 dialog->callback(NULL, dialog->data); 1897 dialog->callback(NULL, dialog->data);
1902 g_free(dialog); 1898 g_free(dialog);
1903 return; 1899 return;
1904 } 1900 }
1911 } 1907 }
1912 1908
1913 1909
1914 if (dialog->callback) 1910 if (dialog->callback)
1915 dialog->callback(filename, dialog->data); 1911 dialog->callback(filename, dialog->data);
1916 gtk_widget_destroy(dialog->icon_filesel);
1917 g_free(filename); 1912 g_free(filename);
1918 g_free(dialog); 1913 g_free(dialog);
1919 } 1914 }
1920 1915
1921 1916
1955 g_free(basename); 1950 g_free(basename);
1956 g_free(size); 1951 g_free(size);
1957 g_free(markup); 1952 g_free(markup);
1958 } 1953 }
1959 1954
1960 1955 GtkFileChooserNative *
1961 GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) { 1956 pidgin_buddy_icon_chooser_new(GtkWindow *parent,
1957 void (*callback)(const char *, gpointer),
1958 gpointer data)
1959 {
1962 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1); 1960 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1);
1963 1961
1964 GtkWidget *vbox; 1962 GtkWidget *vbox;
1965 const char *current_folder; 1963 const char *current_folder;
1966 1964
1967 dialog->callback = callback; 1965 dialog->callback = callback;
1968 dialog->data = data; 1966 dialog->data = data;
1969 1967
1970 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder"); 1968 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
1971 1969
1972 dialog->icon_filesel = gtk_file_chooser_dialog_new(_("Buddy Icon"), 1970 dialog->icon_filesel = gtk_file_chooser_native_new(
1973 parent, 1971 _("Buddy Icon"), parent, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Open"),
1974 GTK_FILE_CHOOSER_ACTION_OPEN, 1972 _("_Cancel"));
1975 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1976 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
1977 NULL);
1978 gtk_dialog_set_default_response(GTK_DIALOG(dialog->icon_filesel), GTK_RESPONSE_ACCEPT);
1979 if ((current_folder != NULL) && (*current_folder != '\0')) 1973 if ((current_folder != NULL) && (*current_folder != '\0'))
1980 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel), 1974 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel),
1981 current_folder); 1975 current_folder);
1982 1976
1983 dialog->icon_preview = gtk_image_new(); 1977 dialog->icon_preview = gtk_image_new();
1996 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview", 1990 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview",
1997 G_CALLBACK(icon_preview_change_cb), dialog); 1991 G_CALLBACK(icon_preview_change_cb), dialog);
1998 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response", 1992 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response",
1999 G_CALLBACK(icon_filesel_choose_cb), dialog); 1993 G_CALLBACK(icon_filesel_choose_cb), dialog);
2000 icon_preview_change_cb(NULL, dialog); 1994 icon_preview_change_cb(NULL, dialog);
2001
2002 #ifdef _WIN32
2003 g_signal_connect(G_OBJECT(dialog->icon_filesel), "show",
2004 G_CALLBACK(winpidgin_ensure_onscreen), dialog->icon_filesel);
2005 #endif
2006 1995
2007 return dialog->icon_filesel; 1996 return dialog->icon_filesel;
2008 } 1997 }
2009 1998
2010 /* 1999 /*

mercurial