Mercurial > geeqie
comparison src/rcfile.c @ 1469:607c60506863
added a possibility to update existing bars from config
author | nadvornik |
---|---|
date | Fri, 20 Mar 2009 21:28:31 +0000 |
parents | 6e020d3ab168 |
children | 9c16a93a0fdf |
comparison
equal
deleted
inserted
replaced
1468:e9f9d3da3f43 | 1469:607c60506863 |
---|---|
917 static void options_parse_bar(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error) | 917 static void options_parse_bar(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error) |
918 { | 918 { |
919 GtkWidget *bar = data; | 919 GtkWidget *bar = data; |
920 if (g_ascii_strcasecmp(element_name, "pane_comment") == 0) | 920 if (g_ascii_strcasecmp(element_name, "pane_comment") == 0) |
921 { | 921 { |
922 GtkWidget *pane = bar_pane_comment_new_from_config(attribute_names, attribute_values); | 922 GtkWidget *pane = bar_find_pane_by_id(bar, PANE_COMMENT, options_get_id(attribute_names, attribute_values)); |
923 bar_add(bar, pane); | 923 if (pane) |
924 { | |
925 bar_pane_comment_update_from_config(pane, attribute_names, attribute_values); | |
926 } | |
927 else | |
928 { | |
929 pane = bar_pane_comment_new_from_config(attribute_names, attribute_values); | |
930 bar_add(bar, pane); | |
931 } | |
924 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | 932 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); |
925 } | 933 } |
926 else if (g_ascii_strcasecmp(element_name, "pane_exif") == 0) | 934 else if (g_ascii_strcasecmp(element_name, "pane_exif") == 0) |
927 { | 935 { |
928 GtkWidget *pane = bar_pane_exif_new_from_config(attribute_names, attribute_values); | 936 GtkWidget *pane = bar_find_pane_by_id(bar, PANE_EXIF, options_get_id(attribute_names, attribute_values)); |
929 bar_add(bar, pane); | 937 if (pane) |
938 { | |
939 bar_pane_exif_update_from_config(pane, attribute_names, attribute_values); | |
940 } | |
941 else | |
942 { | |
943 pane = bar_pane_exif_new_from_config(attribute_names, attribute_values); | |
944 bar_add(bar, pane); | |
945 } | |
930 options_parse_func_push(parser_data, options_parse_pane_exif, NULL, pane); | 946 options_parse_func_push(parser_data, options_parse_pane_exif, NULL, pane); |
931 } | 947 } |
932 else if (g_ascii_strcasecmp(element_name, "pane_histogram") == 0) | 948 else if (g_ascii_strcasecmp(element_name, "pane_histogram") == 0) |
933 { | 949 { |
934 GtkWidget *pane = bar_pane_histogram_new_from_config(attribute_names, attribute_values); | 950 GtkWidget *pane = bar_find_pane_by_id(bar, PANE_HISTOGRAM, options_get_id(attribute_names, attribute_values)); |
935 bar_add(bar, pane); | 951 if (pane) |
952 { | |
953 bar_pane_histogram_update_from_config(pane, attribute_names, attribute_values); | |
954 } | |
955 else | |
956 { | |
957 pane = bar_pane_histogram_new_from_config(attribute_names, attribute_values); | |
958 bar_add(bar, pane); | |
959 } | |
936 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | 960 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); |
937 } | 961 } |
938 else if (g_ascii_strcasecmp(element_name, "pane_keywords") == 0) | 962 else if (g_ascii_strcasecmp(element_name, "pane_keywords") == 0) |
939 { | 963 { |
940 GtkWidget *pane = bar_pane_keywords_new_from_config(attribute_names, attribute_values); | 964 GtkWidget *pane = bar_find_pane_by_id(bar, PANE_KEYWORDS, options_get_id(attribute_names, attribute_values)); |
941 bar_add(bar, pane); | 965 if (pane) |
966 { | |
967 bar_pane_keywords_update_from_config(pane, attribute_names, attribute_values); | |
968 } | |
969 else | |
970 { | |
971 pane = bar_pane_keywords_new_from_config(attribute_names, attribute_values); | |
972 bar_add(bar, pane); | |
973 } | |
974 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | |
975 } | |
976 else if (g_ascii_strcasecmp(element_name, "clear") == 0) | |
977 { | |
978 bar_clear(bar); | |
942 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | 979 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); |
943 } | 980 } |
944 else | 981 else |
945 { | 982 { |
946 log_printf("unexpected in <bar>: <%s>\n", element_name); | 983 log_printf("unexpected in <bar>: <%s>\n", element_name); |
954 if (g_ascii_strcasecmp(element_name, "toolitem") == 0) | 991 if (g_ascii_strcasecmp(element_name, "toolitem") == 0) |
955 { | 992 { |
956 layout_toolbar_add_from_config(lw, attribute_names, attribute_values); | 993 layout_toolbar_add_from_config(lw, attribute_names, attribute_values); |
957 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | 994 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); |
958 } | 995 } |
996 else if (g_ascii_strcasecmp(element_name, "clear") == 0) | |
997 { | |
998 layout_toolbar_clear(lw); | |
999 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | |
1000 } | |
959 else | 1001 else |
960 { | 1002 { |
961 log_printf("unexpected in <toolbar>: <%s>\n", element_name); | 1003 log_printf("unexpected in <toolbar>: <%s>\n", element_name); |
962 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | 1004 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); |
963 } | 1005 } |
966 static void options_parse_layout(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error) | 1008 static void options_parse_layout(GQParserData *parser_data, GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error) |
967 { | 1009 { |
968 LayoutWindow *lw = data; | 1010 LayoutWindow *lw = data; |
969 if (g_ascii_strcasecmp(element_name, "bar") == 0) | 1011 if (g_ascii_strcasecmp(element_name, "bar") == 0) |
970 { | 1012 { |
971 GtkWidget *bar = bar_new_from_config(lw, attribute_names, attribute_values); | 1013 if (!lw->bar) |
972 layout_bar_set(lw, bar); | 1014 { |
1015 GtkWidget *bar = bar_new_from_config(lw, attribute_names, attribute_values); | |
1016 layout_bar_set(lw, bar); | |
1017 } | |
1018 else | |
1019 { | |
1020 bar_update_from_config(lw->bar, attribute_names, attribute_values); | |
1021 } | |
1022 | |
973 options_parse_func_push(parser_data, options_parse_bar, NULL, lw->bar); | 1023 options_parse_func_push(parser_data, options_parse_bar, NULL, lw->bar); |
974 } | 1024 } |
975 else if (g_ascii_strcasecmp(element_name, "bar_sort") == 0) | 1025 else if (g_ascii_strcasecmp(element_name, "bar_sort") == 0) |
976 { | 1026 { |
977 GtkWidget *bar = bar_sort_new_from_config(lw, attribute_names, attribute_values); | 1027 GtkWidget *bar = bar_sort_new_from_config(lw, attribute_names, attribute_values); |
978 layout_bar_sort_set(lw, bar); | 1028 layout_bar_sort_set(lw, bar); |
979 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); | 1029 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL); |
980 } | 1030 } |
981 else if (g_ascii_strcasecmp(element_name, "toolbar") == 0) | 1031 else if (g_ascii_strcasecmp(element_name, "toolbar") == 0) |
982 { | 1032 { |
983 layout_toolbar_clear(lw); | |
984 options_parse_func_push(parser_data, options_parse_toolbar, NULL, lw); | 1033 options_parse_func_push(parser_data, options_parse_toolbar, NULL, lw); |
985 } | 1034 } |
986 else | 1035 else |
987 { | 1036 { |
988 log_printf("unexpected in <layout>: <%s>\n", element_name); | 1037 log_printf("unexpected in <layout>: <%s>\n", element_name); |