|
Lines 41-46
Link Here
|
| 41 |
#define ELEMENT_TOPLEVEL "gtkfilechooser" |
41 |
#define ELEMENT_TOPLEVEL "gtkfilechooser" |
| 42 |
#define ELEMENT_LOCATION "location" |
42 |
#define ELEMENT_LOCATION "location" |
| 43 |
#define ELEMENT_SHOW_HIDDEN "show_hidden" |
43 |
#define ELEMENT_SHOW_HIDDEN "show_hidden" |
|
|
44 |
#define ELEMENT_EXPAND_FOLDERS "expand_folders" |
| 44 |
#define ATTRIBUTE_VERSION "version" |
45 |
#define ATTRIBUTE_VERSION "version" |
| 45 |
#define ATTRIBUTE_MODE "mode" |
46 |
#define ATTRIBUTE_MODE "mode" |
| 46 |
#define ATTRIBUTE_VALUE "value" |
47 |
#define ATTRIBUTE_VALUE "value" |
|
Lines 68-73
set_defaults (GtkFileChooserSettings *se
Link Here
|
| 68 |
{ |
69 |
{ |
| 69 |
settings->location_mode = LOCATION_MODE_PATH_BAR; |
70 |
settings->location_mode = LOCATION_MODE_PATH_BAR; |
| 70 |
settings->show_hidden = FALSE; |
71 |
settings->show_hidden = FALSE; |
|
|
72 |
settings->expand_folders = FALSE; |
| 71 |
} |
73 |
} |
| 72 |
|
74 |
|
| 73 |
typedef enum { |
75 |
typedef enum { |
|
Lines 76-82
typedef enum {
Link Here
|
| 76 |
STATE_ERROR, |
78 |
STATE_ERROR, |
| 77 |
STATE_IN_TOPLEVEL, |
79 |
STATE_IN_TOPLEVEL, |
| 78 |
STATE_IN_LOCATION, |
80 |
STATE_IN_LOCATION, |
| 79 |
STATE_IN_SHOW_HIDDEN |
81 |
STATE_IN_SHOW_HIDDEN, |
|
|
82 |
STATE_IN_EXPAND_FOLDERS |
| 80 |
} State; |
83 |
} State; |
| 81 |
|
84 |
|
| 82 |
struct parse_state { |
85 |
struct parse_state { |
|
Lines 270-275
parse_start_element_cb (GMarkupParseCont
Link Here
|
| 270 |
value_str); |
273 |
value_str); |
| 271 |
} |
274 |
} |
| 272 |
} |
275 |
} |
|
|
276 |
else if (EQ (element_name, ELEMENT_EXPAND_FOLDERS)) |
| 277 |
{ |
| 278 |
const char *value_str; |
| 279 |
|
| 280 |
state->state = STATE_IN_EXPAND_FOLDERS; |
| 281 |
|
| 282 |
value_str = get_attribute_value (attribute_names, attribute_values, ATTRIBUTE_VALUE); |
| 283 |
|
| 284 |
if (!value_str) |
| 285 |
set_missing_attribute_error (state, line, col, ATTRIBUTE_VALUE, error); |
| 286 |
else if (EQ (value_str, VALUE_TRUE)) |
| 287 |
state->settings->expand_folders = TRUE; |
| 288 |
else if (EQ (value_str, VALUE_FALSE)) |
| 289 |
state->settings->expand_folders = FALSE; |
| 290 |
else |
| 291 |
{ |
| 292 |
state->state = STATE_ERROR; |
| 293 |
g_set_error (error, |
| 294 |
G_MARKUP_ERROR, |
| 295 |
G_MARKUP_ERROR_INVALID_CONTENT, |
| 296 |
_("Line %d, column %d: expected \"%s\" or \"%s\", but found \"%s\" instead"), |
| 297 |
line, |
| 298 |
col, |
| 299 |
VALUE_FALSE, |
| 300 |
VALUE_TRUE, |
| 301 |
value_str); |
| 302 |
} |
| 303 |
} |
| 273 |
else |
304 |
else |
| 274 |
set_unexpected_element_error (state, line, col, element_name, error); |
305 |
set_unexpected_element_error (state, line, col, element_name, error); |
| 275 |
|
306 |
|
|
Lines 335-340
parse_end_element_cb (GMarkupParseContex
Link Here
|
| 335 |
|
366 |
|
| 336 |
break; |
367 |
break; |
| 337 |
|
368 |
|
|
|
369 |
case STATE_IN_EXPAND_FOLDERS: |
| 370 |
if (EQ (element_name, ELEMENT_EXPAND_FOLDERS)) |
| 371 |
state->state = STATE_IN_TOPLEVEL; |
| 372 |
else |
| 373 |
set_unexpected_element_end_error (state, line, col, ELEMENT_EXPAND_FOLDERS, element_name, error); |
| 374 |
|
| 375 |
break; |
| 376 |
|
| 338 |
default: |
377 |
default: |
| 339 |
g_assert_not_reached (); |
378 |
g_assert_not_reached (); |
| 340 |
} |
379 |
} |
|
Lines 455-465
_gtk_file_chooser_settings_set_show_hidd
Link Here
|
| 455 |
settings->show_hidden = show_hidden ? TRUE : FALSE; |
494 |
settings->show_hidden = show_hidden ? TRUE : FALSE; |
| 456 |
} |
495 |
} |
| 457 |
|
496 |
|
|
|
497 |
gboolean |
| 498 |
_gtk_file_chooser_settings_get_expand_folders (GtkFileChooserSettings *settings) |
| 499 |
{ |
| 500 |
ensure_settings_read (settings); |
| 501 |
return settings->expand_folders; |
| 502 |
} |
| 503 |
|
| 504 |
void |
| 505 |
_gtk_file_chooser_settings_set_expand_folders (GtkFileChooserSettings *settings, |
| 506 |
gboolean expand_folders) |
| 507 |
{ |
| 508 |
settings->expand_folders = expand_folders ? TRUE : FALSE; |
| 509 |
} |
| 510 |
|
| 458 |
static char * |
511 |
static char * |
| 459 |
settings_to_markup (GtkFileChooserSettings *settings) |
512 |
settings_to_markup (GtkFileChooserSettings *settings) |
| 460 |
{ |
513 |
{ |
| 461 |
const char *location_mode_str; |
514 |
const char *location_mode_str; |
| 462 |
const char *show_hidden_str; |
515 |
const char *show_hidden_str; |
|
|
516 |
const char *expand_folders_str; |
| 463 |
|
517 |
|
| 464 |
if (settings->location_mode == LOCATION_MODE_PATH_BAR) |
518 |
if (settings->location_mode == LOCATION_MODE_PATH_BAR) |
| 465 |
location_mode_str = MODE_PATH_BAR; |
519 |
location_mode_str = MODE_PATH_BAR; |
|
Lines 472-485
settings_to_markup (GtkFileChooserSettin
Link Here
|
| 472 |
} |
526 |
} |
| 473 |
|
527 |
|
| 474 |
show_hidden_str = settings->show_hidden ? VALUE_TRUE : VALUE_FALSE; |
528 |
show_hidden_str = settings->show_hidden ? VALUE_TRUE : VALUE_FALSE; |
|
|
529 |
expand_folders_str = settings->expand_folders ? VALUE_TRUE : VALUE_FALSE; |
| 475 |
|
530 |
|
| 476 |
return g_strdup_printf |
531 |
return g_strdup_printf |
| 477 |
("<" ELEMENT_TOPLEVEL ">\n" /* <gtkfilechooser> */ |
532 |
("<" ELEMENT_TOPLEVEL ">\n" /* <gtkfilechooser> */ |
| 478 |
" <" ELEMENT_LOCATION " " ATTRIBUTE_MODE "=\"%s\"/>\n" /* <location mode="path-bar"/> */ |
533 |
" <" ELEMENT_LOCATION " " ATTRIBUTE_MODE "=\"%s\"/>\n" /* <location mode="path-bar"/> */ |
| 479 |
" <" ELEMENT_SHOW_HIDDEN " " ATTRIBUTE_VALUE "=\"%s\"/>\n" /* <show_hidden value="false"/> */ |
534 |
" <" ELEMENT_SHOW_HIDDEN " " ATTRIBUTE_VALUE "=\"%s\"/>\n" /* <show_hidden value="false"/> */ |
|
|
535 |
" <" ELEMENT_EXPAND_FOLDERS " " ATTRIBUTE_VALUE "=\"%s\"/>\n" /* <expand_folders value="false"/> */ |
| 480 |
"</" ELEMENT_TOPLEVEL ">\n", /* </gtkfilechooser> */ |
536 |
"</" ELEMENT_TOPLEVEL ">\n", /* </gtkfilechooser> */ |
| 481 |
location_mode_str, |
537 |
location_mode_str, |
| 482 |
show_hidden_str); |
538 |
show_hidden_str, |
|
|
539 |
expand_folders_str); |
| 483 |
} |
540 |
} |
| 484 |
|
541 |
|
| 485 |
gboolean |
542 |
gboolean |