Mercurial > pidgin.yaz
comparison console/libgnt/gntbutton.c @ 13850:0e1e59770cb0
[gaim-migrate @ 16308]
This is my first commit here. So don't yell at me if things get borked.
Also, I haven't looked at the auto-thingies yet. So don't puke at the
Makefiles.
Files in console/libgnt/ are for the 'Gaim/GObjectified Ncurses Toolkit'
library. Files in console/ uses libgaim and libgnt. Currently, only the
buddylist-ui is 'functional', ie. the buddy-list updates when someone
logs on or logs off. It still needs a lot of work.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Thu, 22 Jun 2006 08:33:54 +0000 |
parents | |
children | 0d0ab1e39d0a |
comparison
equal
deleted
inserted
replaced
13849:8d1c55309e3c | 13850:0e1e59770cb0 |
---|---|
1 #include "gntbutton.h" | |
2 | |
3 enum | |
4 { | |
5 SIGS = 1, | |
6 }; | |
7 | |
8 static GntWidgetClass *parent_class = NULL; | |
9 static guint signals[SIGS] = { 0 }; | |
10 | |
11 static void | |
12 gnt_button_draw(GntWidget *widget) | |
13 { | |
14 GntButton *button = GNT_BUTTON(widget); | |
15 GntColorType type; | |
16 | |
17 if (GNT_WIDGET_FLAGS(widget) & GNT_WIDGET_HAS_FOCUS) | |
18 type = GNT_COLOR_HIGHLIGHT; | |
19 else | |
20 type = GNT_COLOR_NORMAL; | |
21 wbkgdset(widget->window, '\0' | COLOR_PAIR(type)); | |
22 mvwprintw(widget->window, 1, 1, button->priv->text); | |
23 | |
24 wrefresh(widget->window); | |
25 | |
26 DEBUG; | |
27 } | |
28 | |
29 static void | |
30 gnt_button_size_request(GntWidget *widget) | |
31 { | |
32 GntButton *button = GNT_BUTTON(widget); | |
33 widget->priv.width = g_utf8_strlen(button->priv->text, -1) + 2; | |
34 widget->priv.height = 3; | |
35 } | |
36 | |
37 static void | |
38 gnt_button_map(GntWidget *widget) | |
39 { | |
40 if (widget->priv.width == 0 || widget->priv.height == 0) | |
41 gnt_widget_size_request(widget); | |
42 DEBUG; | |
43 } | |
44 | |
45 static gboolean | |
46 gnt_button_key_pressed(GntWidget *widget, const char *key) | |
47 { | |
48 if (strcmp(key, GNT_KEY_ENTER) == 0) | |
49 { | |
50 gnt_widget_activate(widget); | |
51 return TRUE; | |
52 } | |
53 return FALSE; | |
54 } | |
55 | |
56 static void | |
57 gnt_button_class_init(GntWidgetClass *klass) | |
58 { | |
59 GObjectClass *obj_class = G_OBJECT_CLASS(klass); | |
60 | |
61 parent_class = GNT_WIDGET_CLASS(klass); | |
62 parent_class->draw = gnt_button_draw; | |
63 parent_class->map = gnt_button_map; | |
64 parent_class->size_request = gnt_button_size_request; | |
65 parent_class->key_pressed = gnt_button_key_pressed; | |
66 | |
67 DEBUG; | |
68 } | |
69 | |
70 static void | |
71 gnt_button_init(GTypeInstance *instance, gpointer class) | |
72 { | |
73 GntButton *button = GNT_BUTTON(instance); | |
74 button->priv = g_new0(GntButtonPriv, 1); | |
75 DEBUG; | |
76 } | |
77 | |
78 /****************************************************************************** | |
79 * GntButton API | |
80 *****************************************************************************/ | |
81 GType | |
82 gnt_button_get_gtype(void) { | |
83 static GType type = 0; | |
84 | |
85 if(type == 0) { | |
86 static const GTypeInfo info = { | |
87 sizeof(GntButtonClass), | |
88 NULL, /* base_init */ | |
89 NULL, /* base_finalize */ | |
90 (GClassInitFunc)gnt_button_class_init, | |
91 NULL, /* class_finalize */ | |
92 NULL, /* class_data */ | |
93 sizeof(GntButton), | |
94 0, /* n_preallocs */ | |
95 gnt_button_init, /* instance_init */ | |
96 }; | |
97 | |
98 type = g_type_register_static(GNT_TYPE_WIDGET, | |
99 "GntButton", | |
100 &info, 0); | |
101 } | |
102 | |
103 return type; | |
104 } | |
105 | |
106 GntWidget *gnt_button_new(const char *text) | |
107 { | |
108 GntWidget *widget = g_object_new(GNT_TYPE_BUTTON, NULL); | |
109 GntButton *button = GNT_BUTTON(widget); | |
110 | |
111 button->priv->text = g_strdup(text); | |
112 gnt_widget_set_take_focus(widget, TRUE); | |
113 | |
114 return widget; | |
115 } | |
116 |