1 /*
2  * pluma-settings.h
3  * This file is part of pluma
4  *
5  * Copyright (C) 2009 - Ignacio Casal Quinteiro
6  *               2002 - Paolo Maggi
7  * Copyright (C) 2012-2021 MATE Developers
8  *
9  * pluma is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * pluma is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with pluma; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor,
22  * Boston, MA  02110-1301  USA
23  */
24 
25 #ifndef __PLUMA_SETTINGS_H__
26 #define __PLUMA_SETTINGS_H__
27 
28 #include <glib-object.h>
29 #include <glib.h>
30 #include "pluma-app.h"
31 
32 G_BEGIN_DECLS
33 
34 #define PLUMA_TYPE_SETTINGS             (pluma_settings_get_type ())
35 #define PLUMA_SETTINGS(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), PLUMA_TYPE_SETTINGS, PlumaSettings))
36 #define PLUMA_SETTINGS_CONST(obj)       (G_TYPE_CHECK_INSTANCE_CAST ((obj), PLUMA_TYPE_SETTINGS, PlumaSettings const))
37 #define PLUMA_SETTINGS_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), PLUMA_TYPE_SETTINGS, PlumaSettingsClass))
38 #define PLUMA_IS_SETTINGS(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PLUMA_TYPE_SETTINGS))
39 #define PLUMA_IS_SETTINGS_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), PLUMA_TYPE_SETTINGS))
40 #define PLUMA_SETTINGS_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), PLUMA_TYPE_SETTINGS, PlumaSettingsClass))
41 
42 typedef struct _PlumaSettings           PlumaSettings;
43 typedef struct _PlumaSettingsClass      PlumaSettingsClass;
44 typedef struct _PlumaSettingsPrivate    PlumaSettingsPrivate;
45 
46 struct _PlumaSettings
47 {
48     GObject parent;
49 
50     PlumaSettingsPrivate *priv;
51 };
52 
53 struct _PlumaSettingsClass
54 {
55     GObjectClass parent_class;
56 };
57 
58 typedef enum {
59     PLUMA_TOOLBAR_SYSTEM = 0,
60     PLUMA_TOOLBAR_ICONS,
61     PLUMA_TOOLBAR_ICONS_AND_TEXT,
62     PLUMA_TOOLBAR_ICONS_BOTH_HORIZ
63 } PlumaToolbarSetting;
64 
65 GType                   pluma_settings_get_type             (void) G_GNUC_CONST;
66 
67 G_GNUC_INTERNAL
68 PlumaSettings *        _pluma_settings_get_singleton        (void);
69 
70 void                    pluma_settings_unref_singleton      (void);
71 
72 PlumaLockdownMask       pluma_settings_get_lockdown         (PlumaSettings *self);
73 
74 gchar                  *pluma_settings_get_system_font      (PlumaSettings *self);
75 
76 GtkSourceSmartHomeEndType pluma_settings_get_smart_home_end (PlumaSettings *self);
77 
78 PlumaToolbarSetting     pluma_settings_get_toolbar_style    (PlumaSettings *self);
79 
80 /* Utility functions */
81 GSList                 *pluma_settings_get_list             (GSettings   *settings,
82                                                              const gchar *key);
83 
84 void                    pluma_settings_set_list             (GSettings    *settings,
85                                                              const gchar  *key,
86                                                              GSList *list);
87 
88 GtkWrapMode             pluma_settings_get_wrap_mode        (GSettings    *settings,
89                                                              const gchar  *key);
90 
91 void                    pluma_settings_set_wrap_mode        (GSettings    *settings,
92                                                              const gchar  *key,
93                                                              GtkWrapMode   mode);
94 
95 GSList *                pluma_settings_get_writable_vfs_schemes (GSettings *settings);
96 
97 #define PLUMA_SCHEMA_ID                    "org.mate.pluma"
98 
99 /* key constants */
100 #define PLUMA_SETTINGS_USE_DEFAULT_FONT             "use-default-font"
101 #define PLUMA_SETTINGS_EDITOR_FONT                  "editor-font"
102 #define PLUMA_SETTINGS_COLOR_SCHEME                 "color-scheme"
103 #define PLUMA_SETTINGS_CREATE_BACKUP_COPY           "create-backup-copy"
104 #define PLUMA_SETTINGS_AUTO_SAVE                    "auto-save"
105 #define PLUMA_SETTINGS_AUTO_SAVE_INTERVAL           "auto-save-interval"
106 #define PLUMA_SETTINGS_MAX_UNDO_ACTIONS             "max-undo-actions"
107 #define PLUMA_SETTINGS_WRAP_MODE                    "wrap-mode"
108 #define PLUMA_SETTINGS_TABS_SIZE                    "tabs-size"
109 #define PLUMA_SETTINGS_INSERT_SPACES                "insert-spaces"
110 #define PLUMA_SETTINGS_AUTO_INDENT                  "auto-indent"
111 #define PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS         "display-line-numbers"
112 #define PLUMA_SETTINGS_HIGHLIGHT_CURRENT_LINE       "highlight-current-line"
113 #define PLUMA_SETTINGS_BRACKET_MATCHING             "bracket-matching"
114 #define PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN         "display-right-margin"
115 #define PLUMA_SETTINGS_RIGHT_MARGIN_POSITION        "right-margin-position"
116 #define PLUMA_SETTINGS_WRITABLE_VFS_SCHEMES         "writable-vfs-schemes"
117 #define PLUMA_SETTINGS_RESTORE_CURSOR_POSITION      "restore-cursor-position"
118 #define PLUMA_SETTINGS_SYNTAX_HIGHLIGHTING          "syntax-highlighting"
119 #define PLUMA_SETTINGS_SEARCH_HIGHLIGHTING          "search-highlighting"
120 #define PLUMA_SETTINGS_TOOLBAR_VISIBLE              "toolbar-visible"
121 #define PLUMA_SETTINGS_STATUSBAR_VISIBLE            "statusbar-visible"
122 #define PLUMA_SETTINGS_SIDE_PANE_VISIBLE            "side-pane-visible"
123 #define PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE          "bottom-panel-visible"
124 #define PLUMA_SETTINGS_MAX_RECENTS                  "max-recents"
125 #define PLUMA_SETTINGS_PRINT_SYNTAX_HIGHLIGHTING    "print-syntax-highlighting"
126 #define PLUMA_SETTINGS_PRINT_HEADER                 "print-header"
127 #define PLUMA_SETTINGS_PRINT_WRAP_MODE              "print-wrap-mode"
128 #define PLUMA_SETTINGS_PRINT_LINE_NUMBERS           "print-line-numbers"
129 #define PLUMA_SETTINGS_PRINT_FONT_BODY_PANGO        "print-font-body-pango"
130 #define PLUMA_SETTINGS_PRINT_FONT_HEADER_PANGO      "print-font-header-pango"
131 #define PLUMA_SETTINGS_PRINT_FONT_NUMBERS_PANGO     "print-font-numbers-pango"
132 #define PLUMA_SETTINGS_ENCODING_AUTO_DETECTED       "auto-detected-encodings"
133 #define PLUMA_SETTINGS_ENCODING_SHOWN_IN_MENU       "shown-in-menu-encodings"
134 #define PLUMA_SETTINGS_ACTIVE_PLUGINS               "active-plugins"
135 #define PLUMA_SETTINGS_SHOW_SINGLE_TAB              "show-single-tab"
136 #define PLUMA_SETTINGS_SHOW_TABS_WITH_SIDE_PANE     "show-tabs-with-side-pane"
137 #define PLUMA_SETTINGS_CTRL_TABS_SWITCH_TABS        "ctrl-tab-switch-tabs"
138 #define PLUMA_SETTINGS_SHOW_SAVE_CONFIRMATION       "show-save-confirmation"
139 #define PLUMA_SETTINGS_DRAWER_SPACE                 "enable-space-drawer-space"
140 #define PLUMA_SETTINGS_DRAWER_TAB                   "enable-space-drawer-tab"
141 #define PLUMA_SETTINGS_DRAWER_NEWLINE               "enable-space-drawer-newline"
142 #define PLUMA_SETTINGS_DRAWER_NBSP                  "enable-space-drawer-nbsp"
143 #define PLUMA_SETTINGS_DISPLAY_OVERVIEW_MAP         "display-overview-map"
144 #define PLUMA_SETTINGS_BACKGROUND_PATTERN           "background-pattern"
145 
146 /* White list of writable mate-vfs methods */
147 #define PLUMA_SETTINGS_WRITABLE_VFS_SCHEMES         "writable-vfs-schemes"
148 #define PLUMA_SETTINGS_SMART_HOME_END               "smart-home-end"
149 
150 /* window state keys */
151 #define PLUMA_SETTINGS_WINDOW_STATE                 "state"
152 #define PLUMA_SETTINGS_WINDOW_SIZE                  "size"
153 #define PLUMA_SETTINGS_SIDE_PANEL_SIZE              "side-panel-size"
154 #define PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE       "side-panel-active-page"
155 #define PLUMA_SETTINGS_BOTTOM_PANEL_SIZE            "bottom-panel-size"
156 #define PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE     "bottom-panel-active-page"
157 #define PLUMA_SETTINGS_ACTIVE_FILE_FILTER           "filter-id"
158 
159 G_END_DECLS
160 
161 #endif /* __PLUMA_SETTINGS_H__ */
162