| 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 } |
| 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 /* |