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