diff --git a/src/sat-info.c b/src/sat-info.c
index 5c64c8e..e047c0c 100644
--- a/src/sat-info.c
+++ b/src/sat-info.c
@@ -39,13 +39,11 @@
#include "orbit-tools.h"
#include "predict-tools.h"
#include "sat-pass-dialogs.h"
+#include "trsp-conf.h"
#include "sat-info.h"
-
-
-
-
+static GtkWidget *create_transponder_table (guint catnum);
static gchar *epoch_to_str (sat_t *sat);
@@ -59,280 +57,289 @@ static gchar *epoch_to_str (sat_t *sat);
void
show_sat_info (GtkWidget *menuitem, gpointer data)
{
- GtkWidget *dialog;
- GtkWidget *table;
- GtkWidget *label;
- GtkWindow *toplevel = NULL;
- sat_t *sat;
- gchar *str;
+ GtkWidget *dialog;
+ GtkWidget *notebook;
+ GtkWidget *table;
+ GtkWidget *label;
+ GtkWindow *toplevel = NULL;
+ sat_t *sat;
+ gchar *str;
- sat = SAT(g_object_get_data (G_OBJECT (menuitem), "sat"));
+ sat = SAT(g_object_get_data (G_OBJECT (menuitem), "sat"));
- if (data != NULL)
- toplevel = GTK_WINDOW (data);
+ if (data != NULL)
+ toplevel = GTK_WINDOW (data);
- /* create table */
- table = gtk_table_new (20, 4, FALSE);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
- gtk_table_set_row_spacings (GTK_TABLE (table), 5);
- gtk_container_set_border_width (GTK_CONTAINER (table), 10);
+ /* create table */
+ table = gtk_table_new (20, 4, FALSE);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 5);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (table), 10);
- /* create table contents and add them to table */
+ /* create table contents and add them to table */
- /* satellite name */
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), _("Satellite name:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1);
+ /* satellite name */
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), _("Satellite name:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1);
- label = gtk_label_new (NULL);
- str = g_strdup_printf (_("%s"), sat->tle.sat_name);
- gtk_label_set_markup (GTK_LABEL (label), str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1);
- g_free (str);
+ label = gtk_label_new (NULL);
+ str = g_strdup_printf (_("%s"), sat->tle.sat_name);
+ gtk_label_set_markup (GTK_LABEL (label), str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1);
+ g_free (str);
- /* operational status */
- label = gtk_label_new (_("Operational Status:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2);
+ /* operational status */
+ label = gtk_label_new (_("Operational Status:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2);
- switch (sat->tle.status) {
+ switch (sat->tle.status) {
- case OP_STAT_OPERATIONAL:
- label = gtk_label_new (_("Operational"));
- break;
+ case OP_STAT_OPERATIONAL:
+ label = gtk_label_new (_("Operational"));
+ break;
- case OP_STAT_NONOP:
- label = gtk_label_new (_("Non-operational"));
- break;
+ case OP_STAT_NONOP:
+ label = gtk_label_new (_("Non-operational"));
+ break;
- case OP_STAT_PARTIAL:
- label = gtk_label_new (_("Partially operational"));
- break;
+ case OP_STAT_PARTIAL:
+ label = gtk_label_new (_("Partially operational"));
+ break;
- case OP_STAT_STDBY:
- label = gtk_label_new (_("Backup/Standby"));
- break;
+ case OP_STAT_STDBY:
+ label = gtk_label_new (_("Backup/Standby"));
+ break;
- case OP_STAT_SPARE:
- label = gtk_label_new (_("Spare"));
- break;
+ case OP_STAT_SPARE:
+ label = gtk_label_new (_("Spare"));
+ break;
- case OP_STAT_EXTENDED:
- label = gtk_label_new (_("Extended Mission"));
- break;
+ case OP_STAT_EXTENDED:
+ label = gtk_label_new (_("Extended Mission"));
+ break;
- default:
- label = gtk_label_new (_("Unknown"));
- break;
+ default:
+ label = gtk_label_new (_("Unknown"));
+ break;
- }
+ }
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 1, 2);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 1, 2);
- /* Catnum */
- label = gtk_label_new (_("Catalogue number:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
+ /* Catnum */
+ label = gtk_label_new (_("Catalogue number:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
- str = g_strdup_printf ("%d", sat->tle.catnr);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 2, 3);
- g_free (str);
+ str = g_strdup_printf ("%d", sat->tle.catnr);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 2, 3);
+ g_free (str);
- /* international designator */
- label = gtk_label_new (_("Internation designator:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
+ /* international designator */
+ label = gtk_label_new (_("Internation designator:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
- label = gtk_label_new (sat->tle.idesg);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4);
+ label = gtk_label_new (sat->tle.idesg);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 3, 4);
- /* elset number */
- label = gtk_label_new (_("Element set number:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5);
+ /* elset number */
+ label = gtk_label_new (_("Element set number:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5);
- str = g_strdup_printf ("%d", sat->tle.elset);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 4, 5);
- g_free (str);
+ str = g_strdup_printf ("%d", sat->tle.elset);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 4, 5);
+ g_free (str);
- /* elset epoch */
- label = gtk_label_new (_("Epoch time:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 5, 6);
+ /* elset epoch */
+ label = gtk_label_new (_("Epoch time:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 5, 6);
- str = epoch_to_str (sat);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 5, 6);
- g_free (str);
+ str = epoch_to_str (sat);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 5, 6);
+ g_free (str);
- /* Revolution Number @ Epoch */
- label = gtk_label_new (_("Orbit number @ epoch:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 6, 7);
+ /* Revolution Number @ Epoch */
+ label = gtk_label_new (_("Orbit number @ epoch:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 6, 7);
- str = g_strdup_printf ("%d", sat->tle.revnum);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 6, 7);
- g_free (str);
+ str = g_strdup_printf ("%d", sat->tle.revnum);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 6, 7);
+ g_free (str);
- /* ephermis type left out, since it is always 0 */
+ /* ephermis type left out, since it is always 0 */
- /* separator */
- gtk_table_attach_defaults (GTK_TABLE (table),
- gtk_hseparator_new (),
- 0, 4, 7, 8);
+ /* separator */
+ gtk_table_attach_defaults (GTK_TABLE (table),
+ gtk_hseparator_new (),
+ 0, 4, 7, 8);
- /* Orbit inclination */
- label = gtk_label_new (_("Inclination:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 8, 9);
+ /* Orbit inclination */
+ label = gtk_label_new (_("Inclination:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 8, 9);
- str = g_strdup_printf ("%.4f\302\260", sat->tle.xincl/de2ra);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 8, 9);
- g_free (str);
+ str = g_strdup_printf ("%.4f\302\260", sat->tle.xincl/de2ra);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 8, 9);
+ g_free (str);
- /* RAAN */
- label = gtk_label_new (_("RAAN:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 9, 10);
+ /* RAAN */
+ label = gtk_label_new (_("RAAN:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 9, 10);
- str = g_strdup_printf ("%.4f\302\260", sat->tle.xnodeo/de2ra);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 9, 10);
- g_free (str);
+ str = g_strdup_printf ("%.4f\302\260", sat->tle.xnodeo/de2ra);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 9, 10);
+ g_free (str);
- /* Eccentricity */
- label = gtk_label_new (_("Eccentricity:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 10, 11);
+ /* Eccentricity */
+ label = gtk_label_new (_("Eccentricity:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 10, 11);
- str = g_strdup_printf ("%.7f", sat->tle.eo);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 10, 11);
- g_free (str);
+ str = g_strdup_printf ("%.7f", sat->tle.eo);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 10, 11);
+ g_free (str);
- /* Argument of perigee */
- label = gtk_label_new (_("Arg. of perigee:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 11, 12);
+ /* Argument of perigee */
+ label = gtk_label_new (_("Arg. of perigee:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 11, 12);
- str = g_strdup_printf ("%.4f\302\260", sat->tle.omegao/de2ra);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 11, 12);
- g_free (str);
+ str = g_strdup_printf ("%.4f\302\260", sat->tle.omegao/de2ra);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 11, 12);
+ g_free (str);
- /* Mean Anomaly */
- label = gtk_label_new (_("Mean anomaly:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 12, 13);
+ /* Mean Anomaly */
+ label = gtk_label_new (_("Mean anomaly:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 12, 13);
- str = g_strdup_printf ("%.4f\302\260", sat->tle.xmo/de2ra);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 12, 13);
- g_free (str);
+ str = g_strdup_printf ("%.4f\302\260", sat->tle.xmo/de2ra);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 12, 13);
+ g_free (str);
- /* Mean Motion */
- label = gtk_label_new (_("Mean motion:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 13, 14);
+ /* Mean Motion */
+ label = gtk_label_new (_("Mean motion:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 13, 14);
- //str = g_strdup_printf ("%.4f [rev/day]", sat->tle.xno/(xmnpda*(twopi/xmnpda/xmnpda)));
- str = g_strdup_printf ("%.8f [rev/day]", sat->meanmo);
- label = gtk_label_new (str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 13, 14);
- g_free (str);
+ //str = g_strdup_printf ("%.4f [rev/day]", sat->tle.xno/(xmnpda*(twopi/xmnpda/xmnpda)));
+ str = g_strdup_printf ("%.8f [rev/day]", sat->meanmo);
+ label = gtk_label_new (str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 13, 14);
+ g_free (str);
- /* one half of the first time derivative of mean motion */
- label = gtk_label_new (_("\302\275 d/dt (mean motion):"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 14, 15);
+ /* one half of the first time derivative of mean motion */
+ label = gtk_label_new (_("\302\275 d/dt (mean motion):"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 14, 15);
- str = g_strdup_printf ("%.5e [rev/day2]",
- sat->tle.xndt2o/(twopi/xmnpda/xmnpda));
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 14, 15);
- g_free (str);
+ str = g_strdup_printf ("%.5e [rev/day2]",
+ sat->tle.xndt2o/(twopi/xmnpda/xmnpda));
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 14, 15);
+ g_free (str);
- /* one sixth of the second time derivative of mean motion */
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label),
- _("1/6 d2/dt2 (mean motion):"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 15, 16);
+ /* one sixth of the second time derivative of mean motion */
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("1/6 d2/dt2 (mean motion):"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 15, 16);
- str = g_strdup_printf ("%.5e [rev/day3]",
- sat->tle.xndd6o*xmnpda/(twopi/xmnpda/xmnpda));
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 15, 16);
- g_free (str);
+ str = g_strdup_printf ("%.5e [rev/day3]",
+ sat->tle.xndd6o*xmnpda/(twopi/xmnpda/xmnpda));
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 15, 16);
+ g_free (str);
- /* B* drag term */
- label = gtk_label_new (_("B* drag term:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 16, 17);
+ /* B* drag term */
+ label = gtk_label_new (_("B* drag term:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 16, 17);
- str = g_strdup_printf ("%.5e [RE-1]", sat->tle.bstar*ae);
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), str);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 16, 17);
- g_free (str);
+ str = g_strdup_printf ("%.5e [RE-1]", sat->tle.bstar*ae);
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 16, 17);
+ g_free (str);
- /* Orbit type */
+ /* Orbit type */
- /* Next Event */
+ /* Next Event */
+ gtk_widget_show_all (table);
+
+
+
+ notebook = gtk_notebook_new ();
+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), table,
+ gtk_label_new (_("Orbit Info")));
+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
+ create_transponder_table (sat->tle.catnr),
+ gtk_label_new (_("Transponders")));
- gtk_widget_show_all (table);
+ /* create dialog window with NULL parent */
+ dialog = gtk_dialog_new_with_buttons (_("Satellite Info"),
+ toplevel,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
- /* create dialog window with NULL parent */
- dialog = gtk_dialog_new_with_buttons (_("Satellite Info"),
- toplevel,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
+ /* allow interaction with other windows */
+ gtk_window_set_modal (GTK_WINDOW (dialog), FALSE);
- /* allow interaction with other windows */
- gtk_window_set_modal (GTK_WINDOW (dialog), FALSE);
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (gtk_widget_destroy), NULL);
+ g_signal_connect (dialog, "destroy",
+ G_CALLBACK (gtk_widget_destroyed), &dialog);
- g_signal_connect (dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &dialog);
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), notebook);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), table);
+ gtk_widget_show_all (dialog);
- gtk_widget_show_all (dialog);
-
-
}
-
/* BBBBB.BBBBBBBB] - Epoch Time -- 2-digit year, followed by 3-digit sequential
day of the year, followed by the time represented as the
fractional portion of one day, but...
@@ -343,65 +350,156 @@ show_sat_info (GtkWidget *menuitem, gpointer data)
static gchar *
epoch_to_str (sat_t *sat)
{
- GDate *epd;
- guint h,m,s,sec;
- gchar *buff;
- gchar *fmt;
- struct tm tms;
- time_t t;
- guint size;
+ GDate *epd;
+ guint h,m,s,sec;
+ gchar *buff;
+ gchar *fmt;
+ struct tm tms;
+ time_t t;
+ guint size;
- /* http://celestrak.com/columns/v04n03/#FAQ02
- ... While talking about the epoch, this is perhaps a good place to answer
- the other time-related questions. First, how is the epoch time format
- interpreted? This question is best answered by using an example. An epoch
- of 98001.00000000 corresponds to 0000 UT on 1998 January 01st in other
- words, midnight between 1997 December 31 and 1998 January 01. An epoch of
- 98000.00000000 would actually correspond to the beginning of 1997 December
- 31st strange as that might seem. Note that the epoch day starts at UT
- midnight (not noon) and that all times are measured mean solar rather than
- sidereal time units (the answer to our third question).
- */
- epd = g_date_new_dmy (1, 1, sat->tle.epoch_year);
- g_date_add_days (epd, sat->tle.epoch_day-1);
+ /* http://celestrak.com/columns/v04n03/#FAQ02
+ ... While talking about the epoch, this is perhaps a good place to answer
+ the other time-related questions. First, how is the epoch time format
+ interpreted? This question is best answered by using an example. An epoch
+ of 98001.00000000 corresponds to 0000 UT on 1998 January 01st in other
+ words, midnight between 1997 December 31 and 1998 January 01. An epoch of
+ 98000.00000000 would actually correspond to the beginning of 1997 December
+ 31st strange as that might seem. Note that the epoch day starts at UT
+ midnight (not noon) and that all times are measured mean solar rather than
+ sidereal time units (the answer to our third question).
+ */
+ epd = g_date_new_dmy (1, 1, sat->tle.epoch_year);
+ g_date_add_days (epd, sat->tle.epoch_day-1);
- /* convert date to struct tm */
- g_date_to_struct_tm (epd, &tms);
+ /* convert date to struct tm */
+ g_date_to_struct_tm (epd, &tms);
- /* add HMS */
- sec = (guint) floor (sat->tle.epoch_fod * 86400); /* fraction of day in seconds */
-
- /* hour */
- h = (guint) floor (sec / 3600);
- tms.tm_hour = h;
+ /* add HMS */
+ sec = (guint) floor (sat->tle.epoch_fod * 86400); /* fraction of day in seconds */
- /* minutes */
- m = (guint) floor ((sec - (h*3600)) / 60);
- tms.tm_min = m;
+ /* hour */
+ h = (guint) floor (sec / 3600);
+ tms.tm_hour = h;
- s = (guint) floor (sec - (h*3600) - (m*60));
- tms.tm_sec = s;
+ /* minutes */
+ m = (guint) floor ((sec - (h*3600)) / 60);
+ tms.tm_min = m;
- /* get format string */
- fmt = sat_cfg_get_str (SAT_CFG_STR_TIME_FORMAT);
+ s = (guint) floor (sec - (h*3600) - (m*60));
+ tms.tm_sec = s;
- /* format either local time or UTC depending on check box */
- t = mktime (&tms);
- buff = g_try_malloc (51);
+ /* get format string */
+ fmt = sat_cfg_get_str (SAT_CFG_STR_TIME_FORMAT);
- if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
- size = strftime (buff, 50, fmt, localtime (&t));
- else
- size = strftime (buff, 50, fmt, gmtime (&t));
+ /* format either local time or UTC depending on check box */
+ t = mktime (&tms);
+ buff = g_try_malloc (51);
- if (size < 50)
- buff[size]='\0';
- else
- buff[50]='\0';
+ if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
+ size = strftime (buff, 50, fmt, localtime (&t));
+ else
+ size = strftime (buff, 50, fmt, gmtime (&t));
- g_date_free (epd);
- g_free (fmt);
+ if (size < 50)
+ buff[size]='\0';
+ else
+ buff[50]='\0';
- return buff;
+ g_date_free (epd);
+ g_free (fmt);
+
+ return buff;
+}
+
+/** \brief Create transponder table. */
+static GtkWidget *create_transponder_table (guint catnum)
+{
+ GtkWidget *vbox,*label;
+ GSList *trsplist = NULL;
+ trsp_t *trsp = NULL;
+ guint i,n;
+ gchar *text;
+
+
+ trsplist = read_transponders (catnum);
+ if (trsplist == NULL) {
+ vbox = gtk_label_new ("No transponders");
+ }
+ else {
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
+
+ /* Add each transponder to vbox */
+ n = g_slist_length (trsplist);
+ for (i = 0; i < n; i++) {
+ gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (" "), FALSE, FALSE, 0);
+
+ trsp = (trsp_t *) g_slist_nth_data (trsplist, i);
+
+ /* transponder name */
+ text = g_strdup_printf ("%s", trsp->name);
+ label = gtk_label_new (NULL);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_label_set_markup (GTK_LABEL (label), text);
+ g_free (text);
+ gtk_box_pack_start (GTK_BOX (vbox), label,FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), gtk_hseparator_new (),
+ FALSE, FALSE, 0);
+
+ /* uplink */
+ if (trsp->uplow > 0.0) {
+ if (trsp->uphigh > trsp->uplow) {
+ /* we have a range */
+ text = g_strdup_printf (_("Uplink: %.4f \342\200\222 %.4f MHz"),
+ trsp->uplow / 1.0e6, trsp->uphigh / 1.0e6);
+ }
+ else {
+ text = g_strdup_printf (_("Uplink: %.4f MHz"), trsp->uplow / 1.0e6);
+ }
+ label = gtk_label_new (text);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+ g_free (text);
+ }
+
+ /* downlink */
+ if (trsp->downlow > 0.0) {
+ if (trsp->downhigh > trsp->downlow) {
+ /* we have a range */
+ text = g_strdup_printf (_("Downlink: %.4f \342\200\222 %.4f MHz"),
+ trsp->downlow / 1.0e6, trsp->downhigh / 1.0e6);
+ }
+ else {
+ text = g_strdup_printf (_("Downlink: %.4f MHz"), trsp->downlow / 1.0e6);
+ }
+ label = gtk_label_new (text);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+ g_free (text);
+ }
+
+ /* inverting */
+ if ((trsp->downhigh > trsp->downlow) && (trsp->uphigh > trsp->uplow)) {
+ text = g_strdup_printf (_("Inverting: %s"), trsp->invert ? "YES" : "NO");
+ label = gtk_label_new (text);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ g_free (text);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+ }
+
+ /* mode string */
+ if (trsp->mode) {
+ text = g_strdup_printf (_("Mode: %s"), trsp->mode);
+ label = gtk_label_new (text);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ g_free (text);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+ }
+ }
+ free_transponders (trsplist);
+ }
+
+ return vbox;
}