callbacks.h 8.21 KB
Newer Older
1
/* SPDX-License-Identifier: Zlib */
2 3 4 5

#ifndef CALLBACKS_H
#define CALLBACKS_H

6
#include <gtk/gtk.h>
7
#include <girara/types.h>
Sebastian Ramacher's avatar
Sebastian Ramacher committed
8
#include <girara/macros.h>
9

10
#include "internal.h"
11
#include "document.h"
12
#include "zathura.h"
13

14 15 16 17
/**
 * Quits the current zathura session
 *
 * @param widget The gtk window of zathura
18
 * @param zathura Correspondending zathura session
19
 * @return true if no error occurred and the event has been handled
20
 */
21
gboolean cb_destroy(GtkWidget* widget, zathura_t* zathura);
22 23 24 25 26 27

/**
 * This function gets called when the buffer of girara changes
 *
 * @param session The girara session
 */
28
void cb_buffer_changed(girara_session_t* session);
29

30 31 32 33 34 35 36 37 38
/**
 * This function gets called when the value of the horizontal scrollbars
 * changes (e.g.: by scrolling, moving to another page)
 *
 * @param adjustment The hadjustment of the page view
 * @param data NULL
 */
void cb_view_hadjustment_value_changed(GtkAdjustment *adjustment, gpointer data);

39
/**
40
 * This function gets called when the value of the vertical scrollbars
41 42 43 44 45
 * changes (e.g.: by scrolling, moving to another page)
 *
 * @param adjustment The vadjustment of the page view
 * @param data NULL
 */
46
void cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data);
47 48 49 50 51

/**
 * This function gets called when the bounds or the page_size of the horizontal
 * scrollbar change (e.g. when the zoom level is changed).
 *
52
 * It adjusts the value of the horizontal scrollbar
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
 *
 * @param adjustment The horizontal adjustment of a gtkScrolledWindow
 * @param data The zathura instance
 */
void cb_view_hadjustment_changed(GtkAdjustment *adjustment, gpointer data);

/**
 * This function gets called when the bounds or the page_size of the vertical
 * scrollbar change (e.g. when the zoom level is changed).
 *
 * It adjusts the value of the vertical scrollbar based on its previous
 * adjustment, stored in the tracking adjustment zathura->ui.hadjustment.
 *
 * @param adjustment The vertical adjustment of a gtkScrolledWindow
 * @param data The zathura instance
 */
void cb_view_vadjustment_changed(GtkAdjustment *adjustment, gpointer data);

71 72 73 74 75 76 77 78 79 80 81
/**
 * This function gets called when the program need to refresh the document view.
 *
 * It adjusts the value of the scrollbars, triggering a redraw in the new
 * position.
 *
 * @param view The view GtkWidget
 * @param data The zathura instance
 */
void cb_refresh_view(GtkWidget* view, gpointer data);

82 83 84 85
/**
 * This function gets called when the monitors associated with the GdkScreen
 * change.
 *
86 87
 * It checks for a change of monitor PPI, storing the new value and triggering
 * a refresh if appropriate.
88 89 90 91 92 93 94 95 96 97
 *
 * @param screen The GDK screen
 * @param gpointer The zathura instance
 */
void cb_monitors_changed(GdkScreen* screen, gpointer data);

/**
 * This function gets called when the screen associated with the view widget
 * changes.
 *
98 99 100
 * It updates the connection on the monitors-changed signal and checks for a
 * change of monitor PPI, storing the new value and triggering a refresh if
 * appropriate.
101 102 103 104 105 106 107
 *
 * @param widget The view widget
 * @param previous_screen The widget's previous screen
 * @param gpointer The zathura instance
 */
void cb_widget_screen_changed(GtkWidget* widget, GdkScreen* previous_screen, gpointer data);

108 109 110 111 112 113 114 115 116 117 118
/**
 * This function gets called when the main window's size, position or stacking
 * changes.
 *
 * It checks for a change of monitor PPI (due to the window moving between
 * different monitors), storing the new value and triggering a refresh if
 * appropriate.
 *
 * @param widget The main window widget
 * @param event The configure event
 * @param gpointer The zathura instance
119
 * @return true if no error occurred and the event has been handled
120
 */
121
gboolean cb_widget_configured(GtkWidget* widget, GdkEvent* event, gpointer data);
122

123
/**
124 125
 * This function gets called when the view widget scale factor changes (e.g.
 * when moving from a regular to a HiDPI screen).
126
 *
127
 * It records the new value and triggers a re-rendering of the document.
128
 *
129
 * @param object The view widget
130
 * @param pspec The GParamSpec for the scale-factor property
131
 * @param gpointer The zathura instance
132
 */
133
void cb_scale_factor(GObject* object, GParamSpec* pspec, gpointer data);
134

135 136 137 138 139
/**
 * This function gets called when the value of the "pages-per-row"
 * variable changes
 *
 * @param session The current girara session
Moritz Lipp's avatar
Moritz Lipp committed
140 141 142 143
 * @param name The name of the row
 * @param type The settings type
 * @param value The value
 * @param data Custom data
144
 */
