📄 gntbutton.c
字号:
#include <string.h>#include "gntbutton.h"#include "gntutils.h"enum{ SIGS = 1,};static GntWidgetClass *parent_class = NULL;static voidgnt_button_draw(GntWidget *widget){ GntButton *button = GNT_BUTTON(widget); GntColorType type; if (gnt_widget_has_focus(widget)) type = GNT_COLOR_HIGHLIGHT; else type = GNT_COLOR_NORMAL; wbkgdset(widget->window, '\0' | COLOR_PAIR(type)); mvwaddstr(widget->window, 1, 2, button->priv->text); GNTDEBUG;}static voidgnt_button_size_request(GntWidget *widget){ GntButton *button = GNT_BUTTON(widget); gnt_util_get_text_bound(button->priv->text, &widget->priv.width, &widget->priv.height); widget->priv.width += 4; if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) widget->priv.height += 2;}static voidgnt_button_map(GntWidget *widget){ if (widget->priv.width == 0 || widget->priv.height == 0) gnt_widget_size_request(widget); GNTDEBUG;}static gbooleangnt_button_key_pressed(GntWidget *widget, const char *key){ if (strcmp(key, GNT_KEY_ENTER) == 0) { gnt_widget_activate(widget); return TRUE; } return FALSE;}static gbooleangnt_button_clicked(GntWidget *widget, GntMouseEvent event, int x, int y){ if (event == GNT_LEFT_MOUSE_DOWN) { gnt_widget_activate(widget); return TRUE; } return FALSE;}static voidgnt_button_class_init(GntWidgetClass *klass){ parent_class = GNT_WIDGET_CLASS(klass); parent_class->draw = gnt_button_draw; parent_class->map = gnt_button_map; parent_class->size_request = gnt_button_size_request; parent_class->key_pressed = gnt_button_key_pressed; parent_class->clicked = gnt_button_clicked; GNTDEBUG;}static voidgnt_button_init(GTypeInstance *instance, gpointer class){ GntWidget *widget = GNT_WIDGET(instance); GntButton *button = GNT_BUTTON(instance); button->priv = g_new0(GntButtonPriv, 1); widget->priv.minw = 4; widget->priv.minh = 3; GNTDEBUG;}/****************************************************************************** * GntButton API *****************************************************************************/GTypegnt_button_get_gtype(void) { static GType type = 0; if(type == 0) { static const GTypeInfo info = { sizeof(GntButtonClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc)gnt_button_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof(GntButton), 0, /* n_preallocs */ gnt_button_init, /* instance_init */ NULL /* value_table */ }; type = g_type_register_static(GNT_TYPE_WIDGET, "GntButton", &info, 0); } return type;}GntWidget *gnt_button_new(const char *text){ GntWidget *widget = g_object_new(GNT_TYPE_BUTTON, NULL); GntButton *button = GNT_BUTTON(widget); button->priv->text = gnt_util_onscreen_fit_string(text, -1); gnt_widget_set_take_focus(widget, TRUE); return widget;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -