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 
20 {
21  struct
22  {
23  GtkWidget *window;
24  GtkBox *box;
25  GtkWidget *view;
26  GtkWidget *viewport;
27  GtkWidget *statusbar;
29  GtkWidget *notification_area;
30  GtkWidget *notification_text;
31  GtkWidget *tabbar;
32  GtkBox *inputbar_box;
33  GtkWidget *inputbar;
34  GtkLabel *inputbar_dialog;
35  GtkEntry *inputbar_entry;
36  GtkNotebook *tabs;
37  GtkBox *results;
39 #if (GTK_MAJOR_VERSION == 3)
40  Window embed;
41 #else
42  GdkNativeWindow embed;
43 #endif // (GTK_MAJOR_VERSION == 3)
44 
45  } gtk;
46 
47  struct
48  {
71  PangoFontDescription *font;
72  } style;
73 
74  struct
75  {
76  girara_list_t* mouse_events;
77  girara_list_t* commands;
78  girara_list_t* shortcuts;
79  girara_list_t* special_commands;
80  girara_list_t* inputbar_shortcuts;
81  } bindings;
82 
83  struct
84  {
85  girara_list_t* statusbar_items;
86  } elements;
87 
91  girara_list_t* GIRARA_DEPRECATED(settings);
92 
93  struct
94  {
106  } signals;
107 
108  struct
109  {
110  void (*buffer_changed)(girara_session_t* session);
111  bool (*unknown_command)(girara_session_t* session, const char* input);
112  } events;
113 
114  struct
115  {
116  GString *buffer;
117  void* data;
118  girara_list_t* GIRARA_DEPRECATED(command_history);
121  } global;
122 
123  struct
124  {
126  girara_list_t *identifiers;
129  } modes;
130 
131  struct
132  {
133  int n;
134  GString *command;
135  } buffer;
136 
137  struct
138  {
139  girara_list_t* handles;
140  girara_list_t* shortcut_mappings;
141  girara_list_t* argument_mappings;
142  } config;
143 
144  GiraraInputHistory* command_history;
145  girara_session_private_t* private_data;
146 };
147 
154 girara_session_t* girara_session_create();
155 
164 bool girara_session_init(girara_session_t* session, const char* appname);
165 
173 bool girara_session_destroy(girara_session_t* session);
174 
183 bool girara_set_view(girara_session_t* session, GtkWidget* widget);
184 
191 char* girara_buffer_get(girara_session_t* session);
192 
202 void girara_notify(girara_session_t* session, int level,
203  const char* format, ...) GIRARA_PRINTF(3, 4);
204 
215 void girara_dialog(girara_session_t* session, const char* dialog, bool
216  invisible, girara_callback_inputbar_key_press_event_t key_press_event,
217  girara_callback_inputbar_activate_t activate_event, void* data);
218 
226 girara_mode_t girara_mode_add(girara_session_t* session, const char* name);
227 
234 void girara_mode_set(girara_session_t* session, girara_mode_t mode);
235 
242 girara_mode_t girara_mode_get(girara_session_t* session);
243 
252 bool girara_set_window_title(girara_session_t* session, const char* name);
253 
260 girara_list_t* girara_get_command_history(girara_session_t* session);
261 
262 #endif