This file is indexed.

/usr/include/geany/ui_utils.h is in geany-common 1.29-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
/*
 *      ui_utils.h - this file is part of Geany, a fast and lightweight IDE
 *
 *      Copyright 2006-2012 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
 *      Copyright 2006-2012 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */

#ifndef GEANY_UI_UTILS_H
#define GEANY_UI_UTILS_H 1

#include "geany.h" /* for GEANY_DEPRECATED */
#include "document.h"

#include "gtkcompat.h"

G_BEGIN_DECLS

/** Sets a name to lookup @a widget from @a owner.
 * @param owner Usually a window, dialog or popup menu.
 * @param widget Widget.
 * @param widget_name Name.
 * @see ui_lookup_widget().
 *
 *  @since 0.16
 **/
#define ui_hookup_widget(owner, widget, widget_name) \
	g_object_set_data_full(G_OBJECT(owner), widget_name, \
		g_object_ref(widget), (GDestroyNotify)g_object_unref);


/** Interface preferences */
typedef struct GeanyInterfacePrefs
{
	gboolean		sidebar_symbol_visible;		/**< whether the symbol sidebar is visible */
	gboolean		sidebar_openfiles_visible;	/**< whether the open file list is visible */
	gchar			*editor_font;				/**< editor font */
	gchar			*tagbar_font;				/**< symbol sidebar font */
	gchar			*msgwin_font;				/**< message window font */
	gboolean		show_notebook_tabs;			/**< whether editor tabs are visible */
	gint			tab_pos_editor;				/**< positions of editor's tabs */
	gint			tab_pos_msgwin;				/**< positions of message window's tabs */
	gint			tab_pos_sidebar;			/**< positions of sidebar's tabs */
	gboolean		statusbar_visible;			/**< whether the status bar is visible */
	gboolean		show_symbol_list_expanders;	/**< whether to show expanders in the symbol list */
	/** whether a double click on notebook tabs hides all other windows */
	gboolean		notebook_double_click_hides_widgets;
	gboolean		highlighting_invert_all; 	/**< whether highlighting colors are inverted */
	gint			sidebar_pos; 				/**< position of the sidebar (left or right) */
	gboolean		msgwin_status_visible; 		/**< whether message window's status tab is visible */
	gboolean		msgwin_compiler_visible;	/**< whether message window's compiler tab is visible */
	gboolean		msgwin_messages_visible;	/**< whether message window's messages tab is visible */
	gboolean		msgwin_scribble_visible;	/**< whether message window's scribble tab is visible */
	/** whether to use native Windows' dialogs (only used on Windows) */
	gboolean		use_native_windows_dialogs;
	/** whether compiler messages window is automatically scrolled to show new messages */
	gboolean		compiler_tab_autoscroll;
	gint			msgwin_orientation;			/**< orientation of the message window */
	gint 			symbols_sort_mode;			/**< symbol list sorting mode */
}
GeanyInterfacePrefs;


/** Important widgets in the main window.
 * Accessed by @c geany->main_widgets. */
typedef struct GeanyMainWidgets
{
	GtkWidget	*window;			/**< Main window. */
	GtkWidget	*toolbar;			/**< Main toolbar. */
	GtkWidget	*sidebar_notebook;	/**< Sidebar notebook. */
	GtkWidget	*notebook;			/**< Document notebook. */
	GtkWidget	*editor_menu;		/**< Popup editor menu. */
	GtkWidget	*tools_menu;		/**< Most plugins add menu items to the Tools menu. */
	/** Progress bar widget in the status bar to show progress of various actions.
	 * See ui_progress_bar_start() for details. */
	GtkWidget	*progressbar;
	GtkWidget	*message_window_notebook; /**< Message Window notebook. */
	/** Plugins modifying the project can add their items to the Project menu. */
	GtkWidget	*project_menu;
}
GeanyMainWidgets;


#define GEANY_STOCK_SAVE_ALL "geany-save-all"
#define GEANY_STOCK_CLOSE_ALL "geany-close-all"
#define GEANY_STOCK_BUILD "geany-build"


GtkWidget *ui_dialog_vbox_new(GtkDialog *dialog);

void ui_set_statusbar(gboolean log, const gchar *format, ...) G_GNUC_PRINTF (2, 3);

void ui_table_add_row(GtkTable *table, gint row, ...) G_GNUC_NULL_TERMINATED;

