girara
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
session.h
Go to the documentation of this file.
1 /* See LICENSE file for license and copyright information */
2 
3 #ifndef GIRARA_SESSION_H
4 #define GIRARA_SESSION_H
5 
6 #include "types.h"
7 #include "macros.h"
8 #include "callbacks.h"
9 
10 #include <gtk/gtk.h>
11 #include <gdk/gdkkeysyms.h>
12 
13 #if (GTK_MAJOR_VERSION == 3)
14 #include <gtk/gtkx.h>
15 #elif GTK_MAJOR_VERSION == 2
16 #include "gtk2-compat.h"
17 #endif
18 
23 {
24  struct
25  {
26  GtkWidget *window;
27  GtkBox *box;
28  GtkWidget *view;
29  GtkWidget *viewport;
30  GtkWidget *statusbar;
32  GtkWidget *notification_area;
33  GtkWidget *notification_text;
34  GtkWidget *tabbar;
35  GtkBox *inputbar_box;
36  GtkWidget *inputbar;
37  GtkLabel *inputbar_dialog;
38  GtkEntry *inputbar_entry;
39  GtkNotebook *tabs;
40  GtkBox *results;
42 #if (GTK_MAJOR_VERSION == 3)
43  Window embed;
44 #else
45  GdkNativeWindow embed;
46 #endif // (GTK_MAJOR_VERSION == 3)
47  } gtk;
48 
49  struct
50  {
73  PangoFontDescription *font;
74  } style;
75 
76  struct
77  {
78  girara_list_t* mouse_events;
79  girara_list_t* commands;
80  girara_list_t* shortcuts;
81  girara_list_t* special_commands;
82  girara_list_t* inputbar_shortcuts;
83  } bindings;
84 
85  struct
86  {
87  girara_list_t* statusbar_items;
88  } elements;
89 
93  girara_list_t* settings;
94 
95  struct
96  {
107  } signals;
108 
109  struct
110  {
111  void (*buffer_changed)(girara_session_t* session);
112  } events;
113 
114  struct
115  {
116  GString *buffer;
117  void* data;
118  } global;
119 
120  struct
121  {
123  girara_list_t *identifiers;
125  } modes;
126 
127  struct
128  {
129  int n;
130  GString *command;
131  } buffer;
132 
133  struct
134  {
135  girara_list_t* handles;
136  girara_list_t* shortcut_mappings;
137  girara_list_t* argument_mappings;
138  } config;
139 };
140 
147 girara_session_t* girara_session_create();
148 
157 bool girara_session_init(girara_session_t* session, const char* appname);
158 
166 bool girara_session_destroy(girara_session_t* session);
167 
176 bool girara_set_view(girara_session_t* session, GtkWidget* widget);
177 
184 char* girara_buffer_get(girara_session_t* session);
185 
195 void girara_notify(girara_session_t* session, int level,
196  const char* format, ...) GIRARA_PRINTF(3, 4);
197 
208 void girara_dialog(girara_session_t* session, const char* dialog, bool
209  invisible, girara_callback_inputbar_key_press_event_t key_press_event,
210  girara_callback_inputbar_activate_t activate_event, void* data);
211 
219 girara_mode_t girara_mode_add(girara_session_t* session, const char* name);
220 
227 void girara_mode_set(girara_session_t* session, girara_mode_t mode);
228 
235 girara_mode_t girara_mode_get(girara_session_t* session);
236 
245 bool girara_set_window_title(girara_session_t* session, const char* name);
246 
247 #endif