Mon, 26 Nov 2007 06:30:57 +0000
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
| 15094 | 1 | /* |
| 15120 | 2 | * @file gtkscrollbook.c GTK+ Scrolling notebook widget |
|
16254
eeb2bba4dc94
Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents:
15931
diff
changeset
|
3 | * @ingroup pidgin |
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
4 | */ |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
5 | |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
6 | /* pidgin |
| 15094 | 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 |
| 15094 | 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:
16254
diff
changeset
|
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 15094 | 25 | */ |
| 26 | ||
| 27 | #include "gtkscrollbook.h" | |
| 28 | ||
| 29 | ||
| 15577 | 30 | static void pidgin_scroll_book_init (PidginScrollBook *scroll_book); |
| 31 | static void pidgin_scroll_book_class_init (PidginScrollBookClass *klass); | |
| 32 | static void pidgin_scroll_book_forall (GtkContainer *c, | |
| 15240 | 33 | gboolean include_internals, |
| 34 | GtkCallback callback, | |
| 35 | gpointer user_data); | |
| 15094 | 36 | |
| 37 | GType | |
| 15577 | 38 | pidgin_scroll_book_get_type (void) |
| 15094 | 39 | { |
| 40 | static GType scroll_book_type = 0; | |
| 41 | ||
| 42 | if (!scroll_book_type) | |
| 43 | { | |
| 44 | static const GTypeInfo scroll_book_info = | |
| 45 | { | |
| 15577 | 46 | sizeof (PidginScrollBookClass), |
| 15094 | 47 | NULL, /* base_init */ |
| 48 | NULL, /* base_finalize */ | |
| 15577 | 49 | (GClassInitFunc) pidgin_scroll_book_class_init, |
| 15094 | 50 | NULL, /* class_finalize */ |
| 51 | NULL, /* class_data */ | |
| 15577 | 52 | sizeof (PidginScrollBook), |
| 15094 | 53 | 0, |
| 15577 | 54 | (GInstanceInitFunc) pidgin_scroll_book_init, |
| 15094 | 55 | NULL /* value_table */ |
| 56 | }; | |
| 57 | ||
| 58 | scroll_book_type = g_type_register_static(GTK_TYPE_VBOX, | |
| 15577 | 59 | "PidginScrollBook", |
| 15094 | 60 | &scroll_book_info, |
| 61 | 0); | |
| 62 | } | |
| 63 | ||
| 64 | return scroll_book_type; | |
| 65 | } | |
| 66 | ||
| 67 | static void | |
| 15577 | 68 | scroll_left_cb(PidginScrollBook *scroll_book) |
| 15094 | 69 | { |
| 70 | int index; | |
| 71 | index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); | |
| 72 | ||
| 73 | if (index > 0) | |
| 74 | gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), index - 1); | |
| 75 | } | |
| 76 | ||
| 77 | static void | |
| 15577 | 78 | scroll_right_cb(PidginScrollBook *scroll_book) |
| 15094 | 79 | { |
| 80 | int index, count; | |
| 81 | index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); | |
| 82 | #if GTK_CHECK_VERSION(2,2,0) | |
| 83 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); | |
| 84 | #else | |
| 85 | count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); | |
| 86 | #endif | |
| 87 | ||
| 88 | if (index + 1 < count) | |
| 89 | gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), index + 1); | |
| 90 | } | |
| 91 | ||
| 92 | static void | |
| 15577 | 93 | refresh_scroll_box(PidginScrollBook *scroll_book, int index, int count) |
| 15094 | 94 | { |
| 95 | char *label; | |
|
15114
4224e5db3ee4
[gaim-migrate @ 17836]
Mark Doliner <markdoliner@pidgin.im>
parents:
15094
diff
changeset
|
96 | gtk_widget_show_all(GTK_WIDGET(scroll_book)); |
| 15094 | 97 | if (count <= 1) |
| 98 | gtk_widget_hide(GTK_WIDGET(scroll_book->hbox)); | |
| 99 | else | |
| 100 | gtk_widget_show_all(GTK_WIDGET(scroll_book->hbox)); | |
| 101 | ||
| 102 | ||
| 103 | label = g_strdup_printf("<span size='smaller' weight='bold'>(%d/%d)</span>", index+1, count); | |
| 104 | gtk_label_set_markup(GTK_LABEL(scroll_book->label), label); | |
| 105 | g_free(label); | |
| 106 | ||
| 107 | if (index == 0) | |
| 108 | gtk_widget_set_sensitive(scroll_book->left_arrow, FALSE); | |
| 109 | else | |
| 110 | gtk_widget_set_sensitive(scroll_book->left_arrow, TRUE); | |
| 111 | ||
| 112 | ||
| 113 | if (index +1== count) | |
| 114 | gtk_widget_set_sensitive(scroll_book->right_arrow, FALSE); | |
| 115 | else | |
| 116 | gtk_widget_set_sensitive(scroll_book->right_arrow, TRUE); | |
| 117 | } | |
| 118 | ||
| 119 | ||
| 120 | static void | |
| 15577 | 121 | page_count_change_cb(PidginScrollBook *scroll_book) |
| 15094 | 122 | { |
| 15243 | 123 | int count; |
| 15094 | 124 | int index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); |
| 125 | #if GTK_CHECK_VERSION(2,2,0) | |
| 15243 | 126 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); |
| 15094 | 127 | #else |
| 128 | count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); | |
| 129 | #endif | |
| 130 | refresh_scroll_box(scroll_book, index, count); | |
| 131 | ||
| 132 | } | |
| 133 | ||
| 134 | static void | |
| 15577 | 135 | switch_page_cb(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, PidginScrollBook *scroll_book) |
| 15094 | 136 | { |
|
15320
c4eea0409712
[gaim-migrate @ 18048]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15246
diff
changeset
|
137 | int count; |
| 15094 | 138 | #if GTK_CHECK_VERSION(2,2,0) |
|
15320
c4eea0409712
[gaim-migrate @ 18048]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15246
diff
changeset
|
139 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); |
| 15094 | 140 | #else |
| 141 | count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); | |
| 142 | #endif | |
| 143 | refresh_scroll_box(scroll_book, page_num, count); | |
| 144 | } | |
| 145 | ||
| 146 | static void | |
| 15577 | 147 | pidgin_scroll_book_add(GtkContainer *container, GtkWidget *widget) |
| 15094 | 148 | { |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
149 | PidginScrollBook *scroll_book; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
150 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
151 | g_return_if_fail(GTK_IS_WIDGET (widget)); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
152 | g_return_if_fail (widget->parent == NULL); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
153 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
154 | scroll_book = PIDGIN_SCROLL_BOOK(container); |
|
21719
b4d7c3fe216c
I'm pretty sure this is what was intended.
Daniel Atallah <datallah@pidgin.im>
parents:
21670
diff
changeset
|
155 | scroll_book->children = g_list_append(scroll_book->children, widget); |
| 15094 | 156 | gtk_widget_show(widget); |
| 15577 | 157 | gtk_notebook_append_page(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), widget, NULL); |
| 158 | page_count_change_cb(PIDGIN_SCROLL_BOOK(container)); | |
| 15094 | 159 | } |
| 160 | ||
| 161 | static void | |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
162 | pidgin_scroll_book_remove(GtkContainer *container, GtkWidget *widget) |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
163 | { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
164 | int page; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
165 | GList *children; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
166 | GtkWidget *child; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
167 | PidginScrollBook *scroll_book; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
168 | g_return_if_fail(GTK_IS_WIDGET(widget)); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
169 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
170 | scroll_book = PIDGIN_SCROLL_BOOK(container); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
171 | children = scroll_book->children; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
172 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
173 | while (children) { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
174 | child = children->data; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
175 | if (child == widget) { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
176 | gtk_widget_unparent (widget); |
|
21719
b4d7c3fe216c
I'm pretty sure this is what was intended.
Daniel Atallah <datallah@pidgin.im>
parents:
21670
diff
changeset
|
177 | scroll_book->children = g_list_delete_link(scroll_book->children, children); |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
178 | break; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
179 | } |
|
21719
b4d7c3fe216c
I'm pretty sure this is what was intended.
Daniel Atallah <datallah@pidgin.im>
parents:
21670
diff
changeset
|
180 | children = children->next; |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
181 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
182 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
183 | page = gtk_notebook_page_num(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), widget); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
184 | if (page >= 0) { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
185 | gtk_notebook_remove_page(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), page); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
186 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
187 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
188 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
189 | static void |
| 15577 | 190 | pidgin_scroll_book_forall(GtkContainer *container, |
| 15240 | 191 | gboolean include_internals, |
| 192 | GtkCallback callback, | |
| 193 | gpointer callback_data) | |
| 194 | { | |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
195 | #if 0 |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
196 | GList *children; |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
197 | #endif |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
198 | PidginScrollBook *scroll_book; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
199 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
200 | g_return_if_fail(GTK_IS_CONTAINER(container)); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
201 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
202 | scroll_book = PIDGIN_SCROLL_BOOK(container); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
203 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
204 | if (include_internals) { |
| 15240 | 205 | (*callback)(scroll_book->hbox, callback_data); |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
206 | (*callback)(scroll_book->notebook, callback_data); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
207 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
208 | |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
209 | #if 0 |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
210 | children = scroll_book->children; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
211 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
212 | while (children) { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
213 | GtkWidget *child; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
214 | child = children->data; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
215 | children = children->next; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
216 | (*callback)(child, callback_data); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
217 | } |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
218 | #endif |
| 15240 | 219 | } |
| 220 | ||
| 221 | static void | |
| 15577 | 222 | pidgin_scroll_book_class_init (PidginScrollBookClass *klass) |
| 15094 | 223 | { |
| 224 | GtkContainerClass *container_class = (GtkContainerClass*)klass; | |
| 225 | ||
| 15577 | 226 | container_class->add = pidgin_scroll_book_add; |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
227 | container_class->remove = pidgin_scroll_book_remove; |
| 15577 | 228 | container_class->forall = pidgin_scroll_book_forall; |
| 15094 | 229 | |
| 230 | } | |
| 231 | ||
| 232 | static void | |
| 15577 | 233 | pidgin_scroll_book_init (PidginScrollBook *scroll_book) |
| 15094 | 234 | { |
| 235 | GtkWidget *eb; | |
| 236 | ||
| 237 | scroll_book->hbox = gtk_hbox_new(FALSE, 0); | |
| 238 | ||
| 239 | eb = gtk_event_box_new(); | |
| 240 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); | |
| 241 | scroll_book->right_arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE); | |
| 242 | gtk_container_add(GTK_CONTAINER(eb), scroll_book->right_arrow); | |
| 243 | g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_right_cb), scroll_book); | |
| 244 | ||
| 245 | scroll_book->label = gtk_label_new(NULL); | |
| 246 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), scroll_book->label, FALSE, FALSE, 0); | |
| 247 | ||
| 248 | eb = gtk_event_box_new(); | |
| 249 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); | |
| 250 | scroll_book->left_arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE); | |
| 251 | gtk_container_add(GTK_CONTAINER(eb), scroll_book->left_arrow); | |
| 252 | g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_left_cb), scroll_book); | |
| 253 | ||
| 254 | gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->hbox, FALSE, FALSE, 0); | |
| 255 | ||
| 256 | scroll_book->notebook = gtk_notebook_new(); | |
| 257 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(scroll_book->notebook), FALSE); | |
| 258 | gtk_notebook_set_show_border(GTK_NOTEBOOK(scroll_book->notebook), FALSE); | |
| 259 | ||
| 260 | gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->notebook, TRUE, TRUE, 0); | |
| 261 | ||
|
15190
4ce2829864f0
[gaim-migrate @ 17914]
Mark Doliner <markdoliner@pidgin.im>
parents:
15120
diff
changeset
|
262 | g_signal_connect_swapped(G_OBJECT(scroll_book->notebook), "remove", G_CALLBACK(page_count_change_cb), scroll_book); |
| 15094 | 263 | g_signal_connect(G_OBJECT(scroll_book->notebook), "switch-page", G_CALLBACK(switch_page_cb), scroll_book); |
| 15243 | 264 | gtk_widget_show_all(scroll_book->notebook); |
| 15094 | 265 | } |
| 266 | ||
| 267 | ||
| 268 | ||
| 269 | GtkWidget * | |
| 15577 | 270 | pidgin_scroll_book_new() |
| 15094 | 271 | { |
| 15577 | 272 | return g_object_new(PIDGIN_TYPE_SCROLL_BOOK, NULL); |
| 15094 | 273 | } |