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