[Gpredict-svn] SF.net SVN: gpredict:[256] trunk/src/sat-info.c
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
From: <cs...@us...> - 2009-04-12 18:45:20
|
Revision: 256 http://gpredict.svn.sourceforge.net/gpredict/?rev=256&view=rev Author: csete Date: 2009-04-12 18:45:16 +0000 (Sun, 12 Apr 2009) Log Message: ----------- Show transponder data when avaialble. Modified Paths: -------------- trunk/src/sat-info.c Modified: trunk/src/sat-info.c =================================================================== --- trunk/src/sat-info.c 2009-04-12 18:44:54 UTC (rev 255) +++ trunk/src/sat-info.c 2009-04-12 18:45:16 UTC (rev 256) @@ -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 @@ 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), _("<b>Satellite name:</b>")); - 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), _("<b>Satellite name:</b>")); + 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 (_("<b>%s</b>"), 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 (_("<b>%s</b>"), 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/day<sup>2</sup>]", - 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/day<sup>2</sup>]", + 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 d<sup>2</sup>/dt<sup>2</sup> (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 d<sup>2</sup>/dt<sup>2</sup> (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/day<sup>3</sup>]", - 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/day<sup>3</sup>]", + 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 [R<sub>E</sub><sup>-1</sup>]", 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 [R<sub>E</sub><sup>-1</sup>]", 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 @@ 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 ("<b>%s</b>", 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; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |