enum status_type { STATUS_WELCOME, STATUS_NOT_MODIFIED, STATUS_MODIFIED, STATUS_SAVED, STATUS_WORKSPACE_SAVED, STATUS_AUTOSAVED, STATUS_AUDIO_SAVED, STATUS_VIDEO_OPENED }; struct KryStatusBarInfo { enum status_type id; char *text; GTimer *timer; kryColor *color; }; struct KryStatusBar { GtkHBox *hbox_status; GtkProgressBar *progress_bar; GtkEventBox *status_label_border; GtkFrame *status_label_frame; GtkLabel *status_label; int update_timeout_id; gboolean progress_bar_mode; GList *status_info_stack; struct KryStatusBarInfo *status_info_perm_text; struct KryStatusBarInfo *status_info_current; int status_bar_color_changed_signal_id[2]; }; struct KryStatusBar *gui_status_bar_new(); void gui_status_bar_free(struct KryStatusBar *bar); GtkWidget *gui_status_bar_get_widget(struct KryStatusBar *bar); void gui_status_bar_hide_progress_bar(struct KryStatusBar *bar); void gui_status_bar_text_only_mode(struct KryStatusBar *bar); void gui_status_bar_set_text(struct KryStatusBar *bar, enum status_type id, char *text); void gui_status_bar_set_text_with_color(struct KryStatusBar *bar, enum status_type id, char *text, kryColor *color); void gui_status_bar_push_text(struct KryStatusBar *bar, enum status_type id, char *text); void gui_status_bar_push_text_with_color(struct KryStatusBar *bar, enum status_type id, char *text, kryColor *color); void gui_status_bar_text_and_progress_mode(struct KryStatusBar *bar, char *title); void gui_status_bar_set_progress(struct KryStatusBar *bar, double progress, gboolean update = TRUE);