girara
session.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Zlib */
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 
12 #ifdef GDK_WINDOWING_X11
13 #include <gtk/gtkx.h>
14 #else
15 typedef int Window;
16 #endif
17 
19 {
20  struct
21  {
22  GtkWidget *window;
23  GtkBox *box;
24  GtkWidget *view;
25  GtkWidget *viewport;
26  GtkWidget *statusbar;
28  GtkWidget *notification_area;
29  GtkWidget *notification_text;
30  GtkBox *inputbar_box;
31  GtkWidget *inputbar;
32  GtkLabel *inputbar_dialog;
33  GtkEntry *inputbar_entry;
34  GtkBox *results;
36  } gtk;
37 
38  struct
39  {
45  } bindings;
46 
47  struct
48  {
60  } signals;
61 
62  struct
63  {
64  void (*buffer_changed)(girara_session_t* session);
65  bool (*unknown_command)(girara_session_t* session, const char* input);
66  } events;
67 
68  struct
69  {
70  GString *buffer;
71  void* data;
74  } global;
75 
76  struct
77  {
82  } modes;
83 
84  GiraraInputHistory* command_history;
85  girara_session_private_t* private_data;
86 };
87 
94 girara_session_t* girara_session_create(void) GIRARA_VISIBLE;
95 
104 bool girara_session_init(girara_session_t* session, const char* appname) GIRARA_VISIBLE;
105 
113 bool girara_session_destroy(girara_session_t* session) GIRARA_VISIBLE;
114 
123 bool girara_set_view(girara_session_t* session, GtkWidget* widget) GIRARA_VISIBLE;
124 
131 char* girara_buffer_get(girara_session_t* session) GIRARA_VISIBLE;
132 
142 void girara_libnotify(girara_session_t* session, const char *summary,
143  const char *body) GIRARA_VISIBLE;
144 
154 void girara_notify(girara_session_t* session, int level,
155  const char* format, ...) GIRARA_PRINTF(3, 4) GIRARA_VISIBLE;
156 
167 void girara_dialog(girara_session_t* session, const char* dialog, bool
168  invisible, girara_callback_inputbar_key_press_event_t key_press_event,
169  girara_callback_inputbar_activate_t activate_event, void* data) GIRARA_VISIBLE;
170 
178 girara_mode_t girara_mode_add(girara_session_t* session, const char* name) GIRARA_VISIBLE;
179 
186 void girara_mode_set(girara_session_t* session, girara_mode_t mode) GIRARA_VISIBLE;
187 
194 girara_mode_t girara_mode_get(girara_session_t* session) GIRARA_VISIBLE;
195 
204 bool girara_set_window_title(girara_session_t* session, const char* name) GIRARA_VISIBLE;
205 
214 bool girara_set_window_icon(girara_session_t* session, const char* name) GIRARA_VISIBLE;
215 
222 girara_list_t* girara_get_command_history(girara_session_t* session) GIRARA_VISIBLE;
223 
230 GiraraTemplate* girara_session_get_template(girara_session_t* session) GIRARA_VISIBLE;
231 
243 void girara_session_set_template(girara_session_t* session, GiraraTemplate* template, bool init_variables) GIRARA_VISIBLE;
244 
245 #endif
girara_session_s::events
struct girara_session_s::@7 events
girara_mode_t
int girara_mode_t
Definition: types.h:58
girara_session_s::inputbar_box
GtkBox * inputbar_box
Definition: session.h:30
girara_mode_add
girara_mode_t girara_mode_add(girara_session_t *session, const char *name) GIRARA_VISIBLE
girara_session_s::inputbar_changed
int inputbar_changed
Definition: session.h:51
girara_session_s::view_motion_notify_event
int view_motion_notify_event
Definition: session.h:55
girara_session_s::autohide_inputbar
bool autohide_inputbar
Definition: session.h:72
girara_session_s::statusbar_entries
GtkBox * statusbar_entries
Definition: session.h:27
girara_session_s::normal
girara_mode_t normal
Definition: session.h:80
girara_session_s::inputbar
GtkWidget * inputbar
Definition: session.h:31
types.h
girara_callback_inputbar_key_press_event_t
gboolean(* girara_callback_inputbar_key_press_event_t)(GtkWidget *widget, GdkEventKey *event, void *data)
Definition: callbacks.h:18
girara_session_s::inputbar_activate
int inputbar_activate
Definition: session.h:49
girara_session_s::current_mode
girara_mode_t current_mode
Definition: session.h:78
girara_session_s::modes
struct girara_session_s::@9 modes
girara_session_s::inputbar_shortcuts
girara_list_t * inputbar_shortcuts
Definition: session.h:44
girara_session_s::box
GtkBox * box
Definition: session.h:23
girara_session_s::inputbar_dialog
GtkLabel * inputbar_dialog
Definition: session.h:32
GIRARA_VISIBLE
void GIRARA_VISIBLE
Definition: session.h:155
girara_buffer_get
char * girara_buffer_get(girara_session_t *session) GIRARA_VISIBLE
girara_session_s::inputbar_entry
GtkEntry * inputbar_entry
Definition: session.h:33
macros.h
girara_session_s::window
GtkWidget * window
Definition: session.h:22
girara_notify
void girara_notify(girara_session_t *session, int level, const char *format,...) GIRARA_PRINTF(3
girara_libnotify
void girara_libnotify(girara_session_t *session, const char *summary, const char *body) GIRARA_VISIBLE
girara_session_s
Definition: session.h:18
girara_dialog
void girara_dialog(girara_session_t *session, const char *dialog, bool invisible, girara_callback_inputbar_key_press_event_t key_press_event, girara_callback_inputbar_activate_t activate_event, void *data) GIRARA_VISIBLE
girara_session_s::view_key_pressed
int view_key_pressed
Definition: session.h:52
girara_session_s::unknown_command
bool(* unknown_command)(girara_session_t *session, const char *input)
Definition: session.h:65
girara_session_s::special_commands
girara_list_t * special_commands
Definition: session.h:43
girara_session_s::global
struct girara_session_s::@8 global
girara_set_window_title
bool girara_set_window_title(girara_session_t *session, const char *name) GIRARA_VISIBLE
girara_session_s::private_data
girara_session_private_t * private_data
Definition: session.h:85
girara_session_s::shortcuts
girara_list_t * shortcuts
Definition: session.h:42
girara_session_set_template
void girara_session_set_template(girara_session_t *session, GiraraTemplate *template, bool init_variables) GIRARA_VISIBLE
callbacks.h
girara_session_s::commands
girara_list_t * commands
Definition: session.h:41
girara_session_s::view_scroll_event
int view_scroll_event
Definition: session.h:56
girara_mode_get
girara_mode_t girara_mode_get(girara_session_t *session) GIRARA_VISIBLE
girara_session_s::buffer_changed
void(* buffer_changed)(girara_session_t *session)
Definition: session.h:64
girara_session_s::notification_area
GtkWidget * notification_area
Definition: session.h:28
girara_session_s::inputbar
girara_mode_t inputbar
Definition: session.h:81
girara_session_s::hide_statusbar
bool hide_statusbar
Definition: session.h:73
girara_set_view
bool girara_set_view(girara_session_t *session, GtkWidget *widget) GIRARA_VISIBLE
girara_session_s::gtk
struct girara_session_s::@4 gtk
girara_session_s::view
GtkWidget * view
Definition: session.h:24
girara_session_s::view_button_press_event
int view_button_press_event
Definition: session.h:53
girara_mode_set
void girara_mode_set(girara_session_t *session, girara_mode_t mode) GIRARA_VISIBLE
girara_session_s::identifiers
girara_list_t * identifiers
Definition: session.h:79
girara_session_s::results
GtkBox * results
Definition: session.h:34
girara_session_s::signals
struct girara_session_s::@6 signals
girara_session_s::statusbar
GtkWidget * statusbar
Definition: session.h:26
girara_session_get_template
GiraraTemplate * girara_session_get_template(girara_session_t *session) GIRARA_VISIBLE
girara_session_destroy
bool girara_session_destroy(girara_session_t *session) GIRARA_VISIBLE
girara_session_s::inputbar_custom_activate
girara_callback_inputbar_activate_t inputbar_custom_activate
Definition: session.h:57
girara_session_s::view_button_release_event
int view_button_release_event
Definition: session.h:54
girara_session_s::embed
Window embed
Definition: session.h:35
girara_session_s::notification_text
GtkWidget * notification_text
Definition: session.h:29
girara_list_t
struct girara_list_s girara_list_t
Definition: types.h:10
girara_session_s::mouse_events
girara_list_t * mouse_events
Definition: session.h:40
girara_session_s::command_history
GiraraInputHistory * command_history
Definition: session.h:84
girara_session_s::inputbar_key_pressed
int inputbar_key_pressed
Definition: session.h:50
girara_session_s::viewport
GtkWidget * viewport
Definition: session.h:25
Window
int Window
Definition: session.h:15
girara_session_s::bindings
struct girara_session_s::@5 bindings
girara_set_window_icon
bool girara_set_window_icon(girara_session_t *session, const char *name) GIRARA_VISIBLE
GIRARA_PRINTF
#define GIRARA_PRINTF(format_idx, arg_idx)
Definition: macros.h:26
girara_session_s::inputbar_custom_data
void * inputbar_custom_data
Definition: session.h:59
girara_session_s::inputbar_custom_key_press_event
girara_callback_inputbar_key_press_event_t inputbar_custom_key_press_event
Definition: session.h:58
girara_session_s::buffer
GString * buffer
Definition: session.h:70
girara_session_init
bool girara_session_init(girara_session_t *session, const char *appname) GIRARA_VISIBLE
girara_session_create
girara_session_t * girara_session_create(void) GIRARA_VISIBLE
girara_callback_inputbar_activate_t
gboolean(* girara_callback_inputbar_activate_t)(GtkEntry *entry, void *data)
Definition: callbacks.h:28
girara_get_command_history
girara_list_t * girara_get_command_history(girara_session_t *session) GIRARA_VISIBLE
girara_session_s::data
void * data
Definition: session.h:71