1use crate::ffi;
7use glib::{
8 object::ObjectType as _,
9 prelude::*,
10 signal::{connect_raw, SignalHandlerId},
11 translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16 #[doc(alias = "PanelSettings")]
17 pub struct Settings(Object<ffi::PanelSettings, ffi::PanelSettingsClass>) @implements gio::ActionGroup;
18
19 match fn {
20 type_ => || ffi::panel_settings_get_type(),
21 }
22}
23
24impl Settings {
25 #[doc(alias = "panel_settings_new")]
26 pub fn new(identifier: &str, schema_id: &str) -> Settings {
27 assert_initialized_main_thread!();
28 unsafe {
29 from_glib_full(ffi::panel_settings_new(
30 identifier.to_glib_none().0,
31 schema_id.to_glib_none().0,
32 ))
33 }
34 }
35
36 #[doc(alias = "panel_settings_new_relocatable")]
37 pub fn new_relocatable(
38 identifier: &str,
39 schema_id: &str,
40 schema_id_prefix: &str,
41 path_prefix: &str,
42 path_suffix: &str,
43 ) -> Settings {
44 assert_initialized_main_thread!();
45 unsafe {
46 from_glib_full(ffi::panel_settings_new_relocatable(
47 identifier.to_glib_none().0,
48 schema_id.to_glib_none().0,
49 schema_id_prefix.to_glib_none().0,
50 path_prefix.to_glib_none().0,
51 path_suffix.to_glib_none().0,
52 ))
53 }
54 }
55
56 #[doc(alias = "panel_settings_new_with_path")]
57 #[doc(alias = "new_with_path")]
58 pub fn with_path(identifier: &str, schema_id: &str, path: &str) -> Settings {
59 assert_initialized_main_thread!();
60 unsafe {
61 from_glib_full(ffi::panel_settings_new_with_path(
62 identifier.to_glib_none().0,
63 schema_id.to_glib_none().0,
64 path.to_glib_none().0,
65 ))
66 }
67 }
68
69 #[doc(alias = "panel_settings_get_boolean")]
70 #[doc(alias = "get_boolean")]
71 pub fn is_boolean(&self, key: &str) -> bool {
72 unsafe {
73 from_glib(ffi::panel_settings_get_boolean(
74 self.to_glib_none().0,
75 key.to_glib_none().0,
76 ))
77 }
78 }
79
80 #[doc(alias = "panel_settings_get_default_value")]
81 #[doc(alias = "get_default_value")]
82 pub fn default_value(&self, key: &str) -> glib::Variant {
83 unsafe {
84 from_glib_full(ffi::panel_settings_get_default_value(
85 self.to_glib_none().0,
86 key.to_glib_none().0,
87 ))
88 }
89 }
90
91 #[doc(alias = "panel_settings_get_double")]
92 #[doc(alias = "get_double")]
93 pub fn double(&self, key: &str) -> f64 {
94 unsafe { ffi::panel_settings_get_double(self.to_glib_none().0, key.to_glib_none().0) }
95 }
96
97 #[doc(alias = "panel_settings_get_int")]
98 #[doc(alias = "get_int")]
99 pub fn int(&self, key: &str) -> i32 {
100 unsafe { ffi::panel_settings_get_int(self.to_glib_none().0, key.to_glib_none().0) }
101 }
102
103 #[doc(alias = "panel_settings_get_string")]
104 #[doc(alias = "get_string")]
105 pub fn string(&self, key: &str) -> glib::GString {
106 unsafe {
107 from_glib_full(ffi::panel_settings_get_string(
108 self.to_glib_none().0,
109 key.to_glib_none().0,
110 ))
111 }
112 }
113
114 #[doc(alias = "panel_settings_get_uint")]
115 #[doc(alias = "get_uint")]
116 pub fn uint(&self, key: &str) -> u32 {
117 unsafe { ffi::panel_settings_get_uint(self.to_glib_none().0, key.to_glib_none().0) }
118 }
119
120 #[doc(alias = "panel_settings_get_user_value")]
121 #[doc(alias = "get_user_value")]
122 pub fn user_value(&self, key: &str) -> Option<glib::Variant> {
123 unsafe {
124 from_glib_full(ffi::panel_settings_get_user_value(
125 self.to_glib_none().0,
126 key.to_glib_none().0,
127 ))
128 }
129 }
130
131 #[doc(alias = "panel_settings_get_value")]
132 #[doc(alias = "get_value")]
133 pub fn value(&self, key: &str) -> glib::Variant {
134 unsafe {
135 from_glib_full(ffi::panel_settings_get_value(
136 self.to_glib_none().0,
137 key.to_glib_none().0,
138 ))
139 }
140 }
141
142 #[doc(alias = "panel_settings_set_boolean")]
143 pub fn set_boolean(&self, key: &str, val: bool) {
144 unsafe {
145 ffi::panel_settings_set_boolean(
146 self.to_glib_none().0,
147 key.to_glib_none().0,
148 val.into_glib(),
149 );
150 }
151 }
152
153 #[doc(alias = "panel_settings_set_double")]
154 pub fn set_double(&self, key: &str, val: f64) {
155 unsafe {
156 ffi::panel_settings_set_double(self.to_glib_none().0, key.to_glib_none().0, val);
157 }
158 }
159
160 #[doc(alias = "panel_settings_set_int")]
161 pub fn set_int(&self, key: &str, val: i32) {
162 unsafe {
163 ffi::panel_settings_set_int(self.to_glib_none().0, key.to_glib_none().0, val);
164 }
165 }
166
167 #[doc(alias = "panel_settings_set_string")]
168 pub fn set_string(&self, key: &str, val: &str) {
169 unsafe {
170 ffi::panel_settings_set_string(
171 self.to_glib_none().0,
172 key.to_glib_none().0,
173 val.to_glib_none().0,
174 );
175 }
176 }
177
178 #[doc(alias = "panel_settings_set_uint")]
179 pub fn set_uint(&self, key: &str, val: u32) {
180 unsafe {
181 ffi::panel_settings_set_uint(self.to_glib_none().0, key.to_glib_none().0, val);
182 }
183 }
184
185 #[doc(alias = "panel_settings_set_value")]
186 pub fn set_value(&self, key: &str, value: &glib::Variant) {
187 unsafe {
188 ffi::panel_settings_set_value(
189 self.to_glib_none().0,
190 key.to_glib_none().0,
191 value.to_glib_none().0,
192 );
193 }
194 }
195
196 #[doc(alias = "panel_settings_unbind")]
197 pub fn unbind(&self, property: &str) {
198 unsafe {
199 ffi::panel_settings_unbind(self.to_glib_none().0, property.to_glib_none().0);
200 }
201 }
202
203 pub fn identifier(&self) -> Option<glib::GString> {
204 ObjectExt::property(self, "identifier")
205 }
206
207 pub fn path(&self) -> Option<glib::GString> {
208 ObjectExt::property(self, "path")
209 }
210
211 #[doc(alias = "path-prefix")]
212 pub fn path_prefix(&self) -> Option<glib::GString> {
213 ObjectExt::property(self, "path-prefix")
214 }
215
216 #[doc(alias = "path-suffix")]
217 pub fn path_suffix(&self) -> Option<glib::GString> {
218 ObjectExt::property(self, "path-suffix")
219 }
220
221 #[doc(alias = "schema-id-prefix")]
222 pub fn schema_id_prefix(&self) -> Option<glib::GString> {
223 ObjectExt::property(self, "schema-id-prefix")
224 }
225
226 #[doc(alias = "panel_settings_resolve_schema_path")]
227 pub fn resolve_schema_path(
228 schema_id_prefix: &str,
229 schema_id: &str,
230 identifier: &str,
231 path_prefix: &str,
232 path_suffix: &str,
233 ) -> glib::GString {
234 assert_initialized_main_thread!();
235 unsafe {
236 from_glib_full(ffi::panel_settings_resolve_schema_path(
237 schema_id_prefix.to_glib_none().0,
238 schema_id.to_glib_none().0,
239 identifier.to_glib_none().0,
240 path_prefix.to_glib_none().0,
241 path_suffix.to_glib_none().0,
242 ))
243 }
244 }
245
246 #[doc(alias = "changed")]
247 pub fn connect_changed<F: Fn(&Self, &str) + 'static>(
248 &self,
249 detail: Option<&str>,
250 f: F,
251 ) -> SignalHandlerId {
252 unsafe extern "C" fn changed_trampoline<F: Fn(&Settings, &str) + 'static>(
253 this: *mut ffi::PanelSettings,
254 object: *mut std::ffi::c_char,
255 f: glib::ffi::gpointer,
256 ) {
257 let f: &F = &*(f as *const F);
258 f(
259 &from_glib_borrow(this),
260 &glib::GString::from_glib_borrow(object),
261 )
262 }
263 unsafe {
264 let f: Box_<F> = Box_::new(f);
265 let detailed_signal_name = detail.map(|name| format!("changed::{name}\0"));
266 let signal_name: &[u8] = detailed_signal_name
267 .as_ref()
268 .map_or(c"changed".to_bytes(), |n| n.as_bytes());
269 connect_raw(
270 self.as_ptr() as *mut _,
271 signal_name.as_ptr() as *const _,
272 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
273 changed_trampoline::<F> as *const (),
274 )),
275 Box_::into_raw(f),
276 )
277 }
278 }
279}