145
void cb_page_layout_value_changed(girara_session_t* session, const char* name,
Sebastian Ramacher's avatar
Sebastian Ramacher committed
146
    girara_setting_type_t type, const void* value, void* data);
147

148 149 150 151 152 153 154 155
/**
 * Called when an index element is activated (e.g.: double click)
 *
 * @param tree_view Tree view
 * @param path Path
 * @param column Column
 * @param zathura Zathura session
 */
156
void cb_index_row_activated(GtkTreeView* tree_view, GtkTreePath* path,
Sebastian Ramacher's avatar
Sebastian Ramacher committed
157
    GtkTreeViewColumn* column, void* zathura);
158

159 160 161 162 163
/**
 * Called when input has been passed to the sc_follow dialog
 *
 * @param entry The dialog inputbar
 * @param session The girara session
164
 * @return true if no error occurred and the event has been handled
165
 */
166
gboolean cb_sc_follow(GtkEntry* entry, void* session);
167

168 169 170 171 172
/**
 * Called when input has been passed to the sc_display_link dialog
 *
 * @param entry The dialog inputbar
 * @param session The girara session
173
 * @return true if no error occurred and the event has been handled
174
 */
175
gboolean cb_sc_display_link(GtkEntry* entry, void* session);
176

177 178 179 180 181 182
/**
 * Emitted when file has been changed
 *
 * @param monitor The file monitor
 * @param session The girara session
 */
183
void cb_file_monitor(ZathuraFileMonitor* monitor, girara_session_t* session);
184

185 186 187 188 189 190 191
/**
 * Callback to read new password for file that should be opened
 *
 * @param entry The password entry
 * @param dialog The dialog information
 * @return true if input has been handled
 */
192
gboolean cb_password_dialog(GtkEntry* entry, void* dialog);
193

194 195 196 197 198 199 200 201
/**
 * Emitted when the view has been resized
 *
 * @param widget View
 * @param allocation Allocation
 * @param zathura Zathura session
 * @return true if signal has been handled successfully
 */
202
gboolean cb_view_resized(GtkWidget* widget, GtkAllocation* allocation, zathura_t* zathura);
203

Moritz Lipp's avatar
Moritz Lipp committed
204 205 206 207 208 209 210 211 212 213
/**
 * Emitted when the 'recolor' setting is changed
 *
 * @param session Girara session
 * @param name Name of the setting ("recolor")
 * @param type Type of the setting (BOOLEAN)
 * @param value New value
 * @param data Custom data
 */
void cb_setting_recolor_change(girara_session_t* session, const char* name,
Sebastian Ramacher's avatar
Sebastian Ramacher committed
214
    girara_setting_type_t type, const void* value, void* data);
Moritz Lipp's avatar
Moritz Lipp committed
215

216 217 218 219 220 221 222 223 224 225
/**
 * Emitted when the 'recolor-keephue' setting is changed
 *
 * @param session Girara session
 * @param name Name of the setting ("recolor")
 * @param type Type of the setting (BOOLEAN)
 * @param value New value
 * @param data Custom data
 */
void cb_setting_recolor_keep_hue_change(girara_session_t* session, const char* name,
Sebastian Ramacher's avatar
Sebastian Ramacher committed
226
    girara_setting_type_t type, const void* value, void* data);
227

228 229 230 231 232 233 234 235 236 237
/**
 * Emitted when the 'recolor-reverse-video' setting is changed
 *
 * @param session Girara session
 * @param name Name of the setting ("recolor")
 * @param type Type of the setting (BOOLEAN)
 * @param value New value
 * @param data Custom data
 */
void cb_setting_recolor_keep_reverse_video_change(girara_session_t* session, 
Sebastian Ramacher's avatar
Sebastian Ramacher committed
238
    const char* name, girara_setting_type_t type, const void* value, void* data);
239

Moritz Lipp's avatar
Moritz Lipp committed
240 241 242 243 244 245 246 247 248 249
/**
 * Unknown command handler which is used to handle the strict numeric goto
 * command
 *
 * @param session The girara session
 * @param input The command input
 * @return true if the input has been handled
 */
bool cb_unknown_command(girara_session_t* session, const char* input);

250 251 252
/**
 * Emitted when text has been selected in the page widget
 *
Moritz Lipp's avatar
Moritz Lipp committed
253
 * @param page page view widget
254 255 256 257 258 259 260 261 262
 * @param text selected text
 * @param data user data
 */
void cb_page_widget_text_selected(ZathuraPage* page, const char* text,
    void* data);

void cb_page_widget_image_selected(ZathuraPage* page, GdkPixbuf* pixbuf,
    void* data);

263 264 265
void cb_page_widget_scaled_button_release(ZathuraPage* page,
    GdkEventButton* event, void* data);

Sebastian Ramacher's avatar
Sebastian Ramacher committed
266
void cb_page_widget_link(ZathuraPage* page, void* data);
267

Sebastian Ramacher's avatar
Sebastian Ramacher committed
268 269 270 271 272 273
void update_visible_pages(zathura_t* zathura);

/**
 * Update window icon from cairo surface.
 */
void cb_window_update_icon(ZathuraRenderRequest* request, cairo_surface_t* surface, void* data);
274

275

276
#endif // CALLBACKS_H