/ src / gtk-single-sat.h
gtk-single-sat.h
  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__ */