/******************************************************************************\ Initialize ring widgets and attach them to the root window. \******************************************************************************/ void I_init_ring(void) { int i; I_widget_init(&ring_widget, "Ring"); ring_widget.event_func = (i_event_f)ring_event; ring_widget.state = I_WS_READY; ring_widget.shown = FALSE; /* Generic buttons */ I_button_init(button_widgets + I_RI_NONE, "gui/icons/ring/none.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_UNKNOWN, "gui/icons/ring/unknown.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_SHIP, "gui/icons/ring/ship.png", NULL, I_BT_ROUND); /* Building buttons */ I_button_init(button_widgets + I_RI_MILL, "gui/icons/ring/mill.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_TREE, "gui/icons/ring/tree.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_SHIPYARD, "gui/icons/ring/dock.png", NULL, I_BT_ROUND); /* Ship interactions */ I_button_init(button_widgets + I_RI_BOARD, "gui/icons/ring/board.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_FOLLOW, "gui/icons/ring/follow.png", NULL, I_BT_ROUND); /* Tech preview buttons */ I_button_init(button_widgets + I_RI_SLOOP, "gui/icons/ring/ship.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_SPIDER, "gui/icons/ring/spider.png", NULL, I_BT_ROUND); I_button_init(button_widgets + I_RI_GALLEON, "gui/icons/ring/galleon.png", NULL, I_BT_ROUND); /* Finish initializing the button widgets */ for (i = 0; i < I_RING_ICONS; i++) { I_widget_add(&ring_widget, &button_widgets[i].widget); button_widgets[i].on_click = (i_callback_f)button_clicked; } I_widget_add(&i_root, &ring_widget); /* Detail popup window */ I_window_init(&detail_window); I_label_init(&detail_title, NULL); I_widget_add(&detail_window.widget, &detail_title.widget); I_label_init(&detail_sub_title, NULL); I_widget_add(&detail_window.widget, &detail_sub_title.widget); detail_window.widget.shown = FALSE; detail_window.fit = I_FIT_TOP; detail_window.popup = TRUE; I_widget_add(&i_root, &detail_window.widget); }
/******************************************************************************\ Initializes a button widget. The [icon] path and [text] strings can be NULL and do not need to persist after calling the function. \******************************************************************************/ void I_checkbox_init(i_checkbox_t *checkbox) { C_zero(checkbox); I_widget_init(&checkbox->widget, "Checkbox"); checkbox->widget.event_func = (i_event_f)I_checkbox_event; checkbox->widget.state = I_WS_READY; checkbox->on_change = NULL; // checkbox->type = type; // R_sprite_load(&button->icon, icon); // C_strncpy_buf(button->buffer, text); }
/******************************************************************************\ Initialize a toolbar widget. \******************************************************************************/ void I_toolbar_init(i_toolbar_t *toolbar, int right) { C_zero(toolbar); I_widget_init(&toolbar->widget, "Toolbar"); toolbar->widget.event_func = (i_event_f)I_toolbar_event; toolbar->widget.state = I_WS_READY; toolbar->widget.steal_keys = TRUE; toolbar->right = right; I_window_init(&toolbar->window); toolbar->window.pack_children = I_PACK_H; toolbar->window.fit = right ? I_FIT_TOP : I_FIT_BOTTOM; I_widget_add(&toolbar->widget, &toolbar->window.widget); }
/******************************************************************************\ Initializes an window widget. \******************************************************************************/ void I_window_init(i_window_t *window) { if (!window) return; C_zero(window); I_widget_init(&window->widget, "Window"); window->widget.event_func = (i_event_f)I_window_event; window->widget.state = I_WS_READY; window->widget.padding = 1.f; window->widget.steal_keys = TRUE; window->pack_children = I_PACK_V; window->decorated = TRUE; }
/******************************************************************************\ Initialize popup widget and add it to the root widget. \******************************************************************************/ void I_init_popup(void) { I_widget_init(&popup_widget, "Popup"); popup_widget.event_func = (i_event_f)popup_event; popup_widget.state = I_WS_READY; popup_widget.shown = FALSE; popup_widget.padding = 1.f; popup_widget.steal_keys = TRUE; /* Label */ I_label_init(&popup_label, NULL); I_widget_add(&popup_widget, &popup_label.widget); /* Zoom button */ I_button_init(&zoom_button, "gui/icons/zoom.png", NULL, I_BT_ROUND); zoom_button.widget.margin_front = 0.5f; zoom_button.on_click = (i_callback_f)popup_zoom; I_widget_add(&popup_widget, &zoom_button.widget); I_widget_add(&i_root, &popup_widget); }