/[xlog]/xlog/src/hamlib-utils.c
ViewVC logotype

Diff of /xlog/src/hamlib-utils.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by pa4tu, Sat Jan 11 16:13:00 2003 UTC revision 1.5 by pa4tu, Mon Mar 3 15:34:43 2003 UTC
# Line 17  Line 17 
17   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18   */   */
19    
 #ifdef HAVE_CONFIG_H  
 #       include <config.h>  
 #endif  
   
20  #if WANT_HAMLIB  #if WANT_HAMLIB
21  #include <gtk/gtk.h>  #include <gtk/gtk.h>
22  #include <math.h>  #include <math.h>
# Line 31  Line 27 
27  #include "types.h"  #include "types.h"
28  #include "utils.h"  #include "utils.h"
29  #include "support.h"  #include "support.h"
 #include "pixmaps/s0.xpm"  
 #include "pixmaps/s1.xpm"  
 #include "pixmaps/s2.xpm"  
 #include "pixmaps/s3.xpm"  
 #include "pixmaps/s4.xpm"  
 #include "pixmaps/s5.xpm"  
 #include "pixmaps/s6.xpm"  
 #include "pixmaps/s7.xpm"  
 #include "pixmaps/s8.xpm"  
 #include "pixmaps/s9.xpm"  
   
 typedef struct  
 {  
   gchar **xpmdata;  
   GdkPixmap *pixmap;  
   GdkBitmap *mask;  
 }  
 typeLevel;  
   
 typeLevel S[] = {  
   {s0_xpm, NULL, NULL},  
   {s1_xpm, NULL, NULL},  
   {s2_xpm, NULL, NULL},  
   {s3_xpm, NULL, NULL},  
   {s4_xpm, NULL, NULL},  
   {s5_xpm, NULL, NULL},  
   {s6_xpm, NULL, NULL},  
   {s7_xpm, NULL, NULL},  
   {s8_xpm, NULL, NULL},  
   {s9_xpm, NULL, NULL},  
   {NULL, NULL, NULL}  
 };  
30    
31  extern preferencestype preferences;  extern preferencestype preferences;
32  extern statetype state;  extern statetype state;
# Line 70  extern GtkWidget *mainwindow; Line 34  extern GtkWidget *mainwindow;
34  extern GList *riglist;  extern GList *riglist;
35  extern RIG *myrig;  extern RIG *myrig;
36  GList *rigs = NULL;  GList *rigs = NULL;
 GdkPixmap *pixmap = NULL;  
37  gint svalue[10];  gint svalue[10];
38    
39  /* Append a new entry in the driver list. It is called by rig_list_foreach */  /* Append a new entry in the driver list. It is called by rig_list_foreach */
# Line 103  get_rigid (gchar * rig) Line 66  get_rigid (gchar * rig)
66    for (i = 0; i < numrigs; i++)    for (i = 0; i < numrigs; i++)
67      {      {
68        rcaps = (struct rig_caps *) g_list_nth_data (riglist, i);        rcaps = (struct rig_caps *) g_list_nth_data (riglist, i);
69        if (g_strcasecmp (rig, rcaps->model_name) == 0)        if (g_ascii_strcasecmp (rig, rcaps->model_name) == 0)
70          break;          break;
71      }      }
72    if (i > 0)    if (i > 0)
# Line 112  get_rigid (gchar * rig) Line 75  get_rigid (gchar * rig)
75      return (-1);      return (-1);
76  }  }
77    
 /* load xpm data from s-meter pixmaps */  
 void  
 loadsmeter (GtkWidget * widget)  
 {  
   gint i = 0;  
   
   while (S[i].xpmdata)  
     {  
       S[i].pixmap = gdk_pixmap_create_from_xpm_d (widget->window,  
                                                   &S[i].mask, NULL,  
                                                   S[i].xpmdata);  
       i++;  
     }  
 }  
   
   
 /* copy a s-meter pixmap to pixmap depending on the value of smax */  
