about.c: cosmetix
[k8lowj.git] / src / groupedbox.c
blobdef7e33334dce47a9ab2c6007384e1db9014159d
1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
5 */
7 #include "gtk-all.h"
9 #include "groupedbox.h"
12 http://developer.gnome.org/projects/gup/hig/1.0/layout.html#window-layout-spacing
15 static void
16 groupedbox_init(GroupedBox *gb) {
17 GtkWidget *margin;
18 GtkWidget *hbox;
20 gtk_box_set_spacing(GTK_BOX(gb), 6);
22 hbox = gtk_hbox_new(FALSE, 5);
23 gb->vbox = gtk_vbox_new(FALSE, 6);
25 margin = gtk_label_new(" ");
27 gtk_box_pack_start(GTK_BOX(hbox), margin, FALSE, FALSE, 0);
28 gtk_box_pack_start(GTK_BOX(hbox), gb->vbox, TRUE, TRUE, 0);
29 gtk_box_pack_end(GTK_BOX(gb), hbox, TRUE, TRUE, 0);
31 gb->body = hbox;
34 GtkWidget*
35 groupedbox_new() {
36 GroupedBox *gb = GROUPEDBOX(g_object_new(groupedbox_get_type(), NULL));
37 return GTK_WIDGET(gb);
40 GtkWidget*
41 groupedbox_new_with_text(const char *text) {
42 GroupedBox *gb = GROUPEDBOX(g_object_new(groupedbox_get_type(), NULL));
43 groupedbox_set_header(gb, text, TRUE);
44 return GTK_WIDGET(gb);
47 void
48 groupedbox_set_header_widget(GroupedBox *b, GtkWidget *w) {
49 if (b->header)
50 gtk_container_remove(GTK_CONTAINER(b), b->header);
52 if (w)
53 gtk_box_pack_start(GTK_BOX(b), w, FALSE, FALSE, 0);
55 b->header = w;
58 void
59 groupedbox_set_header(GroupedBox *b, const char *title, gboolean bold) {
60 GtkWidget *label = gtk_label_new(bold ? NULL : title);
61 if (bold) {
62 gchar *markup = g_strdup_printf("<b>%s</b>", title);
63 gtk_label_set_markup(GTK_LABEL(label), markup);
64 g_free(markup);
67 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
68 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
69 groupedbox_set_header_widget(b, label);
72 void
73 groupedbox_pack(GroupedBox *b, GtkWidget *w, gboolean expand) {
74 gtk_box_pack_start(GTK_BOX(b->vbox), w, expand, expand, 0);
77 GType
78 groupedbox_get_type(void) {
79 static GType gb_type = 0;
80 if (!gb_type) {
81 const GTypeInfo gb_info = {
82 sizeof (GtkVBoxClass),
83 NULL,
84 NULL,
85 NULL,
86 NULL,
87 NULL,
88 sizeof (GroupedBox),
90 (GInstanceInitFunc) groupedbox_init,
92 gb_type = g_type_register_static(GTK_TYPE_VBOX,
93 "GroupedBox", &gb_info, 0);
95 return gb_type;