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);