girara
session.h
Go to the documentation of this file.
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
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines