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