From 4af768b6b42374767489585f4cb988f4be919ac4 Mon Sep 17 00:00:00 2001 From: Jason Uher Date: Wed, 20 Jun 2018 20:39:49 -0400 Subject: [PATCH 1/3] Added ability to set coverage color based on status --- src/config-keys.h | 3 + src/gtk-sat-map.c | 69 +++++++-- src/sat-cfg.c | 5 +- src/sat-cfg.h | 5 +- src/sat-pref-map-view.c | 325 +++++++++++++++++++++++++++++----------- 5 files changed, 310 insertions(+), 97 deletions(-) diff --git a/src/config-keys.h b/src/config-keys.h index 7647b82f..3564c0c7 100644 --- a/src/config-keys.h +++ b/src/config-keys.h @@ -100,6 +100,9 @@ #define MOD_CFG_MAP_SAT_COL "SAT_COLOUR" #define MOD_CFG_MAP_SAT_SEL_COL "SAT_SEL_COLOUR" #define MOD_CFG_MAP_SAT_COV_COL "COV_AREA_COLOUR" +#define MOD_CFG_MAP_SAT_COV_COL_FO "COV_AREA_COLOUR_FULLOP" +#define MOD_CFG_MAP_SAT_COV_COL_PO "COV_AREA_COLOUR_PARTOP" +#define MOD_CFG_MAP_SAT_COV_COL_NO "COV_AREA_COLOUR_NONOP" #define MOD_CFG_MAP_QTH_COL "QTH_COLOUR" #define MOD_CFG_MAP_INFO_COL "INFO_COLOUR" #define MOD_CFG_MAP_INFO_BGD_COL "INFO_BGD_COLOUR" diff --git a/src/gtk-sat-map.c b/src/gtk-sat-map.c index ea8d38b7..7f70d52c 100644 --- a/src/gtk-sat-map.c +++ b/src/gtk-sat-map.c @@ -1737,24 +1737,44 @@ static void plot_sat(gpointer key, gpointer value, gpointer data) MOD_CFG_MAP_SAT_COL, SAT_CFG_INT_MAP_SAT_COL); /* area coverage colour */ - covcol = mod_cfg_get_int(satmap->cfgdata, - MOD_CFG_MAP_SECTION, - MOD_CFG_MAP_SAT_COV_COL, - SAT_CFG_INT_MAP_SAT_COV_COL); - /* coverage color */ if (obj->showcov) { - covcol = mod_cfg_get_int(satmap->cfgdata, + switch(sat->tle.status) { + case OP_STAT_OPERATIONAL: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_FO, + SAT_CFG_INT_MAP_SAT_COV_COL_FO); + break; + case OP_STAT_PARTIAL: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_PO, + SAT_CFG_INT_MAP_SAT_COV_COL_PO); + break; + case OP_STAT_NONOP: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_NO, + SAT_CFG_INT_MAP_SAT_COV_COL_NO); + break; + case OP_STAT_UNKNOWN: __attribute__ ((fallthrough)); + case OP_STAT_STDBY: __attribute__ ((fallthrough)); + case OP_STAT_SPARE: __attribute__ ((fallthrough)); + case OP_STAT_EXTENDED: __attribute__ ((fallthrough)); + default: + covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, SAT_CFG_INT_MAP_SAT_COV_COL); + + } } else { covcol = 0x00000000; } - /* shadow colour (only alpha channel) */ shadowcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, @@ -2064,15 +2084,42 @@ static void update_sat(gpointer key, gpointer value, gpointer data) /* coverage color */ if (obj->showcov) { - covcol = mod_cfg_get_int(satmap->cfgdata, - MOD_CFG_MAP_SECTION, - MOD_CFG_MAP_SAT_COV_COL, - SAT_CFG_INT_MAP_SAT_COV_COL); + switch(sat->tle.status) { + case OP_STAT_OPERATIONAL: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_FO, + SAT_CFG_INT_MAP_SAT_COV_COL_FO); + break; + case OP_STAT_PARTIAL: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_PO, + SAT_CFG_INT_MAP_SAT_COV_COL_PO); + break; + case OP_STAT_NONOP: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_NO, + SAT_CFG_INT_MAP_SAT_COV_COL_NO); + break; + case OP_STAT_UNKNOWN: __attribute__ ((fallthrough)); + case OP_STAT_STDBY: __attribute__ ((fallthrough)); + case OP_STAT_SPARE: __attribute__ ((fallthrough)); + case OP_STAT_EXTENDED: __attribute__ ((fallthrough)); + default: + covcol = mod_cfg_get_int(satmap->cfgdata, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL, + SAT_CFG_INT_MAP_SAT_COV_COL); + + } } else { covcol = 0x00000000; } + obj->range2 = goo_canvas_polyline_model_new(root, FALSE, 0, "points", points2, "line-width", 1.0, diff --git a/src/sat-cfg.c b/src/sat-cfg.c index f86b7478..d1376748 100644 --- a/src/sat-cfg.c +++ b/src/sat-cfg.c @@ -155,7 +155,10 @@ sat_cfg_int_t sat_cfg_int[SAT_CFG_INT_NUM] = { {"MODULES", "MAP_QTH_COLOUR", 0x00FFFFFF}, {"MODULES", "MAP_SAT_COLOUR", 0xF0F000FF}, {"MODULES", "MAP_SELECTED_SAT_COLOUR", 0xFFFFFFFF}, - {"MODULES", "MAP_COV_AREA_COLOUR", 0xFFFFFF1F}, + {"MODULES", "MAP_COV_AREA_COLOUR_DEFAULT", 0xFFFFFF1F}, + {"MODULES", "MAP_COV_AREA_COLOUR_OPERATIONAL", 0xFFFFFF1F}, + {"MODULES", "MAP_COV_AREA_COLOUR_PARTOPERATIONAL", 0xFFFFFF1F}, + {"MODULES", "MAP_COV_AREA_COLOUR_NONOPERATIONAL", 0xFFFFFF1F}, {"MODULES", "MAP_GRID_COLOUR", 0x7F7F7FC8}, {"MODULES", "MAP_TERMINATOR_COLOUR", 0xFFFF0080}, {"MODULES", "MAP_EARTH_SHADOW_COLOUR", 0x00000060}, diff --git a/src/sat-cfg.h b/src/sat-cfg.h index 446e19fa..21714a98 100644 --- a/src/sat-cfg.h +++ b/src/sat-cfg.h @@ -76,7 +76,10 @@ typedef enum { SAT_CFG_INT_MAP_QTH_COL, /*!< QTH mark colour on map. */ SAT_CFG_INT_MAP_SAT_COL, /*!< Satellite colour on maps */ SAT_CFG_INT_MAP_SAT_SEL_COL, /*!< Selected satellite colour */ - SAT_CFG_INT_MAP_SAT_COV_COL, /*!< Map coverage area colour */ + SAT_CFG_INT_MAP_SAT_COV_COL, /*!< Map coverage area colour (default)*/ + SAT_CFG_INT_MAP_SAT_COV_COL_FO, /*!< Map coverage area colour (fully oper) */ + SAT_CFG_INT_MAP_SAT_COV_COL_PO, /*!< Map coverage area colour (part oper) */ + SAT_CFG_INT_MAP_SAT_COV_COL_NO, /*!< Map coverage area colour (non oper) */ SAT_CFG_INT_MAP_GRID_COL, /*!< Grid colour. */ SAT_CFG_INT_MAP_TERMINATOR_COL, /*!< Solar terminator colour. */ SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL, /*!< Earth shadow colour. */ diff --git a/src/sat-pref-map-view.c b/src/sat-pref-map-view.c index c107a326..290676ae 100644 --- a/src/sat-pref-map-view.c +++ b/src/sat-pref-map-view.c @@ -42,6 +42,7 @@ static GtkWidget *qth, *next, *curs, *grid; static GtkWidget *qthc, *gridc, *tickc; static GtkWidget *satc, *ssatc, *trackc; static GtkWidget *covc, *infofg, *infobg; +static GtkWidget *covc_fo, *covc_po, *covc_no; static GtkWidget *terminator, *globe_shadow; static GtkWidget *shadow; @@ -227,6 +228,18 @@ static void reset_cb(GtkWidget * button, gpointer cfg) rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); + + rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL_FO); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_fo), &gdk_rgba); + + rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL_PO); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_po), &gdk_rgba); + + rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL_NO); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_no), &gdk_rgba); rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_INFO_COL); rgba_from_cfg(rgba, &gdk_rgba); @@ -244,7 +257,7 @@ static void reset_cb(GtkWidget * button, gpointer cfg) rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); - /* shadow */ + /* shadow alpha */ gtk_range_set_value(GTK_RANGE(shadow), sat_cfg_get_int_def(SAT_CFG_INT_MAP_SHADOW_ALPHA)); @@ -309,6 +322,18 @@ static void reset_cb(GtkWidget * button, gpointer cfg) rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); + rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL_FO); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_fo), &gdk_rgba); + + rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL_PO); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_po), &gdk_rgba); + + rgba = sat_cfg_get_int_def(SAT_CFG_INT_MAP_SAT_COV_COL_NO); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_no), &gdk_rgba); + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_INFO_COL); rgba_from_cfg(rgba, &gdk_rgba); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); @@ -425,6 +450,21 @@ void sat_pref_map_view_ok(GKeyFile * cfg) rgba = rgba_to_cfg(&gdk_rgba); g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_SAT_COV_COL, rgba); + + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(covc_fo), &gdk_rgba); + rgba = rgba_to_cfg(&gdk_rgba); + g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_FO, rgba); + + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(covc_po), &gdk_rgba); + rgba = rgba_to_cfg(&gdk_rgba); + g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_PO, rgba); + + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(covc_no), &gdk_rgba); + rgba = rgba_to_cfg(&gdk_rgba); + g_key_file_set_integer(cfg, MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_NO, rgba); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(infofg), &gdk_rgba); rgba = rgba_to_cfg(&gdk_rgba); @@ -630,6 +670,9 @@ void sat_pref_map_view_ok(GKeyFile * cfg) sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_SEL_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_TRACK_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_COV_COL); + sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_COV_COL_FO); + sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_COV_COL_PO); + sat_cfg_reset_int(SAT_CFG_INT_MAP_SAT_COV_COL_NO); sat_cfg_reset_int(SAT_CFG_INT_MAP_INFO_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_INFO_BGD_COL); sat_cfg_reset_int(SAT_CFG_INT_MAP_SHADOW_ALPHA); @@ -885,13 +928,13 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) GdkRGBA gdk_rgba; guint rgba; /* RRGGBBAA encoded colour */ - /* create header */ + /* create header for Map Colours*/ label = gtk_label_new(NULL); g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); - gtk_label_set_markup(GTK_LABEL(label), _("Colours:")); + gtk_label_set_markup(GTK_LABEL(label), _("Map Colours:")); gtk_box_pack_start(vbox, label, FALSE, TRUE, 5); - /* container */ + /* container for Map Colours */ table = gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); @@ -899,7 +942,7 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) gtk_grid_set_column_spacing(GTK_GRID(table), 10); gtk_box_pack_start(vbox, table, FALSE, TRUE, 0); - /* background */ + /* ground station */ label = gtk_label_new(_("Ground Station:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); @@ -965,13 +1008,76 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(tickc), &gdk_rgba); g_signal_connect(tickc, "color-set", G_CALLBACK(colour_changed), NULL); + /* Solar terminator */ + label = gtk_label_new(_("Solar terminator:")); + g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); + gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); + terminator = gtk_color_button_new(); + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(terminator), TRUE); + gtk_grid_attach(GTK_GRID(table), terminator, 1, 1, 1, 1); + gtk_widget_set_tooltip_text(terminator, + _("Select solar terminator colour")); + if (cfg != NULL) + { + rgba = mod_cfg_get_int(cfg, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_TERMINATOR_COL, + SAT_CFG_INT_MAP_TERMINATOR_COL); + } + else + { + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TERMINATOR_COL); + } + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); + g_signal_connect(terminator, "color-set", G_CALLBACK(colour_changed), + NULL); + + /* Earth shadow */ + label = gtk_label_new(_("Global shadow:")); + g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); + gtk_grid_attach(GTK_GRID(table), label, 2, 1, 1, 1); + globe_shadow = gtk_color_button_new(); + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(globe_shadow), TRUE); + gtk_grid_attach(GTK_GRID(table), globe_shadow, 3, 1, 1, 1); + gtk_widget_set_tooltip_text(globe_shadow, _("Select Earth shadow colour")); + if (cfg != NULL) + { + rgba = mod_cfg_get_int(cfg, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_GLOBAL_SHADOW_COL, + SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); + } + else + { + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); + } + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); + g_signal_connect(globe_shadow, "color-set", G_CALLBACK(colour_changed), + NULL); + + /* create header for satellite colours*/ + label = gtk_label_new(NULL); + g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); + gtk_label_set_markup(GTK_LABEL(label), _("Satellite Colours:")); + gtk_box_pack_start(vbox, label, FALSE, TRUE, 5); + + /* container for satellite colours*/ + table = gtk_grid_new(); + gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); + gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); + gtk_grid_set_row_spacing(GTK_GRID(table), 3); + gtk_grid_set_column_spacing(GTK_GRID(table), 10); + gtk_box_pack_start(vbox, table, FALSE, TRUE, 0); + /* satellite */ label = gtk_label_new(_("Satellite:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); + gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); satc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(satc), TRUE); - gtk_grid_attach(GTK_GRID(table), satc, 1, 1, 1, 1); + gtk_grid_attach(GTK_GRID(table), satc, 1, 0, 1, 1); gtk_widget_set_tooltip_text(satc, _("Select the satellite colour")); if (cfg != NULL) { @@ -990,10 +1096,10 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) /* selected satellite */ label = gtk_label_new(_("Selected Sat.:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 2, 1, 1, 1); + gtk_grid_attach(GTK_GRID(table), label, 2, 0, 1, 1); ssatc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(ssatc), TRUE); - gtk_grid_attach(GTK_GRID(table), ssatc, 3, 1, 1, 1); + gtk_grid_attach(GTK_GRID(table), ssatc, 3, 0, 1, 1); gtk_widget_set_tooltip_text(ssatc, _("Select colour for selected satellites")); if (cfg != NULL) @@ -1011,13 +1117,13 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(ssatc), &gdk_rgba); g_signal_connect(ssatc, "color-set", G_CALLBACK(colour_changed), NULL); - /* tack */ + /* ground track */ label = gtk_label_new(_("Ground Track:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 4, 1, 1, 1); + gtk_grid_attach(GTK_GRID(table), label, 4, 0, 1, 1); trackc = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(trackc), TRUE); - gtk_grid_attach(GTK_GRID(table), trackc, 5, 1, 1, 1); + gtk_grid_attach(GTK_GRID(table), trackc, 5, 0, 1, 1); gtk_widget_set_tooltip_text(trackc, _("Select ground track colour")); if (cfg != NULL) { @@ -1034,38 +1140,51 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(trackc), &gdk_rgba); g_signal_connect(trackc, "color-set", G_CALLBACK(colour_changed), NULL); - /* coverage */ - label = gtk_label_new(_("Area Coverage:")); + /* Satellite Shadow */ + label = gtk_label_new(_("Satellite Shadow:")); + g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); + gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); + label = gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(label), _("Transp.")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); - covc = gtk_color_button_new(); - gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(covc), TRUE); - gtk_grid_attach(GTK_GRID(table), covc, 1, 2, 1, 1); - gtk_widget_set_tooltip_text(covc, - _("Select colour for coverage area.\n" - "Hint: Make it transparent")); + label = gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(label), _("Opaque")); + g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); + gtk_grid_attach(GTK_GRID(table), label, 5, 2, 1, 1); + + shadow = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 255, 1); + gtk_scale_set_draw_value(GTK_SCALE(shadow), FALSE); if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, - MOD_CFG_MAP_SAT_COV_COL, - SAT_CFG_INT_MAP_SAT_COV_COL); + MOD_CFG_MAP_SHADOW_ALPHA, + SAT_CFG_INT_MAP_SHADOW_ALPHA); } else { - rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL); + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SHADOW_ALPHA); } - rgba_from_cfg(rgba, &gdk_rgba); - gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); - g_signal_connect(covc, "color-set", G_CALLBACK(colour_changed), NULL); + gtk_range_set_value(GTK_RANGE(shadow), rgba); + gtk_widget_set_tooltip_text(shadow, + _("Shadow transparency under the satellite " + "marker.\n\n" + "The shadow improves the visibility " + "of the satellites where the colour of the " + "background is light, e.g. the South Pole. " + "Fully transparent is the same as no shadow.")); + gtk_grid_attach(GTK_GRID(table), shadow, 1, 2, 4, 1); + g_signal_connect(shadow, "value-changed", G_CALLBACK(shadow_changed), + NULL); /* Info foreground */ label = gtk_label_new(_("Info Text FG:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 2, 2, 1, 1); + gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); infofg = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(infofg), TRUE); - gtk_grid_attach(GTK_GRID(table), infofg, 3, 2, 1, 1); + gtk_grid_attach(GTK_GRID(table), infofg, 1, 4, 1, 1); gtk_widget_set_tooltip_text(infofg, _("Select info text foreground colour")); if (cfg != NULL) @@ -1086,10 +1205,10 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) /* Info background */ label = gtk_label_new(_("Info Text BG:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 4, 2, 1, 1); + gtk_grid_attach(GTK_GRID(table), label, 2, 4, 1, 1); infobg = gtk_color_button_new(); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(infobg), TRUE); - gtk_grid_attach(GTK_GRID(table), infobg, 5, 2, 1, 1); + gtk_grid_attach(GTK_GRID(table), infobg, 3, 4, 1, 1); gtk_widget_set_tooltip_text(infobg, _("Select info text background colour")); if (cfg != NULL) @@ -1107,91 +1226,129 @@ static void create_colour_selectors(GKeyFile * cfg, GtkBox * vbox) gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(infobg), &gdk_rgba); g_signal_connect(infobg, "color-set", G_CALLBACK(colour_changed), NULL); - /* Solar terminator */ - label = gtk_label_new(_("Solar terminator:")); + /* create header for coverage colours*/ + label = gtk_label_new(NULL); + g_object_set(label, "xalign", 0.0f, "yalign", 0.5f, NULL); + gtk_label_set_markup(GTK_LABEL(label), _("Coverage Colours:")); + gtk_box_pack_start(vbox, label, FALSE, TRUE, 5); + + /* container for satellite colours*/ + table = gtk_grid_new(); + gtk_grid_set_row_homogeneous(GTK_GRID(table), TRUE); + gtk_grid_set_column_homogeneous(GTK_GRID(table), FALSE); + gtk_grid_set_row_spacing(GTK_GRID(table), 3); + gtk_grid_set_column_spacing(GTK_GRID(table), 10); + gtk_box_pack_start(vbox, table, FALSE, TRUE, 0); + + /* Default coverage */ + label = gtk_label_new(_("Default:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 0, 3, 1, 1); - terminator = gtk_color_button_new(); - gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(terminator), TRUE); - gtk_grid_attach(GTK_GRID(table), terminator, 1, 3, 1, 1); - gtk_widget_set_tooltip_text(terminator, - _("Select solar terminator colour")); + gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); + covc = gtk_color_button_new(); + gtk_grid_attach(GTK_GRID(table), covc, 1, 0, 1, 1); + gtk_widget_set_tooltip_text(covc, + _("Select colour for coverage area.\n" + "Hint: Make it transparent")); + + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(covc), TRUE); + if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, - MOD_CFG_MAP_TERMINATOR_COL, - SAT_CFG_INT_MAP_TERMINATOR_COL); + MOD_CFG_MAP_SAT_COV_COL, + SAT_CFG_INT_MAP_SAT_COV_COL); } else { - rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_TERMINATOR_COL); + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL); } rgba_from_cfg(rgba, &gdk_rgba); - gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(terminator), &gdk_rgba); - g_signal_connect(terminator, "color-set", G_CALLBACK(colour_changed), - NULL); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc), &gdk_rgba); + g_signal_connect(covc, "color-set", G_CALLBACK(colour_changed), NULL); - /* Earth shadow */ - label = gtk_label_new(_("Global shadow:")); + /* Fully Operational Coverage */ + label = gtk_label_new(_("Fully Operational:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 2, 3, 1, 1); - globe_shadow = gtk_color_button_new(); - gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(globe_shadow), TRUE); - gtk_grid_attach(GTK_GRID(table), globe_shadow, 3, 3, 1, 1); - gtk_widget_set_tooltip_text(globe_shadow, _("Select Earth shadow colour")); + gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); + covc_fo = gtk_color_button_new(); + gtk_grid_attach(GTK_GRID(table), covc_fo, 1, 1, 1, 1); + gtk_widget_set_tooltip_text(covc_fo, + _("Select colour for coverage area.\n" + "Hint: Make it transparent")); + + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(covc_fo), TRUE); + if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, - MOD_CFG_MAP_GLOBAL_SHADOW_COL, - SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); + MOD_CFG_MAP_SAT_COV_COL_FO, + SAT_CFG_INT_MAP_SAT_COV_COL_FO); } else { - rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_GLOBAL_SHADOW_COL); + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL_FO); } rgba_from_cfg(rgba, &gdk_rgba); - gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(globe_shadow), &gdk_rgba); - g_signal_connect(globe_shadow, "color-set", G_CALLBACK(colour_changed), - NULL); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_fo), &gdk_rgba); + g_signal_connect(covc_fo, "color-set", G_CALLBACK(colour_changed), NULL); - /* Shadow */ - label = gtk_label_new(_("Shadow:")); - g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 0, 4, 1, 1); - label = gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(label), _("Transp.")); + /* Partially Operational Coverage */ + label = gtk_label_new(_("Partially Operational:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 1, 4, 1, 1); - label = gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(label), _("Opaque")); + gtk_grid_attach(GTK_GRID(table), label, 2, 1, 1, 1); + covc_po = gtk_color_button_new(); + gtk_grid_attach(GTK_GRID(table), covc_po, 3, 1, 1, 1); + gtk_widget_set_tooltip_text(covc_po, + _("Select colour for coverage area.\n" + "Hint: Make it transparent")); + + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(covc_po), TRUE); + + if (cfg != NULL) + { + rgba = mod_cfg_get_int(cfg, + MOD_CFG_MAP_SECTION, + MOD_CFG_MAP_SAT_COV_COL_PO, + SAT_CFG_INT_MAP_SAT_COV_COL_PO); + } + else + { + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL_PO); + } + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_po), &gdk_rgba); + g_signal_connect(covc_po, "color-set", G_CALLBACK(colour_changed), NULL); + + /* Non Operational Coverage */ + label = gtk_label_new(_("Non-Operational:")); g_object_set(label, "xalign", 1.0f, "yalign", 0.5f, NULL); - gtk_grid_attach(GTK_GRID(table), label, 5, 4, 1, 1); - shadow = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 255, 1); - gtk_scale_set_draw_value(GTK_SCALE(shadow), FALSE); + gtk_grid_attach(GTK_GRID(table), label, 4, 1, 1, 1); + covc_no = gtk_color_button_new(); + gtk_grid_attach(GTK_GRID(table), covc_no, 5, 1, 1, 1); + gtk_widget_set_tooltip_text(covc_no, + _("Select colour for coverage area.\n" + "Hint: Make it transparent")); + + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(covc_no), TRUE); + if (cfg != NULL) { rgba = mod_cfg_get_int(cfg, MOD_CFG_MAP_SECTION, - MOD_CFG_MAP_SHADOW_ALPHA, - SAT_CFG_INT_MAP_SHADOW_ALPHA); + MOD_CFG_MAP_SAT_COV_COL_NO, + SAT_CFG_INT_MAP_SAT_COV_COL_NO); } else { - rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SHADOW_ALPHA); + rgba = sat_cfg_get_int(SAT_CFG_INT_MAP_SAT_COV_COL_NO); } - gtk_range_set_value(GTK_RANGE(shadow), rgba); - gtk_widget_set_tooltip_text(shadow, - _("Shadow transparency under the satellite " - "marker.\n\n" - "The shadow improves the visibility " - "of the satellites where the colour of the " - "background is light, e.g. the South Pole. " - "Fully transparent is the same as no shadow.")); - gtk_grid_attach(GTK_GRID(table), shadow, 2, 4, 3, 1); - g_signal_connect(shadow, "value-changed", G_CALLBACK(shadow_changed), - NULL); + rgba_from_cfg(rgba, &gdk_rgba); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(covc_no), &gdk_rgba); + g_signal_connect(covc_no, "color-set", G_CALLBACK(colour_changed), NULL); + + } /** @@ -1373,4 +1530,4 @@ GtkWidget *sat_pref_map_view_create(GKeyFile * cfg) gtk_container_add(GTK_CONTAINER(swin), vbox); return swin; -} +} \ No newline at end of file From 09d721b03dcd0d8a4f61c837ab2b0fba883769ae Mon Sep 17 00:00:00 2001 From: Jason Uher Date: Wed, 20 Jun 2018 22:14:44 -0400 Subject: [PATCH 2/3] Removing explicit fallthroughs for github jenkins --- src/gtk-sat-map.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gtk-sat-map.c b/src/gtk-sat-map.c index 7f70d52c..dff2548e 100644 --- a/src/gtk-sat-map.c +++ b/src/gtk-sat-map.c @@ -1758,10 +1758,10 @@ static void plot_sat(gpointer key, gpointer value, gpointer data) MOD_CFG_MAP_SAT_COV_COL_NO, SAT_CFG_INT_MAP_SAT_COV_COL_NO); break; - case OP_STAT_UNKNOWN: __attribute__ ((fallthrough)); - case OP_STAT_STDBY: __attribute__ ((fallthrough)); - case OP_STAT_SPARE: __attribute__ ((fallthrough)); - case OP_STAT_EXTENDED: __attribute__ ((fallthrough)); + case OP_STAT_UNKNOWN: + case OP_STAT_STDBY: + case OP_STAT_SPARE: + case OP_STAT_EXTENDED: default: covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION, From 2422bf0f22cbd4b0df2d7aa49c1af5b7b3407b06 Mon Sep 17 00:00:00 2001 From: Jason Uher Date: Wed, 20 Jun 2018 22:19:28 -0400 Subject: [PATCH 3/3] forgot the code was in two places! (and my compiler doesn't complain) --- src/gtk-sat-map.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gtk-sat-map.c b/src/gtk-sat-map.c index dff2548e..33a9187d 100644 --- a/src/gtk-sat-map.c +++ b/src/gtk-sat-map.c @@ -2103,10 +2103,10 @@ static void update_sat(gpointer key, gpointer value, gpointer data) MOD_CFG_MAP_SAT_COV_COL_NO, SAT_CFG_INT_MAP_SAT_COV_COL_NO); break; - case OP_STAT_UNKNOWN: __attribute__ ((fallthrough)); - case OP_STAT_STDBY: __attribute__ ((fallthrough)); - case OP_STAT_SPARE: __attribute__ ((fallthrough)); - case OP_STAT_EXTENDED: __attribute__ ((fallthrough)); + case OP_STAT_UNKNOWN: + case OP_STAT_STDBY: + case OP_STAT_SPARE: + case OP_STAT_EXTENDED: default: covcol = mod_cfg_get_int(satmap->cfgdata, MOD_CFG_MAP_SECTION,