/** \brief Create and initialise widgets for the single pass cfg tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be laoded. */ GtkWidget *sat_pref_single_pass_create () { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; guint i; /* create the table */ table = gtk_table_new ((SINGLE_PASS_COL_NUMBER+1)/COLUMNS + 1, COLUMNS, TRUE); gtk_container_set_border_width (GTK_CONTAINER (table), 20); gtk_table_set_row_spacings (GTK_TABLE (table), 10); gtk_table_set_col_spacings (GTK_TABLE (table), 5); /* create header */ label = gtk_label_new (NULL); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_label_set_markup (GTK_LABEL (label), _("<b>Visible Columns:</b>")); gtk_table_attach (GTK_TABLE (table), label, 0, 2, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0); /* get visible column flags */ flags = sat_cfg_get_int (SAT_CFG_INT_PRED_SINGLE_COL); for (i = 0; i < SINGLE_PASS_COL_NUMBER; i++) { check[i] = gtk_check_button_new_with_label (SINGLE_PASS_COL_HINT[i]); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check[i]), flags & (1 << i)); gtk_table_attach (GTK_TABLE (table), check[i], i % COLUMNS, (i % COLUMNS) + 1, Y0 + i / COLUMNS, Y0 + i / COLUMNS + 1, GTK_FILL, GTK_SHRINK, 0, 0); g_signal_connect (check[i], "toggled", G_CALLBACK (toggle_cb), GUINT_TO_POINTER (i)); } /* create vertical box */ vbox = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 20); gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button (GTK_BOX (vbox)); startflags = flags; dirty = FALSE; reset = FALSE; return vbox; }
/** \brief Create and initialise widgets for the layout view preferences tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be laoded. */ GtkWidget *sat_pref_layout_create (GKeyFile *cfg) { GtkWidget *table; GtkWidget *vbox; /* create the table */ table = gtk_table_new (8, 5, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 10); gtk_table_set_col_spacings (GTK_TABLE (table), 5); /* layout selector */ create_layout_selector (cfg, GTK_TABLE (table)); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 5, 3, 4, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* create vertical box */ vbox = gtk_vbox_new (FALSE, 5); gtk_container_set_border_width (GTK_CONTAINER (vbox), 20); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0); /* window placement */ if (cfg == NULL) { create_window_placement (GTK_BOX (vbox)); } /* create RESET button */ create_reset_button (cfg, GTK_BOX (vbox)); /* reset flags */ dirty = FALSE; reset = FALSE; return vbox;; }
/** \brief Create and initialise widgets for the refresh rates tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be laoded. */ GtkWidget *sat_pref_refresh_create (GKeyFile *cfg) { GtkWidget *table; GtkWidget *vbox; GtkWidget *label; gint val; dirty = FALSE; reset = FALSE; /* create table */ table = gtk_table_new (6, 3, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 10); gtk_table_set_col_spacings (GTK_TABLE (table), 5); /* data refresh */ label = gtk_label_new (_("Refresh data every")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0); dataspin = gtk_spin_button_new_with_range (100, 10000, 1); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (dataspin), 1, 100); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dataspin), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (dataspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int (cfg, MOD_CFG_GLOBAL_SECTION, MOD_CFG_TIMEOUT_KEY, SAT_CFG_INT_MODULE_TIMEOUT); } else { val = sat_cfg_get_int (SAT_CFG_INT_MODULE_TIMEOUT); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (dataspin), val); g_signal_connect (G_OBJECT (dataspin), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), dataspin, 1, 2, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[msec]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 3, 1, 2, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* List View */ label = gtk_label_new (_("Refresh list view every")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_SHRINK, 0, 0); listspin = gtk_spin_button_new_with_range (1, 50, 1); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (listspin), 1, 5); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (listspin), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (listspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int (cfg, MOD_CFG_LIST_SECTION, MOD_CFG_LIST_REFRESH, SAT_CFG_INT_LIST_REFRESH); } else { val = sat_cfg_get_int (SAT_CFG_INT_LIST_REFRESH); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (listspin), val); g_signal_connect (G_OBJECT (listspin), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), listspin, 1, 2, 2, 3, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[cycle]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 2, 3, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* Map View */ label = gtk_label_new (_("Refresh map view every")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, GTK_FILL, GTK_SHRINK, 0, 0); mapspin = gtk_spin_button_new_with_range (1, 50, 1); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (mapspin), 1, 5); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (mapspin), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (mapspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int (cfg, MOD_CFG_MAP_SECTION, MOD_CFG_MAP_REFRESH, SAT_CFG_INT_MAP_REFRESH); } else { val = sat_cfg_get_int (SAT_CFG_INT_MAP_REFRESH); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (mapspin), val); g_signal_connect (G_OBJECT (mapspin), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), mapspin, 1, 2, 3, 4, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[cycle]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 3, 4, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* Polar View */ label = gtk_label_new (_("Refresh polar view every")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 4, 5, GTK_FILL, GTK_SHRINK, 0, 0); polarspin = gtk_spin_button_new_with_range (1, 50, 1); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (polarspin), 1, 5); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (polarspin), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (polarspin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int (cfg, MOD_CFG_POLAR_SECTION, MOD_CFG_POLAR_REFRESH, SAT_CFG_INT_POLAR_REFRESH); } else { val = sat_cfg_get_int (SAT_CFG_INT_POLAR_REFRESH); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (polarspin), val); g_signal_connect (G_OBJECT (polarspin), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), polarspin, 1, 2, 4, 5, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[cycle]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 4, 5, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* Single-Sat View */ label = gtk_label_new (_("Refresh single-sat view every")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 5, 6, GTK_FILL, GTK_SHRINK, 0, 0); singlespin = gtk_spin_button_new_with_range (1, 50, 1); gtk_spin_button_set_increments (GTK_SPIN_BUTTON (singlespin), 1, 5); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (singlespin), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (singlespin), GTK_UPDATE_IF_VALID); if (cfg != NULL) { val = mod_cfg_get_int (cfg, MOD_CFG_SINGLE_SAT_SECTION, MOD_CFG_SINGLE_SAT_REFRESH, SAT_CFG_INT_SINGLE_SAT_REFRESH); } else { val = sat_cfg_get_int (SAT_CFG_INT_SINGLE_SAT_REFRESH); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (singlespin), val); g_signal_connect (G_OBJECT (singlespin), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), singlespin, 1, 2, 5, 6, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[cycle]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 5, 6, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* create vertical box */ vbox = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 20); gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button (cfg, GTK_BOX (vbox)); return vbox; }
/** \brief Create and initialise widgets for the radios tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be laoded. */ GtkWidget *sat_pref_conditions_create () { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; dirty = FALSE; reset = FALSE; table = gtk_table_new (14, 3, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 10); gtk_table_set_col_spacings (GTK_TABLE (table), 5); /* minimum elevation */ label = gtk_label_new (_("Minimum elevation")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0); minel = gtk_spin_button_new_with_range (1, 90, 1); gtk_widget_set_tooltip_text (minel, _("Elevation threshold for passes.\n"\ "Passes with maximum elevation below this limit "\ "will be omitted")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (minel), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (minel), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (minel), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (minel), sat_cfg_get_int (SAT_CFG_INT_PRED_MIN_EL)); g_signal_connect (G_OBJECT (minel), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), minel, 1, 2, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[deg]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 3, 1, 2, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), _("<b>Multiple Passes:</b>")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_SHRINK, 0, 0); /* number of passes */ label = gtk_label_new (_("Number of passes to predict")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, GTK_FILL, GTK_SHRINK, 0, 0); numpass = gtk_spin_button_new_with_range (5, 50, 1); gtk_widget_set_tooltip_text (numpass, _("The maximum number of passes to predict.")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (numpass), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (numpass), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (numpass), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (numpass), sat_cfg_get_int (SAT_CFG_INT_PRED_NUM_PASS)); g_signal_connect (G_OBJECT (numpass), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), numpass, 1, 2, 3, 4, GTK_FILL, GTK_SHRINK, 0, 0); /* lookahead */ label = gtk_label_new (_("Passes should occur within")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 4, 5, GTK_FILL, GTK_SHRINK, 0, 0); lookahead = gtk_spin_button_new_with_range (1, 14, 1); gtk_widget_set_tooltip_text (lookahead, _("Only passes that occur within the specified "\ "number of days will be shown.")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (lookahead), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (lookahead), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (lookahead), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (lookahead), sat_cfg_get_int (SAT_CFG_INT_PRED_LOOK_AHEAD)); g_signal_connect (G_OBJECT (lookahead), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), lookahead, 1, 2, 4, 5, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[days]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 4, 5, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 3, 5, 6, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), _("<b>Pass Details:</b>")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 6, 7, GTK_FILL, GTK_SHRINK, 0, 0); /* time resolution */ label = gtk_label_new (_("Time resolution")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 7, 8, GTK_FILL, GTK_SHRINK, 0, 0); res = gtk_spin_button_new_with_range (1, 600, 1); gtk_widget_set_tooltip_text (res, _("Gpredict will try to show the pass details "\ "with the specified time resolution.")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (res), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (res), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (res), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (res), sat_cfg_get_int (SAT_CFG_INT_PRED_RESOLUTION)); g_signal_connect (G_OBJECT (res), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), res, 1, 2, 7, 8, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[sec]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 7, 8, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* number of entries */ label = gtk_label_new (_("Number of entries")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 8, 9, GTK_FILL, GTK_SHRINK, 0, 0); nument = gtk_spin_button_new_with_range (10, 200, 1); gtk_widget_set_tooltip_text (nument, _("Gpredict will try to keep the number of rows " \ "in the detailed prediction within this limit.")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (nument), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (nument), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (nument), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (nument), sat_cfg_get_int (SAT_CFG_INT_PRED_NUM_ENTRIES)); g_signal_connect (G_OBJECT (nument), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), nument, 1, 2, 8, 9, GTK_FILL, GTK_SHRINK, 0, 0); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 3, 9, 10, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* satellite visibility */ label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), _("<b>Satellite Visibility:</b>")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 10, 11, GTK_FILL, GTK_SHRINK, 0, 0); /* twilight threshold */ label = gtk_label_new (_("Twilight threshold")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 11, 12, GTK_FILL, GTK_SHRINK, 0, 0); twspin = gtk_spin_button_new_with_range (-18, 0, 1); gtk_widget_set_tooltip_text (twspin, _("Satellites are only considered visible if the elevation "\ "of the Sun is below the specified threshold.\n"\ " \342\200\242 Astronomical: -18\302\260 to -12\302\260\n"\ " \342\200\242 Nautical: -12\302\260 to -6\302\260\n"\ " \342\200\242 Civil: -6\302\260 to 0\302\260")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (twspin), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (twspin), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (twspin), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (twspin), sat_cfg_get_int (SAT_CFG_INT_PRED_TWILIGHT_THLD)); g_signal_connect (G_OBJECT (twspin), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), twspin, 1, 2, 11, 12, GTK_FILL, GTK_SHRINK, 0, 0); label = gtk_label_new (_("[deg]")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 11, 12, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 3, 12, 13, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* T0 for predictions */ tzero = gtk_check_button_new_with_label (_("Always use real time for pass predictions")); gtk_widget_set_tooltip_text (tzero, _("Check this box if you want Gpredict to always use "\ "the current (real) time as starting time when predicting "\ "future satellite passes.\n\n"\ "If you leave the box unchecked and the time controller is "\ "active, Gpredict will use the time from the time controller "\ "as starting time for predicting satellite passes.")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tzero), sat_cfg_get_bool (SAT_CFG_BOOL_PRED_USE_REAL_T0)); g_signal_connect (G_OBJECT (tzero), "toggled", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), tzero, 0, 3, 13, 14, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); /* create vertical box */ vbox = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 20); gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button (GTK_BOX (vbox)); return vbox; }
/** \brief Create and initialise widgets for the sky-at-glance tab. * * The widgets must be preloaded with values from config. If a config value * is NULL, sensible default values, eg. those from defaults.h should * be laoded. */ GtkWidget *sat_pref_sky_at_glance_create () { GtkWidget *table; GtkWidget *label; GtkWidget *vbox; GdkColor col; guint rgb; /* 0xRRGGBB encoded colour */ guint y; dirty = FALSE; reset = FALSE; table = gtk_table_new (16, 5, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 5); gtk_table_set_col_spacings (GTK_TABLE (table), 5); label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), _("<b>Time:</b>")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0); /* number of hours */ label = gtk_label_new (_("Find and show passes that occur within")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, GTK_SHRINK, 0, 0); timesp = gtk_spin_button_new_with_range (1, 24, 1); gtk_widget_set_tooltip_text (timesp, _("The passes shown on the Sky at a Glance chart\n"\ "will begin within this number of hours.")); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (timesp), 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (timesp), TRUE); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (timesp), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (timesp), sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME)); g_signal_connect (G_OBJECT (timesp), "value-changed", G_CALLBACK (spin_changed_cb), NULL); gtk_table_attach (GTK_TABLE (table), timesp, 1, 2, 1, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (_("hours")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 1, 2, GTK_FILL, GTK_SHRINK, 0, 0); /* separator */ gtk_table_attach (GTK_TABLE (table), gtk_hseparator_new (), 0, 5, 2, 3, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0); y = 3; label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), _("<b>Colours:</b>")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, y, y+1, GTK_FILL, GTK_SHRINK, 0, 0); /* colour 1 */ label = gtk_label_new (_("Colour for satellite 1: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, y+1, y+2, GTK_SHRINK, GTK_SHRINK, 0, 0); col1 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col1), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col1), _("Select colour 1")); gtk_table_attach (GTK_TABLE (table), col1, 1, 2, y+1, y+2, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text ( col1, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col1), &col); g_signal_connect (col1, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 2 */ label = gtk_label_new (_("Colour for satellite 2: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, y+2, y+3, GTK_SHRINK, GTK_SHRINK, 0, 0); col2 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col2), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col1), _("Select colour 2")); gtk_table_attach (GTK_TABLE (table), col2, 1, 2, y+2, y+3, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text ( col2, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_02); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col2), &col); g_signal_connect (col2, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 3 */ label = gtk_label_new (_("Colour for satellite 3: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, y+3, y+4, GTK_SHRINK, GTK_SHRINK, 0, 0); col3 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col3), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col3), _("Select colour 3")); gtk_table_attach (GTK_TABLE (table), col3, 1, 2, y+3, y+4, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col3, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_03); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col3), &col); g_signal_connect (col3, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 4 */ label = gtk_label_new (_("Colour for satellite 4: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, y+4, y+5, GTK_SHRINK, GTK_SHRINK, 0, 0); col4 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col4), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col4), _("Select colour 4")); gtk_table_attach (GTK_TABLE (table), col4, 1, 2, y+4, y+5, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col4, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_04); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col4), &col); g_signal_connect (col4, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 5 */ label = gtk_label_new (_("Colour for satellite 5: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, y+5, y+6, GTK_SHRINK, GTK_SHRINK, 0, 0); col5 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col5), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col5), _("Select colour 5")); gtk_table_attach (GTK_TABLE (table), col5, 1, 2, y+5, y+6, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col5, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_05); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col5), &col); g_signal_connect (col5, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 6 */ label = gtk_label_new (_("Colour for satellite 6: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 3, 4, y+1, y+2, GTK_SHRINK, GTK_SHRINK, 0, 0); col6 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col6), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col6), _("Select colour 6")); gtk_table_attach (GTK_TABLE (table), col6, 4, 5, y+1, y+2, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col6, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_06); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col6), &col); g_signal_connect (col6, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 7 */ label = gtk_label_new (_("Colour for satellite 7: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 3, 4, y+2, y+3, GTK_SHRINK, GTK_SHRINK, 0, 0); col7 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col7), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col7), _("Select colour 7")); gtk_table_attach (GTK_TABLE (table), col7, 4, 5, y+2, y+3, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col7, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_07); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col7), &col); g_signal_connect (col7, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 8 */ label = gtk_label_new (_("Colour for satellite 8: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 3, 4, y+3, y+4, GTK_SHRINK, GTK_SHRINK, 0, 0); col8 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col8), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col8), _("Select colour 8")); gtk_table_attach (GTK_TABLE (table), col8, 4, 5, y+3, y+4, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col8, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_08); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col8), &col); g_signal_connect (col8, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 9 */ label = gtk_label_new (_("Colour for satellite 9: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 3, 4, y+4, y+5, GTK_SHRINK, GTK_SHRINK, 0, 0); col9 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col9), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col9), _("Select colour 9")); gtk_table_attach (GTK_TABLE (table), col9, 4, 5, y+4, y+5, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col9, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_09); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col9), &col); g_signal_connect (col9, "color-set", G_CALLBACK (colour_changed), NULL); /* colour 10 */ label = gtk_label_new (_("Colour for satellite 10: ")); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 3, 4, y+5, y+6, GTK_SHRINK, GTK_SHRINK, 0, 0); col10 = gtk_color_button_new (); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col10), FALSE); gtk_color_button_set_title (GTK_COLOR_BUTTON (col10), _("Select colour 10")); gtk_table_attach (GTK_TABLE (table), col10, 4, 5, y+5, y+6, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_set_tooltip_text (col10, _("Click to select a colour")); rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_10); rgb2gdk (rgb, &col); gtk_color_button_set_color (GTK_COLOR_BUTTON (col10), &col); g_signal_connect (col10, "color-set", G_CALLBACK (colour_changed), NULL); /* create vertical box */ vbox = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 20); gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); /* create RESET button */ create_reset_button (GTK_BOX (vbox)); return vbox; }