pidgin/gtkutils.c

changeset 39930
411f3df51bcd
parent 39858
0f2be88d88e4
child 39932
1788230a5ef3
equal deleted inserted replaced
39929:51c9575bbdd2 39930:411f3df51bcd
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;
1898 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog) 1898 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog)
1899 { 1899 {
1900 char *filename, *current_folder; 1900 char *filename, *current_folder;
1901 1901
1902 if (response != GTK_RESPONSE_ACCEPT) { 1902 if (response != GTK_RESPONSE_ACCEPT) {
1903 if (response == GTK_RESPONSE_CANCEL) {
1904 gtk_widget_destroy(dialog->icon_filesel);
1905 }
1906 dialog->icon_filesel = NULL;
1907 if (dialog->callback) 1903 if (dialog->callback)
1908 dialog->callback(NULL, dialog->data); 1904 dialog->callback(NULL, dialog->data);
1909 g_free(dialog); 1905 g_free(dialog);
1910 return; 1906 return;
1911 } 1907 }
1918 } 1914 }
1919 1915
1920 1916
1921 if (dialog->callback) 1917 if (dialog->callback)
1922 dialog->callback(filename, dialog->data); 1918 dialog->callback(filename, dialog->data);
1923 gtk_widget_destroy(dialog->icon_filesel);
1924 g_free(filename); 1919 g_free(filename);
1925 g_free(dialog); 1920 g_free(dialog);
1926 } 1921 }
1927 1922
1928 1923
1962 g_free(basename); 1957 g_free(basename);
1963 g_free(size); 1958 g_free(size);
1964 g_free(markup); 1959 g_free(markup);
1965 } 1960 }
1966 1961
1967 1962 GtkFileChooserNative *
1968 GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) { 1963 pidgin_buddy_icon_chooser_new(GtkWindow *parent,
1964 void (*callback)(const char *, gpointer),
1965 gpointer data)
1966 {
1969 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1); 1967 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1);
1970 1968
1971 GtkWidget *vbox; 1969 GtkWidget *vbox;
1972 const char *current_folder; 1970 const char *current_folder;
1973 1971
1974 dialog->callback = callback; 1972 dialog->callback = callback;
1975 dialog->data = data; 1973 dialog->data = data;
1976 1974
1977 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder"); 1975 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
1978 1976
1979 dialog->icon_filesel = gtk_file_chooser_dialog_new(_("Buddy Icon"), 1977 dialog->icon_filesel = gtk_file_chooser_native_new(
1980 parent, 1978 _("Buddy Icon"), parent, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Open"),
1981 GTK_FILE_CHOOSER_ACTION_OPEN, 1979 _("_Cancel"));
1982 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1983 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
1984 NULL);
1985 gtk_dialog_set_default_response(GTK_DIALOG(dialog->icon_filesel), GTK_RESPONSE_ACCEPT);
1986 if ((current_folder != NULL) && (*current_folder != '\0')) 1980 if ((current_folder != NULL) && (*current_folder != '\0'))
1987 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel), 1981 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel),
1988 current_folder); 1982 current_folder);
1989 1983
1990 dialog->icon_preview = gtk_image_new(); 1984 dialog->icon_preview = gtk_image_new();
2003 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview", 1997 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview",
2004 G_CALLBACK(icon_preview_change_cb), dialog); 1998 G_CALLBACK(icon_preview_change_cb), dialog);
2005 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response", 1999 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response",
2006 G_CALLBACK(icon_filesel_choose_cb), dialog); 2000 G_CALLBACK(icon_filesel_choose_cb), dialog);
2007 icon_preview_change_cb(NULL, dialog); 2001 icon_preview_change_cb(NULL, dialog);
2008
2009 #ifdef _WIN32
2010 g_signal_connect(G_OBJECT(dialog->icon_filesel), "show",
2011 G_CALLBACK(winpidgin_ensure_onscreen), dialog->icon_filesel);
2012 #endif
2013 2002
2014 return dialog->icon_filesel; 2003 return dialog->icon_filesel;
2015 } 2004 }
2016 2005
2017 /* 2006 /*

mercurial