GtkWidget *ui_path_box_new(const gchar *title, GtkFileChooserAction action, GtkEntry *entry);

GtkWidget *ui_button_new_with_image(const gchar *stock_id, const gchar *text);

void ui_add_document_sensitive(GtkWidget *widget);

GtkWidget *ui_image_menu_item_new(const gchar *stock_id, const gchar *label);

GtkWidget *ui_lookup_widget(GtkWidget *widget, const gchar *widget_name);

void ui_progress_bar_start(const gchar *text);

void ui_progress_bar_stop(void);

void ui_entry_add_clear_icon(GtkEntry *entry);

void ui_menu_add_document_items(GtkMenu *menu, GeanyDocument *active, GCallback callback);

void ui_menu_add_document_items_sorted(GtkMenu *menu, GeanyDocument *active,
		GCallback callback, GCompareFunc sort_func);

void ui_widget_modify_font_from_string(GtkWidget *wid, const gchar *str);

gboolean ui_is_keyval_enter_or_return(guint keyval);

gint ui_get_gtk_settings_integer(const gchar *property_name, gint default_value);

void ui_combo_box_add_to_history(GtkComboBoxText *combo_entry,
		const gchar *text, gint history_len);

const gchar *ui_lookup_stock_label(const gchar *stock_id);

void ui_tree_view_set_tooltip_text_column(GtkTreeView *tree_view, gint column);


#ifndef GEANY_DISABLE_DEPRECATED
GtkWidget *ui_frame_new_with_alignment(const gchar *label_text, GtkWidget **alignment) GEANY_DEPRECATED;

void ui_widget_set_tooltip_text(GtkWidget *widget, const gchar *text) GEANY_DEPRECATED_FOR(gtk_widget_set_tooltip_text);
#endif	/* GEANY_DISABLE_DEPRECATED */


#ifdef GEANY_PRIVATE

extern GeanyInterfacePrefs interface_prefs;

extern GeanyMainWidgets main_widgets;


/* User Interface settings not shown in the Prefs dialog. */
typedef struct UIPrefs
{
	/* State of the main window when Geany was closed */
	gint		geometry[5];	/* 0:x, 1:y, 2:width, 3:height, flag for maximized state */
	gboolean	fullscreen;
	gboolean	sidebar_visible;
	gint		sidebar_page;
	gboolean	msgwindow_visible;
	gboolean	allow_always_save; /* if set, files can always be saved, even if unchanged */
	gchar		*statusbar_template;
	gboolean	new_document_after_close;

	/* Menu-item related data */
	GQueue		*recent_queue;
	GQueue		*recent_projects_queue;
	gchar		*custom_date_format;
	gchar		**custom_commands;
	gchar		**custom_commands_labels;
}
UIPrefs;

extern UIPrefs ui_prefs;


/* Less commonly used widgets */
typedef struct UIWidgets
{
	/* menu widgets */
	GtkWidget	*toolbar_menu;
	GtkWidget	*recent_files_menuitem;
	GtkWidget	*recent_files_menu_menubar;
	GtkWidget	*print_page_setup;
	GtkWidget	*recent_projects_menuitem;
	GtkWidget	*recent_projects_menu_menubar;
	GtkWidget	*config_files_filetype_menu;

	/* dialogs */
	GtkWidget	*open_colorsel;
	GtkWidget	*open_fontsel;
	GtkWidget	*prefs_dialog;

	/* other widgets not needed in GeanyMainWidgets */
	GtkWidget	*statusbar;			/* use ui_set_statusbar() to set */
}
UIWidgets;

extern UIWidgets ui_widgets;


/* The following block of types & functions are more generic and closely related to
 * certain GTK+ widgets. */

typedef struct GeanyAutoSeparator
{
	GtkWidget	*widget;	/* e.g. GtkSeparatorToolItem, GtkSeparatorMenuItem */
	gint		show_count;	/* visible items, set to zero initially */
	gint		item_count;	/* total items, set to zero initially */
}
GeanyAutoSeparator;


typedef enum
{
	GEANY_EDITOR_SHOW_MARKERS_MARGIN,
	GEANY_EDITOR_SHOW_LINE_NUMBERS,
	GEANY_EDITOR_SHOW_WHITE_SPACE,
	GEANY_EDITOR_SHOW_INDENTATION_GUIDES,
	GEANY_EDITOR_SHOW_LINE_ENDINGS
}
GeanyUIEditorFeatures;


