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