1 #ifndef __GTK_SINGLE_SAT_H__
2 #define __GTK_SINGLE_SAT_H__ 1
3 
4 #include <glib.h>
5 #include <glib/gi18n.h>
6 #include <gtk/gtk.h>
7 
8 #include "gtk-sat-data.h"
9 #include "gtk-sat-module.h"
10 
11 /* *INDENT-OFF* */
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 /* *INDENT-ON* */
16 
17 /** Symbolic references to columns */
18 typedef enum {
19     SINGLE_SAT_FIELD_AZ = 0,    /*!< Azimuth. */
20     SINGLE_SAT_FIELD_EL,        /*!< Elvation. */
21     SINGLE_SAT_FIELD_DIR,       /*!< Direction, satellite on its way up or down. */
22     SINGLE_SAT_FIELD_RA,        /*!< Right Ascension. */
23     SINGLE_SAT_FIELD_DEC,       /*!< Declination. */
24     SINGLE_SAT_FIELD_RANGE,     /*!< Range. */
25     SINGLE_SAT_FIELD_RANGE_RATE,        /*!< Range rate. */
26     SINGLE_SAT_FIELD_NEXT_EVENT,        /*!< Next event AOS or LOS depending on El. */
27     SINGLE_SAT_FIELD_AOS,       /*!< Next AOS regardless of El. */
28     SINGLE_SAT_FIELD_LOS,       /*!< Next LOS regardless of El. */
29     SINGLE_SAT_FIELD_LAT,       /*!< Latitude. */
30     SINGLE_SAT_FIELD_LON,       /*!< Longitude. */
31     SINGLE_SAT_FIELD_SSP,       /*!< Sub satellite point grid square */
32     SINGLE_SAT_FIELD_FOOTPRINT, /*!< Footprint. */
33     SINGLE_SAT_FIELD_ALT,       /*!< Altitude. */
34     SINGLE_SAT_FIELD_VEL,       /*!< Velocity. */
35     SINGLE_SAT_FIELD_DOPPLER,   /*!< Doppler shift at 100 MHz. */
36     SINGLE_SAT_FIELD_LOSS,      /*!< Path Loss at 100 MHz. */
37     SINGLE_SAT_FIELD_DELAY,     /*!< Signal delay */
38     SINGLE_SAT_FIELD_MA,        /*!< Mean Anomaly. */
39     SINGLE_SAT_FIELD_PHASE,     /*!< Phase. */
40     SINGLE_SAT_FIELD_ORBIT,     /*!< Orbit Number. */
41     SINGLE_SAT_FIELD_VISIBILITY,        /*!< Visibility. */
42     SINGLE_SAT_FIELD_NUMBER
43 } single_sat_field_t;
44 
45 /** Fieldnum Flags */
46 typedef enum {
47     SINGLE_SAT_FLAG_AZ = 1 << SINGLE_SAT_FIELD_AZ,      /*!< Azimuth. */
48     SINGLE_SAT_FLAG_EL = 1 << SINGLE_SAT_FIELD_EL,      /*!< Elvation. */
49     SINGLE_SAT_FLAG_DIR = 1 << SINGLE_SAT_FIELD_DIR,    /*!< Direction */
50     SINGLE_SAT_FLAG_RA = 1 << SINGLE_SAT_FIELD_RA,      /*!< Right Ascension. */
51     SINGLE_SAT_FLAG_DEC = 1 << SINGLE_SAT_FIELD_DEC,    /*!< Declination. */
52     SINGLE_SAT_FLAG_RANGE = 1 << SINGLE_SAT_FIELD_RANGE,        /*!< Range. */
53     SINGLE_SAT_FLAG_RANGE_RATE = 1 << SINGLE_SAT_FIELD_RANGE_RATE,      /*!< Range rate. */
54     SINGLE_SAT_FLAG_NEXT_EVENT = 1 << SINGLE_SAT_FIELD_NEXT_EVENT,      /*!< Next event. */
55     SINGLE_SAT_FLAG_AOS = 1 << SINGLE_SAT_FIELD_AOS,    /*!< Next AOS. */
56     SINGLE_SAT_FLAG_LOS = 1 << SINGLE_SAT_FIELD_LOS,    /*!< Next LOS. */
57     SINGLE_SAT_FLAG_LAT = 1 << SINGLE_SAT_FIELD_LAT,    /*!< Latitude. */
58     SINGLE_SAT_FLAG_LON = 1 << SINGLE_SAT_FIELD_LON,    /*!< Longitude. */
59     SINGLE_SAT_FLAG_SSP = 1 << SINGLE_SAT_FIELD_SSP,    /*!< SSP grid square */
60     SINGLE_SAT_FLAG_FOOTPRINT = 1 << SINGLE_SAT_FIELD_FOOTPRINT,        /*!< Footprint. */
61     SINGLE_SAT_FLAG_ALT = 1 << SINGLE_SAT_FIELD_ALT,    /*!< Altitude. */
62     SINGLE_SAT_FLAG_VEL = 1 << SINGLE_SAT_FIELD_VEL,    /*!< Velocity. */
63     SINGLE_SAT_FLAG_DOPPLER = 1 << SINGLE_SAT_FIELD_DOPPLER,    /*!< Doppler shift. */
64     SINGLE_SAT_FLAG_LOSS = 1 << SINGLE_SAT_FIELD_LOSS,  /*!< Path Loss. */
65     SINGLE_SAT_FLAG_DELAY = 1 << SINGLE_SAT_FIELD_DELAY,        /*!< Delay */
66     SINGLE_SAT_FLAG_MA = 1 << SINGLE_SAT_FIELD_MA,      /*!< Mean Anomaly. */
67     SINGLE_SAT_FLAG_PHASE = 1 << SINGLE_SAT_FIELD_PHASE,        /*!< Phase. */
68     SINGLE_SAT_FLAG_ORBIT = 1 << SINGLE_SAT_FIELD_ORBIT,        /*!< Orbit Number. */
69     SINGLE_SAT_FLAG_VISIBILITY = 1 << SINGLE_SAT_FIELD_VISIBILITY       /*!< Visibility. */
70 } single_sat_flag_t;
71 
72 #define GTK_TYPE_SINGLE_SAT          (gtk_single_sat_get_type ())
73 #define GTK_SINGLE_SAT(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj,\
74                                         gtk_single_sat_get_type (),\
75                                         GtkSingleSat)
76 #define GTK_SINGLE_SAT_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass,\
77                                         gtk_single_sat_get_type (),\
78                                         GtkSingleSatClass)
79 #define IS_GTK_SINGLE_SAT(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_single_sat_get_type ())
80 
81 typedef struct _gtk_single_sat GtkSingleSat;
82 typedef struct _GtkSingleSatClass GtkSingleSatClass;
83 
84 struct _gtk_single_sat {
85     GtkBox          vbox;
86 
87     GtkWidget      *header;     /*!< Header label, ie. satellite name. */
88 
89     GtkWidget      *labels[SINGLE_SAT_FIELD_NUMBER];    /*!< GtkLabels displaying the data. */
90 
91     GtkWidget      *swin;       /*!< scrolled window. */
92     GtkWidget      *table;      /*!< table. */
93 
94     GtkWidget      *popup_button;       /*!< Popup button. */
95 
96 
97     GKeyFile       *cfgdata;    /*!< Configuration data. */
98     GSList         *sats;       /*!< Satellites. */
99     qth_t          *qth;        /*!< Pointer to current location. */
100 
101 
102     guint32         flags;      /*!< Flags indicating which columns are visible. */
103     guint           refresh;    /*!< Refresh rate. */
104     guint           counter;    /*!< cycle counter. */
105     guint           selected;   /*!< index of selected sat. */
106 
107     gdouble         tstamp;     /*!< time stamp of calculations; update by GtkSatModule */
108 
109     void            (*update) (GtkWidget * widget);     /*!< update function */
110 };
111 
112 struct _GtkSingleSatClass {
113     GtkBoxClass     parent_class;
114 };
115 
116 GType           gtk_single_sat_get_type(void);
117 GtkWidget      *gtk_single_sat_new(GKeyFile * cfgdata,
118                                    GHashTable * sats,
119                                    qth_t * qth, guint32 fields);
120 void            gtk_single_sat_update(GtkWidget * widget);
121 void            gtk_single_sat_reconf(GtkWidget * widget,
122                                       GKeyFile * newcfg,
123                                       GHashTable * sats,
124                                       qth_t * qth, gboolean local);
125 
126 void            gtk_single_sat_reload_sats(GtkWidget * single_sat,
127                                            GHashTable * sats);
128 void            gtk_single_sat_select_sat(GtkWidget * single_sat, gint catnum);
129 
130 /* *INDENT-OFF* */
131 #ifdef __cplusplus
132 }
133 #endif
134 /* *INDENT-ON* */
135 
136 #endif /* __GTK_SINGLE_SAT_H__ */
137