15 #include "widget/widgets.h"
27 static void get_readme_text(struct xuni_t
*xuni
, struct widget_t
*panel
);
29 int help_init(struct xuni_t
*xuni
, struct panel_data_t
*data
) {
30 struct widget_t
*panel
= data
->event
[PANEL_EVENT_INIT
].p
.init
.panel
;
32 init_wid(xuni
->gui
->widget
, xuni
->gui
->widget
, PANEL_HELP
, "help");
34 init_wid(panel
, panel
, WID_BACK
, "back");
35 init_wid(panel
, panel
, WID_README
, "readme");
37 add_widget_accelerator(xuni
, panel
, widget_nameid_access(panel
, WID_BACK
),
38 SDLK_ESCAPE
, KMOD_NONE
);
40 get_readme_text(xuni
, panel
);
45 static void get_readme_text(struct xuni_t
*xuni
, struct widget_t
*panel
) {
46 FILE *file
= fopen("README", "r");
47 char line
[BUFSIZ
], *p
;
51 while(fgets(line
, sizeof(line
), file
)) {
52 if((p
= strchr(line
, '\n'))) *p
= 0;
54 /* !!! blank labels do not work properly
55 the height of a blank label cannot be determined (with SDL_ttf)
61 add_listbox_item(xuni
, widget_nameid_access(panel
, WID_README
)
62 ->compose
->widget
[WID_LISTBOX_DATA
],
63 strstr(line
, "http") ? THEME_FONT_MONO
: THEME_FONT_SANS
, line
);
66 widget_event(xuni
, widget_nameid_access(panel
, WID_README
),
67 WIDGET_EVENT_RESCALE
);
72 int help_start(struct xuni_t
*xuni
, struct panel_data_t
*data
) {
73 set_caption("Help and information");
78 int help_event(struct xuni_t
*xuni
, struct panel_data_t
*data
) {
79 panel_type_t
*mode
= data
->event
[PANEL_EVENT_EVENT
].p
.event
.mode
;
80 SDL_Event
*event
= data
->event
[PANEL_EVENT_EVENT
].p
.event
.event
;
84 *mode
= PANEL_MAIN_MENU
;
93 int help_paint(struct xuni_t
*xuni
, struct panel_data_t
*data
) {
94 struct widget_t
*panel
95 = widget_nameid_access(xuni
->gui
->widget
, PANEL_HELP
);
96 panel_type_t mode
= data
->event
[PANEL_EVENT_PAINT
].p
.paint
.mode
;
98 clear_screen(xuni
->smode
->screen
);
100 widget_event(xuni
, widget_nameid_access(xuni
->gui
->widget
, PANEL_HELP
),
108 int help_click(struct xuni_t
*xuni
, struct panel_data_t
*data
) {
109 panel_type_t
*mode
= data
->event
[PANEL_EVENT_CLICK
].p
.click
.mode
;
110 struct widget_t
*widget
= data
->event
[PANEL_EVENT_CLICK
].p
.click
.widget
;
114 *mode
= PANEL_MAIN_MENU
;
118 return 0; /* ignored */
121 int help_free(struct xuni_t
*xuni
, struct panel_data_t
*data
) {