pidgin/gtksmiley-manager.c

Sat, 05 Apr 2014 03:35:28 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Sat, 05 Apr 2014 03:35:28 +0200
changeset 35768
61483c1a91a3
parent 35737
e5a0ccfb57e0
child 35771
d9f3612faf8d
permissions
-rw-r--r--

Try to fix the build

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

mercurial