pidgin/gtksmiley-manager.c

Wed, 27 Nov 2019 00:08:11 +0300

author
qarkai <qarkai@gmail.com>
date
Wed, 27 Nov 2019 00:08:11 +0300
changeset 40329
b5e0f65a5d9c
parent 40058
8a56f10bd1fb
child 40197
75ffd76260fc
permissions
-rw-r--r--

Replace PurpleNamedValue with PurpleKeyValuePair

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"
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 #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
27 #include "smiley.h"
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
28 #include "smiley-custom.h"
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
29 #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
30
35718
83486b5d34ab Drop PidginSmiley, rename gtksmiley to gtksmiley-manager
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35714
diff changeset
31 #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
32 #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
33 #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
34
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
35 #include <libsoup/soup.h>
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
36
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
37 #include "gtk3compat.h"
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
38
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 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
40 {
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
41 PurpleSmiley *smiley;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
42
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
43 gchar *filename;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
44 PurpleImage *new_image;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
45
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
46 GtkDialog *window;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
47 GtkImage *thumbnail;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
48 GtkEntry *shortcut;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
49 } SmileyEditDialog;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
50
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
51 typedef struct
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
52 {
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
53 GtkDialog *window;
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
54 GtkListStore *model;
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
55 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
56
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
57 SoupSession *session;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58 } SmileyManager;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 enum
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 {
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
62 SMILEY_LIST_MODEL_ICON,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
63 SMILEY_LIST_MODEL_SHORTCUT,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
64 SMILEY_LIST_MODEL_PURPLESMILEY,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
65 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
66 };
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
68 enum
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
69 {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
70 PIDGIN_RESPONSE_MODIFY
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
71 };
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
73 static SmileyManager *smiley_manager = NULL;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
74
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
76 edit_dialog_update_buttons(SmileyEditDialog *edit_dialog);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
77
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
78 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
79 manager_list_fill(SmileyManager *manager);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
80
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
81
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
82 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
83 * Custom smiley edit dialog image.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
84 ******************************************************************************/
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
85
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
86 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
87 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
88 {
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
89 GdkPixbuf *pixbuf = NULL;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
90
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
91 if (edit_dialog->new_image) {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
92 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
93 } else if (edit_dialog->filename) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
94 pixbuf = pidgin_pixbuf_new_from_file(edit_dialog->filename);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
95 if (!pixbuf) {
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
96 g_free(edit_dialog->filename);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
97 edit_dialog->filename = NULL;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
98 }
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
99 }
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
100
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
101 if (pixbuf) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
102 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
103 GDK_INTERP_HYPER, TRUE);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
104 }
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
105
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
106 if (!pixbuf) {
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
107 GtkIconSize icon_size =
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
108 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
109 pixbuf = gtk_widget_render_icon(GTK_WIDGET(edit_dialog->window),
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
110 PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, icon_size,
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
111 "PidginSmileyManager");
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
112 }
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
113 g_return_if_fail(pixbuf != NULL);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
114
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
115 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
116
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
117 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
118 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
120 static gboolean
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
121 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
122 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
123 GdkPixbuf *tmp = NULL;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
124
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
125 if (edit_dialog->new_image)
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
126 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
127
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
128 if (edit_dialog->smiley) {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
129 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
130 "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
131 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
132
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
133 /* check, if image is valid */
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
134 if (image)
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
135 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
136 if (tmp)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
137 g_object_unref(tmp);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
138 else {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
139 g_object_unref(image);
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
140 image = NULL;
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
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
143 edit_dialog->new_image = image;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
144
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
145 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
146 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
147
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
148 return (image != NULL);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
149 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
150
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
151 static void
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
152 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
153 const gchar *shortcut)
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
154 {
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
155 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
156 }
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
157
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
158 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
159 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
160 {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
161 PurpleImage *image;
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
162 SmileyEditDialog *edit_dialog = _edit_dialog;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
163
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
164 if (!filename)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
165 return;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
166
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
167 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
168 if (!image)
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
169 return;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
170
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
171 g_free(edit_dialog->filename);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
172 edit_dialog->filename = NULL;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
173
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
174 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
175 return;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
176 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
177
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
178 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
179 }
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
180
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
181 static void
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
182 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
183 {
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39463
diff changeset
184 GtkFileChooserNative *file_chooser;
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
185 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
186 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
187 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
188 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
189 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
190 "file-selector-custom-smiley");
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39463
diff changeset
191 gtk_native_dialog_run(GTK_NATIVE_DIALOG(file_chooser));
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39463
diff changeset
192 g_object_unref(file_chooser);
35737
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
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 * Custom smiley edit dialog.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
198 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
199
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
200 static void
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
201 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
202 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
203 SmileyEditDialog *edit_dialog = _edit_dialog;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
204
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
205 if (edit_dialog->smiley) {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
206 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
207 "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
208 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
209 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
210
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
211 if (edit_dialog->new_image)
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
212 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
213
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
214 g_free(edit_dialog->filename);
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
215 g_free(edit_dialog);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
216 }
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
217
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
218 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
219 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
220 {
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
221 const gchar *shortcut;
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
222 PurpleSmiley *existing_smiley;
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
223 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
224
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
225 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
226
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
227 existing_smiley = purple_smiley_list_get_by_shortcut(
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
228 purple_smiley_custom_get_list(), shortcut);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
229
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
230 if (existing_smiley && existing_smiley != edit_dialog->smiley) {
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
231 gchar *msg = g_strdup_printf(
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
232 _("A custom smiley for '%s' already exists. "
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
233 "Please use a different shortcut."), shortcut);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
234 purple_notify_error(edit_dialog, _("Custom Smiley"),
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
235 _("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
236 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
237 return;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
238 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
239
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
240 if (edit_dialog->smiley == NULL)
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
241 shortcut_changed = image_changed = TRUE;
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
242 else {
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38259 38285
diff changeset
243 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
244 edit_dialog->smiley), shortcut);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
245 image_changed = (edit_dialog->new_image != NULL);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
246 }
25876
6dafeb78324a Try to improve the wording in our custom smiley manager
Mark Doliner <markdoliner@pidgin.im>
parents: 25390
diff changeset
247
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
248 if (!shortcut_changed && !image_changed) {
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
249 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
250 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
251 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
252
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
253 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
254 edit_dialog->new_image = PURPLE_IMAGE(edit_dialog->smiley);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
255 g_return_if_fail(edit_dialog->new_image);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
256 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
258 if (edit_dialog->smiley)
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
259 purple_smiley_custom_remove(edit_dialog->smiley);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
260 purple_smiley_custom_add(edit_dialog->new_image, shortcut);
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
261
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
262 if (smiley_manager)
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
263 manager_list_fill(smiley_manager);
35727
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
264
9025074cda55 Smiley manager: saving smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35726
diff changeset
265 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
266 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
268 static void
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
269 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
270 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
271 gboolean shortcut_ok, image_ok;
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
272
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
273 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
274 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
275
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
276 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
277 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
278 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
279
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
280 static void
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
281 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
282 {
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
283 SmileyEditDialog *edit_dialog = _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 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
286 }
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
287
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
288 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
289 edit_dialog_response(GtkDialog *window, gint response_id,
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
290 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
291 {
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
292 SmileyEditDialog *edit_dialog = _edit_dialog;
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
293
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
294 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
295 case GTK_RESPONSE_ACCEPT:
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
296 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
297 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
298 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
299 case GTK_RESPONSE_CANCEL:
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
300 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
301 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
302 default:
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
303 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
304 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
306
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
307 static SmileyEditDialog *
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
308 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
309 {
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
310 SmileyEditDialog *edit_dialog;
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
311 GtkWidget *vbox, *hbox;
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
312 GtkLabel *label;
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
313 GtkButton *filech;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
314
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
315 if (smiley) {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
316 edit_dialog = g_object_get_data(G_OBJECT(smiley),
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
317 "pidgin-smiley-manager-edit-dialog");
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
318 if (edit_dialog) {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
319 gtk_window_present(GTK_WINDOW(edit_dialog->window));
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
320 return edit_dialog;
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
321 }
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
322 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
323
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
324 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
325
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
326 edit_dialog->window = GTK_DIALOG(gtk_dialog_new_with_buttons(
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
327 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
328 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
329 GTK_DIALOG_DESTROY_WITH_PARENT,
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
330 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
331 smiley ? GTK_STOCK_SAVE : GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
332 NULL));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
333 gtk_dialog_set_default_response(
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
334 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
335
35726
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
336 if (smiley) {
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
337 edit_dialog->smiley = smiley;
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
338 g_object_set_data(G_OBJECT(smiley),
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
339 "pidgin-smiley-manager-edit-dialog", edit_dialog);
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
340 g_object_ref(smiley);
ac781ed58d2d Smiley manager: more cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35725
diff changeset
341 }
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
342
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
343
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
344 /* The vbox */
33412
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
345 vbox = gtk_grid_new();
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
346 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
347 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
348 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
349 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
350
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 /* The hbox */
33412
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
352 hbox = gtk_grid_new();
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
353 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
354 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
355
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
356 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("_Image:")));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
357 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
358 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
359
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
360 filech = GTK_BUTTON(gtk_button_new());
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
361 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
362 GTK_POS_RIGHT, 1, 1);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
363 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
364
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
365 edit_dialog->thumbnail = GTK_IMAGE(gtk_image_new());
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
366 gtk_container_add(GTK_CONTAINER(filech),
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
367 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
368
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
369 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
370
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
371 /* info */
33412
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
372 hbox = gtk_grid_new();
4fd6fe073c8f Migrate some bits to GTK3 API.
Jorge Villaseñor <salinasv@pidgin.im>
parents: 33170
diff changeset
373 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
374
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
375 gtk_grid_attach_next_to(GTK_GRID(vbox), hbox, NULL,
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
376 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
377
25876
6dafeb78324a Try to improve the wording in our custom smiley manager
Mark Doliner <markdoliner@pidgin.im>
parents: 25390
diff changeset
378 /* Shortcut text */
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
379 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("S_hortcut text:")));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
380 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
381 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
382
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
383 edit_dialog->shortcut = GTK_ENTRY(gtk_entry_new());
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
384 gtk_entry_set_activates_default(edit_dialog->shortcut, TRUE);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
385 pidgin_set_accessible_label(GTK_WIDGET(edit_dialog->shortcut), label);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
386
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
387 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
388 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
389
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
390 gtk_widget_show(GTK_WIDGET(edit_dialog->shortcut));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
391 gtk_widget_show(hbox);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
392 gtk_widget_show(GTK_WIDGET(edit_dialog->window));
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
393
27498
67b5d40e47c8 Automatically enable and disable the Add/Save button in the PidginSmiley
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27259
diff changeset
394 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
395 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
396 PURPLE_IMAGE(smiley)));
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
397 gtk_entry_set_text(edit_dialog->shortcut,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
398 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
399 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
400
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
401 edit_dialog_image_update_thumb(edit_dialog);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
402 edit_dialog_update_buttons(edit_dialog);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
403
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
404 g_signal_connect(edit_dialog->window, "response",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
405 G_CALLBACK(edit_dialog_response), edit_dialog);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
406 g_signal_connect(filech, "clicked",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
407 G_CALLBACK(edit_dialog_image_choose), edit_dialog);
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
408 g_signal_connect(edit_dialog->shortcut, "changed",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
409 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
410
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
411 g_signal_connect(edit_dialog->window, "destroy",
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
412 G_CALLBACK(edit_dialog_destroy), edit_dialog);
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
413 g_signal_connect(edit_dialog->window, "destroy",
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
414 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
415
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
416 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
417 }
3aba02105818 Modified patch from malu to "Add context menu alternative to add received
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23020
diff changeset
418
35785
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
419 void
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
420 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
421 {
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
422 SmileyEditDialog *edit_dialog;
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
423
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
424 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
425
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
426 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
427
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
428 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
429 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
430 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
431 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
432 }
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
433
65ced7f8beaa Fix regression: saving small WebView images as a custom smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35771
diff changeset
434
35737
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 * 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
437 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
438
35718
83486b5d34ab Drop PidginSmiley, rename gtksmiley to gtksmiley-manager
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35714
diff changeset
439 static void
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
440 smiley_list_dnd_url_got(G_GNUC_UNUSED SoupSession *session, SoupMessage *msg,
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
441 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
442 {
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
443 SmileyManager *manager = _manager;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
444 SmileyEditDialog *edit_dialog;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
445 PurpleImage *image;
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);
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
448
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
449 if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
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 return;
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
451 }
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
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
453 image = purple_image_new_from_data((const guint8 *)msg->response_body->data,
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
454 msg->response_body->length);
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31321
diff changeset
455 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
456 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
457
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
458 edit_dialog = edit_dialog_show(manager, NULL);
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
459 if (!edit_dialog_set_image(edit_dialog, image))
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
460 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
461 }
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
462
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 static void
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
464 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
465 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
466 {
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
467 SmileyManager *manager = _manager;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
468 gchar content[1024];
33158
ad941796372e Remove some added trailing spaces.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33141
diff changeset
469
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
470 /* 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
471 if (gtk_selection_data_get_format(sd) != 8) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
472 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
473 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
474 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
475
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
476 if (gtk_selection_data_get_length(sd) <= 0) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
477 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
478 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
479 }
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
480
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
481 memset(&content, 0, sizeof(content));
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
482 memcpy(&content, gtk_selection_data_get_data(sd),
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
483 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
484 g_strstrip(content);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
485 if (content[0] == '\0') {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
486 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
487 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
488 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
489
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
490 /* Well, it looks like the drag event was cool.
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
491 * Let's do something with it */
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
492
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
493 if (purple_str_has_caseprefix(content, "file://")) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
494 SmileyEditDialog *edit_dialog;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35785
diff changeset
495 PurpleImage *image;
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
496 gchar *filename;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
497
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
498 filename = g_filename_from_uri(content, NULL, NULL);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
499 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
500 purple_debug_warning("gtksmiley-manager",
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
501 "dropped file does not exists");
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
502 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
503 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
504 }
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
505
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
506 image = purple_image_new_from_file(filename, NULL);
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
507 if (!image) {
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
508 purple_debug_warning("gtksmiley-manager",
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
509 "dropped file is not a valid image");
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
510 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
511 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
512 }
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
513 edit_dialog = edit_dialog_show(manager, NULL);
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
514 if (!edit_dialog_set_image(edit_dialog, image)) {
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
515 gtk_widget_destroy(GTK_WIDGET(edit_dialog->window));
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
516 gtk_drag_finish(dc, FALSE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
517 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
518 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
519
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
520 gtk_drag_finish(dc, TRUE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
521 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
522 }
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
523
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
524 if (purple_str_has_caseprefix(content, "http://") ||
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
525 purple_str_has_caseprefix(content, "https://"))
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
526 {
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
527 SoupMessage *msg;
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
528
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
529 if (smiley_manager->session == NULL) {
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
530 smiley_manager->session = soup_session_new();
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
531 }
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
532
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
533 soup_session_abort(smiley_manager->session);
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
534 msg = soup_message_new("GET", content);
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
535 soup_session_queue_message(smiley_manager->session, msg,
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
536 smiley_list_dnd_url_got, manager);
35734
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, TRUE, FALSE, time);
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
539 return;
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
540 }
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
541
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
542 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
543 }
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
544
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
545 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
546 * Custom smiley list.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
547 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
548
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
549 static void
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
550 smiley_list_selected(GtkTreeSelection *sel, gpointer _manager)
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
551 {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
552 SmileyManager *manager = _manager;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
553 gboolean sens;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
554
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
555 sens = (gtk_tree_selection_count_selected_rows(sel) > 0);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
556
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
557 gtk_dialog_set_response_sensitive(manager->window,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
558 GTK_RESPONSE_NO, sens);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
559 gtk_dialog_set_response_sensitive(manager->window,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
560 PIDGIN_RESPONSE_MODIFY, sens);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
561 }
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 static void
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
564 smiley_list_activated(GtkTreeView *tree, GtkTreePath *path,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
565 GtkTreeViewColumn *col, gpointer _manager)
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 SmileyManager *manager = _manager;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
568 GtkTreeIter iter;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
569 PurpleSmiley *smiley = NULL;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
570
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
571 if (!gtk_tree_model_get_iter(
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
572 GTK_TREE_MODEL(manager->model), &iter, path))
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
573 {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
574 return;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
575 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
576
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
577 gtk_tree_model_get(GTK_TREE_MODEL(manager->model), &iter,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
578 SMILEY_LIST_MODEL_PURPLESMILEY, &smiley, -1);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
579 g_return_if_fail(PURPLE_IS_SMILEY(smiley));
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
580
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
581 edit_dialog_show(manager, smiley);
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
582 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
583
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
584 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
585 manager_list_add(SmileyManager *manager, PurpleSmiley *smiley)
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
586 {
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
587 GdkPixbuf *smiley_image;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
588 GtkTreeIter iter;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
589
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
590 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
591 "pidgin-smiley-manager-list-thumb");
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
592 if (smiley_image == NULL) {
38285
72824d3b7190 Update pidgin for the PurpleImage and PurpleSmiley changes
Gary Kramlich <grim@reaperworld.com>
parents: 38277
diff changeset
593 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
594 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
595 22, 22, GDK_INTERP_BILINEAR, TRUE);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
596 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
597 "pidgin-smiley-manager-list-thumb",
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
598 smiley_image, g_object_unref);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35734
diff changeset
599 }
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
600
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
601 gtk_list_store_append(manager->model, &iter);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
602 gtk_list_store_set(manager->model, &iter,
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
603 SMILEY_LIST_MODEL_ICON, smiley_image,
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
604 SMILEY_LIST_MODEL_SHORTCUT, purple_smiley_get_shortcut(smiley),
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
605 SMILEY_LIST_MODEL_PURPLESMILEY, smiley,
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
606 -1);
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
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
609 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
610 manager_list_fill(SmileyManager *manager)
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
611 {
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
612 GList *custom_smileys, *it;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
613 gtk_list_store_clear(manager->model);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
614
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35727
diff changeset
615 custom_smileys = purple_smiley_list_get_all(
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
616 purple_smiley_custom_get_list());
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
617
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
618 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
619 PurpleSmiley *smiley = it->data;
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
620
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
621 manager_list_add(manager, smiley);
35723
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
622 }
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
623 g_list_free(custom_smileys);
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
624 }
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
625
63d3826975d9 Smiley manager: fill the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35722
diff changeset
626 static GtkWidget *
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
627 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
628 {
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
629 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
630 GtkTreeSelection *sel;
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
631 GtkCellRenderer *cellrend;
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
632 GtkTreeViewColumn *column;
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
633 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
634 {"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
635 {"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
636 {"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
637 };
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
638
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
639 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
640 GDK_TYPE_PIXBUF, /* icon */
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
641 G_TYPE_STRING, /* shortcut */
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
642 G_TYPE_OBJECT /* PurpleSmiley */
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
643 );
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
644
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
645 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
646 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
647
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
648 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
649 SMILEY_LIST_MODEL_SHORTCUT, GTK_SORT_ASCENDING);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
650
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
651 g_object_unref(manager->model);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
652
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
653 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
654 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
655
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
656 g_signal_connect(sel, "changed",
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
657 G_CALLBACK(smiley_list_selected), manager);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
658 g_signal_connect(tree, "row-activated",
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
659 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
660
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
661 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
662 GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
663 targets, G_N_ELEMENTS(targets),
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
664 GDK_ACTION_COPY | GDK_ACTION_MOVE);
35734
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
665 g_signal_connect(tree, "drag-data-received",
ddad7176a0ec Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35731
diff changeset
666 G_CALLBACK(smiley_list_dnd_recv), manager);
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
667
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
668 gtk_widget_show(GTK_WIDGET(tree));
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
669
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
670 /* 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
671
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
672 column = gtk_tree_view_column_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
673 gtk_tree_view_column_set_title(column, _("Smiley"));
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
674 gtk_tree_view_column_set_resizable(column, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
675 gtk_tree_view_append_column(tree, column);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
676 cellrend = gtk_cell_renderer_pixbuf_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
677 gtk_tree_view_column_pack_start(column, cellrend, FALSE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
678 gtk_tree_view_column_add_attribute(column, cellrend,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
679 "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
680
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
681 column = gtk_tree_view_column_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
682 gtk_tree_view_column_set_title(column, _("Shortcut Text"));
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
683 gtk_tree_view_column_set_resizable(column, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
684 gtk_tree_view_append_column(tree, column);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
685 cellrend = gtk_cell_renderer_text_new();
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
686 gtk_tree_view_column_pack_start(column, cellrend, TRUE);
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
687 gtk_tree_view_column_add_attribute(column, cellrend,
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
688 "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
689
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
690 manager_list_fill(manager);
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
691
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
692 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
693 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
694 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
695
35737
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
696 /*******************************************************************************
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
697 * Custom smiley manager window.
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
698 ******************************************************************************/
e5a0ccfb57e0 Smiley manager: rearrange some code and add section-comments
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35736
diff changeset
699
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
700 static void
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
701 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
702 {
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
703 GtkTreeSelection *selection = NULL;
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
704 GList *selected_rows, *selected_smileys = NULL, *it;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
705 GtkTreeModel *model = GTK_TREE_MODEL(manager->model);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
706
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
707 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
708 selected_rows = gtk_tree_selection_get_selected_rows(selection, NULL);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
709 for (it = selected_rows; it; it = g_list_next(it)) {
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
710 GtkTreePath *path = it->data;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
711 GtkTreeIter iter;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
712 PurpleSmiley *smiley = NULL;
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 if (!gtk_tree_model_get_iter(model, &iter, path))
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
715 continue;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
716
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
717 gtk_tree_model_get(model, &iter,
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
718 SMILEY_LIST_MODEL_PURPLESMILEY, &smiley, -1);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
719 if (!smiley)
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
720 continue;
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
721
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
722 selected_smileys = g_list_prepend(selected_smileys, smiley);
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
723 }
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
724 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
725
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 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
727 case GTK_RESPONSE_YES:
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
728 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
729 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
730 case GTK_RESPONSE_NO:
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35727
diff changeset
731 for (it = selected_smileys; it; it = g_list_next(it))
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35727
diff changeset
732 purple_smiley_custom_remove(it->data);
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
733 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
734 break;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
735 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
736 case GTK_RESPONSE_CLOSE:
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
737 gtk_widget_destroy(GTK_WIDGET(manager->window));
39993
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
738 soup_session_abort(manager->session);
0d18609d0d01 Convert Pidgin to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39930
diff changeset
739 g_clear_object(&manager->session);
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
740 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
741 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
742 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
743 case PIDGIN_RESPONSE_MODIFY:
35725
301fdb5e342e Cleanup pidgin_smiley_edit calls
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35724
diff changeset
744 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
745 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
746 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
747 default:
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
748 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
749 }
35724
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
750
baf1255d0a3b Smiley manager: edit dialog
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35723
diff changeset
751 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
752 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
753
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
754 void
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
755 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
756 {
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
757 SmileyManager *manager;
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
758 GtkDialog *win;
35722
1177d6b4c769 Smiley manager: (empty) smiley list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
759 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
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 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
762 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
763 return;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
764 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
765
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
766 manager = g_new0(SmileyManager, 1);
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
767 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
768
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35719
diff changeset
769 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
770 _("Custom Smiley Manager"), NULL,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
771 GTK_DIALOG_DESTROY_WITH_PARENT,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
772 PIDGIN_STOCK_ADD, GTK_RESPONSE_YES,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
773 PIDGIN_STOCK_MODIFY, PIDGIN_RESPONSE_MODIFY,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
774 GTK_STOCK_DELETE, GTK_RESPONSE_NO,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
775 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
776 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
777
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
778 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
779 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
780 gtk_dialog_set_response_sensitive(win, GTK_RESPONSE_NO, FALSE);
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
781 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
782
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
783 g_signal_connect(win, "response",
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
784 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
785
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
786 /* The vbox */
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
787 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
788
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge Villaseño (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
789 /* get the scrolled window with all stuff */
35736
43740dbe6229 Smiley manager: do some renames
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
790 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
791 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
792 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
793
35719
6bf3252bf6db Smiley manager: edit window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35718
diff changeset
794 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
795 }

mercurial