78  static void  static void
79  draw_smeter (gint value)  draw_smeter (gint value)
80  {  {
81    GtkWidget *drawingarea;    GtkWidget *smeterlabel;
82    GdkGC *gc;    gchar *valtext;
83    GdkRectangle rectangle;    
84      smeterlabel = lookup_widget(mainwindow, "smeterlabel");
85    drawingarea = lookup_widget (mainwindow, "smeterdrawingarea");    valtext = g_strdup_printf ("S %d", value);
86    gc = drawingarea->style->fg_gc[GTK_STATE_NORMAL];    gtk_label_set_text (GTK_LABEL (smeterlabel), valtext);
87    /* clear background */    g_free (valtext);
88    gdk_draw_rectangle (pixmap, drawingarea->style->white_gc, TRUE, 0, 0,  
                       drawingarea->allocation.width,  
                       drawingarea->allocation.height);  
   gdk_draw_pixmap (pixmap, gc, S[value].pixmap, 0, 0, 0, 0,  
                    drawingarea->allocation.width,  
                    drawingarea->allocation.height);  
   rectangle.x = 0;  
   rectangle.y = 0;  
   rectangle.width = drawingarea->allocation.width;  
   rectangle.height = drawingarea->allocation.height;  
   gtk_widget_draw (drawingarea, &rectangle);    /* see expose_event further down */  
89  }  }
90    
91  /* return string with mode */  /* return string with mode */
# Line 199  getrigmode (gint mode) Line 135  getrigmode (gint mode)
135  gint  gint
136  get_riginfo (void)  get_riginfo (void)
137  {  {
138    gint retcode, strength, spoint, i, smax = 0, status;    gint retcode, strength, spoint, i, status, smax = 1;
139    freq_t freq;    freq_t freq;
140    rmode_t rmode;    rmode_t rmode;
141    pbwidth_t width;    pbwidth_t width;
# Line 208  get_riginfo (void) Line 144  get_riginfo (void)
144    GString *digits = g_string_new ("");    GString *digits = g_string_new ("");
145    GtkWidget *frequencylabel;    GtkWidget *frequencylabel;
146    gchar *message;    gchar *message;
147    
148    if (state.hlcounter == 0)    if (state.hlcounter == 0)
149      {      {
150        retcode = rig_get_freq (myrig, RIG_VFO_CURR, &freq);        retcode = rig_get_freq (myrig, RIG_VFO_CURR, &freq);
# Line 218  get_riginfo (void) Line 155  get_riginfo (void)
155            if ((preferences.hamlib == 2) || (preferences.hamlib == 4))            if ((preferences.hamlib == 2) || (preferences.hamlib == 4))
156              {              {
157                if (preferences.round == 0)                if (preferences.round == 0)
158                  g_string_sprintf (digits, "%Ld", freq);                  g_string_printf (digits, "%Ld", freq);
159                else                else
160                  g_string_sprintf (digits, "%Ld",                  g_string_printf (digits, "%Ld",
161                                    (long long) rintl (freq /                                    (long long) rintl (freq /
162                                                       pow (10,                                                       pow (10,
163                                                            preferences.                                                            preferences.
# Line 372  sethamlibwidgets (gint status) Line 309  sethamlibwidgets (gint status)
309    GtkWidget *mhzlabel, *mhzbutton, *bandoptionmenu, *bandentry,    GtkWidget *mhzlabel, *mhzbutton, *bandoptionmenu, *bandentry,
310      *frequencypixmap, *frequencyhbox, *frequencyhandlebox, *frequencylabel,      *frequencypixmap, *frequencyhbox, *frequencyhandlebox, *frequencylabel,
311      *modelabel, *modebutton, *modeoptionmenu, *modeentry, *rstlabel,      *modelabel, *modebutton, *modeoptionmenu, *modeentry, *rstlabel,
312      *rstbutton, *smeterhandlebox, *smeterhbox, *smeterdrawingarea,      *rstbutton, *smeterhandlebox, *smeterhbox, *smeterlabel,
313      *smeterpixmap, *powerlabel, *powerbutton, *powerhbox;      *smeterpixmap, *powerlabel, *powerbutton, *powerhbox;
314    
315    mhzlabel = lookup_widget (mainwindow, "mhzlabel");    mhzlabel = lookup_widget (mainwindow, "mhzlabel");
# Line 394  sethamlibwidgets (gint status) Line 331  sethamlibwidgets (gint status)
331    frequencylabel = lookup_widget (mainwindow, "frequencylabel");    frequencylabel = lookup_widget (mainwindow, "frequencylabel");
332    smeterhandlebox = lookup_widget (mainwindow, "smeterhandlebox");    smeterhandlebox = lookup_widget (mainwindow, "smeterhandlebox");
333    smeterhbox = lookup_widget (mainwindow, "smeterhbox");    smeterhbox = lookup_widget (mainwindow, "smeterhbox");
334    smeterdrawingarea = lookup_widget (mainwindow, "smeterdrawingarea");    smeterlabel = lookup_widget (mainwindow, "smeterlabel");
335    smeterpixmap = lookup_widget (mainwindow, "smeterpixmap");    smeterpixmap = lookup_widget (mainwindow, "smeterpixmap");
336    
337    if (status == 0)              /* hamlib disabled */    if (status == 0)              /* hamlib disabled */
# Line 416  sethamlibwidgets (gint status) Line 353  sethamlibwidgets (gint status)
353        gtk_widget_hide (frequencyhandlebox);        gtk_widget_hide (frequencyhandlebox);
354        gtk_widget_hide (smeterhandlebox);        gtk_widget_hide (smeterhandlebox);
355        gtk_widget_hide (smeterhbox);        gtk_widget_hide (smeterhbox);
356        gtk_widget_hide (smeterdrawingarea);        gtk_widget_hide (smeterlabel);
357        gtk_widget_hide (smeterpixmap);        gtk_widget_hide (smeterpixmap);
358      }      }
359    else if (status == 1)         /* hamlib enabled */    else if (status == 1)         /* hamlib enabled */
# Line 444  sethamlibwidgets (gint status) Line 381  sethamlibwidgets (gint status)
381        gtk_widget_hide (frequencyhandlebox);        gtk_widget_hide (frequencyhandlebox);
382        gtk_widget_hide (smeterhandlebox);        gtk_widget_hide (smeterhandlebox);
383        gtk_widget_hide (smeterhbox);        gtk_widget_hide (smeterhbox);
384        gtk_widget_hide (smeterdrawingarea);        gtk_widget_hide (smeterlabel);
385        gtk_widget_hide (smeterpixmap);        gtk_widget_hide (smeterpixmap);
386      }      }
387    else if (status == 2)         /* hamlib enabled with frequency on statusbar */    else if (status == 2)         /* hamlib enabled with frequency on statusbar */
# Line 472  sethamlibwidgets (gint status) Line 409  sethamlibwidgets (gint status)
409        gtk_widget_show (frequencyhandlebox);        gtk_widget_show (frequencyhandlebox);
410        gtk_widget_hide (smeterhandlebox);        gtk_widget_hide (smeterhandlebox);
411        gtk_widget_hide (smeterhbox);        gtk_widget_hide (smeterhbox);
412        gtk_widget_hide (smeterdrawingarea);        gtk_widget_hide (smeterlabel);
413        gtk_widget_hide (smeterpixmap);        gtk_widget_hide (smeterpixmap);
414      }      }
415    else if (status == 3)         /* hamlib enabled with s-meter on statusbar */    else if (status == 3)         /* hamlib enabled with s-meter on statusbar */
# Line 500  sethamlibwidgets (gint status) Line 437  sethamlibwidgets (gint status)
437        gtk_widget_hide (frequencyhandlebox);        gtk_widget_hide (frequencyhandlebox);
438        gtk_widget_show (smeterhandlebox);        gtk_widget_show (smeterhandlebox);
439        gtk_widget_show (smeterhbox);        gtk_widget_show (smeterhbox);
440        gtk_widget_show (smeterdrawingarea);        gtk_widget_show (smeterlabel);
441        gtk_widget_show (smeterpixmap);        gtk_widget_show (smeterpixmap);
442      }      }
443    else if (status == 4)         /* hamlib enabled with frequency and s-meter on statusbar */    else if (status == 4)         /* hamlib enabled with frequency and s-meter on statusbar */
# Line 528  sethamlibwidgets (gint status) Line 465  sethamlibwidgets (gint status)
465        gtk_widget_show (frequencyhandlebox);        gtk_widget_show (frequencyhandlebox);
466        gtk_widget_show (smeterhandlebox);        gtk_widget_show (smeterhandlebox);
467        gtk_widget_show (smeterhbox);        gtk_widget_show (smeterhbox);
468        gtk_widget_show (smeterdrawingarea);        gtk_widget_show (smeterlabel);
469        gtk_widget_show (smeterpixmap);        gtk_widget_show (smeterpixmap);
470      }      }
471  }  }
472    
 /* load s-meter pixmaps when main window is displayed */  
 void  
 on_mainwindow_show (GtkWidget * widget, gpointer user_data)  
 {  
   GtkWidget *drawingarea;  
   
   if ((preferences.hamlib == 3) || (preferences.hamlib == 4))  
     {  
       drawingarea = lookup_widget (mainwindow, "smeterdrawingarea");  
       loadsmeter (drawingarea);  
     }  
 }  
   
 /* create a new backing pixmap for the s-meter whenever the window is resized */  
 gboolean  
 on_smeterdrawingarea_configure_event (GtkWidget * widget,  
                                       GdkEventConfigure * event,  
                                       gpointer user_data)  
 {  
   if ((preferences.hamlib == 3) || (preferences.hamlib == 4))  
     {  
       if (pixmap)  
         gdk_pixmap_unref (pixmap);  
       pixmap = gdk_pixmap_new (widget->window, widget->allocation.width,  
                                widget->allocation.height, -1);  
     }  
   return FALSE;  
 }  
   
 /* copy the background pixmap to the drawing area for the s-meter */  
 gboolean  
 on_smeterdrawingarea_expose_event (GtkWidget * widget,  
                                    GdkEventExpose * event, gpointer user_data)  
 {  
   if ((preferences.hamlib == 3) || (preferences.hamlib == 4))  
     gdk_draw_pixmap (widget->window,  
                      widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap,  
                      event->area.x, event->area.y, event->area.x,  
                      event->area.y, event->area.width, event->area.height);  
   return FALSE;  
 }  
473  #endif  #endif

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26