1 /* config.c generated by valac 0.34.9, the Vala compiler
2 * generated from config.vala, do not modify */
3
4 /*
5 * config.vala - This file is part of the Geany MultiTerm plugin
6 *
7 * Copyright (c) 2012 Matthew Brush <matt@geany.org>.
8 *
9 * This program 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 * This program 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 this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22 * MA 02110-1301, USA.
23 */
24
25 #include <glib.h>
26 #include <glib-object.h>
27 #include "multiterm.h"
28 #include <stdlib.h>
29 #include <string.h>
30 #include <glib/gstdio.h>
31 #include <glib/gi18n-lib.h>
32 #include <gobject/gvaluecollector.h>
33
34 #define _g_key_file_unref0(var) ((var == NULL) ? NULL : (var = (g_key_file_unref (var), NULL)))
35 #define _g_free0(var) (var = (g_free (var), NULL))
36 #define __g_list_free__multi_term_shell_config_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__multi_term_shell_config_unref0_ (var), NULL)))
37 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
38 typedef struct _MultiTermParamSpecConfig MultiTermParamSpecConfig;
39
40 struct _MultiTermConfigPrivate {
41 gchar* _filename;
42 GList* _shell_configs;
43 };
44
45 struct _MultiTermParamSpecConfig {
46 GParamSpec parent_instance;
47 };
48
49
50 static gpointer multi_term_config_parent_class = NULL;
51
52 #define MULTI_TERM_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MULTI_TERM_TYPE_CONFIG, MultiTermConfigPrivate))
53 enum {
54 MULTI_TERM_CONFIG_DUMMY_PROPERTY
55 };
56 static void _multi_term_shell_config_unref0_ (gpointer var);
57 static void _g_list_free__multi_term_shell_config_unref0_ (GList* self);
58 static gboolean __lambda4_ (MultiTermConfig* self);
59 static gboolean ___lambda4__gsource_func (gpointer self);
60 static void multi_term_config_finalize (MultiTermConfig* obj);
61 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
62 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
63
64
_multi_term_shell_config_unref0_(gpointer var)65 static void _multi_term_shell_config_unref0_ (gpointer var) {
66 (var == NULL) ? NULL : (var = (multi_term_shell_config_unref (var), NULL));
67 }
68
69
_g_list_free__multi_term_shell_config_unref0_(GList * self)70 static void _g_list_free__multi_term_shell_config_unref0_ (GList* self) {
71 g_list_foreach (self, (GFunc) _multi_term_shell_config_unref0_, NULL);
72 g_list_free (self);
73 }
74
75
multi_term_config_construct(GType object_type,const gchar * filename)76 MultiTermConfig* multi_term_config_construct (GType object_type, const gchar* filename) {
77 MultiTermConfig* self = NULL;
78 const gchar* _tmp0_ = NULL;
79 gchar* _tmp1_ = NULL;
80 g_return_val_if_fail (filename != NULL, NULL);
81 self = (MultiTermConfig*) g_type_create_instance (object_type);
82 _tmp0_ = filename;
83 _tmp1_ = g_strdup (_tmp0_);
84 _g_free0 (self->priv->_filename);
85 self->priv->_filename = _tmp1_;
86 multi_term_config_reload (self);
87 return self;
88 }
89
90
multi_term_config_new(const gchar * filename)91 MultiTermConfig* multi_term_config_new (const gchar* filename) {
92 return multi_term_config_construct (MULTI_TERM_TYPE_CONFIG, filename);
93 }
94
95
multi_term_config_store(MultiTermConfig * self)96 gboolean multi_term_config_store (MultiTermConfig* self) {
97 gboolean result = FALSE;
98 gchar* data = NULL;
99 GKeyFile* _tmp0_ = NULL;
100 gchar* _tmp1_ = NULL;
101 gboolean _tmp8_ = FALSE;
102 GError * _inner_error_ = NULL;
103 g_return_val_if_fail (self != NULL, FALSE);
104 _tmp0_ = self->kf;
105 _tmp1_ = g_key_file_to_data (_tmp0_, NULL, NULL);
106 data = _tmp1_;
107 {
108 const gchar* _tmp2_ = NULL;
109 _tmp2_ = self->priv->_filename;
110 g_file_set_contents (_tmp2_, data, (gssize) -1, &_inner_error_);
111 if (G_UNLIKELY (_inner_error_ != NULL)) {
112 gboolean _tmp3_ = FALSE;
113 if (_inner_error_->domain == G_FILE_ERROR) {
114 goto __catch0_g_file_error;
115 }
116 _g_free0 (data);
117 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
118 g_clear_error (&_inner_error_);
119 return _tmp3_;
120 }
121 result = FALSE;
122 _g_free0 (data);
123 return result;
124 }
125 goto __finally0;
126 __catch0_g_file_error:
127 {
128 GError* err = NULL;
129 const gchar* _tmp4_ = NULL;
130 const gchar* _tmp5_ = NULL;
131 GError* _tmp6_ = NULL;
132 const gchar* _tmp7_ = NULL;
133 err = _inner_error_;
134 _inner_error_ = NULL;
135 _tmp4_ = _ ("Unable to save config file %s: %s");
136 _tmp5_ = self->priv->_filename;
137 _tmp6_ = err;
138 _tmp7_ = _tmp6_->message;
139 g_warning (_tmp4_, _tmp5_, _tmp7_);
140 result = TRUE;
141 _g_error_free0 (err);
142 _g_free0 (data);
143 return result;
144 }
145 __finally0:
146 _g_free0 (data);
147 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
148 g_clear_error (&_inner_error_);
149 return _tmp8_;
150 }
151
152
__lambda4_(MultiTermConfig * self)153 static gboolean __lambda4_ (MultiTermConfig* self) {
154 gboolean result = FALSE;
155 gboolean _tmp0_ = FALSE;
156 _tmp0_ = multi_term_config_store (self);
157 result = _tmp0_;
158 return result;
159 }
160
161
___lambda4__gsource_func(gpointer self)162 static gboolean ___lambda4__gsource_func (gpointer self) {
163 gboolean result;
164 result = __lambda4_ ((MultiTermConfig*) self);
165 return result;
166 }
167
168
multi_term_config_store_eventually(MultiTermConfig * self)169 void multi_term_config_store_eventually (MultiTermConfig* self) {
170 g_return_if_fail (self != NULL);
171 g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda4__gsource_func, multi_term_config_ref (self), multi_term_config_unref);
172 }
173
174
multi_term_config_reload(MultiTermConfig * self)175 void multi_term_config_reload (MultiTermConfig* self) {
176 GError * _inner_error_ = NULL;
177 g_return_if_fail (self != NULL);
178 {
179 GKeyFile* _tmp0_ = NULL;
180 GKeyFile* _tmp1_ = NULL;
181 gsize _tmp2_;
182 gchar** _tmp3_ = NULL;
183 GKeyFile* _tmp17_ = NULL;
184 const gchar* _tmp18_ = NULL;
185 GKeyFile* _tmp19_ = NULL;
186 gsize _tmp20_;
187 gchar** _tmp21_ = NULL;
188 _tmp0_ = g_key_file_new ();
189 _g_key_file_unref0 (self->kf);
190 self->kf = _tmp0_;
191 _tmp1_ = self->kf;
192 _tmp3_ = g_key_file_get_groups (_tmp1_, &_tmp2_);
193 {
194 gchar** group_collection = NULL;
195 gint group_collection_length1 = 0;
196 gint _group_collection_size_ = 0;
197 gint group_it = 0;
198 group_collection = _tmp3_;
199 group_collection_length1 = _tmp2_;
200 for (group_it = 0; group_it < _tmp2_; group_it = group_it + 1) {
201 gchar* _tmp4_ = NULL;
202 gchar* group = NULL;
203 _tmp4_ = g_strdup (group_collection[group_it]);
204 group = _tmp4_;
205 {
206 gchar** _tmp5_ = NULL;
207 GKeyFile* _tmp6_ = NULL;
208 const gchar* _tmp7_ = NULL;
209 gsize _tmp8_;
210 gchar** _tmp9_ = NULL;
211 gint _tmp5__length1 = 0;
212 gint __tmp5__size_ = 0;
213 gchar** _tmp10_ = NULL;
214 gint _tmp10__length1 = 0;
215 GKeyFile* _tmp15_ = NULL;
216 const gchar* _tmp16_ = NULL;
217 _tmp6_ = self->kf;
218 _tmp7_ = group;
219 _tmp9_ = g_key_file_get_keys (_tmp6_, _tmp7_, &_tmp8_, &_inner_error_);
220 _tmp5_ = _tmp9_;
221 _tmp5__length1 = _tmp8_;
222 __tmp5__size_ = _tmp5__length1;
223 if (G_UNLIKELY (_inner_error_ != NULL)) {
224 _g_free0 (group);
225 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
226 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
227 goto __catch1_g_key_file_error;
228 }
229 if (_inner_error_->domain == G_FILE_ERROR) {
230 goto __catch1_g_file_error;
231 }
232 _g_free0 (group);
233 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
234 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
235 g_clear_error (&_inner_error_);
236 return;
237 }
238 _tmp10_ = _tmp5_;
239 _tmp10__length1 = _tmp5__length1;
240 _tmp5_ = NULL;
241 _tmp5__length1 = 0;
242 {
243 gchar** key_collection = NULL;
244 gint key_collection_length1 = 0;
245 gint _key_collection_size_ = 0;
246 gint key_it = 0;
247 key_collection = _tmp10_;
248 key_collection_length1 = _tmp10__length1;
249 for (key_it = 0; key_it < _tmp10__length1; key_it = key_it + 1) {
250 gchar* _tmp11_ = NULL;
251 gchar* key = NULL;
252 _tmp11_ = g_strdup (key_collection[key_it]);
253 key = _tmp11_;
254 {
255 GKeyFile* _tmp12_ = NULL;
256 const gchar* _tmp13_ = NULL;
257 const gchar* _tmp14_ = NULL;
258 _tmp12_ = self->kf;
259 _tmp13_ = group;
260 _tmp14_ = key;
261 g_key_file_remove_key (_tmp12_, _tmp13_, _tmp14_, &_inner_error_);
262 if (G_UNLIKELY (_inner_error_ != NULL)) {
263 _g_free0 (key);
264 key_collection = (_vala_array_free (key_collection, key_collection_length1, (GDestroyNotify) g_free), NULL);
265 _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
266 _g_free0 (group);
267 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
268 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
269 goto __catch1_g_key_file_error;
270 }
271 if (_inner_error_->domain == G_FILE_ERROR) {
272 goto __catch1_g_file_error;
273 }
274 _g_free0 (key);
275 key_collection = (_vala_array_free (key_collection, key_collection_length1, (GDestroyNotify) g_free), NULL);
276 _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
277 _g_free0 (group);
278 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
279 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
280 g_clear_error (&_inner_error_);
281 return;
282 }
283 _g_free0 (key);
284 }
285 }
286 key_collection = (_vala_array_free (key_collection, key_collection_length1, (GDestroyNotify) g_free), NULL);
287 }
288 _tmp15_ = self->kf;
289 _tmp16_ = group;
290 g_key_file_remove_group (_tmp15_, _tmp16_, &_inner_error_);
291 if (G_UNLIKELY (_inner_error_ != NULL)) {
292 _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
293 _g_free0 (group);
294 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
295 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
296 goto __catch1_g_key_file_error;
297 }
298 if (_inner_error_->domain == G_FILE_ERROR) {
299 goto __catch1_g_file_error;
300 }
301 _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
302 _g_free0 (group);
303 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
304 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
305 g_clear_error (&_inner_error_);
306 return;
307 }
308 _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
309 _g_free0 (group);
310 }
311 }
312 group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL);
313 }
314 _tmp17_ = self->kf;
315 _tmp18_ = self->priv->_filename;
316 g_key_file_load_from_file (_tmp17_, _tmp18_, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, &_inner_error_);
317 if (G_UNLIKELY (_inner_error_ != NULL)) {
318 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
319 goto __catch1_g_key_file_error;
320 }
321 if (_inner_error_->domain == G_FILE_ERROR) {
322 goto __catch1_g_file_error;
323 }
324 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
325 g_clear_error (&_inner_error_);
326 return;
327 }
328 __g_list_free__multi_term_shell_config_unref0_0 (self->priv->_shell_configs);
329 self->priv->_shell_configs = NULL;
330 _tmp19_ = self->kf;
331 _tmp21_ = g_key_file_get_groups (_tmp19_, &_tmp20_);
332 {
333 gchar** section_collection = NULL;
334 gint section_collection_length1 = 0;
335 gint _section_collection_size_ = 0;
336 gint section_it = 0;
337 section_collection = _tmp21_;
338 section_collection_length1 = _tmp20_;
339 for (section_it = 0; section_it < _tmp20_; section_it = section_it + 1) {
340 gchar* _tmp22_ = NULL;
341 gchar* section = NULL;
342 _tmp22_ = g_strdup (section_collection[section_it]);
343 section = _tmp22_;
344 {
345 const gchar* _tmp23_ = NULL;
346 gboolean _tmp24_ = FALSE;
347 _tmp23_ = section;
348 _tmp24_ = g_str_has_prefix (_tmp23_, "shell=");
349 if (_tmp24_) {
350 const gchar* _tmp25_ = NULL;
351 MultiTermShellConfig* _tmp26_ = NULL;
352 _tmp25_ = section;
353 _tmp26_ = multi_term_shell_config_new (self, _tmp25_);
354 self->priv->_shell_configs = g_list_append (self->priv->_shell_configs, _tmp26_);
355 }
356 _g_free0 (section);
357 }
358 }
359 section_collection = (_vala_array_free (section_collection, section_collection_length1, (GDestroyNotify) g_free), NULL);
360 }
361 }
362 goto __finally1;
363 __catch1_g_key_file_error:
364 {
365 GError* err = NULL;
366 const gchar* _tmp27_ = NULL;
367 const gchar* _tmp28_ = NULL;
368 GError* _tmp29_ = NULL;
369 const gchar* _tmp30_ = NULL;
370 err = _inner_error_;
371 _inner_error_ = NULL;
372 _tmp27_ = _ ("Unable to load config file %s: %s");
373 _tmp28_ = self->priv->_filename;
374 _tmp29_ = err;
375 _tmp30_ = _tmp29_->message;
376 g_warning (_tmp27_, _tmp28_, _tmp30_);
377 _g_error_free0 (err);
378 }
379 goto __finally1;
380 __catch1_g_file_error:
381 {
382 GError* err = NULL;
383 const gchar* _tmp31_ = NULL;
384 const gchar* _tmp32_ = NULL;
385 GError* _tmp33_ = NULL;
386 const gchar* _tmp34_ = NULL;
387 err = _inner_error_;
388 _inner_error_ = NULL;
389 _tmp31_ = _ ("Unable to load config file %s: %s");
390 _tmp32_ = self->priv->_filename;
391 _tmp33_ = err;
392 _tmp34_ = _tmp33_->message;
393 g_warning (_tmp31_, _tmp32_, _tmp34_);
394 _g_error_free0 (err);
395 }
396 __finally1:
397 if (G_UNLIKELY (_inner_error_ != NULL)) {
398 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
399 g_clear_error (&_inner_error_);
400 return;
401 }
402 }
403
404
multi_term_config_get_filename(MultiTermConfig * self)405 const gchar* multi_term_config_get_filename (MultiTermConfig* self) {
406 const gchar* result;
407 const gchar* _tmp0_ = NULL;
408 g_return_val_if_fail (self != NULL, NULL);
409 _tmp0_ = self->priv->_filename;
410 result = _tmp0_;
411 return result;
412 }
413
414
multi_term_config_get_show_tabs(MultiTermConfig * self)415 gboolean multi_term_config_get_show_tabs (MultiTermConfig* self) {
416 gboolean result;
417 gboolean _tmp4_ = FALSE;
418 GError * _inner_error_ = NULL;
419 g_return_val_if_fail (self != NULL, FALSE);
420 {
421 gboolean _tmp0_ = FALSE;
422 GKeyFile* _tmp1_ = NULL;
423 gboolean _tmp2_ = FALSE;
424 _tmp1_ = self->kf;
425 _tmp2_ = g_key_file_get_boolean (_tmp1_, "general", "show_tabs", &_inner_error_);
426 _tmp0_ = _tmp2_;
427 if (G_UNLIKELY (_inner_error_ != NULL)) {
428 gboolean _tmp3_ = FALSE;
429 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
430 goto __catch2_g_key_file_error;
431 }
432 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
433 g_clear_error (&_inner_error_);
434 return _tmp3_;
435 }
436 result = _tmp0_;
437 return result;
438 }
439 goto __finally2;
440 __catch2_g_key_file_error:
441 {
442 GError* err = NULL;
443 err = _inner_error_;
444 _inner_error_ = NULL;
445 result = TRUE;
446 _g_error_free0 (err);
447 return result;
448 }
449 __finally2:
450 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
451 g_clear_error (&_inner_error_);
452 return _tmp4_;
453 }
454
455
multi_term_config_set_show_tabs(MultiTermConfig * self,gboolean value)456 void multi_term_config_set_show_tabs (MultiTermConfig* self, gboolean value) {
457 GKeyFile* _tmp0_ = NULL;
458 gboolean _tmp1_ = FALSE;
459 g_return_if_fail (self != NULL);
460 _tmp0_ = self->kf;
461 _tmp1_ = value;
462 g_key_file_set_boolean (_tmp0_, "general", "show_tabs", _tmp1_);
463 multi_term_config_store_eventually (self);
464 }
465
466
multi_term_config_get_external_terminal(MultiTermConfig * self)467 gchar* multi_term_config_get_external_terminal (MultiTermConfig* self) {
468 gchar* result;
469 GError * _inner_error_ = NULL;
470 g_return_val_if_fail (self != NULL, NULL);
471 {
472 gchar* _tmp0_ = NULL;
473 GKeyFile* _tmp1_ = NULL;
474 gchar* _tmp2_ = NULL;
475 gchar* _tmp3_ = NULL;
476 _tmp1_ = self->kf;
477 _tmp2_ = g_key_file_get_string (_tmp1_, "general", "external_terminal", &_inner_error_);
478 _tmp0_ = _tmp2_;
479 if (G_UNLIKELY (_inner_error_ != NULL)) {
480 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
481 goto __catch3_g_key_file_error;
482 }
483 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
484 g_clear_error (&_inner_error_);
485 return NULL;
486 }
487 _tmp3_ = _tmp0_;
488 _tmp0_ = NULL;
489 result = _tmp3_;
490 _g_free0 (_tmp0_);
491 return result;
492 }
493 goto __finally3;
494 __catch3_g_key_file_error:
495 {
496 GError* err = NULL;
497 gchar* _tmp4_ = NULL;
498 err = _inner_error_;
499 _inner_error_ = NULL;
500 _tmp4_ = g_strdup ("xterm");
501 result = _tmp4_;
502 _g_error_free0 (err);
503 return result;
504 }
505 __finally3:
506 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
507 g_clear_error (&_inner_error_);
508 return NULL;
509 }
510
511
multi_term_config_set_external_terminal(MultiTermConfig * self,const gchar * value)512 void multi_term_config_set_external_terminal (MultiTermConfig* self, const gchar* value) {
513 GKeyFile* _tmp0_ = NULL;
514 const gchar* _tmp1_ = NULL;
515 g_return_if_fail (self != NULL);
516 _tmp0_ = self->kf;
517 _tmp1_ = value;
518 g_key_file_set_string (_tmp0_, "general", "external_terminal", _tmp1_);
519 multi_term_config_store_eventually (self);
520 }
521
522
multi_term_config_get_location(MultiTermConfig * self)523 gchar* multi_term_config_get_location (MultiTermConfig* self) {
524 gchar* result;
525 GError * _inner_error_ = NULL;
526 g_return_val_if_fail (self != NULL, NULL);
527 {
528 gchar* _tmp0_ = NULL;
529 GKeyFile* _tmp1_ = NULL;
530 gchar* _tmp2_ = NULL;
531 gchar* _tmp3_ = NULL;
532 _tmp1_ = self->kf;
533 _tmp2_ = g_key_file_get_string (_tmp1_, "general", "location", &_inner_error_);
534 _tmp0_ = _tmp2_;
535 if (G_UNLIKELY (_inner_error_ != NULL)) {
536 if (_inner_error_->domain == G_KEY_FILE_ERROR) {
537 goto __catch4_g_key_file_error;
538 }
539 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
540 g_clear_error (&_inner_error_);
541 return NULL;
542 }
543 _tmp3_ = _tmp0_;
544 _tmp0_ = NULL;
545 result = _tmp3_;
546 _g_free0 (_tmp0_);
547 return result;
548 }
549 goto __finally4;
550 __catch4_g_key_file_error:
551 {
552 GError* err = NULL;
553 gchar* _tmp4_ = NULL;
554 err = _inner_error_;
555 _inner_error_ = NULL;
556 _tmp4_ = g_strdup ("msgwin");
557 result = _tmp4_;
558 _g_error_free0 (err);
559 return result;
560 }
561 __finally4:
562 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
563 g_clear_error (&_inner_error_);
564 return NULL;
565 }
566
567
multi_term_config_set_location(MultiTermConfig * self,const gchar * value)568 void multi_term_config_set_location (MultiTermConfig* self, const gchar* value) {
569 GKeyFile* _tmp0_ = NULL;
570 const gchar* _tmp1_ = NULL;
571 g_return_if_fail (self != NULL);
572 _tmp0_ = self->kf;
573 _tmp1_ = value;
574 g_key_file_set_string (_tmp0_, "general", "location", _tmp1_);
575 multi_term_config_store_eventually (self);
576 }
577
578
multi_term_config_get_shell_configs(MultiTermConfig * self)579 GList* multi_term_config_get_shell_configs (MultiTermConfig* self) {
580 GList* result;
581 GList* _tmp0_ = NULL;
582 g_return_val_if_fail (self != NULL, NULL);
583 _tmp0_ = self->priv->_shell_configs;
584 result = _tmp0_;
585 return result;
586 }
587
588
multi_term_value_config_init(GValue * value)589 static void multi_term_value_config_init (GValue* value) {
590 value->data[0].v_pointer = NULL;
591 }
592
593
multi_term_value_config_free_value(GValue * value)594 static void multi_term_value_config_free_value (GValue* value) {
595 if (value->data[0].v_pointer) {
596 multi_term_config_unref (value->data[0].v_pointer);
597 }
598 }
599
600
multi_term_value_config_copy_value(const GValue * src_value,GValue * dest_value)601 static void multi_term_value_config_copy_value (const GValue* src_value, GValue* dest_value) {
602 if (src_value->data[0].v_pointer) {
603 dest_value->data[0].v_pointer = multi_term_config_ref (src_value->data[0].v_pointer);
604 } else {
605 dest_value->data[0].v_pointer = NULL;
606 }
607 }
608
609
multi_term_value_config_peek_pointer(const GValue * value)610 static gpointer multi_term_value_config_peek_pointer (const GValue* value) {
611 return value->data[0].v_pointer;
612 }
613
614
multi_term_value_config_collect_value(GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)615 static gchar* multi_term_value_config_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
616 if (collect_values[0].v_pointer) {
617 MultiTermConfig* object;
618 object = collect_values[0].v_pointer;
619 if (object->parent_instance.g_class == NULL) {
620 return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
621 } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
622 return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
623 }
624 value->data[0].v_pointer = multi_term_config_ref (object);
625 } else {
626 value->data[0].v_pointer = NULL;
627 }
628 return NULL;
629 }
630
631
multi_term_value_config_lcopy_value(const GValue * value,guint n_collect_values,GTypeCValue * collect_values,guint collect_flags)632 static gchar* multi_term_value_config_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
633 MultiTermConfig** object_p;
634 object_p = collect_values[0].v_pointer;
635 if (!object_p) {
636 return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
637 }
638 if (!value->data[0].v_pointer) {
639 *object_p = NULL;
640 } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
641 *object_p = value->data[0].v_pointer;
642 } else {
643 *object_p = multi_term_config_ref (value->data[0].v_pointer);
644 }
645 return NULL;
646 }
647
648
multi_term_param_spec_config(const gchar * name,const gchar * nick,const gchar * blurb,GType object_type,GParamFlags flags)649 GParamSpec* multi_term_param_spec_config (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
650 MultiTermParamSpecConfig* spec;
651 g_return_val_if_fail (g_type_is_a (object_type, MULTI_TERM_TYPE_CONFIG), NULL);
652 spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
653 G_PARAM_SPEC (spec)->value_type = object_type;
654 return G_PARAM_SPEC (spec);
655 }
656
657
multi_term_value_get_config(const GValue * value)658 gpointer multi_term_value_get_config (const GValue* value) {
659 g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MULTI_TERM_TYPE_CONFIG), NULL);
660 return value->data[0].v_pointer;
661 }
662
663
multi_term_value_set_config(GValue * value,gpointer v_object)664 void multi_term_value_set_config (GValue* value, gpointer v_object) {
665 MultiTermConfig* old;
666 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MULTI_TERM_TYPE_CONFIG));
667 old = value->data[0].v_pointer;
668 if (v_object) {
669 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MULTI_TERM_TYPE_CONFIG));
670 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
671 value->data[0].v_pointer = v_object;
672 multi_term_config_ref (value->data[0].v_pointer);
673 } else {
674 value->data[0].v_pointer = NULL;
675 }
676 if (old) {
677 multi_term_config_unref (old);
678 }
679 }
680
681
multi_term_value_take_config(GValue * value,gpointer v_object)682 void multi_term_value_take_config (GValue* value, gpointer v_object) {
683 MultiTermConfig* old;
684 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MULTI_TERM_TYPE_CONFIG));
685 old = value->data[0].v_pointer;
686 if (v_object) {
687 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MULTI_TERM_TYPE_CONFIG));
688 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
689 value->data[0].v_pointer = v_object;
690 } else {
691 value->data[0].v_pointer = NULL;
692 }
693 if (old) {
694 multi_term_config_unref (old);
695 }
696 }
697
698
multi_term_config_class_init(MultiTermConfigClass * klass)699 static void multi_term_config_class_init (MultiTermConfigClass * klass) {
700 multi_term_config_parent_class = g_type_class_peek_parent (klass);
701 ((MultiTermConfigClass *) klass)->finalize = multi_term_config_finalize;
702 g_type_class_add_private (klass, sizeof (MultiTermConfigPrivate));
703 }
704
705
multi_term_config_instance_init(MultiTermConfig * self)706 static void multi_term_config_instance_init (MultiTermConfig * self) {
707 self->priv = MULTI_TERM_CONFIG_GET_PRIVATE (self);
708 self->priv->_shell_configs = NULL;
709 self->ref_count = 1;
710 }
711
712
multi_term_config_finalize(MultiTermConfig * obj)713 static void multi_term_config_finalize (MultiTermConfig* obj) {
714 MultiTermConfig * self;
715 self = G_TYPE_CHECK_INSTANCE_CAST (obj, MULTI_TERM_TYPE_CONFIG, MultiTermConfig);
716 g_signal_handlers_destroy (self);
717 _g_key_file_unref0 (self->kf);
718 _g_free0 (self->priv->_filename);
719 __g_list_free__multi_term_shell_config_unref0_0 (self->priv->_shell_configs);
720 }
721
722
multi_term_config_get_type(void)723 GType multi_term_config_get_type (void) {
724 static volatile gsize multi_term_config_type_id__volatile = 0;
725 if (g_once_init_enter (&multi_term_config_type_id__volatile)) {
726 static const GTypeValueTable g_define_type_value_table = { multi_term_value_config_init, multi_term_value_config_free_value, multi_term_value_config_copy_value, multi_term_value_config_peek_pointer, "p", multi_term_value_config_collect_value, "p", multi_term_value_config_lcopy_value };
727 static const GTypeInfo g_define_type_info = { sizeof (MultiTermConfigClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) multi_term_config_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MultiTermConfig), 0, (GInstanceInitFunc) multi_term_config_instance_init, &g_define_type_value_table };
728 static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
729 GType multi_term_config_type_id;
730 multi_term_config_type_id = g_type_register_fundamental (g_type_fundamental_next (), "MultiTermConfig", &g_define_type_info, &g_define_type_fundamental_info, 0);
731 g_once_init_leave (&multi_term_config_type_id__volatile, multi_term_config_type_id);
732 }
733 return multi_term_config_type_id__volatile;
734 }
735
736
multi_term_config_ref(gpointer instance)737 gpointer multi_term_config_ref (gpointer instance) {
738 MultiTermConfig* self;
739 self = instance;
740 g_atomic_int_inc (&self->ref_count);
741 return instance;
742 }
743
744
multi_term_config_unref(gpointer instance)745 void multi_term_config_unref (gpointer instance) {
746 MultiTermConfig* self;
747 self = instance;
748 if (g_atomic_int_dec_and_test (&self->ref_count)) {
749 MULTI_TERM_CONFIG_GET_CLASS (self)->finalize (self);
750 g_type_free_instance ((GTypeInstance *) self);
751 }
752 }
753
754
_vala_array_destroy(gpointer array,gint array_length,GDestroyNotify destroy_func)755 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
756 if ((array != NULL) && (destroy_func != NULL)) {
757 int i;
758 for (i = 0; i < array_length; i = i + 1) {
759 if (((gpointer*) array)[i] != NULL) {
760 destroy_func (((gpointer*) array)[i]);
761 }
762 }
763 }
764 }
765
766
_vala_array_free(gpointer array,gint array_length,GDestroyNotify destroy_func)767 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
768 _vala_array_destroy (array, array_length, destroy_func);
769 g_free (array);
770 }
771
772
773
774