pidgin/gtksmiley-manager.c

Sun, 24 Jan 2021 03:27:43 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 24 Jan 2021 03:27:43 -0600
changeset 40728
2dbfbaeefe40
parent 40693
4d91fb883f4b
permissions
-rw-r--r--

Merge PidginBuddyListMenu with PidginContactList which fixes all of the accelerators as well.

Testing Done:
Compiled and ran locally. Verified that the `g_warnings` at startup are now gone and that the keyboard accelerators now work again.

Reviewed at https://reviews.imfreedom.org/r/430/

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

mercurial