pidgin/gtksavedstatuses.c

Wed, 21 Sep 2011 06:45:26 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 21 Sep 2011 06:45:26 +0000
changeset 32575
eb4fc932fae9
parent 31321
1fef3832cfa2
child 32424
be4a642b2d45
child 32913
af2c726febce
child 37868
03437cc299d4
permissions
-rw-r--r--

Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.

Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).

We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.

10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /**
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
2 * @file gtksavedstatus.c GTK+ Saved Status Editor UI
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16123
diff changeset
3 * @ingroup pidgin
20330
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 19859
diff changeset
4 */
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 19859
diff changeset
5
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 19859
diff changeset
6 /* pidgin
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 * source distribution.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19570
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
25 */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18261
diff changeset
27 #include "internal.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18261
diff changeset
28
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
29 #include "account.h"
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
30 #include "notify.h"
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
31 #include "request.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
32 #include "savedstatuses.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
33 #include "status.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
34 #include "util.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
35
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 #include "gtkblist.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
37 #include "pidgin.h"
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38 #include "gtkimhtml.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
39 #include "gtkimhtmltoolbar.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40 #include "gtksavedstatuses.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
41 #include "pidginstock.h"
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
42 #include "gtkutils.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
43
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
44 /*
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
45 * TODO: Should attach to the account-deleted and account-added signals
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
46 * and update the GtkListStores in any StatusEditor windows that
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
47 * may be open.
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
48 */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
49
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
50 /**
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
51 * These are used for the GtkTreeView when you're scrolling through
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
52 * all your saved statuses.
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
53 */
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
54 enum
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
55 {
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
56 STATUS_WINDOW_COLUMN_TITLE,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
57 STATUS_WINDOW_COLUMN_TYPE,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
58 STATUS_WINDOW_COLUMN_MESSAGE,
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
59 /** A hidden column containing a pointer to the editor for this saved status. */
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
60 STATUS_WINDOW_COLUMN_WINDOW,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
61 STATUS_WINDOW_COLUMN_ICON,
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
62 STATUS_WINDOW_NUM_COLUMNS
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
63 };
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
64
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
65 /**
21202
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
66 * These are used for the GtkTreeView containing the list of accounts
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
67 * at the bottom of the window when you're editing a particular
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
68 * saved status.
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
69 */
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
70 enum
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
71 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
72 /** A hidden column containing a pointer to the PurpleAccount. */
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
73 STATUS_EDITOR_COLUMN_ACCOUNT,
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
74 /** A hidden column containing a pointer to the editor for this substatus. */
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
75 STATUS_EDITOR_COLUMN_WINDOW,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
76 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS,
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
77 STATUS_EDITOR_COLUMN_ICON,
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
78 STATUS_EDITOR_COLUMN_USERNAME,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
79 /** A hidden column containing the ID of this PurpleStatusType. */
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
80 STATUS_EDITOR_COLUMN_STATUS_ID,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
81 STATUS_EDITOR_COLUMN_STATUS_NAME,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
82 STATUS_EDITOR_COLUMN_STATUS_MESSAGE,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
83 STATUS_EDITOR_COLUMN_STATUS_ICON,
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
84 STATUS_EDITOR_NUM_COLUMNS
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
85 };
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
86
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
87 /**
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
88 * These are used in the GtkComboBox to select the specific PurpleStatusType
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
89 * when setting a (sub)status for a particular saved status.
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
90 */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
91 enum
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
92 {
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
93 STATUS_COLUMN_ICON,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
94 /** A hidden column containing the ID of this PurpleStatusType. */
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
95 STATUS_COLUMN_STATUS_ID,
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
96 STATUS_COLUMN_STATUS_NAME,
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
97 STATUS_NUM_COLUMNS
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
98 };
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
99
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
100 typedef struct
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
101 {
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
102 GtkWidget *window;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
103 GtkListStore *model;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
104 GtkWidget *treeview;
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
105 GtkWidget *use_button;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
106 GtkWidget *modify_button;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
107 GtkWidget *delete_button;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
108 } StatusWindow;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
109
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
110 typedef struct
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
111 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
112 GtkWidget *window;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
113 GtkListStore *model;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
114 GtkWidget *treeview;
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
115 GtkButton *saveanduse_button;
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
116 GtkButton *save_button;
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
117
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
118 gchar *original_title;
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
119 GtkEntry *title;
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
120 GtkComboBox *type;
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
121 GtkIMHtml *message;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
122 } StatusEditor;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
123
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
124 typedef struct
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
125 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
126 StatusEditor *status_editor;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
127 PurpleAccount *account;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
128
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
129 GtkWidget *window;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
130 GtkListStore *model;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
131 GtkComboBox *box;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
132 GtkIMHtml *message;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
133 GtkIMHtmlToolbar *toolbar;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
134 } SubStatusEditor;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
135
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
136 static StatusWindow *status_window = NULL;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
137
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
138
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
139 /**************************************************************************
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
140 * Status window
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
141 **************************************************************************/
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
142
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
143 static gboolean
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
144 status_window_find_savedstatus(GtkTreeIter *iter, const char *title)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
145 {
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
146 GtkTreeModel *model;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
147 char *cur;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
148
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
149 if ((status_window == NULL) || (title == NULL))
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
150 return FALSE;
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
151
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
152 model = GTK_TREE_MODEL(status_window->model);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
153
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
154 if (!gtk_tree_model_get_iter_first(model, iter))
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
155 return FALSE;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
156
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
157 do {
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
158 gtk_tree_model_get(model, iter, STATUS_WINDOW_COLUMN_TITLE, &cur, -1);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
159 if (!strcmp(title, cur))
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
160 {
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
161 g_free(cur);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
162 return TRUE;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
163 }
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
164 g_free(cur);
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
165 } while (gtk_tree_model_iter_next(model, iter));
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
166
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
167 return FALSE;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
168 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
169
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
170 static gboolean
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
171 status_window_destroy_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
172 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
173 StatusWindow *dialog = user_data;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
174
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
175 dialog->window = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
176 pidgin_status_window_hide();
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
177
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
178 return FALSE;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
179 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
180
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
181 static void
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
182 status_window_use_cb(GtkButton *button, StatusWindow *dialog)
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
183 {
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
184 GtkTreeSelection *selection;
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
185 GtkTreeIter iter;
11889
ac2cc36fb281 [gaim-migrate @ 14180]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11888
diff changeset
186 GList *list = NULL;
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11832
diff changeset
187 int num_selected = 0;
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
188
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
189 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
190
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11832
diff changeset
191 num_selected = gtk_tree_selection_count_selected_rows(selection);
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11832
diff changeset
192 if (num_selected != 1)
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
193 /*
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
194 * This shouldn't happen because the "Use" button should have
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
195 * been grayed out. Oh well.
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
196 */
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
197 return;
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
198
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
199 list = gtk_tree_selection_get_selected_rows(selection, NULL);
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
200
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
201 if (gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model),
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
202 &iter, list->data))
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
203 {
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
204 gchar *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
205 PurpleSavedStatus *saved_status;
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
206 gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
207 STATUS_WINDOW_COLUMN_TITLE, &title,
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
208 -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
209 saved_status = purple_savedstatus_find(title);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
210 g_free(title);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
211 purple_savedstatus_activate(saved_status);
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
212 }
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
213
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
214 g_list_foreach(list, (GFunc)gtk_tree_path_free, NULL);
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
215 g_list_free(list);
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
216 }
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
217
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
218 static void
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
219 status_window_add_cb(GtkButton *button, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
220 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
221 pidgin_status_editor_show(FALSE, NULL);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
222 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
223
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
224 static void
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
225 status_window_modify_foreach(GtkTreeModel *model, GtkTreePath *path,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
226 GtkTreeIter *iter, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
227 {
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
228 gchar *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
229 PurpleSavedStatus *saved_status;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
230
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
231 gtk_tree_model_get(model, iter, STATUS_WINDOW_COLUMN_TITLE, &title, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
232 saved_status = purple_savedstatus_find(title);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
233 g_free(title);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
234 pidgin_status_editor_show(TRUE, saved_status);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
235 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
236
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
237 static void
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
238 status_window_modify_cb(GtkButton *button, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
239 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
240 StatusWindow *dialog = user_data;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
241 GtkTreeSelection *selection;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
242
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
243 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
244
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
245 gtk_tree_selection_selected_foreach(selection, status_window_modify_foreach, user_data);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
246 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
247
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
248 static void
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
249 status_window_delete_cancel_cb(gpointer data)
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
250 {
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
251 GList *sel_titles = data;
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
252 g_list_foreach(sel_titles, (GFunc) g_free, NULL);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
253 g_list_free(sel_titles);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
254 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
255
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
256 static void
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
257 status_window_delete_confirm_cb(gpointer data)
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
258 {
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
259 GtkTreeIter iter;
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
260 GList *sel_titles = data, *l;
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
261 char *title;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
262
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
263 for (l = sel_titles; l != NULL; l = l->next) {
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
264 title = l->data;
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
265 if (purple_savedstatus_find(title) != purple_savedstatus_get_current()) {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
266 if (status_window_find_savedstatus(&iter, title))
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
267 gtk_list_store_remove(status_window->model, &iter);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
268 purple_savedstatus_delete(title);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
269 }
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
270 g_free(title);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
271 }
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
272 g_list_free(sel_titles);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
273 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
274
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
275 static void
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
276 status_window_delete_cb(GtkButton *button, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
277 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
278 StatusWindow *dialog = user_data;
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
279 GtkTreeIter iter;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
280 GtkTreeSelection *selection;
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
281 GList *sel_paths, *l, *sel_titles = NULL;
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
282 GtkTreeModel *model = GTK_TREE_MODEL(dialog->model);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
283 char *title;
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18258
diff changeset
284 gpointer handle;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
285
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
286 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
15402
1b3ee6599edb [gaim-migrate @ 18133]
Daniel Atallah <datallah@pidgin.im>
parents: 15401
diff changeset
287 sel_paths = gtk_tree_selection_get_selected_rows(selection, NULL);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
288
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
289 /* This is ugly because we're not allowed to modify the model from within
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
290 * gtk_tree_selection_selected_foreach() and the GtkTreePaths can become invalid
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
291 * when something is removed from the model. The selection can also change while
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
292 * the request dialog is displayed, so we need to capture the selected rows at this time. */
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
293
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
294 for (l = sel_paths; l != NULL; l = l->next) {
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
295 if (gtk_tree_model_get_iter(model, &iter, l->data)) {
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
296 gtk_tree_model_get(model, &iter, STATUS_WINDOW_COLUMN_TITLE, &title, -1);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
297 sel_titles = g_list_prepend(sel_titles, title);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
298 }
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
299 gtk_tree_path_free(l->data);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
300 }
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
301 g_list_free(sel_paths);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
302
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
303 g_return_if_fail(sel_titles != NULL);
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
304 if (!sel_titles->next) {
15423
750b9026217d [gaim-migrate @ 18154]
Mark Doliner <markdoliner@pidgin.im>
parents: 15402
diff changeset
305 title = g_strdup_printf(_("Are you sure you want to delete %s?"),
750b9026217d [gaim-migrate @ 18154]
Mark Doliner <markdoliner@pidgin.im>
parents: 15402
diff changeset
306 (const gchar *)sel_titles->data);
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18258
diff changeset
307 handle = purple_savedstatus_find(sel_titles->data);
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18258
diff changeset
308 } else {
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
309 title = g_strdup(_("Are you sure you want to delete the selected saved statuses?"));
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18258
diff changeset
310 handle = dialog;
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18258
diff changeset
311 }
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
312
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18258
diff changeset
313 purple_request_action(handle, NULL, title, NULL, 0,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16482
diff changeset
314 NULL, NULL, NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16482
diff changeset
315 sel_titles, 2,
15401
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
316 _("Delete"), status_window_delete_confirm_cb,
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
317 _("Cancel"), status_window_delete_cancel_cb);
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
318
0d36d1fd18d5 [gaim-migrate @ 18132]
Daniel Atallah <datallah@pidgin.im>
parents: 15076
diff changeset
319 g_free(title);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
320 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
321
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
322 static void
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
323 status_window_close_cb(GtkButton *button, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
324 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
325 pidgin_status_window_hide();
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
326 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
327
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
328 static void
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
329 status_selected_cb(GtkTreeSelection *sel, gpointer user_data)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
330 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
331 StatusWindow *dialog = user_data;
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
332 GList *sel_paths, *tmp;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
333 gboolean can_use = TRUE, can_delete = TRUE;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
334 int num_selected;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
335 GtkTreeModel *model = GTK_TREE_MODEL(dialog->model);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
336
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
337 sel_paths = gtk_tree_selection_get_selected_rows(sel, NULL);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
338
18258
6282cdc69e36 sadrul spotted this, fixes selecting multiple statuses in the status window
Ka-Hing Cheung <khc@pidgin.im>
parents: 18239
diff changeset
339 for (tmp = sel_paths, num_selected = 0; tmp; tmp = tmp->next, num_selected++) {
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
340 GtkTreeIter iter;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
341 char *title;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
342
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
343 if (gtk_tree_model_get_iter(model, &iter, tmp->data)) {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
344 gtk_tree_model_get(model, &iter,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
345 STATUS_WINDOW_COLUMN_TITLE, &title, -1);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
346 if (purple_savedstatus_find(title) == purple_savedstatus_get_current()) {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
347 can_use = can_delete = FALSE;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
348 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
349
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
350 g_free(title);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
351 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
352
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
353 gtk_tree_path_free(tmp->data);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
354 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
355
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
356 gtk_widget_set_sensitive(dialog->use_button, (num_selected == 1) && can_use);
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
357 gtk_widget_set_sensitive(dialog->modify_button, (num_selected > 0));
27005
e421faf76205 Enable/disable the buttons in the savedstatus dialog properly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26847
diff changeset
358 gtk_widget_set_sensitive(dialog->delete_button, num_selected > 0 && can_delete);
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
359
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
360 g_list_free(sel_paths);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
361 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
362
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
363 static const gchar *
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
364 get_stock_icon_from_primitive(PurpleStatusPrimitive type)
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
365 {
26847
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
366 return pidgin_stock_id_from_status_primitive(type);
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
367 }
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
368
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
369 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
370 add_status_to_saved_status_list(GtkListStore *model, PurpleSavedStatus *saved_status)
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
371 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
372 GtkTreeIter iter;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
373 const char *title;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
374 const char *type;
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
375 const gchar *icon;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
376 char *message;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
377
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
378 if (purple_savedstatus_is_transient(saved_status))
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11548
diff changeset
379 return;
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11548
diff changeset
380
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
381 title = purple_savedstatus_get_title(saved_status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
382 type = purple_primitive_get_name_from_type(purple_savedstatus_get_type(saved_status));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
383 message = purple_markup_strip_html(purple_savedstatus_get_message(saved_status));
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
384 icon = get_stock_icon_from_primitive(purple_savedstatus_get_type(saved_status));
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
385
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
386 gtk_list_store_append(model, &iter);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
387 gtk_list_store_set(model, &iter,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
388 STATUS_WINDOW_COLUMN_ICON, icon,
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
389 STATUS_WINDOW_COLUMN_TITLE, title,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
390 STATUS_WINDOW_COLUMN_TYPE, type,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
391 STATUS_WINDOW_COLUMN_MESSAGE, message,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
392 -1);
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
393 g_free(message);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
394 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
395
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
396 static void
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
397 populate_saved_status_list(StatusWindow *dialog)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
398 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18186
diff changeset
399 GList *saved_statuses;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
400
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
401 gtk_list_store_clear(dialog->model);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
402
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
403 for (saved_statuses = purple_savedstatuses_get_all(); saved_statuses != NULL;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
404 saved_statuses = g_list_next(saved_statuses))
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
405 {
12199
0cf90c70f0dc [gaim-migrate @ 14501]
Sean Egan <seanegan@pidgin.im>
parents: 12195
diff changeset
406 add_status_to_saved_status_list(dialog->model, saved_statuses->data);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
407 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
408 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
409
10435
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
410 static gboolean
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
411 search_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data)
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
412 {
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
413 gboolean result;
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
414 char *haystack;
10435
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
415
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
416 gtk_tree_model_get(model, iter, column, &haystack, -1);
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
417
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
418 result = (purple_strcasestr(haystack, key) == NULL);
10439
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
419
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
420 g_free(haystack);
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
421
5868d8f55fb1 [gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents: 10435
diff changeset
422 return result;
10435
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
423 }
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
424
12162
449845a545ab [gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
425 static void
12173
7371c5744f1c [gaim-migrate @ 14475]
Richard Laager <rlaager@pidgin.im>
parents: 12162
diff changeset
426 savedstatus_activated_cb(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *column, StatusWindow *dialog)
12162
449845a545ab [gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
427 {
24656
efceec3b4ba3 Make double-clicking a saved status activate it and close the window.
Will Thompson <resiak@pidgin.im>
parents: 24594
diff changeset
428 status_window_use_cb(NULL, dialog);
efceec3b4ba3 Make double-clicking a saved status activate it and close the window.
Will Thompson <resiak@pidgin.im>
parents: 24594
diff changeset
429 status_window_close_cb(NULL, dialog);
12162
449845a545ab [gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
430 }
449845a545ab [gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
431
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
432 static void
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
433 saved_status_updated_cb(PurpleSavedStatus *status, StatusWindow *sw)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
434 {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
435 populate_saved_status_list(sw);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
436 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
437
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
438 static GtkWidget *
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
439 create_saved_status_list(StatusWindow *dialog)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
440 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
441 GtkWidget *treeview;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
442 GtkTreeSelection *sel;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
443 GtkTreeViewColumn *column;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
444 GtkCellRenderer *renderer;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
445
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
446 /* Create the list model */
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
447 dialog->model = gtk_list_store_new(STATUS_WINDOW_NUM_COLUMNS,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
448 G_TYPE_STRING,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
449 G_TYPE_STRING,
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
450 G_TYPE_STRING,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
451 G_TYPE_POINTER,
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
452 G_TYPE_STRING);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
453
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
454 /* Create the treeview */
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
455 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
456 dialog->treeview = treeview;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
457 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE);
12162
449845a545ab [gaim-migrate @ 14463]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
458 g_signal_connect(G_OBJECT(treeview), "row-activated",
12173
7371c5744f1c [gaim-migrate @ 14475]
Richard Laager <rlaager@pidgin.im>
parents: 12162
diff changeset
459 G_CALLBACK(savedstatus_activated_cb), dialog);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
460
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
461 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
462 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
463 g_signal_connect(G_OBJECT(sel), "changed",
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
464 G_CALLBACK(status_selected_cb), dialog);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
465
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
466 /* Add columns */
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
467 column = gtk_tree_view_column_new();
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
468 gtk_tree_view_column_set_title(column, _("Title"));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
469 gtk_tree_view_column_set_resizable(column, TRUE);
11548
a6da5e2af5b3 [gaim-migrate @ 13803]
Mark Doliner <markdoliner@pidgin.im>
parents: 11251
diff changeset
470 gtk_tree_view_column_set_min_width(column, 100);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
471 gtk_tree_view_column_set_sort_column_id(column,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
472 STATUS_WINDOW_COLUMN_TITLE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
473 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
474 renderer = gtk_cell_renderer_text_new();
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
475 gtk_tree_view_column_pack_start(column, renderer, TRUE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
476 gtk_tree_view_column_add_attribute(column, renderer, "text",
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
477 STATUS_WINDOW_COLUMN_TITLE);
11548
a6da5e2af5b3 [gaim-migrate @ 13803]
Mark Doliner <markdoliner@pidgin.im>
parents: 11251
diff changeset
478 g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
479
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
480 column = gtk_tree_view_column_new();
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
481 gtk_tree_view_column_set_title(column, _("Type"));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
482 gtk_tree_view_column_set_resizable(column, TRUE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
483 gtk_tree_view_column_set_sort_column_id(column,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
484 STATUS_WINDOW_COLUMN_TYPE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
485 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
486 renderer = gtk_cell_renderer_pixbuf_new();
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
487 gtk_tree_view_column_pack_start(column, renderer, TRUE);
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
488 gtk_tree_view_column_add_attribute(column, renderer, "stock-id",
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
489 STATUS_WINDOW_COLUMN_ICON);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
490 renderer = gtk_cell_renderer_text_new();
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
491 gtk_tree_view_column_pack_start(column, renderer, TRUE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
492 gtk_tree_view_column_add_attribute(column, renderer, "text",
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
493 STATUS_WINDOW_COLUMN_TYPE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
494
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
495 column = gtk_tree_view_column_new();
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
496 gtk_tree_view_column_set_title(column, _("Message"));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
497 gtk_tree_view_column_set_resizable(column, TRUE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
498 gtk_tree_view_column_set_sort_column_id(column,
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
499 STATUS_WINDOW_COLUMN_MESSAGE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
500 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
501 renderer = gtk_cell_renderer_text_new();
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
502 gtk_tree_view_column_pack_start(column, renderer, TRUE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
503 gtk_tree_view_column_add_attribute(column, renderer, "text",
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
504 STATUS_WINDOW_COLUMN_MESSAGE);
10502
fc7c2365aa88 [gaim-migrate @ 11794]
Sean Egan <seanegan@pidgin.im>
parents: 10439
diff changeset
505 g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10435
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
506
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
507 /* Enable CTRL+F searching */
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
508 gtk_tree_view_set_search_column(GTK_TREE_VIEW(treeview), STATUS_WINDOW_COLUMN_TITLE);
9b99eae95156 [gaim-migrate @ 11692]
Mark Doliner <markdoliner@pidgin.im>
parents: 10422
diff changeset
509 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(treeview), search_func, NULL, NULL);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
510
10422
2cc0f6c99b28 [gaim-migrate @ 11673]
Gary Kramlich <grim@pidgin.im>
parents: 10421
diff changeset
511 /* Sort the title column by default */
2cc0f6c99b28 [gaim-migrate @ 11673]
Gary Kramlich <grim@pidgin.im>
parents: 10421
diff changeset
512 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model),
2cc0f6c99b28 [gaim-migrate @ 11673]
Gary Kramlich <grim@pidgin.im>
parents: 10421
diff changeset
513 STATUS_WINDOW_COLUMN_TITLE,
2cc0f6c99b28 [gaim-migrate @ 11673]
Gary Kramlich <grim@pidgin.im>
parents: 10421
diff changeset
514 GTK_SORT_ASCENDING);
2cc0f6c99b28 [gaim-migrate @ 11673]
Gary Kramlich <grim@pidgin.im>
parents: 10421
diff changeset
515
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
516 /* Populate list */
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
517 populate_saved_status_list(dialog);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
518
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 29750
diff changeset
519 gtk_widget_show_all(treeview);
13200
3769f413f073 [gaim-migrate @ 15562]
Mark Doliner <markdoliner@pidgin.im>
parents: 13195
diff changeset
520
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 29750
diff changeset
521 return pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
522 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
523
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
524 static gboolean
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
525 configure_cb(GtkWidget *widget, GdkEventConfigure *event, StatusWindow *dialog)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
526 {
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
527 if (GTK_WIDGET_VISIBLE(widget))
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
528 {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
529 purple_prefs_set_int(PIDGIN_PREFS_ROOT "/status/dialog/width", event->width);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
530 purple_prefs_set_int(PIDGIN_PREFS_ROOT "/status/dialog/height", event->height);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
531 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
532
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
533 return FALSE;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
534 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
535
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
536 static void
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
537 current_status_changed(PurpleSavedStatus *old, PurpleSavedStatus *new_status,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
538 StatusWindow *dialog)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
539 {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
540 status_selected_cb(gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)), dialog);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
541 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
542
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
543 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
544 pidgin_status_window_show(void)
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
545 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
546 StatusWindow *dialog;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
547 GtkWidget *bbox;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
548 GtkWidget *button;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
549 GtkWidget *list;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
550 GtkWidget *vbox;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
551 GtkWidget *win;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
552 int width, height;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
553
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
554 if (status_window != NULL)
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
555 {
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
556 gtk_window_present(GTK_WINDOW(status_window->window));
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
557 return;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
558 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
559
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
560 status_window = dialog = g_new0(StatusWindow, 1);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
561
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
562 width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/status/dialog/width");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
563 height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/status/dialog/height");
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
564
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
565 dialog->window = win = pidgin_create_dialog(_("Saved Statuses"), PIDGIN_HIG_BORDER, "statuses", TRUE);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
566 gtk_window_set_default_size(GTK_WINDOW(win), width, height);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
567
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
568 g_signal_connect(G_OBJECT(win), "delete_event",
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
569 G_CALLBACK(status_window_destroy_cb), dialog);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
570 g_signal_connect(G_OBJECT(win), "configure_event",
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
571 G_CALLBACK(configure_cb), dialog);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
572
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
573 /* Setup the vbox */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
574 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
575
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
576 /* List of saved status states */
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
577 list = create_saved_status_list(dialog);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
578 gtk_box_pack_start(GTK_BOX(vbox), list, TRUE, TRUE, 0);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
579
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
580 /* Button box. */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
581 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win));
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
582
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
583 /* Use button */
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
584 button = pidgin_pixbuf_button_from_stock(_("_Use"), GTK_STOCK_EXECUTE,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
585 PIDGIN_BUTTON_HORIZONTAL);
11811
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
586 dialog->use_button = button;
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
587 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
588 gtk_widget_set_sensitive(button, FALSE);
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
589
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
590 g_signal_connect(G_OBJECT(button), "clicked",
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
591 G_CALLBACK(status_window_use_cb), dialog);
62e122478756 [gaim-migrate @ 14102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11780
diff changeset
592
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
593 /* Add button */
24594
b2da1decae23 Add an ellipsis to the "Add" and "Modify" buttons in the accounts, pounces, and
Alex Willmer <alex@moreati.org.uk>
parents: 23458
diff changeset
594 pidgin_dialog_add_button(GTK_DIALOG(win), PIDGIN_STOCK_ADD,
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
595 G_CALLBACK(status_window_add_cb), dialog);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
596
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
597 /* Modify button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
598 button = pidgin_dialog_add_button(GTK_DIALOG(win), PIDGIN_STOCK_MODIFY,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
599 G_CALLBACK(status_window_modify_cb), dialog);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
600 dialog->modify_button = button;
27005
e421faf76205 Enable/disable the buttons in the savedstatus dialog properly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26847
diff changeset
601 gtk_widget_set_sensitive(button, FALSE);
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
602
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
603 /* Delete button */
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
604 button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_DELETE,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
605 G_CALLBACK(status_window_delete_cb), dialog);
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
606 dialog->delete_button = button;
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
607 gtk_widget_set_sensitive(button, FALSE);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
608
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
609 /* Close button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
610 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CLOSE,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
611 G_CALLBACK(status_window_close_cb), dialog);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
612
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
613 purple_signal_connect(purple_savedstatuses_get_handle(),
18309
7a8acfcf6a37 Fix a crash after you close the status window, and change the status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
614 "savedstatus-changed", status_window,
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
615 PURPLE_CALLBACK(current_status_changed), dialog);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
616 purple_signal_connect(purple_savedstatuses_get_handle(),
18309
7a8acfcf6a37 Fix a crash after you close the status window, and change the status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
617 "savedstatus-added", status_window,
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
618 PURPLE_CALLBACK(saved_status_updated_cb), dialog);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
619 purple_signal_connect(purple_savedstatuses_get_handle(),
18309
7a8acfcf6a37 Fix a crash after you close the status window, and change the status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
620 "savedstatus-deleted", status_window,
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
621 PURPLE_CALLBACK(saved_status_updated_cb), dialog);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
622 purple_signal_connect(purple_savedstatuses_get_handle(),
18309
7a8acfcf6a37 Fix a crash after you close the status window, and change the status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
623 "savedstatus-modified", status_window,
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
624 PURPLE_CALLBACK(saved_status_updated_cb), dialog);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18130
diff changeset
625
13200
3769f413f073 [gaim-migrate @ 15562]
Mark Doliner <markdoliner@pidgin.im>
parents: 13195
diff changeset
626 gtk_widget_show_all(win);
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
627 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
628
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
629 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
630 pidgin_status_window_hide(void)
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
631 {
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
632 if (status_window == NULL)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
633 return;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
634
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
635 if (status_window->window != NULL)
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
636 gtk_widget_destroy(status_window->window);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
637
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
638 purple_request_close_with_handle(status_window);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
639 purple_notify_close_with_handle(status_window);
18309
7a8acfcf6a37 Fix a crash after you close the status window, and change the status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
640 purple_signals_disconnect_by_handle(status_window);
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22131
diff changeset
641 g_object_unref(G_OBJECT(status_window->model));
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
642 g_free(status_window);
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
643 status_window = NULL;
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
644 }
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
645
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
646
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
647 /**************************************************************************
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
648 * Status editor
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
649 **************************************************************************/
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
650
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
651 static void substatus_editor_cancel_cb(GtkButton *button, gpointer user_data);
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
652
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
653 static void
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
654 status_editor_remove_dialog(StatusEditor *dialog)
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
655 {
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
656 GtkTreeModel *model;
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
657 GtkTreeIter iter;
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
658
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
659 /* Remove the reference to this dialog from our parent's list store */
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
660 if (status_window_find_savedstatus(&iter, dialog->original_title))
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
661 {
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
662 gtk_list_store_set(status_window->model, &iter,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
663 STATUS_WINDOW_COLUMN_WINDOW, NULL,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
664 -1);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
665 }
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
666
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
667 /* Close any substatus editors that may be open */
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
668 model = GTK_TREE_MODEL(dialog->model);
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
669 if (gtk_tree_model_get_iter_first(model, &iter))
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
670 {
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
671 do {
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
672 SubStatusEditor *substatus_dialog;
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
673
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
674 gtk_tree_model_get(model, &iter,
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
675 STATUS_EDITOR_COLUMN_WINDOW, &substatus_dialog,
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
676 -1);
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
677 if (substatus_dialog != NULL)
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
678 {
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
679 gtk_list_store_set(dialog->model, &iter,
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
680 STATUS_EDITOR_COLUMN_WINDOW, NULL,
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
681 -1);
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
682 substatus_editor_cancel_cb(NULL, substatus_dialog);
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
683 }
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
684 } while (gtk_tree_model_iter_next(model, &iter));
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
685 }
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
686 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
687
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
688
23457
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
689 static void
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
690 status_editor_destroy_cb(GtkWidget *widget, gpointer user_data)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
691 {
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10535
diff changeset
692 StatusEditor *dialog = user_data;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
693
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
694 status_editor_remove_dialog(dialog);
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10535
diff changeset
695 g_free(dialog->original_title);
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22131
diff changeset
696 g_object_unref(G_OBJECT(dialog->model));
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
697 g_free(dialog);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
698 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
699
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
700 static void
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
701 status_editor_cancel_cb(GtkButton *button, gpointer user_data)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
702 {
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10535
diff changeset
703 StatusEditor *dialog = user_data;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
704 gtk_widget_destroy(dialog->window);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
705 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
706
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
707 static void
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
708 status_editor_ok_cb(GtkButton *button, gpointer user_data)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
709 {
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
710 StatusEditor *dialog = user_data;
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
711 const char *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
712 PurpleStatusPrimitive type;
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
713 char *message, *unformatted;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
714 PurpleSavedStatus *saved_status = NULL;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
715 GtkTreeModel *model;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
716 GtkTreeIter iter;
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
717
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
718 title = gtk_entry_get_text(dialog->title);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
719
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
720 /*
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
721 * If we're saving this status, and the title is already taken
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
722 * then show an error dialog and don't do anything.
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
723 */
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
724 if (((button == dialog->saveanduse_button) || (button == dialog->save_button)) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
725 (purple_savedstatus_find(title) != NULL) &&
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
726 ((dialog->original_title == NULL) || (strcmp(title, dialog->original_title))))
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
727 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
728 purple_notify_error(status_window, NULL, _("Title already in use. You must "
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
729 "choose a unique title."), NULL);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
730 return;
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
731 }
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
732
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
733 type = gtk_combo_box_get_active(dialog->type) + (PURPLE_STATUS_UNSET + 1);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
734 message = gtk_imhtml_get_markup(dialog->message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
735 unformatted = purple_markup_strip_html(message);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
736
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
737 /*
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
738 * If we're editing an old status, then lookup the old status.
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
739 * Note: It is possible that it has been deleted or renamed
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
740 * or something, and no longer exists.
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
741 */
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
742 if (dialog->original_title != NULL)
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
743 {
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
744 GtkTreeIter iter;
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
745
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
746 saved_status = purple_savedstatus_find(dialog->original_title);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
747
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
748 if (status_window_find_savedstatus(&iter, dialog->original_title))
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
749 gtk_list_store_remove(status_window->model, &iter);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
750 }
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
751
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
752 if (saved_status == NULL)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
753 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
754 /* This is a new status */
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
755 if ((button == dialog->saveanduse_button)
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
756 || (button == dialog->save_button))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
757 saved_status = purple_savedstatus_new(title, type);
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
758 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
759 saved_status = purple_savedstatus_new(NULL, type);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
760 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
761 else
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
762 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
763 /* Modify the old status */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
764 if (strcmp(title, dialog->original_title))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
765 purple_savedstatus_set_title(saved_status, title);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
766 purple_savedstatus_set_type(saved_status, type);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
767 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
768
12951
300b9d0a2d48 [gaim-migrate @ 15304]
Etan Reisner <deryni@pidgin.im>
parents: 12888
diff changeset
769 if (*unformatted == '\0')
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
770 purple_savedstatus_set_message(saved_status, NULL);
12951
300b9d0a2d48 [gaim-migrate @ 15304]
Etan Reisner <deryni@pidgin.im>
parents: 12888
diff changeset
771 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
772 purple_savedstatus_set_message(saved_status, message);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
773
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
774 /* Set any substatuses */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
775 model = GTK_TREE_MODEL(dialog->model);
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
776 if (gtk_tree_model_get_iter_first(model, &iter))
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
777 {
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
778 do {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
779 PurpleAccount *account;
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
780 gboolean enabled;
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
781 char *id;
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
782 char *message;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
783 PurpleStatusType *type;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
784
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
785 gtk_tree_model_get(model, &iter,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
786 STATUS_EDITOR_COLUMN_ACCOUNT, &account,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
787 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, &enabled,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
788 STATUS_EDITOR_COLUMN_STATUS_ID, &id,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
789 STATUS_EDITOR_COLUMN_STATUS_MESSAGE, &message,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
790 -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
791 if (enabled)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
792 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
793 type = purple_account_get_status_type(account, id);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
794 purple_savedstatus_set_substatus(saved_status, account, type, message);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
795 }
13837
6a6368224b8b [gaim-migrate @ 16284]
Mark Doliner <markdoliner@pidgin.im>
parents: 13664
diff changeset
796 else
6a6368224b8b [gaim-migrate @ 16284]
Mark Doliner <markdoliner@pidgin.im>
parents: 13664
diff changeset
797 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
798 purple_savedstatus_unset_substatus(saved_status, account);
13837
6a6368224b8b [gaim-migrate @ 16284]
Mark Doliner <markdoliner@pidgin.im>
parents: 13664
diff changeset
799 }
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
800 g_free(id);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
801 g_free(message);
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
802 } while (gtk_tree_model_iter_next(model, &iter));
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
803 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
804
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
805 g_free(message);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
806 g_free(unformatted);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
807
13010
2fbe02bcd876 [gaim-migrate @ 15363]
Mark Doliner <markdoliner@pidgin.im>
parents: 12951
diff changeset
808 /* If they clicked on "Save & Use" or "Use," then activate the status */
2fbe02bcd876 [gaim-migrate @ 15363]
Mark Doliner <markdoliner@pidgin.im>
parents: 12951
diff changeset
809 if (button != dialog->save_button)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
810 purple_savedstatus_activate(saved_status);
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
811
23457
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
812 gtk_widget_destroy(dialog->window);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
813 }
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
814
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
815 static void
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
816 editor_title_changed_cb(GtkWidget *widget, gpointer user_data)
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
817 {
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
818 StatusEditor *dialog = user_data;
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
819 const gchar *text;
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
820
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
821 text = gtk_entry_get_text(dialog->title);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
822
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
823 gtk_widget_set_sensitive(GTK_WIDGET(dialog->saveanduse_button), (*text != '\0'));
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
824 gtk_widget_set_sensitive(GTK_WIDGET(dialog->save_button), (*text != '\0'));
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
825 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
826
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
827 static GtkWidget *
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
828 create_status_type_menu(PurpleStatusPrimitive type)
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
829 {
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
830 int i;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
831 GtkWidget *dropdown;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
832 GtkListStore *store;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
833 GtkTreeIter iter;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
834 GtkCellRenderer *renderer;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
835
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
836 store = gtk_list_store_new(STATUS_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
837
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
838 for (i = PURPLE_STATUS_UNSET + 1; i < PURPLE_STATUS_NUM_PRIMITIVES; i++)
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
839 {
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
840 /* Someone should fix this for 3.0.0. The independent boolean
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
841 * should probably be set on the status type, not the status.
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
842 * I guess that would prevent third party plugins from creating
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
843 * independent statuses?
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
844 */
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
845 if (i == PURPLE_STATUS_MOBILE ||
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
846 i == PURPLE_STATUS_MOOD ||
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24672
diff changeset
847 i == PURPLE_STATUS_TUNE)
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
848 /*
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
849 * Special-case these. They're intended to be independent
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
850 * status types, so don't show them in the list.
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
851 */
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
852 continue;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
853
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
854 gtk_list_store_append(store, &iter);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
855 gtk_list_store_set(store, &iter,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
856 STATUS_COLUMN_ICON, get_stock_icon_from_primitive(i),
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
857 STATUS_COLUMN_STATUS_ID, purple_primitive_get_id_from_type(i),
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
858 STATUS_COLUMN_STATUS_NAME, purple_primitive_get_name_from_type(i),
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
859 -1);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
860 }
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
861
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
862 dropdown = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
863
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
864 renderer = gtk_cell_renderer_pixbuf_new();
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
865 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dropdown), renderer, FALSE);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
866 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dropdown), renderer,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
867 "stock-id", STATUS_COLUMN_ICON,
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
868 NULL);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
869
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
870 renderer = gtk_cell_renderer_text_new();
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
871 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dropdown), renderer, TRUE);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
872 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dropdown), renderer,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
873 "text", STATUS_COLUMN_STATUS_NAME,
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
874 NULL);
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
875
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
876 gtk_combo_box_set_active(GTK_COMBO_BOX(dropdown),
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
877 type - (PURPLE_STATUS_UNSET + 1));
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
878
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
879 return dropdown;
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
880 }
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
881
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
882 static void edit_substatus(StatusEditor *status_editor, PurpleAccount *account);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
883
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
884 static void
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
885 edit_substatus_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer user_data)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
886 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
887 StatusEditor *dialog = user_data;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
888 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
889 PurpleAccount *account;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
890
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
891 gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter, path);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
892 gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
893 STATUS_EDITOR_COLUMN_ACCOUNT, &account,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
894 -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
895
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
896 edit_substatus(dialog, account);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
897 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
898
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
899 static void
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
900 status_editor_substatus_cb(GtkCellRendererToggle *renderer, gchar *path_str, gpointer data)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
901 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
902 StatusEditor *dialog = (StatusEditor *)data;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
903 GtkTreeIter iter;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
904 gboolean enabled;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
905 PurpleAccount *account;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
906
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
907 gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(dialog->model), &iter, path_str);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
908 gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
909 STATUS_EDITOR_COLUMN_ACCOUNT, &account,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
910 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, &enabled,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
911 -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
912
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
913 enabled = !enabled;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
914
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
915 if (enabled)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
916 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
917 edit_substatus(dialog, account);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
918 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
919 else
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
920 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
921 /* Remove the substatus */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
922 gtk_list_store_set(dialog->model, &iter,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
923 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, enabled,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
924 STATUS_EDITOR_COLUMN_STATUS_ID, NULL,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
925 STATUS_EDITOR_COLUMN_STATUS_NAME, NULL,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
926 STATUS_EDITOR_COLUMN_STATUS_MESSAGE, NULL,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
927 STATUS_EDITOR_COLUMN_STATUS_ICON, NULL,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
928 -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
929 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
930 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
931
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
932 static void
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
933 status_editor_add_columns(StatusEditor *dialog)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
934 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
935 GtkCellRenderer *renderer;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
936 GtkTreeViewColumn *column;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
937
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
938 /* Enable Different status column */
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
939 renderer = gtk_cell_renderer_toggle_new();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
940 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(dialog->treeview),
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
941 -1, _("Different"),
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
942 renderer,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
943 "active", STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS,
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
944 NULL);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
945 g_signal_connect(G_OBJECT(renderer), "toggled",
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
946 G_CALLBACK(status_editor_substatus_cb), dialog);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
947
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
948 /* Username column */
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
949 column = gtk_tree_view_column_new();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
950 gtk_tree_view_column_set_resizable(column, TRUE);
22942
2bf494f8e2a4 Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <markdoliner@pidgin.im>
parents: 22214
diff changeset
951 gtk_tree_view_column_set_title(column, _("Username"));
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
952 gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
953 gtk_tree_view_column_set_resizable(column, TRUE);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
954
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
955 /* Icon */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
956 renderer = gtk_cell_renderer_pixbuf_new();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
957 gtk_tree_view_column_pack_start(column, renderer, FALSE);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
958 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf",
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
959 STATUS_EDITOR_COLUMN_ICON);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
960
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
961 /* Username */
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
962 renderer = gtk_cell_renderer_text_new();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
963 gtk_tree_view_column_pack_start(column, renderer, TRUE);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
964 gtk_tree_view_column_add_attribute(column, renderer, "text",
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
965 STATUS_EDITOR_COLUMN_USERNAME);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
966
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
967 /* Status column */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
968 column = gtk_tree_view_column_new();
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
969 gtk_tree_view_column_set_resizable(column, TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
970 gtk_tree_view_column_set_title(column, _("Status"));
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
971 gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
972 gtk_tree_view_column_set_resizable(column, TRUE);
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
973 renderer = gtk_cell_renderer_pixbuf_new();
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
974 gtk_tree_view_column_pack_start(column, renderer, FALSE);
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
975 gtk_tree_view_column_add_attribute(column, renderer, "stock-id",
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
976 STATUS_EDITOR_COLUMN_STATUS_ICON);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
977 renderer = gtk_cell_renderer_text_new();
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
978 gtk_tree_view_column_pack_start(column, renderer, TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
979 gtk_tree_view_column_add_attribute(column, renderer, "text",
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
980 STATUS_EDITOR_COLUMN_STATUS_NAME);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
981
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
982 /* Message column */
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
983 column = gtk_tree_view_column_new();
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
984 gtk_tree_view_column_set_resizable(column, TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
985 gtk_tree_view_column_set_title(column, _("Message"));
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
986 gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
987 gtk_tree_view_column_set_resizable(column, TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
988 renderer = gtk_cell_renderer_text_new();
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
989 gtk_tree_view_column_pack_start(column, renderer, TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
990 gtk_tree_view_column_add_attribute(column, renderer, "text",
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
991 STATUS_EDITOR_COLUMN_STATUS_MESSAGE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
992
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
993 g_signal_connect(G_OBJECT(dialog->treeview), "row-activated",
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
994 G_CALLBACK(edit_substatus_cb), dialog);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
995 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
996
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
997 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
998 status_editor_set_account(GtkListStore *store, PurpleAccount *account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
999 GtkTreeIter *iter, PurpleSavedStatusSub *substatus)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1000 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1001 GdkPixbuf *pixbuf;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1002 const char *id = NULL, *name = NULL, *message = NULL;
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1003 PurpleStatusPrimitive prim = PURPLE_STATUS_UNSET;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1004
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1005 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1006 if ((pixbuf != NULL) && !purple_account_is_connected(account))
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1007 {
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13014
diff changeset
1008 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1009 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1010
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1011 if (substatus != NULL)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1012 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1013 const PurpleStatusType *type;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1014
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1015 type = purple_savedstatus_substatus_get_type(substatus);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1016 id = purple_status_type_get_id(type);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1017 name = purple_status_type_get_name(type);
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1018 prim = purple_status_type_get_primitive(type);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1019 if (purple_status_type_get_attr(type, "message"))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1020 message = purple_savedstatus_substatus_get_message(substatus);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1021 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1022
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1023 gtk_list_store_set(store, iter,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1024 STATUS_EDITOR_COLUMN_ACCOUNT, account,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1025 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, (substatus != NULL),
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13014
diff changeset
1026 STATUS_EDITOR_COLUMN_ICON, pixbuf,
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1027 STATUS_EDITOR_COLUMN_USERNAME, purple_account_get_username(account),
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1028 STATUS_EDITOR_COLUMN_STATUS_ID, id,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1029 STATUS_EDITOR_COLUMN_STATUS_NAME, name,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1030 STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1031 STATUS_EDITOR_COLUMN_STATUS_ICON, get_stock_icon_from_primitive(prim),
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1032 -1);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1033
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13014
diff changeset
1034 if (pixbuf != NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13014
diff changeset
1035 g_object_unref(G_OBJECT(pixbuf));
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1036 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1037
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1038 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1039 status_editor_add_account(StatusEditor *dialog, PurpleAccount *account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1040 PurpleSavedStatusSub *substatus)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1041 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1042 GtkTreeIter iter;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1043
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1044 gtk_list_store_append(dialog->model, &iter);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1045
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1046 status_editor_set_account(dialog->model, account, &iter, substatus);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1047 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1048
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1049 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1050 status_editor_populate_list(StatusEditor *dialog, PurpleSavedStatus *saved_status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1051 {
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
1052 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1053 PurpleSavedStatusSub *substatus;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1054
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1055 gtk_list_store_clear(dialog->model);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1056
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1057 for (iter = purple_accounts_get_all(); iter != NULL; iter = iter->next)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1058 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1059 PurpleAccount *account = (PurpleAccount *)iter->data;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1060
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1061 if (saved_status != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1062 substatus = purple_savedstatus_get_substatus(saved_status, account);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1063 else
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1064 substatus = NULL;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1065
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1066 status_editor_add_account(dialog, account, substatus);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1067 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1068 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1069
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1070 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1071 pidgin_status_editor_show(gboolean edit, PurpleSavedStatus *saved_status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1072 {
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1073 GtkTreeIter iter;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1074 StatusEditor *dialog;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1075 GtkSizeGroup *sg;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1076 GtkWidget *bbox;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1077 GtkWidget *button;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1078 GtkWidget *dbox;
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1079 GtkWidget *expander;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1080 GtkWidget *dropdown;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1081 GtkWidget *entry;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1082 GtkWidget *frame;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1083 GtkWidget *hbox;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1084 GtkWidget *text;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1085 GtkWidget *toolbar;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1086 GtkWidget *vbox;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1087 GtkWidget *win;
13142
bc5e4271747f [gaim-migrate @ 15504]
Etan Reisner <deryni@pidgin.im>
parents: 13091
diff changeset
1088 GList *focus_chain = NULL;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1089
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1090 if (edit)
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1091 {
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1092 g_return_if_fail(saved_status != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1093 g_return_if_fail(!purple_savedstatus_is_transient(saved_status));
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1094 }
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1095
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1096 /* Find a possible window for this saved status and present it */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1097 if (edit && status_window_find_savedstatus(&iter, purple_savedstatus_get_title(saved_status)))
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1098 {
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1099 gtk_tree_model_get(GTK_TREE_MODEL(status_window->model), &iter,
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1100 STATUS_WINDOW_COLUMN_WINDOW, &dialog,
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1101 -1);
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1102 if (dialog != NULL)
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1103 {
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1104 gtk_window_present(GTK_WINDOW(dialog->window));
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1105 return;
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1106 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1107 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1108
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1109 dialog = g_new0(StatusEditor, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1110 if (edit && status_window_find_savedstatus(&iter, purple_savedstatus_get_title(saved_status)))
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1111 {
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1112 gtk_list_store_set(status_window->model, &iter,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1113 STATUS_WINDOW_COLUMN_WINDOW, dialog,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1114 -1);
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1115 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1116
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1117 if (edit)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1118 dialog->original_title = g_strdup(purple_savedstatus_get_title(saved_status));
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
1119
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
1120 dialog->window = win = pidgin_create_dialog(_("Status"), PIDGIN_HIG_BORDER, "status", TRUE);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1121
23457
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
1122 g_signal_connect(G_OBJECT(win), "destroy",
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1123 G_CALLBACK(status_editor_destroy_cb), dialog);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1124
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1125 /* Setup the vbox */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
1126 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1127
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1128 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1129
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1130 /* Title */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1131 entry = gtk_entry_new();
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
1132 dialog->title = GTK_ENTRY(entry);
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13174
diff changeset
1133 if ((saved_status != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1134 && !purple_savedstatus_is_transient(saved_status)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1135 && (purple_savedstatus_get_title(saved_status) != NULL))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1136 gtk_entry_set_text(GTK_ENTRY(entry), purple_savedstatus_get_title(saved_status));
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
1137 g_signal_connect(G_OBJECT(entry), "changed",
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
1138 G_CALLBACK(editor_title_changed_cb), dialog);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1139 pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Title:"), sg, entry, TRUE, NULL);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1140
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1141 /* Status type */
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1142 if (saved_status != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1143 dropdown = create_status_type_menu(purple_savedstatus_get_type(saved_status));
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
1144 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1145 dropdown = create_status_type_menu(PURPLE_STATUS_AWAY);
29741
3fbd100877f9 Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29713
diff changeset
1146 dialog->type = GTK_COMBO_BOX(dropdown);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1147 pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Status:"), sg, dropdown, TRUE, NULL);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1148
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1149 /* Status message */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1150 frame = pidgin_create_imhtml(TRUE, &text, &toolbar, NULL);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
1151 dialog->message = GTK_IMHTML(text);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1152 hbox = pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Message:"), sg, frame, TRUE, NULL);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
1153 gtk_container_child_set(GTK_CONTAINER(vbox), hbox, "expand", TRUE, "fill", TRUE, NULL);
13142
bc5e4271747f [gaim-migrate @ 15504]
Etan Reisner <deryni@pidgin.im>
parents: 13091
diff changeset
1154 focus_chain = g_list_prepend(focus_chain, dialog->message);
bc5e4271747f [gaim-migrate @ 15504]
Etan Reisner <deryni@pidgin.im>
parents: 13091
diff changeset
1155 gtk_container_set_focus_chain(GTK_CONTAINER(hbox), focus_chain);
20292
470dea577276 applied changes from 1f57ebe4e6d16159c74db823ecff2ec0f4c46936
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20289
diff changeset
1156 g_list_free(focus_chain);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1157
25900
0be61f1b3dd1 Add a GtkIMHtml function that causes the widget to actually insert a
Mark Doliner <markdoliner@pidgin.im>
parents: 25889
diff changeset
1158 gtk_imhtml_set_return_inserts_newline(dialog->message);
0be61f1b3dd1 Add a GtkIMHtml function that causes the widget to actually insert a
Mark Doliner <markdoliner@pidgin.im>
parents: 25889
diff changeset
1159
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1160 if ((saved_status != NULL) && (purple_savedstatus_get_message(saved_status) != NULL))
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
1161 gtk_imhtml_append_text(GTK_IMHTML(text),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1162 purple_savedstatus_get_message(saved_status), 0);
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
1163
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1164 /* Different status message expander */
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1165 expander = gtk_expander_new_with_mnemonic(_("Use a _different status for some accounts"));
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1166 gtk_box_pack_start(GTK_BOX(vbox), expander, FALSE, FALSE, 0);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1167
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1168 /* Setup the box that the expander will cover */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
1169 dbox = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
11735
a1d2afa9b4e9 [gaim-migrate @ 14026]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1170 gtk_container_add(GTK_CONTAINER(expander), dbox);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1171
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1172 /* Create the list model */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1173 dialog->model = gtk_list_store_new(STATUS_EDITOR_NUM_COLUMNS,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1174 G_TYPE_POINTER,
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1175 G_TYPE_POINTER,
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1176 G_TYPE_BOOLEAN,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1177 GDK_TYPE_PIXBUF,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1178 G_TYPE_STRING,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1179 G_TYPE_STRING,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1180 G_TYPE_STRING,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1181 G_TYPE_STRING,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1182 G_TYPE_STRING);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1183
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1184 /* Create the treeview */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1185 dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model));
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1186 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(dialog->treeview), TRUE);
15076
6c9515eb0b95 [gaim-migrate @ 17795]
Sean Egan <seanegan@pidgin.im>
parents: 14739
diff changeset
1187 gtk_widget_set_size_request(dialog->treeview, -1, 150);
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 29750
diff changeset
1188 gtk_box_pack_start(GTK_BOX(dbox),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 29750
diff changeset
1189 pidgin_make_scrollable(dialog->treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 29750
diff changeset
1190 TRUE, TRUE, 0);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1191
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1192 /* Add columns */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1193 status_editor_add_columns(dialog);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1194
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1195 /* Populate list */
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1196 status_editor_populate_list(dialog, saved_status);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1197
13194
61b4e7bfc328 [gaim-migrate @ 15556]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13179
diff changeset
1198 /* Expand the treeview if we have substatuses */
61b4e7bfc328 [gaim-migrate @ 15556]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13179
diff changeset
1199 gtk_expander_set_expanded(GTK_EXPANDER(expander),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1200 (saved_status != NULL) && purple_savedstatus_has_substatuses(saved_status));
13194
61b4e7bfc328 [gaim-migrate @ 15556]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13179
diff changeset
1201
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1202 /* Button box */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
1203 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win));
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
1204 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1205 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1206
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1207 /* Cancel button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1208 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1209 G_CALLBACK(status_editor_cancel_cb), dialog);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1210
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1211 /* Use button */
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1212 button = pidgin_pixbuf_button_from_stock(_("_Use"), GTK_STOCK_EXECUTE,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1213 PIDGIN_BUTTON_HORIZONTAL);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1214 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1215 g_signal_connect(G_OBJECT(button), "clicked",
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1216 G_CALLBACK(status_editor_ok_cb), dialog);
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1217
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1218 /* Save & Use button */
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1219 button = pidgin_pixbuf_button_from_stock(_("Sa_ve & Use"), GTK_STOCK_OK,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1220 PIDGIN_BUTTON_HORIZONTAL);
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1221 dialog->saveanduse_button = GTK_BUTTON(button);
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1222 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1223 if (dialog->original_title == NULL)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1224 gtk_widget_set_sensitive(button, FALSE);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1225 g_signal_connect(G_OBJECT(button), "clicked",
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1226 G_CALLBACK(status_editor_ok_cb), dialog);
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1227
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1228 /* Save button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1229 button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_SAVE,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1230 G_CALLBACK(status_editor_ok_cb), dialog);
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1231 if (dialog->original_title == NULL)
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1232 gtk_widget_set_sensitive(button, FALSE);
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1233 dialog->save_button = GTK_BUTTON(button);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1234
13200
3769f413f073 [gaim-migrate @ 15562]
Mark Doliner <markdoliner@pidgin.im>
parents: 13195
diff changeset
1235 gtk_widget_show_all(win);
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20147
diff changeset
1236 g_object_unref(sg);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1237 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1238
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1239
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
1240 /**************************************************************************
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1241 * SubStatus editor
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1242 **************************************************************************/
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1243
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1244 static void
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1245 substatus_selection_changed_cb(GtkComboBox *box, gpointer user_data)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1246 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1247 SubStatusEditor *select = user_data;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1248 GtkTreeIter iter;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1249 char *id;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1250 PurpleStatusType *type;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1251
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1252 if (!gtk_combo_box_get_active_iter(box, &iter))
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1253 return;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1254 gtk_tree_model_get(GTK_TREE_MODEL(select->model), &iter,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1255 STATUS_COLUMN_STATUS_ID, &id,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1256 -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1257 type = purple_account_get_status_type(select->account, id);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1258 g_free(id);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1259
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1260 if (purple_status_type_get_attr(type, "message") == NULL)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1261 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1262 gtk_widget_set_sensitive(GTK_WIDGET(select->message), FALSE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1263 gtk_widget_set_sensitive(GTK_WIDGET(select->toolbar), FALSE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1264 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1265 else
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1266 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1267 gtk_widget_set_sensitive(GTK_WIDGET(select->message), TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1268 gtk_widget_set_sensitive(GTK_WIDGET(select->toolbar), TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1269 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1270 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1271
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1272 static gboolean
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1273 status_editor_find_account_in_treemodel(GtkTreeIter *iter,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1274 StatusEditor *status_editor,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1275 PurpleAccount *account)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1276 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1277 GtkTreeModel *model;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1278 PurpleAccount *cur;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1279
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1280 g_return_val_if_fail(status_editor != NULL, FALSE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1281 g_return_val_if_fail(account != NULL, FALSE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1282
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1283 model = GTK_TREE_MODEL(status_editor->model);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1284
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1285 if (!gtk_tree_model_get_iter_first(model, iter))
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1286 return FALSE;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1287
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1288 do {
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1289 gtk_tree_model_get(model, iter, STATUS_EDITOR_COLUMN_ACCOUNT, &cur, -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1290 if (cur == account)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1291 return TRUE;
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1292 } while (gtk_tree_model_iter_next(model, iter));
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1293
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1294 return FALSE;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1295 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1296
12246
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12238
diff changeset
1297 static void
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1298 substatus_editor_remove_dialog(SubStatusEditor *dialog)
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1299 {
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1300 GtkTreeIter iter;
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1301
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1302 if (status_editor_find_account_in_treemodel(&iter, dialog->status_editor, dialog->account))
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1303 {
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1304 /* Remove the reference to this dialog from our parent's list store */
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1305 gtk_list_store_set(dialog->status_editor->model, &iter,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1306 STATUS_EDITOR_COLUMN_WINDOW, NULL,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1307 -1);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1308 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1309 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1310
23457
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
1311 static void
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
1312 substatus_editor_destroy_cb(GtkWidget *widget, gpointer user_data)
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1313 {
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1314 SubStatusEditor *dialog = user_data;
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1315
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1316 substatus_editor_remove_dialog(dialog);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1317 g_free(dialog);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1318 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1319
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1320 static void
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1321 substatus_editor_cancel_cb(GtkButton *button, gpointer user_data)
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1322 {
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1323 SubStatusEditor *dialog = user_data;
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1324 gtk_widget_destroy(dialog->window);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1325 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1326
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1327
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1328 static void
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1329 substatus_editor_ok_cb(GtkButton *button, gpointer user_data)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1330 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1331 SubStatusEditor *dialog = user_data;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1332 StatusEditor *status_editor;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1333 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1334 PurpleStatusType *type;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1335 char *id = NULL;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1336 char *message = NULL;
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1337 const char *name = NULL, *stock = NULL;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1338
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1339 if (!gtk_combo_box_get_active_iter(dialog->box, &iter))
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1340 {
12856
3615684c6f1a [gaim-migrate @ 15207]
Daniel Atallah <datallah@pidgin.im>
parents: 12823
diff changeset
1341 gtk_widget_destroy(dialog->window);
3615684c6f1a [gaim-migrate @ 15207]
Daniel Atallah <datallah@pidgin.im>
parents: 12823
diff changeset
1342 return;
3615684c6f1a [gaim-migrate @ 15207]
Daniel Atallah <datallah@pidgin.im>
parents: 12823
diff changeset
1343 }
3615684c6f1a [gaim-migrate @ 15207]
Daniel Atallah <datallah@pidgin.im>
parents: 12823
diff changeset
1344
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1345 gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1346 STATUS_COLUMN_STATUS_ID, &id,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1347 -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1348 type = purple_account_get_status_type(dialog->account, id);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1349 if (purple_status_type_get_attr(type, "message") != NULL)
20127
3a7823be4a26 applied changes from a814e8b368b0f92e4f354ae7b74680a6fb56a6cb
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
1350 message = gtk_imhtml_get_markup(GTK_IMHTML(dialog->message));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1351 name = purple_status_type_get_name(type);
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1352 stock = get_stock_icon_from_primitive(purple_status_type_get_primitive(type));
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1353
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1354 status_editor = dialog->status_editor;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1355
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1356 if (status_editor_find_account_in_treemodel(&iter, status_editor, dialog->account))
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1357 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1358 gtk_list_store_set(status_editor->model, &iter,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1359 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, TRUE,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1360 STATUS_EDITOR_COLUMN_STATUS_ID, id,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1361 STATUS_EDITOR_COLUMN_STATUS_NAME, name,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1362 STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message,
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1363 STATUS_EDITOR_COLUMN_WINDOW, NULL,
23458
87adf297c982 Show the stock status icons in the status list and status menus. Closes
Marcus Lundblad <malu@pidgin.im>
parents: 23457
diff changeset
1364 STATUS_EDITOR_COLUMN_STATUS_ICON, stock,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1365 -1);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1366 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1367
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1368 gtk_widget_destroy(dialog->window);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1369 g_free(id);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1370 g_free(message);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1371 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1372
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1373 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1374 edit_substatus(StatusEditor *status_editor, PurpleAccount *account)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1375 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1376 char *tmp;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1377 SubStatusEditor *dialog;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1378 GtkSizeGroup *sg;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1379 GtkWidget *combo;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1380 GtkWidget *hbox;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1381 GtkWidget *frame;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1382 GtkWidget *label;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1383 GtkWidget *text;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1384 GtkWidget *toolbar;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1385 GtkWidget *vbox;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1386 GtkWidget *win;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1387 GtkTreeIter iter;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1388 GtkCellRenderer *rend;
19570
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1389 char *status_id = NULL;
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1390 char *message = NULL;
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1391 gboolean parent_dialog_has_substatus = FALSE;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18186
diff changeset
1392 GList *list;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1393 gboolean select = FALSE;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1394
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1395 g_return_if_fail(status_editor != NULL);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1396 g_return_if_fail(account != NULL);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1397
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1398 status_editor_find_account_in_treemodel(&iter, status_editor, account);
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1399 gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1400 STATUS_EDITOR_COLUMN_WINDOW, &dialog,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1401 -1);
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1402 if (dialog != NULL)
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1403 {
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1404 gtk_window_present(GTK_WINDOW(dialog->window));
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1405 return;
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1406 }
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1407
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1408 dialog = g_new0(SubStatusEditor, 1);
13145
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1409 gtk_list_store_set(status_editor->model, &iter,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1410 STATUS_EDITOR_COLUMN_WINDOW, dialog,
42f870dead30 [gaim-migrate @ 15507]
Richard Nelson <wabz@pidgin.im>
parents: 13142
diff changeset
1411 -1);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1412 dialog->status_editor = status_editor;
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1413 dialog->account = account;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1414
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1415 tmp = g_strdup_printf(_("Status for %s"), purple_account_get_username(account));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
1416 dialog->window = win = pidgin_create_dialog(tmp, PIDGIN_HIG_BORDER, "substatus", TRUE);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1417 g_free(tmp);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1418
23457
db11ec7146ea Plug a little leak. We should not use 'delete_event' signal, because it
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23401
diff changeset
1419 g_signal_connect(G_OBJECT(win), "destroy",
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1420 G_CALLBACK(substatus_editor_destroy_cb), dialog);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1421
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1422 /* Setup the vbox */
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
1423 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1424
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1425 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1426
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1427 /* Status type */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
1428 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1429 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1430
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1431 label = gtk_label_new_with_mnemonic(_("_Status:"));
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1432 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1433 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1434 gtk_size_group_add_widget(sg, label);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1435
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1436 dialog->model = gtk_list_store_new(STATUS_NUM_COLUMNS,
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1437 G_TYPE_STRING,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1438 G_TYPE_STRING,
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1439 G_TYPE_STRING);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1440 combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(dialog->model));
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1441 dialog->box = GTK_COMBO_BOX(combo);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1442
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1443 rend = GTK_CELL_RENDERER(gtk_cell_renderer_pixbuf_new());
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1444 g_object_set(G_OBJECT(rend),
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1445 "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1446 NULL);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1447 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), rend, FALSE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1448 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), rend,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1449 "stock-id", STATUS_COLUMN_ICON, NULL);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1450
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1451 rend = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1452 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), rend, TRUE);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1453 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), rend,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1454 "text", STATUS_COLUMN_STATUS_NAME, NULL);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1455
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1456 g_signal_connect(G_OBJECT(combo), "changed",
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1457 G_CALLBACK(substatus_selection_changed_cb), dialog);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1458
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1459 gtk_box_pack_start(GTK_BOX(hbox), combo, FALSE, FALSE, 0);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1460
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1461 /* Status mesage */
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
1462 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
18328
b3d6edb627e3 Make the "Set a substatus" dialog window resizable
Mark Doliner <markdoliner@pidgin.im>
parents: 18326
diff changeset
1463 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1464
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1465 label = gtk_label_new_with_mnemonic(_("_Message:"));
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1466 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1467 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1468 gtk_size_group_add_widget(sg, label);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1469
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1470 frame = pidgin_create_imhtml(TRUE, &text, &toolbar, NULL);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1471 dialog->message = GTK_IMHTML(text);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1472 dialog->toolbar = GTK_IMHTMLTOOLBAR(toolbar);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1473 gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1474
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1475 /* Cancel button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1476 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1477 G_CALLBACK(substatus_editor_cancel_cb), dialog);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1478
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1479 /* OK button */
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1480 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_OK,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
1481 G_CALLBACK(substatus_editor_ok_cb), dialog);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1482
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1483 /* Seed the input widgets with the current values */
19570
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1484
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1485 /* Only look at the saved status if we can't find it in the parent status dialog's substatuses model */
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24816
diff changeset
1486 gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
19570
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1487 STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, &parent_dialog_has_substatus, -1);
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1488 if (parent_dialog_has_substatus) {
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1489 gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1490 STATUS_EDITOR_COLUMN_STATUS_ID, &status_id,
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1491 STATUS_EDITOR_COLUMN_STATUS_MESSAGE, &message, -1);
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1492 } else if (status_editor->original_title != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1493 PurpleSavedStatus *saved_status = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1494 PurpleSavedStatusSub *substatus = NULL;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1495
19570
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1496 if ((saved_status = purple_savedstatus_find(status_editor->original_title)) != NULL) {
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1497 if ((substatus = purple_savedstatus_get_substatus(saved_status, account)) != NULL) {
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1498 message = (char *)purple_savedstatus_substatus_get_message(substatus);
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1499 status_id = (char *)purple_status_type_get_id(purple_savedstatus_substatus_get_type(substatus));
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1500 }
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1501 }
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1502 }
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1503 /* TODO: Else get the generic status type from our parent */
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1504
19570
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1505 if (message)
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1506 gtk_imhtml_append_text(dialog->message, message, 0);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1507
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1508 for (list = purple_account_get_status_types(account); list; list = list->next)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1509 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1510 PurpleStatusType *status_type;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1511 const char *id, *name;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1512 PurpleStatusPrimitive prim;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1513
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1514 status_type = list->data;
13010
2fbe02bcd876 [gaim-migrate @ 15363]
Mark Doliner <markdoliner@pidgin.im>
parents: 12951
diff changeset
1515
21202
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
1516 /*
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
1517 * Only allow users to select statuses that are flagged as
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
1518 * "user settable" and that aren't independent.
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
1519 */
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
1520 if (!purple_status_type_is_user_settable(status_type) ||
aed170143d43 Don't show "tune" and "mobile" in the Edit a Status! window, and don't
Mark Doliner <markdoliner@pidgin.im>
parents: 20677
diff changeset
1521 purple_status_type_is_independent(status_type))
13010
2fbe02bcd876 [gaim-migrate @ 15363]
Mark Doliner <markdoliner@pidgin.im>
parents: 12951
diff changeset
1522 continue;
2fbe02bcd876 [gaim-migrate @ 15363]
Mark Doliner <markdoliner@pidgin.im>
parents: 12951
diff changeset
1523
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1524 id = purple_status_type_get_id(status_type);
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1525 prim = purple_status_type_get_primitive(status_type);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1526 name = purple_status_type_get_name(status_type);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1527
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1528 gtk_list_store_append(dialog->model, &iter);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1529 gtk_list_store_set(dialog->model, &iter,
29743
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1530 STATUS_COLUMN_ICON, pidgin_stock_id_from_status_primitive(prim),
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1531 STATUS_COLUMN_STATUS_ID, id,
b7ad59a9276e Remove extra enumeration.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29742
diff changeset
1532 STATUS_COLUMN_STATUS_NAME, name,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1533 -1);
13195
628d1077a0ba [gaim-migrate @ 15557]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13194
diff changeset
1534 if ((status_id != NULL) && !strcmp(status_id, id))
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1535 {
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1536 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo), &iter);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1537 select = TRUE;
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1538 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1539 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1540
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1541 if (!select)
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1542 gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1543
19570
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1544 if (parent_dialog_has_substatus) {
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1545 /* These two were gotten from the parent tree model, so they need to be freed */
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1546 g_free(status_id);
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1547 g_free(message);
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1548 }
cb8e923e055d Patch from nix_nix. Fixes #2438
Sean Egan <seanegan@pidgin.im>
parents: 18328
diff changeset
1549
13200
3769f413f073 [gaim-migrate @ 15562]
Mark Doliner <markdoliner@pidgin.im>
parents: 13195
diff changeset
1550 gtk_widget_show_all(win);
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20147
diff changeset
1551 g_object_unref(sg);
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1552 }
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1553
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1554
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1555 /**************************************************************************
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1556 * Utilities *
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1557 **************************************************************************/
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1558
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1559 enum {
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1560 SS_MENU_ENTRY_TYPE_PRIMITIVE,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1561 SS_MENU_ENTRY_TYPE_SAVEDSTATUS
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1562 };
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1563
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1564 enum {
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1565 /** _SSMenuEntryType */
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1566 SS_MENU_TYPE_COLUMN,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1567
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1568 /**
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1569 * This is a GdkPixbuf (the other columns are strings).
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1570 * This column is visible.
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1571 */
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1572 SS_MENU_ICON_COLUMN,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1573
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1574 /** The text displayed on the status box. This column is visible. */
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1575 SS_MENU_TEXT_COLUMN,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1576
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1577 /**
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1578 * This value depends on SS_MENU_TYPE_COLUMN. For _SAVEDSTATUS types,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1579 * this is the creation time. For _PRIMITIVE types,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1580 * this is the PurpleStatusPrimitive.
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1581 */
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1582 SS_MENU_DATA_COLUMN,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1583
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1584 /**
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1585 * This is the emblem to use for this status
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1586 */
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1587 SS_MENU_EMBLEM_COLUMN,
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1588
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1589 /**
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1590 * And whether or not that emblem is visible
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1591 */
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1592 SS_MENU_EMBLEM_VISIBLE_COLUMN,
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24816
diff changeset
1593
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1594 SS_MENU_NUM_COLUMNS
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1595 };
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1596
12246
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12238
diff changeset
1597 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1598 status_menu_cb(GtkComboBox *widget, void(*callback)(PurpleSavedStatus*))
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1599 {
12237
91cf841da813 [gaim-migrate @ 14539]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12199
diff changeset
1600 GtkTreeIter iter;
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1601 int type;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1602 gpointer data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1603 PurpleSavedStatus *status = NULL;
12237
91cf841da813 [gaim-migrate @ 14539]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12199
diff changeset
1604
91cf841da813 [gaim-migrate @ 14539]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12199
diff changeset
1605 if (!gtk_combo_box_get_active_iter(widget, &iter))
91cf841da813 [gaim-migrate @ 14539]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12199
diff changeset
1606 return;
91cf841da813 [gaim-migrate @ 14539]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12199
diff changeset
1607
91cf841da813 [gaim-migrate @ 14539]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12199
diff changeset
1608 gtk_tree_model_get(gtk_combo_box_get_model(widget), &iter,
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1609 SS_MENU_TYPE_COLUMN, &type,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1610 SS_MENU_DATA_COLUMN, &data,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1611 -1);
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1612
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1613 if (type == SS_MENU_ENTRY_TYPE_PRIMITIVE)
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1614 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1615 PurpleStatusPrimitive primitive = GPOINTER_TO_INT(data);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1616 status = purple_savedstatus_find_transient_by_type_and_message(primitive, NULL);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1617 if (status == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1618 status = purple_savedstatus_new(NULL, primitive);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1619 }
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1620 else if (type == SS_MENU_ENTRY_TYPE_SAVEDSTATUS)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1621 status = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data));
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1622
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1623 callback(status);
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1624 }
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1625
12817
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1626 static gint
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1627 saved_status_sort_alphabetically_func(gconstpointer a, gconstpointer b)
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1628 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1629 const PurpleSavedStatus *saved_status_a = a;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1630 const PurpleSavedStatus *saved_status_b = b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1631 return g_utf8_collate(purple_savedstatus_get_title(saved_status_a),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1632 purple_savedstatus_get_title(saved_status_b));
12817
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1633 }
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1634
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1635 static gboolean pidgin_status_menu_add_primitive(GtkListStore *model, GtkWidget *w, PurpleStatusPrimitive primitive,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1636 PurpleSavedStatus *current_status)
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1637 {
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1638 GtkTreeIter iter;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1639 gboolean currently_selected = FALSE;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1640
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1641 gtk_list_store_append(model, &iter);
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1642 gtk_list_store_set(model, &iter,
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1643 SS_MENU_TYPE_COLUMN, SS_MENU_ENTRY_TYPE_PRIMITIVE,
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1644 SS_MENU_ICON_COLUMN, pidgin_stock_id_from_status_primitive(primitive),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1645 SS_MENU_TEXT_COLUMN, purple_primitive_get_name_from_type(primitive),
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1646 SS_MENU_DATA_COLUMN, GINT_TO_POINTER(primitive),
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1647 SS_MENU_EMBLEM_VISIBLE_COLUMN, FALSE,
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1648 -1);
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1649
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1650 if (purple_savedstatus_is_transient(current_status)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1651 && !purple_savedstatus_has_substatuses(current_status)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1652 && purple_savedstatus_get_type(current_status) == primitive)
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1653 currently_selected = TRUE;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1654
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1655 return currently_selected;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1656 }
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1657
23401
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1658 static void
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1659 pidgin_status_menu_update_iter(GtkWidget *combobox, GtkListStore *store, GtkTreeIter *iter,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1660 PurpleSavedStatus *status)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1661 {
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1662 PurpleStatusPrimitive primitive;
23401
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1663
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1664 if (store == NULL)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1665 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1666
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1667 primitive = purple_savedstatus_get_type(status);
23401
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1668 gtk_list_store_set(store, iter,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1669 SS_MENU_TYPE_COLUMN, SS_MENU_ENTRY_TYPE_SAVEDSTATUS,
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1670 SS_MENU_ICON_COLUMN, pidgin_stock_id_from_status_primitive(primitive),
23401
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1671 SS_MENU_TEXT_COLUMN, purple_savedstatus_get_title(status),
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1672 SS_MENU_DATA_COLUMN, GINT_TO_POINTER(purple_savedstatus_get_creation_time(status)),
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1673 SS_MENU_EMBLEM_COLUMN, GTK_STOCK_SAVE,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1674 SS_MENU_EMBLEM_VISIBLE_COLUMN, TRUE,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1675 -1);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1676 }
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1677
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1678 static gboolean
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1679 pidgin_status_menu_find_iter(GtkListStore *store, GtkTreeIter *iter, PurpleSavedStatus *find)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1680 {
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1681 int type;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1682 gpointer data;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1683 time_t creation_time = purple_savedstatus_get_creation_time(find);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1684 GtkTreeModel *model = GTK_TREE_MODEL(store);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1685
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1686 if (!gtk_tree_model_get_iter_first(model, iter))
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1687 return FALSE;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1688
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1689 do {
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1690 gtk_tree_model_get(model, iter,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1691 SS_MENU_TYPE_COLUMN, &type,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1692 SS_MENU_DATA_COLUMN, &data,
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1693 -1);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1694 if (type == SS_MENU_ENTRY_TYPE_PRIMITIVE)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1695 continue;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1696 if (GPOINTER_TO_INT(data) == creation_time)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1697 return TRUE;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1698 } while (gtk_tree_model_iter_next(model, iter));
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1699
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1700 return FALSE;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1701 }
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1702
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1703 static void
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1704 savedstatus_added_cb(PurpleSavedStatus *status, GtkWidget *combobox)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1705 {
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1706 GtkListStore *store;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1707 GtkTreeIter iter;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1708
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1709 if (purple_savedstatus_is_transient(status))
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1710 return;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1711
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1712 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1713 gtk_list_store_append(store, &iter);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1714 pidgin_status_menu_update_iter(combobox, store, &iter, status);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1715 }
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1716
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1717 static void
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1718 savedstatus_deleted_cb(PurpleSavedStatus *status, GtkWidget *combobox)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1719 {
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1720 GtkListStore *store;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1721 GtkTreeIter iter;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1722
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1723 if (purple_savedstatus_is_transient(status))
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1724 return;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1725
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1726 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1727 if (pidgin_status_menu_find_iter(store, &iter, status))
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1728 gtk_list_store_remove(store, &iter);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1729 }
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1730
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1731 static void
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1732 savedstatus_modified_cb(PurpleSavedStatus *status, GtkWidget *combobox)
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1733 {
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1734 GtkListStore *store;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1735 GtkTreeIter iter;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1736
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1737 if (purple_savedstatus_is_transient(status))
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1738 return;
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1739
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1740 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1741 if (pidgin_status_menu_find_iter(store, &iter, status))
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1742 pidgin_status_menu_update_iter(combobox, store, &iter, status);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1743 }
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1744
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1745 GtkWidget *pidgin_status_menu(PurpleSavedStatus *current_status, GCallback callback)
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1746 {
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1747 GtkWidget *combobox;
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1748 GtkListStore *model;
12817
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1749 GList *sorted, *cur;
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1750 int i = 0;
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1751 int index = -1;
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1752 GtkTreeIter iter;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1753 GtkCellRenderer *text_rend;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1754 GtkCellRenderer *icon_rend;
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1755 GtkCellRenderer *emblem_rend;
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1756
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1757 model = gtk_list_store_new(SS_MENU_NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING,
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1758 G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1759
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1760 combobox = gtk_combo_box_new();
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1761
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1762 if (pidgin_status_menu_add_primitive(model, combobox, PURPLE_STATUS_AVAILABLE, current_status))
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1763 index = i;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1764 i++;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1765
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1766 if (pidgin_status_menu_add_primitive(model, combobox, PURPLE_STATUS_AWAY, current_status))
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1767 index = i;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1768 i++;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1769
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1770 if (pidgin_status_menu_add_primitive(model, combobox, PURPLE_STATUS_INVISIBLE, current_status))
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1771 index = i;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1772 i++;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1773
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1774 if (pidgin_status_menu_add_primitive(model, combobox, PURPLE_STATUS_OFFLINE, current_status))
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1775 index = i;
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1776 i++;
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1777
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1778 sorted = g_list_copy((GList *)purple_savedstatuses_get_all());
12817
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1779 sorted = g_list_sort(sorted, saved_status_sort_alphabetically_func);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1780 for (cur = sorted; cur; cur = cur->next)
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1781 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1782 PurpleSavedStatus *status = (PurpleSavedStatus *) cur->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1783 if (!purple_savedstatus_is_transient(status))
13179
e9e22c1cc839 [gaim-migrate @ 15541]
Mark Doliner <markdoliner@pidgin.im>
parents: 13177
diff changeset
1784 {
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1785 gtk_list_store_append(model, &iter);
23401
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1786
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1787 pidgin_status_menu_update_iter(combobox, model, &iter, status);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1788
12199
0cf90c70f0dc [gaim-migrate @ 14501]
Sean Egan <seanegan@pidgin.im>
parents: 12195
diff changeset
1789 if (status == current_status)
0cf90c70f0dc [gaim-migrate @ 14501]
Sean Egan <seanegan@pidgin.im>
parents: 12195
diff changeset
1790 index = i;
0cf90c70f0dc [gaim-migrate @ 14501]
Sean Egan <seanegan@pidgin.im>
parents: 12195
diff changeset
1791 i++;
0cf90c70f0dc [gaim-migrate @ 14501]
Sean Egan <seanegan@pidgin.im>
parents: 12195
diff changeset
1792 }
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1793 }
12817
d84b2c520f7d [gaim-migrate @ 15165]
Mark Doliner <markdoliner@pidgin.im>
parents: 12726
diff changeset
1794 g_list_free(sorted);
12246
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12238
diff changeset
1795
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1796 gtk_combo_box_set_model(GTK_COMBO_BOX(combobox), GTK_TREE_MODEL(model));
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1797
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1798 text_rend = gtk_cell_renderer_text_new();
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1799 icon_rend = gtk_cell_renderer_pixbuf_new();
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1800 emblem_rend = gtk_cell_renderer_pixbuf_new();
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1801 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), icon_rend, FALSE);
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1802 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), text_rend, TRUE);
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1803 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), emblem_rend, FALSE);
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1804 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), icon_rend, "stock-id", SS_MENU_ICON_COLUMN, NULL);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1805 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), text_rend, "markup", SS_MENU_TEXT_COLUMN, NULL);
16482
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1806 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), emblem_rend,
a6621f3d0619 Use menu emblem for saved statuses in preferences also.
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
1807 "stock-id", SS_MENU_EMBLEM_COLUMN, "visible", SS_MENU_EMBLEM_VISIBLE_COLUMN, NULL);
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1808 g_object_set(G_OBJECT(icon_rend),
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1809 "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25900
diff changeset
1810 NULL);
28931
79e72b4741a2 Allow ellipsizing on the status menus in the preference window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 27005
diff changeset
1811 g_object_set(text_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
14739
eefbd27ae047 [gaim-migrate @ 17426]
Daniel Atallah <datallah@pidgin.im>
parents: 14253
diff changeset
1812
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1813 gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), index);
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1814 g_signal_connect(G_OBJECT(combobox), "changed", G_CALLBACK(status_menu_cb), callback);
12329
987036c6c7f9 [gaim-migrate @ 14633]
Mark Doliner <markdoliner@pidgin.im>
parents: 12246
diff changeset
1815
23401
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1816 /* Make sure the list is updated dynamically when a substatus is changed/deleted
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1817 * or a new one is added. */
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1818 purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-added",
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1819 combobox, G_CALLBACK(savedstatus_added_cb), combobox);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1820 purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-deleted",
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1821 combobox, G_CALLBACK(savedstatus_deleted_cb), combobox);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1822 purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-modified",
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1823 combobox, G_CALLBACK(savedstatus_modified_cb), combobox);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1824 g_signal_connect(G_OBJECT(combobox), "destroy",
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1825 G_CALLBACK(purple_signals_disconnect_by_handle), NULL);
9aafdbc03ac0 Update the list of statuses when a new status is added, or an existing
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22942
diff changeset
1826
12195
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1827 return combobox;
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1828 }
ef8f46c29e77 [gaim-migrate @ 14497]
Sean Egan <seanegan@pidgin.im>
parents: 12173
diff changeset
1829
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1830
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11954
diff changeset
1831 /**************************************************************************
10814
7e17cb56b019 [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10732
diff changeset
1832 * GTK+ saved status glue
10421
34797f8b5742 [gaim-migrate @ 11672]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
1833 **************************************************************************/
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1834
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1835 void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1836 pidgin_status_get_handle(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1837 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1838 static int handle;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1839
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1840 return &handle;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1841 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1842
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1843 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1844 pidgin_status_init(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1845 {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
1846 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
1847 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status/dialog");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
1848 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/width", 550);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16082
diff changeset
1849 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/height", 250);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1850 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1851
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1852 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1853 pidgin_status_uninit(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1854 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
1855 pidgin_status_window_hide();
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1856 }

mercurial