1 /* This is a small demo of the high-performance GUIX graphics framework. */
2
3 #include <stdio.h>
4 #include "gx_api.h"
5
6 #include "guix_medical_resources.h"
7 #include "guix_medical_specifications.h"
8
9 GX_WINDOW_ROOT *root;
10
11 /* Define prototypes. */
12 VOID start_guix(VOID);
13 extern UINT win32_graphics_driver_setup_24xrgb(GX_DISPLAY *display);
14 extern VOID patient_list_children_create(PATIENTS_SCREEN_CONTROL_BLOCK* win);
15 extern VOID hide_active_bar();
16
17 /******************************************************************************************/
18 /* Application entry. */
19 /******************************************************************************************/
main(int argc,char ** argv)20 int main(int argc, char ** argv)
21 {
22 tx_kernel_enter();
23 return(0);
24 }
25
26 /******************************************************************************************/
27 /* Define tx_application_define function. */
28 /******************************************************************************************/
tx_application_define(void * first_unused_memory)29 VOID tx_application_define(void *first_unused_memory)
30 {
31 start_guix();
32 }
33
34 /******************************************************************************************/
35 /* Initiate and run GUIX. */
36 /******************************************************************************************/
start_guix(VOID)37 VOID start_guix(VOID)
38 {
39
40 /* Initialize GUIX. */
41 gx_system_initialize();
42
43 /* Configure display. */
44 gx_studio_display_configure(MAIN_DISPLAY, win32_graphics_driver_setup_24xrgb,
45 LANGUAGE_ENGLISH, MAIN_DISPLAY_DEFAULT_THEME, &root);
46
47 /* Create the vitals screen. */
48 gx_studio_named_widget_create("vitals_screen", (GX_WIDGET*)root, GX_NULL);
49
50 /* Create the schedule screen. */
51 gx_studio_named_widget_create("schedule_screen", GX_NULL, GX_NULL);
52 hide_active_bar();
53
54 /* Create the patients screen. */
55 gx_studio_named_widget_create("patients_screen", GX_NULL, GX_NULL);
56 patient_list_children_create(&patients_screen);
57 gx_widget_style_add(&patients_screen.patients_screen_patient_list, GX_STYLE_REPEAT_SELECT);
58
59 /* Show the root window to make it and patients screen visible. */
60 gx_widget_show(root);
61
62 /* Let GUIX run. */
63 gx_system_start();
64 }
65
66 /******************************************************************************************/
67 /* Toggle Screen. */
68 /******************************************************************************************/
ToggleScreen(GX_WIDGET * new_win,GX_WIDGET * old_win)69 VOID ToggleScreen(GX_WIDGET *new_win, GX_WIDGET *old_win)
70 {
71 gx_widget_hide(old_win);
72
73 if (!new_win->gx_widget_parent)
74 {
75 gx_widget_attach(root, new_win);
76 }
77 else
78 {
79 gx_widget_show(new_win);
80 }
81 }
82
83 /******************************************************************************************/
84 /* Override the default event processing of "template" to handle signals from my child */
85 /* widgets. */
86 /******************************************************************************************/
template_event_handler(GX_WINDOW * window,GX_EVENT * event_ptr)87 UINT template_event_handler(GX_WINDOW* window, GX_EVENT* event_ptr)
88 {
89 UINT status = GX_SUCCESS;
90 TEMPLATE_CONTROL_BLOCK *template = (TEMPLATE_CONTROL_BLOCK *)window;
91
92 switch (event_ptr->gx_event_type)
93 {
94 case GX_EVENT_SHOW:
95 gx_window_event_process(window, event_ptr);
96
97 /* Set navigation buttons as unselected. */
98 gx_widget_style_remove(&template->template_vitals_button, GX_STYLE_BUTTON_PUSHED);
99 gx_widget_style_remove(&template->template_schedule_button, GX_STYLE_BUTTON_PUSHED);
100 gx_widget_style_remove(&template->template_patients_button, GX_STYLE_BUTTON_PUSHED);
101
102 /* Selected navigation button according to the active screen. */
103 switch (window->gx_widget_id)
104 {
105 case ID_VITALS_SCREEN:
106 gx_widget_style_add(&template->template_vitals_button, GX_STYLE_BUTTON_PUSHED);
107 break;
108
109 case ID_SCHEDULE_SCREEN:
110 gx_widget_style_add(&template->template_schedule_button, GX_STYLE_BUTTON_PUSHED);
111 break;
112
113 case ID_PATIENTS_SCREEN:
114 gx_widget_style_add(&template->template_patients_button, GX_STYLE_BUTTON_PUSHED);
115 break;
116 }
117 break;
118
119 case GX_SIGNAL(ID_BTN_VITALS, GX_EVENT_RADIO_SELECT):
120 case GX_SIGNAL(ID_PATIENT_LIST, GX_EVENT_LIST_SELECT):
121
122 /* Toggle to vitals screen. */
123 ToggleScreen((GX_WIDGET *) &vitals_screen, (GX_WIDGET*)window);
124 break;
125
126 case GX_SIGNAL(ID_BTN_SCHEDULE, GX_EVENT_RADIO_SELECT):
127
128 /* Toggle to schedule screen. */
129 ToggleScreen((GX_WIDGET*) &schedule_screen, (GX_WIDGET*)window);
130 break;
131
132 case GX_SIGNAL(ID_BTN_PATIENTS, GX_EVENT_RADIO_SELECT):
133
134 /* Toggle to patients screen. */
135 ToggleScreen((GX_WIDGET*) &patients_screen, (GX_WIDGET*)window);
136 break;
137
138 case GX_EVENT_HIDE:
139 if (window->gx_widget_id == ID_VITALS_SCREEN)
140 {
141 gx_animation_delete(GX_NULL, (GX_WIDGET *)window);
142 }
143 else if (window->gx_widget_id == ID_SCHEDULE_SCREEN)
144 {
145 gx_animation_delete(GX_NULL, (GX_WIDGET *)&schedule_screen.schedule_screen_schedule_win);
146 }
147
148 gx_window_event_process(window, event_ptr);
149 break;
150
151 default:
152
153 /* Call default window event process. */
154 status = gx_window_event_process(window, event_ptr);
155 break;
156 }
157
158 return status;
159 }
160
161
162