girara
|
00001 /* See LICENSE file for license and copyright information */ 00002 00003 #ifndef GIRARA_SESSION_H 00004 #define GIRARA_SESSION_H 00005 00006 #include "types.h" 00007 #include "macros.h" 00008 #include "callbacks.h" 00009 00010 #include <gtk/gtk.h> 00011 #include <gdk/gdkkeysyms.h> 00012 00013 #if (GTK_MAJOR_VERSION == 3) 00014 #include <gtk/gtkx.h> 00015 #elif GTK_MAJOR_VERSION == 2 00016 #include "gtk2-compat.h" 00017 #endif 00018 00022 struct girara_session_s 00023 { 00024 struct 00025 { 00026 GtkWidget *window; 00027 GtkBox *box; 00028 GtkWidget *view; 00029 GtkWidget *viewport; 00030 GtkWidget *statusbar; 00031 GtkBox *statusbar_entries; 00032 GtkWidget *notification_area; 00033 GtkWidget *notification_text; 00034 GtkWidget *tabbar; 00035 GtkBox *inputbar_box; 00036 GtkWidget *inputbar; 00037 GtkLabel *inputbar_dialog; 00038 GtkEntry *inputbar_entry; 00039 GtkNotebook *tabs; 00040 GtkBox *results; 00042 #if (GTK_MAJOR_VERSION == 3) 00043 Window embed; 00044 #else 00045 GdkNativeWindow embed; 00046 #endif // (GTK_MAJOR_VERSION == 3) 00047 } gtk; 00048 00049 struct 00050 { 00051 GdkRGBA default_foreground; 00052 GdkRGBA default_background; 00053 GdkRGBA inputbar_foreground; 00054 GdkRGBA inputbar_background; 00055 GdkRGBA statusbar_foreground; 00056 GdkRGBA statusbar_background; 00057 GdkRGBA completion_foreground; 00058 GdkRGBA completion_background; 00059 GdkRGBA completion_group_foreground; 00060 GdkRGBA completion_group_background; 00061 GdkRGBA completion_highlight_foreground; 00062 GdkRGBA completion_highlight_background; 00063 GdkRGBA notification_error_foreground; 00064 GdkRGBA notification_error_background; 00065 GdkRGBA notification_warning_foreground; 00066 GdkRGBA notification_warning_background; 00067 GdkRGBA notification_default_foreground; 00068 GdkRGBA notification_default_background; 00069 GdkRGBA tabbar_foreground; 00070 GdkRGBA tabbar_background; 00071 GdkRGBA tabbar_focus_foreground; 00072 GdkRGBA tabbar_focus_background; 00073 PangoFontDescription *font; 00074 } style; 00075 00076 struct 00077 { 00078 girara_list_t* mouse_events; 00079 girara_list_t* commands; 00080 girara_list_t* shortcuts; 00081 girara_list_t* special_commands; 00082 girara_list_t* inputbar_shortcuts; 00083 } bindings; 00084 00085 struct 00086 { 00087 girara_list_t* statusbar_items; 00088 } elements; 00089 00093 girara_list_t* settings; 00094 00095 struct 00096 { 00097 int inputbar_activate; 00098 int inputbar_key_pressed; 00099 int inputbar_changed; 00100 int view_key_pressed; 00101 int view_button_press_event; 00102 int view_button_release_event; 00103 int view_motion_notify_event; 00104 girara_callback_inputbar_activate_t inputbar_custom_activate; 00105 girara_callback_inputbar_key_press_event_t inputbar_custom_key_press_event; 00106 void* inputbar_custom_data; 00107 } signals; 00108 00109 struct 00110 { 00111 void (*buffer_changed)(girara_session_t* session); 00112 } events; 00113 00114 struct 00115 { 00116 GString *buffer; 00117 void* data; 00118 } global; 00119 00120 struct 00121 { 00122 girara_mode_t current_mode; 00123 girara_list_t *identifiers; 00124 girara_mode_t normal; 00125 } modes; 00126 00127 struct 00128 { 00129 int n; 00130 GString *command; 00131 } buffer; 00132 00133 struct 00134 { 00135 girara_list_t* handles; 00136 girara_list_t* shortcut_mappings; 00137 girara_list_t* argument_mappings; 00138 } config; 00139 }; 00140 00147 girara_session_t* girara_session_create(); 00148 00157 bool girara_session_init(girara_session_t* session, const char* appname); 00158 00166 bool girara_session_destroy(girara_session_t* session); 00167 00176 bool girara_set_view(girara_session_t* session, GtkWidget* widget); 00177 00184 char* girara_buffer_get(girara_session_t* session); 00185 00195 void girara_notify(girara_session_t* session, int level, 00196 const char* format, ...) GIRARA_PRINTF(3, 4); 00197 00208 void girara_dialog(girara_session_t* session, const char* dialog, bool 00209 invisible, girara_callback_inputbar_key_press_event_t key_press_event, 00210 girara_callback_inputbar_activate_t activate_event, void* data); 00211 00219 girara_mode_t girara_mode_add(girara_session_t* session, const char* name); 00220 00227 void girara_mode_set(girara_session_t* session, girara_mode_t mode); 00228 00235 girara_mode_t girara_mode_get(girara_session_t* session); 00236 00245 bool girara_set_window_title(girara_session_t* session, const char* name); 00246 00247 #endif