mirror of
https://github.com/csete/gpredict
synced 2026-08-13 17:39:46 -04:00
Show transponder data when avaialble.
git-svn-id: https://gpredict.svn.sourceforge.net/svnroot/gpredict/trunk@256 ab6734ba-2843-0410-b83b-99c217ef6c0f
This commit is contained in:
parent
d3fd31629f
commit
aaa44f8d83
1 changed files with 364 additions and 266 deletions
630
src/sat-info.c
630
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), _("<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 @@ 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 ("<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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue