pidgin/gtksmiley-manager.c

Thu, 29 Jun 2017 15:33:29 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Thu, 29 Jun 2017 15:33:29 -0500
changeset 38578
c81f0a8301fe
parent 38358
30ba44276e74
child 38583
148773196bc1
permissions
-rw-r--r--

gtkidle: Port XScreensaver to DBus ScreenSaver interfaces

Modern Linux desktops use one of 3 DBus interfaces for querying if
the screensaver is currently active. There's a FreeDesktop one, a
GNOME one, and a KDE one. Rather than querying XScreensaver, which
may not be available, such as with Wayland, this patch ports Pidgin's
idle checking function to use these modern DBus interfaces.

Because Gio includes built-in DBus API, this patch also drops the
guards around pidgin_get_time_idle(), which also re-enables the
Win32 code which wasn't enabled with the previous guards.

22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /*
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * pidgin
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 *
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 * source distribution.
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 *
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 *
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 *
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
35718
83486b5d34ab Drop PidginSmiley, rename gtksmiley to gtksmiley-manager
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35714
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 */
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25 #include "debug.h"
34225
3bba206f27f6 HTTP: migrate purple_util_fetch_url to new API for Pidgin UI
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33424
diff changeset
26 #include "http.h"
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include "notify.h"
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 #include "smiley.h"
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
29 #include "smiley-custom.h"
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
30 #include "smiley-list.h"
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31
35718
83486b5d34ab Drop PidginSmiley, rename gtksmiley to gtksmiley-manager
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35714
diff changeset
32 #include "gtksmiley-manager.h"
22898
206c1f2a1fd7 Patch from Masca to use the buddy-icon selector to select a custom
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22655
diff changeset
33 #include "gtkutils.h"
206c1f2a1fd7 Patch from Masca to use the buddy-icon selector to select a custom
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22655
diff changeset
34 #include "pidginstock.h"
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
36 #include "gtk3compat.h"
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
37
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 typedef struct
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 {
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
40 PurpleSmiley *smiley;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
41
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
42 gchar *filename;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
43 PurpleImage *new_image;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
44
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
45 GtkDialog *window;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
46 GtkImage *thumbnail;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
47 GtkEntry *shortcut;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
48 } SmileyEditDialog;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
49
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
50 typedef struct
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
51 {
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
52 GtkDialog *window;
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
53 GtkListStore *model;
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
54 GtkTreeView *tree;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55
34225
3bba206f27f6 HTTP: migrate purple_util_fetch_url to new API for Pidgin UI
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33424
diff changeset
56 PurpleHttpConnection *running_request;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 } SmileyManager;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59 enum
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 {
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
61 SMILEY_LIST_MODEL_ICON,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
62 SMILEY_LIST_MODEL_SHORTCUT,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
63 SMILEY_LIST_MODEL_PURPLESMILEY,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
64 SMILEY_LIST_MODEL_N_COL
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 };
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
67 enum
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
68 {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
69 PIDGIN_RESPONSE_MODIFY
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
70 };
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
72 static SmileyManager *smiley_manager = NULL;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
73
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
75 edit_dialog_update_buttons(SmileyEditDialog *edit_dialog);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
76
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
77 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
78 manager_list_fill(SmileyManager *manager);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
79
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
80
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
81 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
82 * Custom smiley edit dialog image.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
83 ******************************************************************************/
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
84
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
85 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
86 edit_dialog_image_update_thumb(SmileyEditDialog *edit_dialog)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87 {
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
88 GdkPixbuf *pixbuf = NULL;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
89
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
90 if (edit_dialog->new_image) {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
91 pixbuf = pidgin_pixbuf_from_image(edit_dialog->new_image);
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
92 } else if (edit_dialog->filename) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
93 pixbuf = pidgin_pixbuf_new_from_file(edit_dialog->filename);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
94 if (!pixbuf) {
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
95 g_free(edit_dialog->filename);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
96 edit_dialog->filename = NULL;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
97 }
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
98 }
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
99
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
100 if (pixbuf) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
101 pixbuf = pidgin_pixbuf_scale_down(pixbuf, 64, 64,
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
102 GDK_INTERP_HYPER, TRUE);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
103 }
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
104
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
105 if (!pixbuf) {
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
106 GtkIconSize icon_size =
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
107 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
108 pixbuf = gtk_widget_render_icon(GTK_WIDGET(edit_dialog->window),
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
109 PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, icon_size,
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
110 "PidginSmileyManager");
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
111 }
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
112 g_return_if_fail(pixbuf != NULL);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
113
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
114 gtk_image_set_from_pixbuf(GTK_IMAGE(edit_dialog->thumbnail), pixbuf);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
115
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
116 g_object_unref(G_OBJECT(pixbuf));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
119 static gboolean
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
120 edit_dialog_set_image(SmileyEditDialog *edit_dialog, PurpleImage *image)
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
121 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
122 GdkPixbuf *tmp = NULL;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
123
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
124 if (edit_dialog->new_image)
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
125 g_object_unref(edit_dialog->new_image);
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
126
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
127 if (edit_dialog->smiley) {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
128 g_object_set_data(G_OBJECT(edit_dialog->smiley),
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
129 "pidgin-smiley-manager-list-thumb", NULL);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
130 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
131
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
132 /* check, if image is valid */
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
133 if (image)
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
134 tmp = pidgin_pixbuf_from_image(image);
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
135 if (tmp)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
136 g_object_unref(tmp);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
137 else {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
138 g_object_unref(image);
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
139 image = NULL;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
140 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
141
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
142 edit_dialog->new_image = image;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
143
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
144 edit_dialog_image_update_thumb(edit_dialog);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
145 edit_dialog_update_buttons(edit_dialog);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
146
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
147 return (image != NULL);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
148 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
149
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
150 static void
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
151 edit_dialog_set_shortcut(SmileyEditDialog *edit_dialog,
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
152 const gchar *shortcut)
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
153 {
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
154 gtk_entry_set_text(edit_dialog->shortcut, shortcut ? shortcut : "");
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
155 }
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
156
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
157 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
158 edit_dialog_image_choosen(const char *filename, gpointer _edit_dialog)
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
159 {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
160 PurpleImage *image;
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
161 SmileyEditDialog *edit_dialog = _edit_dialog;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
162
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
163 if (!filename)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
164 return;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
165
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
166 image = purple_image_new_from_file(filename, NULL);
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
167 if (!image)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
168 return;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
169
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
170 g_free(edit_dialog->filename);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
171 edit_dialog->filename = NULL;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
172
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
173 if (!edit_dialog_set_image(edit_dialog, image))
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
174 return;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
175 edit_dialog->filename = g_strdup(filename);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
176
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
177 gtk_widget_grab_focus(GTK_WIDGET(edit_dialog->shortcut));
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
178 }
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
179
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
180 static void
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
181 edit_dialog_image_choose(GtkWidget *widget, gpointer _edit_dialog)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
182 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
183 GtkWidget *file_chooser;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
184 file_chooser = pidgin_buddy_icon_chooser_new(
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
185 GTK_WINDOW(gtk_widget_get_toplevel(widget)),
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
186 edit_dialog_image_choosen, _edit_dialog);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
187 gtk_window_set_title(GTK_WINDOW(file_chooser), _("Custom Smiley"));
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
188 gtk_window_set_role(GTK_WINDOW(file_chooser),
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
189 "file-selector-custom-smiley");
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
190 gtk_widget_show_all(file_chooser);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
191 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
192
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
193
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
194 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
195 * Custom smiley edit dialog.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
196 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
197
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
198 static void
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
199 edit_dialog_destroy(GtkWidget *window, gpointer _edit_dialog)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
200 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
201 SmileyEditDialog *edit_dialog = _edit_dialog;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
202
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
203 if (edit_dialog->smiley) {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
204 g_object_set_data(G_OBJECT(edit_dialog->smiley),
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
205 "pidgin-smiley-manager-edit-dialog", NULL);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
206 g_object_unref(edit_dialog->smiley);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
207 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
208
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
209 if (edit_dialog->new_image)
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
210 g_object_unref(edit_dialog->new_image);
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
211
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
212 g_free(edit_dialog->filename);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
213 g_free(edit_dialog);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
214 }
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
215
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
216 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
217 edit_dialog_save(SmileyEditDialog *edit_dialog)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218 {
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
219 const gchar *shortcut;
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
220 PurpleSmiley *existing_smiley;
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
221 gboolean shortcut_changed, image_changed;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
223 shortcut = gtk_entry_get_text(edit_dialog->shortcut);
24155
0747d1bba8a7 Do not allow setting empty shortcut for a custom smiley.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24102
diff changeset
224
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
225 existing_smiley = purple_smiley_list_get_by_shortcut(
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
226 purple_smiley_custom_get_list(), shortcut);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
227
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
228 if (existing_smiley && existing_smiley != edit_dialog->smiley) {
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
229 gchar *msg = g_strdup_printf(
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
230 _("A custom smiley for '%s' already exists. "
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
231 "Please use a different shortcut."), shortcut);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
232 purple_notify_error(edit_dialog, _("Custom Smiley"),
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
233 _("Duplicate Shortcut"), msg, NULL);
25878
d6ef15a065c6 Use the shortcut in the error message to give people more context
Mark Doliner <markdoliner@pidgin.im>
parents: 25877
diff changeset
234 g_free(msg);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 return;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
237
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
238 if (edit_dialog->smiley == NULL)
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
239 shortcut_changed = image_changed = TRUE;
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
240 else {
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38259 38285
diff changeset
241 shortcut_changed = purple_strequal(purple_smiley_get_shortcut(
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38259 38285
diff changeset
242 edit_dialog->smiley), shortcut);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
243 image_changed = (edit_dialog->new_image != NULL);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
244 }
25876
6dafeb78324a Try to improve the wording in our custom smiley manager
Mark Doliner <markdoliner@pidgin.im>
parents: 25390
diff changeset
245
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
246 if (!shortcut_changed && !image_changed) {
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
247 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
248 return;
22898
206c1f2a1fd7 Patch from Masca to use the buddy-icon selector to select a custom
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22655
diff changeset
249 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
251 if (edit_dialog->new_image == NULL) {
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
252 edit_dialog->new_image = PURPLE_IMAGE(edit_dialog->smiley);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
253 g_return_if_fail(edit_dialog->new_image);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
254 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
255
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
256 if (edit_dialog->smiley)
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
257 purple_smiley_custom_remove(edit_dialog->smiley);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
258 purple_smiley_custom_add(edit_dialog->new_image, shortcut);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
259
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
260 if (smiley_manager)
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
261 manager_list_fill(smiley_manager);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
262
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
263 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
264 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
265
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
266 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
267 edit_dialog_update_buttons(SmileyEditDialog *edit_dialog)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
268 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
269 gboolean shortcut_ok, image_ok;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
270
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
271 shortcut_ok = (gtk_entry_get_text_length(edit_dialog->shortcut) > 0);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
272 image_ok = (edit_dialog->filename || edit_dialog->new_image);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
273
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
274 gtk_dialog_set_response_sensitive(edit_dialog->window,
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
275 GTK_RESPONSE_ACCEPT, shortcut_ok && image_ok);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
276 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
277
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
278 static void
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
279 edit_dialog_shortcut_changed(GtkEditable *shortcut, gpointer _edit_dialog)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
280 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
281 SmileyEditDialog *edit_dialog = _edit_dialog;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
282
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
283 edit_dialog_update_buttons(edit_dialog);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
284 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
285
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
286 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
287 edit_dialog_response(GtkDialog *window, gint response_id,
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
288 gpointer _edit_dialog)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
289 {
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
290 SmileyEditDialog *edit_dialog = _edit_dialog;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
291
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
292 switch (response_id) {
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
293 case GTK_RESPONSE_ACCEPT:
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
294 edit_dialog_save(edit_dialog);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
295 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 case GTK_RESPONSE_DELETE_EVENT:
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
297 case GTK_RESPONSE_CANCEL:
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
298 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
299 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
300 default:
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
301 g_warn_if_reached();
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
302 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
303 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
304
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
305 static SmileyEditDialog *
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
306 edit_dialog_show(SmileyManager *manager, PurpleSmiley *smiley)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 {
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
308 SmileyEditDialog *edit_dialog;
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
309 GtkWidget *vbox, *hbox;
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
310 GtkLabel *label;
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
311 GtkButton *filech;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
312
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
313 if (smiley) {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
314 edit_dialog = g_object_get_data(G_OBJECT(smiley),
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
315 "pidgin-smiley-manager-edit-dialog");
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
316 if (edit_dialog) {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
317 gtk_window_present(GTK_WINDOW(edit_dialog->window));
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
318 return edit_dialog;
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
319 }
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
320 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
321
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
322 edit_dialog = g_new0(SmileyEditDialog, 1);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
324 edit_dialog->window = GTK_DIALOG(gtk_dialog_new_with_buttons(
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
325 smiley ? _("Edit Smiley") : _("Add Smiley"),
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
326 manager ? GTK_WINDOW(manager->window) : NULL,
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
327 GTK_DIALOG_DESTROY_WITH_PARENT,
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
328 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
329 smiley ? GTK_STOCK_SAVE : GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
330 NULL));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
331 gtk_dialog_set_default_response(
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
332 edit_dialog->window, GTK_RESPONSE_ACCEPT);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
334 if (smiley) {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
335 edit_dialog->smiley = smiley;
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
336 g_object_set_data(G_OBJECT(smiley),
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
337 "pidgin-smiley-manager-edit-dialog", edit_dialog);
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
338 g_object_ref(smiley);
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
339 }
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
340
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
341
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
342 /* The vbox */
33412
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
343 vbox = gtk_grid_new();
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
344 gtk_grid_set_row_spacing(GTK_GRID(vbox), PIDGIN_HIG_BORDER);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
345 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
346 edit_dialog->window)), vbox);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
347 gtk_widget_show(vbox);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
348
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
349 /* The hbox */
33412
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
350 hbox = gtk_grid_new();
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
351 gtk_grid_set_column_spacing(GTK_GRID(hbox), PIDGIN_HIG_BORDER);
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
352 gtk_grid_attach(GTK_GRID(vbox), hbox, 0, 0, 1, 1);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
353
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
354 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("_Image:")));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
355 gtk_grid_attach(GTK_GRID(hbox), GTK_WIDGET(label), 0, 0, 1, 1);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
356 gtk_widget_show(GTK_WIDGET(label));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
357
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
358 filech = GTK_BUTTON(gtk_button_new());
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
359 gtk_grid_attach_next_to(GTK_GRID(hbox), GTK_WIDGET(filech), NULL,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
360 GTK_POS_RIGHT, 1, 1);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
361 pidgin_set_accessible_label(GTK_WIDGET(filech), label);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
362
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
363 edit_dialog->thumbnail = GTK_IMAGE(gtk_image_new());
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
364 gtk_container_add(GTK_CONTAINER(filech),
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
365 GTK_WIDGET(edit_dialog->thumbnail));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
366
22898
206c1f2a1fd7 Patch from Masca to use the buddy-icon selector to select a custom
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22655
diff changeset
367 gtk_widget_show_all(hbox);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
368
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
369 /* info */
33412
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
370 hbox = gtk_grid_new();
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
371 gtk_grid_set_column_spacing(GTK_GRID(hbox), PIDGIN_HIG_BORDER);
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
372
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
373 gtk_grid_attach_next_to(GTK_GRID(vbox), hbox, NULL,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
374 GTK_POS_BOTTOM, 1, 1);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
375
25876
6dafeb78324a Try to improve the wording in our custom smiley manager
Mark Doliner <markdoliner@pidgin.im>
parents: 25390
diff changeset
376 /* Shortcut text */
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
377 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("S_hortcut text:")));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
378 gtk_grid_attach(GTK_GRID(hbox), GTK_WIDGET(label), 0, 0, 1, 1);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
379 gtk_widget_show(GTK_WIDGET(label));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
380
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
381 edit_dialog->shortcut = GTK_ENTRY(gtk_entry_new());
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
382 gtk_entry_set_activates_default(edit_dialog->shortcut, TRUE);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
383 pidgin_set_accessible_label(GTK_WIDGET(edit_dialog->shortcut), label);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
384
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
385 gtk_grid_attach_next_to(GTK_GRID(hbox),
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
386 GTK_WIDGET(edit_dialog->shortcut), NULL, GTK_POS_RIGHT, 1, 1);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
387
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
388 gtk_widget_show(GTK_WIDGET(edit_dialog->shortcut));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
389 gtk_widget_show(hbox);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
390 gtk_widget_show(GTK_WIDGET(edit_dialog->window));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
391
27498
67b5d40e47c8 Automatically enable and disable the Add/Save button in the PidginSmiley
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27259
diff changeset
392 if (smiley) {
35839
a7f91bd51911 Drop purple_smiley_get_path in favor of purple_image_get_path (or don't use it at all)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35812
diff changeset
393 edit_dialog->filename = g_strdup(purple_image_get_path(
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
394 PURPLE_IMAGE(smiley)));
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
395 gtk_entry_set_text(edit_dialog->shortcut,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
396 purple_smiley_get_shortcut(smiley));
27498
67b5d40e47c8 Automatically enable and disable the Add/Save button in the PidginSmiley
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27259
diff changeset
397 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
398
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
399 edit_dialog_image_update_thumb(edit_dialog);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
400 edit_dialog_update_buttons(edit_dialog);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
401
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
402 g_signal_connect(edit_dialog->window, "response",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
403 G_CALLBACK(edit_dialog_response), edit_dialog);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
404 g_signal_connect(filech, "clicked",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
405 G_CALLBACK(edit_dialog_image_choose), edit_dialog);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
406 g_signal_connect(edit_dialog->shortcut, "changed",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
407 G_CALLBACK(edit_dialog_shortcut_changed), edit_dialog);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
408
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
409 g_signal_connect(edit_dialog->window, "destroy",
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
410 G_CALLBACK(edit_dialog_destroy), edit_dialog);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
411 g_signal_connect(edit_dialog->window, "destroy",
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
412 G_CALLBACK(purple_notify_close_with_handle), edit_dialog);
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
413
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
414 return edit_dialog;
23304
3aba02105818 Modified patch from malu to "Add context menu alternative to add received
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23020
diff changeset
415 }
3aba02105818 Modified patch from malu to "Add context menu alternative to add received
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23020
diff changeset
416
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
417 void
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
418 pidgin_smiley_manager_add(PurpleImage *image, const gchar *shortcut)
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
419 {
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
420 SmileyEditDialog *edit_dialog;
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
421
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
422 g_return_if_fail(image != NULL);
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
423
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
424 g_object_ref(image);
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
425
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
426 edit_dialog = edit_dialog_show(NULL, NULL);
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
427 edit_dialog_set_shortcut(edit_dialog, shortcut);
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
428 if (!edit_dialog_set_image(edit_dialog, image))
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
429 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
430 }
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
431
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
432
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
433 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
434 * Custom smiley list Drag-and-drop support.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
435 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
436
35718
83486b5d34ab Drop PidginSmiley, rename gtksmiley to gtksmiley-manager
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35714
diff changeset
437 static void
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
438 smiley_list_dnd_url_got(PurpleHttpConnection *http_conn,
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
439 PurpleHttpResponse *response, gpointer _manager)
23304
3aba02105818 Modified patch from malu to "Add context menu alternative to add received
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23020
diff changeset
440 {
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
441 SmileyManager *manager = _manager;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
442 SmileyEditDialog *edit_dialog;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
443 PurpleImage *image;
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
444 const gchar *image_data;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
445 size_t image_size;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
446
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
447 g_return_if_fail(manager == smiley_manager);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
448 g_return_if_fail(manager->running_request == http_conn);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
449 manager->running_request = NULL;
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
450
34287
6cd0c77b1f6a HTTP: successful is spelled with one l
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34233
diff changeset
451 if (!purple_http_response_is_successful(response))
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
452 return;
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
453
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
454 image_data = purple_http_response_get_data(response, &image_size);
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
455 image = purple_image_new_from_data(g_memdup(image_data, image_size),
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
456 image_size);
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31321
diff changeset
457 if (!image)
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
458 return;
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
459
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
460 edit_dialog = edit_dialog_show(manager, NULL);
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
461 if (!edit_dialog_set_image(edit_dialog, image))
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
462 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
463 }
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
464
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
465 static void
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
466 smiley_list_dnd_recv(GtkWidget *widget, GdkDragContext *dc, gint x, gint y,
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
467 GtkSelectionData *sd, guint info, guint time, gpointer _manager)
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
468 {
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
469 SmileyManager *manager = _manager;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
470 gchar content[1024];
33158
ad941796372e Remove some added trailing spaces.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33141
diff changeset
471
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
472 /* We don't need anything, that is not 8-bit per element (char). */
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
473 if (gtk_selection_data_get_format(sd) != 8) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
474 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
475 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
476 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
477
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
478 if (gtk_selection_data_get_length(sd) <= 0) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
479 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
480 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
481 }
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
482
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
483 memset(&content, 0, sizeof(content));
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
484 memcpy(&content, gtk_selection_data_get_data(sd),
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
485 MIN((guint)gtk_selection_data_get_length(sd), sizeof(content)));
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
486 g_strstrip(content);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
487 if (content[0] == '\0') {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
488 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
489 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
490 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
491
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
492 /* Well, it looks like the drag event was cool.
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
493 * Let's do something with it */
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
494
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
495 if (purple_str_has_caseprefix(content, "file://")) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
496 SmileyEditDialog *edit_dialog;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
497 PurpleImage *image;
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
498 gchar *filename;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
499
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
500 filename = g_filename_from_uri(content, NULL, NULL);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
501 if (!filename || !g_file_test(filename, G_FILE_TEST_EXISTS)) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
502 purple_debug_warning("gtksmiley-manager",
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
503 "dropped file does not exists");
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
504 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
505 return;
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
506 }
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
507
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
508 image = purple_image_new_from_file(filename, NULL);
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
509 if (!image) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
510 purple_debug_warning("gtksmiley-manager",
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
511 "dropped file is not a valid image");
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
512 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
513 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
514 }
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
515 edit_dialog = edit_dialog_show(manager, NULL);
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
516 if (!edit_dialog_set_image(edit_dialog, image)) {
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
517 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
518 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
519 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
520 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
521
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
522 gtk_drag_finish(dc, TRUE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
523 return;
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
524 }
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
525
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
526 if (purple_str_has_caseprefix(content, "http://") ||
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
527 purple_str_has_caseprefix(content, "https://"))
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
528 {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
529 purple_http_conn_cancel(smiley_manager->
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
530 running_request);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
531 smiley_manager->running_request = purple_http_get(NULL,
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
532 smiley_list_dnd_url_got, manager, content);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
533
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
534 gtk_drag_finish(dc, TRUE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
535 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
536 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
537
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
538 gtk_drag_finish(dc, FALSE, FALSE, time);
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
539 }
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
540
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
541 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
542 * Custom smiley list.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
543 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
544
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
545 static void
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
546 smiley_list_selected(GtkTreeSelection *sel, gpointer _manager)
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
547 {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
548 SmileyManager *manager = _manager;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
549 gboolean sens;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
550
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
551 sens = (gtk_tree_selection_count_selected_rows(sel) > 0);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
552
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
553 gtk_dialog_set_response_sensitive(manager->window,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
554 GTK_RESPONSE_NO, sens);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
555 gtk_dialog_set_response_sensitive(manager->window,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
556 PIDGIN_RESPONSE_MODIFY, sens);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
557 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
558
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
559 static void
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
560 smiley_list_activated(GtkTreeView *tree, GtkTreePath *path,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
561 GtkTreeViewColumn *col, gpointer _manager)
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
562 {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
563 SmileyManager *manager = _manager;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
564 GtkTreeIter iter;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
565 PurpleSmiley *smiley = NULL;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
566
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
567 if (!gtk_tree_model_get_iter(
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
568 GTK_TREE_MODEL(manager->model), &iter, path))
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
569 {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
570 return;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
571 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
572
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
573 gtk_tree_model_get(GTK_TREE_MODEL(manager->model), &iter,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
574 SMILEY_LIST_MODEL_PURPLESMILEY, &smiley, -1);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
575 g_return_if_fail(PURPLE_IS_SMILEY(smiley));
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
576
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
577 edit_dialog_show(manager, smiley);
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
578 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
579
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
580 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
581 manager_list_add(SmileyManager *manager, PurpleSmiley *smiley)
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
582 {
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
583 GdkPixbuf *smiley_image;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
584 GtkTreeIter iter;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
585
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
586 smiley_image = g_object_get_data(G_OBJECT(smiley),
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
587 "pidgin-smiley-manager-list-thumb");
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
588 if (smiley_image == NULL) {
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
589 smiley_image = pidgin_pixbuf_from_image(PURPLE_IMAGE(smiley));
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
590 smiley_image = pidgin_pixbuf_scale_down(smiley_image,
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
591 22, 22, GDK_INTERP_BILINEAR, TRUE);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
592 g_object_set_data_full(G_OBJECT(smiley),
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
593 "pidgin-smiley-manager-list-thumb",
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
594 smiley_image, g_object_unref);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
595 }
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
596
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
597 gtk_list_store_append(manager->model, &iter);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
598 gtk_list_store_set(manager->model, &iter,
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
599 SMILEY_LIST_MODEL_ICON, smiley_image,
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
600 SMILEY_LIST_MODEL_SHORTCUT, purple_smiley_get_shortcut(smiley),
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
601 SMILEY_LIST_MODEL_PURPLESMILEY, smiley,
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
602 -1);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
603 }
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
604
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
605 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
606 manager_list_fill(SmileyManager *manager)
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
607 {
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
608 GList *custom_smileys, *it;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
609 gtk_list_store_clear(manager->model);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
610
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35727
diff changeset
611 custom_smileys = purple_smiley_list_get_all(
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
612 purple_smiley_custom_get_list());
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
613
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
614 for (it = custom_smileys; it; it = g_list_next(it)) {
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
615 PurpleSmiley *smiley = it->data;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
616
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
617 manager_list_add(manager, smiley);
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
618 }
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
619 g_list_free(custom_smileys);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
620 }
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
621
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
622 static GtkWidget *
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
623 manager_list_create(SmileyManager *manager)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
624 {
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
625 GtkTreeView *tree;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
626 GtkTreeSelection *sel;
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
627 GtkCellRenderer *cellrend;
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
628 GtkTreeViewColumn *column;
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
629 GtkTargetEntry targets[3] = {
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
630 {"text/plain", 0, 0},
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
631 {"text/uri-list", 0, 1},
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
632 {"STRING", 0, 2}
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
633 };
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
634
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
635 manager->model = gtk_list_store_new(SMILEY_LIST_MODEL_N_COL,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
636 GDK_TYPE_PIXBUF, /* icon */
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
637 G_TYPE_STRING, /* shortcut */
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
638 G_TYPE_OBJECT /* PurpleSmiley */
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
639 );
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
640
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
641 manager->tree = tree = GTK_TREE_VIEW(gtk_tree_view_new_with_model(
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
642 GTK_TREE_MODEL(manager->model)));
22898
206c1f2a1fd7 Patch from Masca to use the buddy-icon selector to select a custom
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22655
diff changeset
643
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
644 gtk_tree_view_set_rules_hint(tree, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
645 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(manager->model),
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
646 SMILEY_LIST_MODEL_SHORTCUT, GTK_SORT_ASCENDING);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
647
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
648 g_object_unref(manager->model);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
649
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
650 sel = gtk_tree_view_get_selection(tree);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
651 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
652
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
653 g_signal_connect(sel, "changed",
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
654 G_CALLBACK(smiley_list_selected), manager);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
655 g_signal_connect(tree, "row-activated",
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
656 G_CALLBACK(smiley_list_activated), manager);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
657
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
658 gtk_drag_dest_set(GTK_WIDGET(tree), GTK_DEST_DEFAULT_MOTION |
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
659 GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
660 targets, G_N_ELEMENTS(targets),
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
661 GDK_ACTION_COPY | GDK_ACTION_MOVE);
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
662 g_signal_connect(tree, "drag-data-received",
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
663 G_CALLBACK(smiley_list_dnd_recv), manager);
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
664
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
665 gtk_widget_show(GTK_WIDGET(tree));
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
666
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
667 /* setting up columns */
29315
bc075251b3fd Add support for dropping an image on the Custom Smiley window to add that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29314
diff changeset
668
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
669 column = gtk_tree_view_column_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
670 gtk_tree_view_column_set_title(column, _("Smiley"));
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
671 gtk_tree_view_column_set_resizable(column, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
672 gtk_tree_view_append_column(tree, column);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
673 cellrend = gtk_cell_renderer_pixbuf_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
674 gtk_tree_view_column_pack_start(column, cellrend, FALSE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
675 gtk_tree_view_column_add_attribute(column, cellrend,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
676 "pixbuf", SMILEY_LIST_MODEL_ICON);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
677
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
678 column = gtk_tree_view_column_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
679 gtk_tree_view_column_set_title(column, _("Shortcut Text"));
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
680 gtk_tree_view_column_set_resizable(column, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
681 gtk_tree_view_append_column(tree, column);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
682 cellrend = gtk_cell_renderer_text_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
683 gtk_tree_view_column_pack_start(column, cellrend, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
684 gtk_tree_view_column_add_attribute(column, cellrend,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
685 "text", SMILEY_LIST_MODEL_SHORTCUT);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
686
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
687 manager_list_fill(manager);
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
688
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
689 return pidgin_make_scrollable(GTK_WIDGET(tree), GTK_POLICY_AUTOMATIC,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
690 GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, -1);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
691 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
692
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
693 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
694 * Custom smiley manager window.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
695 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
696
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
697 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
698 manager_select_cb(GtkWidget *widget, gint resp, SmileyManager *manager)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
699 {
23020
9ff3135a6478 Modified patch from malu to add an 'Edit' button in the smiley manager
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23017
diff changeset
700 GtkTreeSelection *selection = NULL;
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
701 GList *selected_rows, *selected_smileys = NULL, *it;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
702 GtkTreeModel *model = GTK_TREE_MODEL(manager->model);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
703
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
704 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(manager->tree));
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
705 selected_rows = gtk_tree_selection_get_selected_rows(selection, NULL);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
706 for (it = selected_rows; it; it = g_list_next(it)) {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
707 GtkTreePath *path = it->data;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
708 GtkTreeIter iter;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
709 PurpleSmiley *smiley = NULL;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
710
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
711 if (!gtk_tree_model_get_iter(model, &iter, path))
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
712 continue;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
713
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
714 gtk_tree_model_get(model, &iter,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
715 SMILEY_LIST_MODEL_PURPLESMILEY, &smiley, -1);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
716 if (!smiley)
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
717 continue;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
718
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
719 selected_smileys = g_list_prepend(selected_smileys, smiley);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
720 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
721 g_list_free_full(selected_rows, (GDestroyNotify)gtk_tree_path_free);
23020
9ff3135a6478 Modified patch from malu to add an 'Edit' button in the smiley manager
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23017
diff changeset
722
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
723 switch (resp) {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
724 case GTK_RESPONSE_YES:
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
725 edit_dialog_show(manager, NULL);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
726 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
727 case GTK_RESPONSE_NO:
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35727
diff changeset
728 for (it = selected_smileys; it; it = g_list_next(it))
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35727
diff changeset
729 purple_smiley_custom_remove(it->data);
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
730 manager_list_fill(manager);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
731 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
732 case GTK_RESPONSE_DELETE_EVENT:
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
733 case GTK_RESPONSE_CLOSE:
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
734 gtk_widget_destroy(GTK_WIDGET(manager->window));
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
735 purple_http_conn_cancel(manager->running_request);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
736 g_free(manager);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
737 smiley_manager = NULL;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
738 break;
25390
02100938b030 Make dialogs that double as add and save dialogs indicate the current action
Etan Reisner <deryni@pidgin.im>
parents: 24847
diff changeset
739 case PIDGIN_RESPONSE_MODIFY:
35725
301fdb5e342e Cleanup pidgin_smiley_edit calls
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35724
diff changeset
740 for (it = selected_smileys; it; it = g_list_next(it))
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
741 edit_dialog_show(manager, it->data);
23020
9ff3135a6478 Modified patch from malu to add an 'Edit' button in the smiley manager
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23017
diff changeset
742 break;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
743 default:
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
744 g_warn_if_reached();
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
745 }
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
746
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
747 g_list_free(selected_smileys);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
748 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
749
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
750 void
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
751 pidgin_smiley_manager_show(void)
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
752 {
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
753 SmileyManager *manager;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
754 GtkDialog *win;
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
755 GtkWidget *sw, *vbox;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
756
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
757 if (smiley_manager) {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
758 gtk_window_present(GTK_WINDOW(smiley_manager->window));
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
759 return;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
760 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
761
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
762 manager = g_new0(SmileyManager, 1);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
763 smiley_manager = manager;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
764
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
765 manager->window = win = GTK_DIALOG(gtk_dialog_new_with_buttons(
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
766 _("Custom Smiley Manager"), NULL,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
767 GTK_DIALOG_DESTROY_WITH_PARENT,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
768 PIDGIN_STOCK_ADD, GTK_RESPONSE_YES,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
769 PIDGIN_STOCK_MODIFY, PIDGIN_RESPONSE_MODIFY,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
770 GTK_STOCK_DELETE, GTK_RESPONSE_NO,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
771 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
772 NULL));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
773
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
774 gtk_window_set_default_size(GTK_WINDOW(win), 50, 400);
23017
82f6abec236d Some little usability changes in the custom smiley dialog.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23013
diff changeset
775 gtk_window_set_role(GTK_WINDOW(win), "custom_smiley_manager");
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
776 gtk_dialog_set_response_sensitive(win, GTK_RESPONSE_NO, FALSE);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
777 gtk_dialog_set_response_sensitive(win, PIDGIN_RESPONSE_MODIFY, FALSE);
23304
3aba02105818 Modified patch from malu to "Add context menu alternative to add received
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23020
diff changeset
778
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
779 g_signal_connect(win, "response",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
780 G_CALLBACK(manager_select_cb), manager);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
781
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
782 /* The vbox */
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
783 vbox = gtk_dialog_get_content_area(win);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
784
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
785 /* get the scrolled window with all stuff */
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
786 sw = manager_list_create(manager);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
787 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
788 gtk_widget_show(sw);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
789
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
790 gtk_widget_show(GTK_WIDGET(win));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
791 }

mercurial