void ui_widget_show_hide(GtkWidget *widget, gboolean show);

gchar *ui_menu_item_get_text(GtkMenuItem *menu_item);

void ui_dialog_set_primary_button_order(GtkDialog *dialog, gint response, ...);

void ui_hbutton_box_copy_layout(GtkButtonBox *master, GtkButtonBox *copy);

void ui_combo_box_prepend_text_once(GtkComboBoxText *combo, const gchar *text);

void ui_setup_open_button_callback(GtkWidget *open_btn, const gchar *title,
		GtkFileChooserAction action, GtkEntry *entry);

void ui_auto_separator_add_ref(GeanyAutoSeparator *autosep, GtkWidget *item);

gpointer ui_builder_get_object (const gchar *name);

/* Compatibility functions */
GtkWidget *create_edit_menu1(void);
GtkWidget *create_prefs_dialog(void);
GtkWidget *create_project_dialog(void);
GtkWidget *create_toolbar_popup_menu1(void);
GtkWidget *create_window1(void);

void ui_widget_set_sensitive(GtkWidget *widget, gboolean set);

void ui_entry_add_activate_backward_signal(GtkEntry *entry);

void ui_editable_insert_text_callback(GtkEditable *editable, gchar *new_text,
									  gint new_text_len, gint *position, gpointer data);

GtkWidget *ui_label_new_bold(const gchar *text);

void ui_label_set_markup(GtkLabel *label, const gchar *format, ...) G_GNUC_PRINTF(2, 3);

/* End of general widget functions */

void ui_init_builder(void);

void ui_init(void);

void ui_init_prefs(void);

void ui_finalize_builder(void);

void ui_init_toolbar_widgets(void);

void ui_init_stock_items(void);

void ui_add_config_file_menu_item(const gchar *real_path, const gchar *label,
		GtkContainer *parent);

void ui_update_statusbar(GeanyDocument *doc, gint pos);


/* This sets the window title according to the current filename. */
void ui_set_window_title(GeanyDocument *doc);

void ui_set_editor_font(const gchar *font_name);

void ui_set_fullscreen(void);


void ui_update_popup_reundo_items(GeanyDocument *doc);

void ui_update_popup_copy_items(GeanyDocument *doc);

void ui_update_popup_goto_items(gboolean enable);


void ui_update_menu_copy_items(GeanyDocument *doc);

void ui_update_insert_include_item(GeanyDocument *doc, gint item);

void ui_update_fold_items(void);


void ui_create_insert_menu_items(void);

void ui_create_insert_date_menu_items(void);


void ui_save_buttons_toggle(gboolean enable);

void ui_document_buttons_update(void);


void ui_sidebar_show_hide(void);

void ui_document_show_hide(GeanyDocument *doc);

void ui_set_search_entry_background(GtkWidget *widget, gboolean success);


void ui_create_recent_menus(void);

void ui_add_recent_document(GeanyDocument *doc);

void ui_add_recent_project_file(const gchar *utf8_filename);

void ui_update_recent_project_menu(void);


void ui_update_tab_status(GeanyDocument *doc);


typedef gboolean TVMatchCallback(gboolean);

gboolean ui_tree_view_find_next(GtkTreeView *treeview, TVMatchCallback cb);

gboolean ui_tree_view_find_previous(GtkTreeView *treeview, TVMatchCallback cb);

gboolean ui_tree_model_iter_any_next(GtkTreeModel *model, GtkTreeIter *iter, gboolean down);

void ui_statusbar_showhide(gboolean state);

void ui_toggle_editor_features(GeanyUIEditorFeatures feature);

void ui_update_view_editor_menu_items(void);

void ui_swap_sidebar_pos(void);

GIcon *ui_get_mime_icon(const gchar *mime_type);

void ui_focus_current_document(void);

GtkWidget *ui_create_encodings_combo_box(gboolean has_detect, gint default_enc);

gint ui_encodings_combo_box_get_active_encoding(GtkComboBox *combo);

gboolean ui_encodings_combo_box_set_active_encoding(GtkComboBox *combo, gint enc);

#endif /* GEANY_PRIVATE */

G_END_DECLS

#endif /* GEANY_UI_UTILS_H */