63#include <gdk/gdkkeysyms.h>
82static void kb_cell_edited_cb(GtkCellRendererText *cellrenderertext, gchar *path, gchar *new_text,
KbData *kbdata);
85static gboolean
kb_find_duplicate(GtkTreeStore *store, GtkWidget *parent, GtkTreeIter *old_iter,
86 guint key, GdkModifierType mods,
const gchar *shortcut);
152 GtkTreeSelection *selection;
155 selection = gtk_tree_view_get_selection(kbdata->
tree);
156 if (gtk_tree_selection_get_selected(selection, &model, &iter))
158 if (gtk_tree_model_iter_has_child(model, &iter))
160 GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
162 if (gtk_tree_view_row_expanded(kbdata->
tree, path))
163 gtk_tree_view_collapse_row(kbdata->
tree, path);
165 gtk_tree_view_expand_row(kbdata->
tree, path, FALSE);
167 gtk_tree_path_free(path);
176 GtkWidget *accel_label;
179 dialog = gtk_dialog_new_with_buttons(
_(
"Grab Key"), GTK_WINDOW(
ui_widgets.prefs_dialog),
180 GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
181 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
182 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
NULL);
184 str = g_strdup_printf(
185 _(
"Press the combination of the keys you want to use for \"%s\"."),
name);
186 label = gtk_label_new(str);
187 gtk_misc_set_padding(GTK_MISC(
label), 5, 10);
190 accel_label = gtk_label_new(
"");
191 gtk_misc_set_padding(GTK_MISC(accel_label), 5, 10);
194 g_signal_connect(
dialog,
"key-press-event",
198 if (gtk_dialog_run(GTK_DIALOG(
dialog)) == GTK_RESPONSE_ACCEPT)
200 const gchar *new_text = gtk_label_get_text(GTK_LABEL(accel_label));
204 gtk_widget_destroy(
dialog);
215 static GtkWidget *menu =
NULL;
223 menu = gtk_menu_new();
226 gtk_widget_show(item);
228 g_signal_connect_swapped(item,
"activate", G_CALLBACK(gtk_tree_view_expand_all), kbdata->
tree);
231 gtk_widget_show(item);
233 g_signal_connect_swapped(item,
"activate", G_CALLBACK(gtk_tree_view_collapse_all), kbdata->
tree);
235 gtk_menu_attach_to_widget(GTK_MENU(menu), widget,
NULL);
240 button =
event->button;
241 event_time =
event->time;
246 event_time = gtk_get_current_event_time();
263 if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
268 else if (event->type == GDK_2BUTTON_PRESS)
279 GtkCellRenderer *renderer;
280 GtkTreeViewColumn *column;
285 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_INT);
286 gtk_tree_view_set_model(GTK_TREE_VIEW(kbdata->
tree), GTK_TREE_MODEL(kbdata->
store));
287 g_object_unref(kbdata->
store);
289 renderer = gtk_cell_renderer_text_new();
290 column = gtk_tree_view_column_new_with_attributes(
_(
"Action"), renderer,
292 gtk_tree_view_append_column(GTK_TREE_VIEW(kbdata->
tree), column);
294 renderer = gtk_cell_renderer_text_new();
295 column = gtk_tree_view_column_new_with_attributes(
_(
"Shortcut"), renderer,
298 gtk_tree_view_append_column(GTK_TREE_VIEW(kbdata->
tree), column);
302 gtk_scrolled_window_set_policy(
304 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
315 guint key, GdkModifierType mods)
317 gchar *key_string = gtk_accelerator_name(key, mods);
326 gtk_tree_model_get(GTK_TREE_MODEL(store), iter,
KB_TREE_INDEX, &kid, -1);
327 gtk_tree_model_iter_parent(GTK_TREE_MODEL(store), &parent, iter);
328 gtk_tree_model_get(GTK_TREE_MODEL(store), &parent,
KB_TREE_INDEX, &gid, -1);
332 bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, -1);
343 model = gtk_tree_view_get_model(kbdata->
tree);
344 valid = gtk_tree_model_get_iter_first(model, &iter);
350 if (g_strcmp0(
name, search) == 0)
352 GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
353 gtk_tree_view_scroll_to_cell(kbdata->
tree, path,
NULL, TRUE, .0f, .0f);
354 gtk_tree_path_free(path);
359 valid = gtk_tree_model_iter_next(model, &iter);
366 GtkTreeIter parent, iter;
377 gtk_tree_store_append(kbdata->
store, &parent,
NULL);
384 gtk_tree_store_append(kbdata->
store, &iter, &parent);
391 gtk_tree_view_expand_all(GTK_TREE_VIEW(kbdata->
tree));
399 GdkColor
color = {0};
413 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
project_prefs.project_session);
416 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
project_prefs.project_file_in_basedir);
438 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
prefs.
auto_focus);
441 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
452 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
ui_prefs.sidebar_visible);
481 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
485 gtk_color_button_set_color(GTK_COLOR_BUTTON(widget), &
color);
523 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
527 case GTK_ICON_SIZE_LARGE_TOOLBAR:
529 case GTK_ICON_SIZE_SMALL_TOOLBAR:
535 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
547 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
556 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
574 gtk_combo_box_set_active(GTK_COMBO_BOX(widget), GEANY_DEFAULT_EOL_CHARACTER);
655 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
659 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
663 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
667 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
671 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
723 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
759 gtk_widget_show(widget);
760 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vte_info.load_vte);
763 if (vte_info.have_vte)
766 gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), vc->font);
769 gtk_color_button_set_color(GTK_COLOR_BUTTON(widget), &vc->colour_fore);
772 gtk_color_button_set_color(GTK_COLOR_BUTTON(widget), &vc->colour_back);
775 gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), vc->scrollback_lines);
778 gtk_entry_set_text(GTK_ENTRY(widget), vc->shell);
781 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->scroll_on_key);
784 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->scroll_on_out);
787 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->enable_bash_keys);
790 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->ignore_menu_bar_accel);
793 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->follow_path);
796 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->run_in_vte);
799 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->skip_run_script);
802 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), vc->cursor_blinks);
821 GtkTreeModel *model = GTK_TREE_MODEL(kbdata->
store);
822 GtkTreeIter child, parent;
826 if (! gtk_tree_model_iter_children(model, &parent,
NULL))
833 if (! gtk_tree_model_iter_children(model, &child, &parent))
842 GdkModifierType mods;
846 gtk_accelerator_parse(str, &key, &mods);
849 if (kb->
key != key || kb->
mods != mods)
852 if (! gtk_tree_model_iter_next(model, &child))
855 if (! gtk_tree_model_iter_next(model, &parent))
869 if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY)
873 gboolean autoclose_brackets[5];
896 project_prefs.project_session = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
899 project_prefs.project_file_in_basedir = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
902 prefs.
save_winpos = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
921 prefs.
auto_focus = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
925 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
936 ui_prefs.sidebar_visible = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
948 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
987 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
992 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
1005 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
1010 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
1028 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
1055 gtk_editable_get_chars(GTK_EDITABLE(widget), 0, -1));
1059 gtk_spin_button_update(GTK_SPIN_BUTTON(widget));
1115 gtk_spin_button_update(GTK_SPIN_BUTTON(widget));
1119 gtk_spin_button_update(GTK_SPIN_BUTTON(widget));
1123 gtk_spin_button_update(GTK_SPIN_BUTTON(widget));
1127 autoclose_brackets[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1130 autoclose_brackets[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1133 autoclose_brackets[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1136 autoclose_brackets[3] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1139 autoclose_brackets[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1142 (autoclose_brackets[0] ? GEANY_AC_PARENTHESIS : 0u)
1143 | (autoclose_brackets[1] ? GEANY_AC_CBRACKET : 0u)
1144 | (autoclose_brackets[2] ? GEANY_AC_SBRACKET : 0u)
1145 | (autoclose_brackets[3] ? GEANY_AC_SQUOTE : 0u)
1146 | (autoclose_brackets[4] ? GEANY_AC_DQUOTE : 0u);
1203#ifdef MAC_INTEGRATION
1205 gtkosx_application_sync_menubar(gtkosx_application_get());
1236 vte_info.load_vte = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1239 if (vte_info.have_vte)
1242 gtk_spin_button_update(GTK_SPIN_BUTTON(widget));
1243 vc->scrollback_lines = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
1247 vc->shell = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
1250 vc->scroll_on_key = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1253 vc->scroll_on_out = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1256 vc->enable_bash_keys = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1259 vc->ignore_menu_bar_accel = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1262 vc->follow_path = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1265 vc->run_in_vte = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1268 vc->skip_run_script = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1271 vc->cursor_blinks = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1273 vte_apply_user_settings();
1312 if (response == GTK_RESPONSE_HELP)
1316 else if (response != GTK_RESPONSE_APPLY)
1319 gtk_widget_hide(GTK_WIDGET(
dialog));
1328 gtk_color_button_get_color(widget, &
color);
1335 const gchar *fontbtn = gtk_font_button_get_font_name(widget);
1338 switch (GPOINTER_TO_INT(user_data))
1382 GdkModifierType lmods;
1384 gtk_accelerator_parse(new_text, &lkey, &lmods);
1398 gchar *path, gchar *new_text,
KbData *kbdata)
1400 if (path !=
NULL && new_text !=
NULL)
1404 gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(kbdata->
store), &iter, path);
1405 if (gtk_tree_model_iter_has_child(GTK_TREE_MODEL(kbdata->
store), &iter))
1418 g_return_val_if_fail(GTK_IS_LABEL(
label), FALSE);
1422 if (event->keyval == GDK_KEY_Escape)
1425 str = gtk_accelerator_name(event->keyval, state);
1427 gtk_label_set_text(
label, str);
1437 guint key, GdkModifierType mods,
const gchar *shortcut)
1439 GtkTreeModel *model = GTK_TREE_MODEL(store);
1440 GtkTreeIter parent_iter;
1443 GdkModifierType kb_mods;
1446 if (key == 0 && mods == 0)
1453 gtk_accelerator_parse(kb_str, &kb_key, &kb_mods);
1455 if (key == kb_key && mods == kb_mods)
1459 if (! gtk_tree_model_get_iter_first(model, &parent_iter))
1465 if (! gtk_tree_model_iter_children(model, &iter, &parent_iter))
1473 gtk_accelerator_parse(kb_str, &kb_key, &kb_mods);
1476 if (kb_key == key && kb_mods == mods)
1483 _(
"_Allow"), GTK_RESPONSE_APPLY,
1484 GTK_STOCK_CANCEL, GTK_RESPONSE_NO,
1485 _(
"_Override"), GTK_RESPONSE_YES,
1486 _(
"Override that keybinding?"),
1487 _(
"The combination '%s' is already used for \"%s\"."),
1492 if (ret == GTK_RESPONSE_YES)
1498 return ret != GTK_RESPONSE_APPLY;
1501 while (gtk_tree_model_iter_next(model, &iter));
1503 while (gtk_tree_model_iter_next(model, &parent_iter));
1511 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1513 gtk_widget_set_sensitive(
1515 gtk_widget_set_sensitive(
1517 gtk_widget_set_sensitive(
1519 gtk_widget_set_sensitive(
1526 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1536 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1544 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1553 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1562 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1570 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1579 gboolean sens = gtk_toggle_button_get_active(togglebutton);
1590 GtkNotebook *notebook = GTK_NOTEBOOK(
1592 gint page_nr = gtk_notebook_get_current_page(notebook);
1593 GtkWidget *page = gtk_notebook_get_nth_page(notebook, page_nr);
1595 label = gtk_notebook_get_tab_label_text(notebook, page);
1602 suffix =
"#general-startup-preferences";
1604 suffix =
"#interface-preferences";
1606 suffix =
"#toolbar-preferences";
1608 suffix =
"#editor-features-preferences";
1610 suffix =
"#files-preferences";
1612 suffix =
"#tools-preferences";
1614 suffix =
"#template-preferences";
1616 suffix =
"#keybinding-preferences";
1618 suffix =
"#printing-preferences";
1620 suffix =
"#various-preferences";
1622 suffix =
"#terminal-vte-preferences";
1648 gtk_list_store_append(
list, &iter);
1649 gtk_list_store_set(
list, &iter, 0,
text, -1);
1657 GtkListStore *eol_list;
1661 gtk_widget_set_name(
ui_widgets.prefs_dialog,
"GeanyPrefsDialog");
1667 const gchar *combo, *renderer;
1669 {
"combo_new_encoding",
"combo_new_encoding_renderer" },
1670 {
"combo_open_encoding",
"combo_open_encoding_renderer" }
1675 for (i = 0; i < G_N_ELEMENTS(names); i++)
1679 gtk_cell_layout_set_cell_data_func(GTK_CELL_LAYOUT(combo),
1682 gtk_combo_box_set_model(GTK_COMBO_BOX(combo), GTK_TREE_MODEL(encoding_list));
1684 g_object_unref(encoding_list);
1697 gtk_widget_show(
label);
1699 label, FALSE, TRUE, 5);
1702 gtk_widget_show(
label);
1704 label, FALSE, TRUE, 5);
1706 label =
geany_wrap_label_new(
_(
"Here you can change keyboard shortcuts for various actions. Select one and press the Change button to enter a new shortcut, or double click on an action to edit the string representation of the shortcut directly."));
1707 gtk_widget_show(
label);
1709 label, FALSE, TRUE, 5);
1711 label =
geany_wrap_label_new(
_(
"<i>Warning: these settings are overridden by the current project. See <b>Project->Properties</b>.</i>"));
1712 gtk_widget_show(
label);
1713 gtk_label_set_use_markup(GTK_LABEL(
label), TRUE);
1714 gtk_misc_set_padding(GTK_MISC(
label), 6, 0);
1716 "label_project_indent_warning")),
label, FALSE, TRUE, 5);
1720 const gchar *names[] = {
1721 "startup_path_entry",
1722 "project_file_path_entry",
1723 "extra_plugin_path_entry",
1724 "entry_toggle_mark",
1729 "entry_contextaction",
1730 "entry_template_developer",
1731 "entry_template_initial",
1732 "entry_template_mail",
1733 "entry_template_company",
1734 "entry_template_version",
1735 "entry_template_year",
1736 "entry_template_date",
1737 "entry_template_datetime",
1738 "entry_print_external_cmd",
1739 "entry_print_dateformat"};
1748 "various_treeview"));
1752 vte_append_preferences_tab();
1763 g_signal_connect(
ui_widgets.prefs_dialog,
"response",
1765 g_signal_connect(
ui_widgets.prefs_dialog,
"delete-event",
1766 G_CALLBACK(gtk_widget_hide_on_delete),
NULL);
1779 GTK_FILE_CHOOSER_ACTION_OPEN,
1783 GTK_FILE_CHOOSER_ACTION_OPEN,
1787 GTK_FILE_CHOOSER_ACTION_OPEN,
1793 GTK_FILE_CHOOSER_ACTION_OPEN,
1799 GTK_FILE_CHOOSER_ACTION_OPEN,
1825 gtk_window_present(GTK_WINDOW(
ui_widgets.prefs_dialog));
gint dialogs_show_prompt(GtkWidget *parent, const gchar *btn_1, GtkResponseType response_1, const gchar *btn_2, GtkResponseType response_2, const gchar *btn_3, GtkResponseType response_3, const gchar *extra_text, const gchar *main_text,...)
File related dialogs, miscellaneous dialogs, font dialog.
GeanyDocument * document_get_current(void)
Finds the current document.
GeanyFilePrefs file_prefs
GPtrArray * documents_array
#define documents
Wraps GeanyData::documents_array so it can be used with C array syntax.
void editor_unfold_all(GeanyEditor *editor)
void editor_apply_update_prefs(GeanyEditor *editor)
GeanyEditorPrefs editor_prefs
Editor-related functions for GeanyEditor.
void encodings_encoding_store_cell_data_func(GtkCellLayout *cell_layout, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
GtkTreeStore * encodings_encoding_store_new(gboolean has_detect)
Filetype detection, file extensions and filetype menu items.
GtkWidget * geany_wrap_label_new(const gchar *text)
void keybindings_update_combo(GeanyKeyBinding *kb, guint key, GdkModifierType mods)
GeanyKeyBinding * keybindings_lookup_item(guint group_id, guint key_id)
GPtrArray * keybinding_groups
GdkModifierType keybindings_get_modifiers(GdkModifierType mods)
Gets significant modifiers from a GdkModifierType mask.
GeanyKeyBinding * keybindings_get_item(GeanyKeyGroup *group, gsize key_id)
Looks up a keybinding item.
gboolean keybindings_check_event(GdkEventKey *ev, GeanyKeyBinding *kb)
void keybindings_write_to_file(void)
gchar * keybindings_get_label(GeanyKeyBinding *kb)
@ GEANY_KEY_GROUP_HELP
Group.
@ GEANY_KEYS_HELP_HELP
Keybinding.
void configuration_save(void)
void msgwin_show_hide_tabs(void)
Message window functions (status, compiler, messages windows).
static gboolean prefs_dialog_key_press_response_cb(GtkWidget *dialog, GdkEventKey *event, gpointer data)
static void on_prefs_print_page_header_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static void kb_tree_view_change_button_clicked_cb(GtkWidget *button, KbData *kbdata)
static GeanyKeyBinding * kb_index(guint gidx, guint kid)
static void on_prefs_font_choosed(GtkFontButton *widget, gpointer user_data)
static void kb_update(KbData *kbdata)
static void on_color_button_choose_cb(GtkColorButton *widget, gpointer user_data)
static void on_enable_plugins_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static void on_open_encoding_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static gboolean kb_find_duplicate(GtkTreeStore *store, GtkWidget *parent, GtkTreeIter *old_iter, guint key, GdkModifierType mods, const gchar *shortcut)
static void prefs_action(PrefCallbackAction action)
static void kb_cell_edited_cb(GtkCellRendererText *cellrenderertext, gchar *path, gchar *new_text, KbData *kbdata)
static void on_prefs_dialog_response(GtkDialog *dialog, gint response, gpointer user_data)
static void on_sidebar_visible_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static gboolean kb_popup_menu_cb(GtkWidget *widget, KbData *kbdata)
static gboolean kb_grab_key_dialog_key_press_cb(GtkWidget *dialog, GdkEventKey *event, GtkLabel *label)
static gboolean kb_tree_view_button_press_event_cb(GtkWidget *widget, GdkEventButton *event, KbData *kbdata)
static void kb_show_popup_menu(KbData *kbdata, GtkWidget *widget, GdkEventButton *event)
static void list_store_append_text(GtkListStore *list, const gchar *text)
GeanyToolPrefs tool_prefs
static void on_toolbar_show_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static void prefs_init_dialog(void)
static void kb_set_shortcut(GtkTreeStore *store, GtkTreeIter *iter, guint key, GdkModifierType mods)
static void on_use_folding_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static void open_preferences_help(void)
static void on_prefs_print_radio_button_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static GtkTreeView * various_treeview
void prefs_show_dialog(void)
static void on_show_notebook_tabs_toggled(GtkToggleButton *togglebutton, gpointer user_data)
static void kb_change_iter_shortcut(KbData *kbdata, GtkTreeIter *iter, const gchar *new_text)
static KbData global_kb_data
void prefs_kb_search_name(const gchar *search)
static void kb_init(KbData *kbdata)
static void kb_init_tree(KbData *kbdata)
PrintingPrefs printing_prefs
void project_apply_prefs(void)
ProjectPrefs project_prefs
void project_setup_prefs(void)
void filetypes_reload(void)
stash_group_update(group, dialog)
gtk_container_add(GTK_CONTAINER(dialog->vbox), check_button)
gtk_widget_show_all(dialog)
stash_group_display(group, dialog)
void stash_tree_setup(GPtrArray *group_array, GtkTreeView *tree)
void stash_tree_update(GtkTreeView *tree)
void stash_tree_display(GtkTreeView *tree)
Lightweight library for reading/writing GKeyFile settings and synchronizing widgets with C variables.
struct GeanyProject * project
Currently active project or NULL if none is open.
Structure for representing an open tab with all its properties.
gboolean changed
Whether this document has been changed since it was last saved.
struct GeanyDocumentPrivate * priv
gboolean unfold_all_children
gint symbolcompletion_min_chars
gboolean scroll_stop_at_last_line
gboolean show_markers_margin
gboolean auto_continue_multiline
gboolean long_line_enabled
gboolean show_indent_guide
gboolean show_linenumber_margin
gchar * comment_toggle_mark
gboolean auto_close_xml_tags
gboolean auto_complete_symbols
gboolean complete_snippets
gint symbolcompletion_max_height
gboolean show_line_endings
gboolean show_white_space
gint default_new_encoding
gboolean tab_order_beside
gint default_open_encoding
gboolean strip_trailing_spaces
gint default_eol_character
gboolean ensure_convert_new_lines
gint tab_pos_editor
positions of editor's tabs
gboolean statusbar_visible
whether the status bar is visible
gint sidebar_pos
position of the sidebar (left or right)
gboolean use_native_windows_dialogs
whether to use native Windows' dialogs (only used on Windows)
gboolean sidebar_symbol_visible
whether the symbol sidebar is visible
gint tab_pos_sidebar
positions of sidebar's tabs
gchar * editor_font
editor font
gboolean highlighting_invert_all
whether highlighting colors are inverted
gboolean sidebar_openfiles_visible
whether the open file list is visible
gchar * msgwin_font
message window font
gboolean show_notebook_tabs
whether editor tabs are visible
gint tab_pos_msgwin
positions of message window's tabs
gint msgwin_orientation
orientation of the message window
gchar * tagbar_font
symbol sidebar font
Represents a single keybinding action.
GdkModifierType default_mods
GdkModifierType mods
Modifier keys, such as GDK_CONTROL_MASK or 0.
guint key
Key value in lower-case, such as GDK_KEY_a or 0.
GtkWidget * window
Main window.
GtkWidget * notebook
Document notebook.
GtkWidget * sidebar_notebook
Sidebar notebook.
General Preferences dialog settings.
gboolean suppress_status_messages
gboolean switch_to_status
gchar * initials
Initials.
gchar * version
Initial version.
gchar * external_print_cmd
gboolean use_gtk_printing
gboolean print_page_header
gboolean page_header_basename
gchar * page_header_datefmt
gboolean print_page_numbers
gboolean print_line_numbers
Defines internationalization macros.
GeanyTemplatePrefs template_prefs
void ui_update_statusbar(GeanyDocument *doc, gint pos)
void ui_widget_show_hide(GtkWidget *widget, gboolean show)
void ui_sidebar_show_hide(void)
void ui_statusbar_showhide(gboolean state)
gpointer ui_builder_get_object(const gchar *name)
void ui_set_editor_font(const gchar *font_name)
gboolean ui_encodings_combo_box_set_active_encoding(GtkComboBox *combo, gint enc)
void ui_save_buttons_toggle(gboolean enable)
GtkWidget * create_prefs_dialog(void)
void ui_swap_sidebar_pos(void)
GeanyMainWidgets main_widgets
void ui_entry_add_clear_icon(GtkEntry *entry)
Adds a small clear icon to the right end of the passed entry.
void ui_document_show_hide(GeanyDocument *doc)
gint ui_encodings_combo_box_get_active_encoding(GtkComboBox *combo)
void ui_update_view_editor_menu_items(void)
void ui_update_fold_items(void)
GtkWidget * ui_image_menu_item_new(const gchar *stock_id, const gchar *label)
Creates a GtkImageMenuItem with a stock image and a custom label.
GtkWidget * ui_lookup_widget(GtkWidget *widget, const gchar *widget_name)
Returns a widget from a name in a component, usually created by Glade.
void ui_widget_modify_font_from_string(GtkWidget *widget, const gchar *str)
Modifies the font of a widget using gtk_widget_modify_font().
void ui_setup_open_button_callback(GtkWidget *open_btn, const gchar *title, GtkFileChooserAction action, GtkEntry *entry)
GeanyInterfacePrefs interface_prefs
User Interface general utility functions.
void utils_open_browser(const gchar *uri)
Tries to open the given URI in a browser.
gboolean utils_parse_color(const gchar *spec, GdkColor *color)
gchar * utils_get_help_url(const gchar *suffix)
gboolean utils_str_equal(const gchar *a, const gchar *b)
NULL-safe string comparison.
gchar * utils_get_hex_from_color(GdkColor *color)
const gchar * utils_get_eol_name(gint eol_mode)
General utility functions, non-GTK related.
#define foreach_ptr_array(item, idx, ptr_array)
Iterates all the pointers in ptr_array.
#define foreach_c_array(item, array, len)
Iterates all the items in array using pointers.
#define SETPTR(ptr, result)
Assigns result to ptr, then frees the old value.