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  {
108  } signals;
109 
110  struct
111  {
112  void (*buffer_changed)(girara_session_t* session);
113  bool (*unknown_command)(girara_session_t* session, const char* input);
114  } events;
115 
116  struct
117  {
118  GString *buffer;
119  void* data;
120  girara_list_t* GIRARA_DEPRECATED(command_history);
123  } global;
124 
125  struct
126  {
128  girara_list_t *identifiers;
131  } modes;
132 
133  struct
134  {
135  int n;
136  GString *command;
137  } buffer;
138 
139  struct
140  {
141  girara_list_t* handles;
142  girara_list_t* shortcut_mappings;
143  girara_list_t* argument_mappings;
144  } config;
145 
146  GiraraInputHistory* command_history;
147 };
148 
155 girara_session_t* girara_session_create();
156 
165 bool girara_session_init(girara_session_t* session, const char* appname);
166 
174 bool girara_session_destroy(girara_session_t* session);
175 
184 bool girara_set_view(girara_session_t* session, GtkWidget* widget);
185 
192 char* girara_buffer_get(girara_session_t* session);
193 
203 void girara_notify(girara_session_t* session, int level,
204  const char* format, ...) GIRARA_PRINTF(3, 4);
205 
216 void girara_dialog(girara_session_t* session, const char* dialog, bool
217  invisible, girara_callback_inputbar_key_press_event_t key_press_event,
218  girara_callback_inputbar_activate_t activate_event, void* data);
219 
227 girara_mode_t girara_mode_add(girara_session_t* session, const char* name);
228 
235 void girara_mode_set(girara_session_t* session, girara_mode_t mode);
236 
243 girara_mode_t girara_mode_get(girara_session_t* session);
244 
253 bool girara_set_window_title(girara_session_t* session, const char* name);
254 
261 girara_list_t* girara_get_command_history(girara_session_t* session);
262 
263 #endif