/[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.16 by pa4tu, Tue Aug 26 22:27:48 2003 UTC revision 1.17 by pa4tu, Wed Aug 27 17:17:15 2003 UTC
# Line 28  Line 28 
28  #include "utils.h"  #include "utils.h"
29  #include "support.h"  #include "support.h"
30  #include "string.h"  #include "string.h"
31    #include "pixmaps/s0.xpm"
32    #include "pixmaps/s1.xpm"
33    #include "pixmaps/s2.xpm"
34    #include "pixmaps/s3.xpm"
35    #include "pixmaps/s4.xpm"
36    #include "pixmaps/s5.xpm"
37    #include "pixmaps/s6.xpm"
38    #include "pixmaps/s7.xpm"
39    #include "pixmaps/s8.xpm"
40    #include "pixmaps/s9.xpm"
41    
42    typedef struct
43    {
44      gchar **xpmdata;
45      GdkPixmap *pixmap;
46      GdkBitmap *mask;
47    }
48    typeLevel;
49    
50    typeLevel S[] = {
51      {s0_xpm, NULL, NULL},
52      {s1_xpm, NULL, NULL},
53      {s2_xpm, NULL, NULL},
54      {s3_xpm, NULL, NULL},
55      {s4_xpm, NULL, NULL},
56      {s5_xpm, NULL, NULL},
57      {s6_xpm, NULL, NULL},
58      {s7_xpm, NULL, NULL},
59      {s8_xpm, NULL, NULL},
60      {s9_xpm, NULL, NULL},
61      {NULL, NULL, NULL}
62    };
63  extern preferencestype preferences;  extern preferencestype preferences;
64  extern statetype state;  extern statetype state;
65  extern GtkWidget *mainwindow;  extern GtkWidget *mainwindow;
# Line 37  gint svalue[10]; Line 68  gint svalue[10];
68  GList *riglist = NULL;  GList *riglist = NULL;
69  gint hamlibtimer = -1;  gint hamlibtimer = -1;
70  RIG *myrig;  RIG *myrig;
71    GdkPixmap *pixmap = NULL;
72    
73    /* load xpm data from s-meter pixmaps */
74    void
75    loadsmeter (GtkWidget * widget)
76    {
77      gint i = 0;
78    
79      while (S[i].xpmdata)
80        {
81          S[i].pixmap = gdk_pixmap_create_from_xpm_d (widget->window,
82                                                      &S[i].mask, NULL,
83                                                      S[i].xpmdata);
84          i++;
85        }
86    }
87    
88    /* copy a s-meter pixmap to pixmap depending on the value of smax */
89    static void
90    draw_smeter (gint value)
91    {
92      GtkWidget *drawingarea;
93    
94      drawingarea = lookup_widget (mainwindow, "smeterdrawingarea");
95      /* clear background */
96      gdk_draw_rectangle (pixmap, drawingarea->style->white_gc, TRUE, 0, 0,
97        drawingarea->allocation.width, drawingarea->allocation.height);
98      gdk_draw_drawable (pixmap, drawingarea->style->fg_gc[GTK_STATE_NORMAL],
99        S[value].pixmap, 0, 0, 0, 0,
100        drawingarea->allocation.width, drawingarea->allocation.height);
101      gtk_widget_queue_draw_area (drawingarea, 0, 0,
102        drawingarea->allocation.width, drawingarea->allocation.height);
103      /* see expose_event further down */
104    }
105    
106  /* stop timer if used and close rig */  /* stop timer if used and close rig */
107  void  void
# Line 162  get_rigid (gchar * rig) Line 227  get_rigid (gchar * rig)
227                  return (-1);                  return (-1);
228  }  }
229    
 static void  
 draw_smeter (gint value)  
 {  
         GtkWidget *smeterlabel;  
         gchar *valtext;  
   
         smeterlabel = lookup_widget (mainwindow, "smeterlabel");  
         valtext = g_strdup_printf ("S %d", value);  
         gtk_label_set_text (GTK_LABEL (smeterlabel), valtext);  
         g_free (valtext);  
   
 }  
   
230  /* return string with mode */  /* return string with mode */
231  gchar *  gchar *
232  rigmode (gint mode)  rigmode (gint mode)
# Line 408  sethamlibwidgets (gint status) Line 460  sethamlibwidgets (gint status)
460                  *frequencypixmap, *frequencyhbox, *frequencyhandlebox,                  *frequencypixmap, *frequencyhbox, *frequencyhandlebox,
461                  *frequencylabel, *modelabel, *modebutton, *modeoptionmenu,                  *frequencylabel, *modelabel, *modebutton, *modeoptionmenu,
462                  *modeentry, *rstlabel, *rstbutton, *smeterhandlebox,                  *modeentry, *rstlabel, *rstbutton, *smeterhandlebox,
463                  *smeterhbox, *smeterlabel, *smeterpixmap, *powerlabel,                  *smeterhbox, *smeterdrawingarea, *smeterpixmap, *powerlabel,
464                  *powerbutton, *powerhbox;                  *powerbutton, *powerhbox;
465    
466          mhzlabel = lookup_widget (mainwindow, "mhzlabel");          mhzlabel = lookup_widget (mainwindow, "mhzlabel");
# Line 430  sethamlibwidgets (gint status) Line 482  sethamlibwidgets (gint status)
482          frequencylabel = lookup_widget (mainwindow, "frequencylabel");          frequencylabel = lookup_widget (mainwindow, "frequencylabel");
483          smeterhandlebox = lookup_widget (mainwindow, "smeterhandlebox");          smeterhandlebox = lookup_widget (mainwindow, "smeterhandlebox");
484          smeterhbox = lookup_widget (mainwindow, "smeterhbox");          smeterhbox = lookup_widget (mainwindow, "smeterhbox");
485          smeterlabel = lookup_widget (mainwindow, "smeterlabel");          smeterdrawingarea = lookup_widget (mainwindow, "smeterdrawingarea");
486          smeterpixmap = lookup_widget (mainwindow, "smeterpixmap");          smeterpixmap = lookup_widget (mainwindow, "smeterpixmap");
487    
488          if (status == 0)        /* hamlib disabled */          if (status == 0)        /* hamlib disabled */
# Line 452  sethamlibwidgets (gint status) Line 504  sethamlibwidgets (gint status)
504                  gtk_widget_hide (frequencyhandlebox);                  gtk_widget_hide (frequencyhandlebox);
505                  gtk_widget_hide (smeterhandlebox);                  gtk_widget_hide (smeterhandlebox);
506                  gtk_widget_hide (smeterhbox);                  gtk_widget_hide (smeterhbox);
507                  gtk_widget_hide (smeterlabel);                  gtk_widget_hide (smeterdrawingarea);
508                  gtk_widget_hide (smeterpixmap);                  gtk_widget_hide (smeterpixmap);
509          }          }
510          else if (status == 1)   /* hamlib enabled */          else if (status == 1)   /* hamlib enabled */
# Line 474  sethamlibwidgets (gint status) Line 526  sethamlibwidgets (gint status)
526                  gtk_widget_hide (frequencyhandlebox);                  gtk_widget_hide (frequencyhandlebox);
527                  gtk_widget_hide (smeterhandlebox);                  gtk_widget_hide (smeterhandlebox);
528                  gtk_widget_hide (smeterhbox);                  gtk_widget_hide (smeterhbox);
529                  gtk_widget_hide (smeterlabel);                  gtk_widget_hide (smeterdrawingarea);
530                  gtk_widget_hide (smeterpixmap);                  gtk_widget_hide (smeterpixmap);
531          }          }
532          else if (status == 2)   /* hamlib enabled with frequency on statusbar */          else if (status == 2)   /* hamlib enabled with frequency on statusbar */
# Line 496  sethamlibwidgets (gint status) Line 548  sethamlibwidgets (gint status)
548                  gtk_widget_show (frequencyhandlebox);                  gtk_widget_show (frequencyhandlebox);
549                  gtk_widget_hide (smeterhandlebox);                  gtk_widget_hide (smeterhandlebox);
550                  gtk_widget_hide (smeterhbox);                  gtk_widget_hide (smeterhbox);
551                  gtk_widget_hide (smeterlabel);                  gtk_widget_hide (smeterdrawingarea);
552                  gtk_widget_hide (smeterpixmap);                  gtk_widget_hide (smeterpixmap);
553          }          }
554          else if (status == 3)   /* hamlib enabled with s-meter on statusbar */          else if (status == 3)   /* hamlib enabled with s-meter on statusbar */
# Line 518  sethamlibwidgets (gint status) Line 570  sethamlibwidgets (gint status)
570                  gtk_widget_hide (frequencyhandlebox);                  gtk_widget_hide (frequencyhandlebox);
571                  gtk_widget_show (smeterhandlebox);                  gtk_widget_show (smeterhandlebox);
572                  gtk_widget_show (smeterhbox);                  gtk_widget_show (smeterhbox);
573                  gtk_widget_show (smeterlabel);                  gtk_widget_show (smeterdrawingarea);
574                  gtk_widget_show (smeterpixmap);                  gtk_widget_show (smeterpixmap);
575          }          }
576          else if (status == 4)          else if (status == 4)
# Line 540  sethamlibwidgets (gint status) Line 592  sethamlibwidgets (gint status)
592                  gtk_widget_show (frequencyhandlebox);                  gtk_widget_show (frequencyhandlebox);
593                  gtk_widget_show (smeterhandlebox);                  gtk_widget_show (smeterhandlebox);
594                  gtk_widget_show (smeterhbox);                  gtk_widget_show (smeterhbox);
595                  gtk_widget_show (smeterlabel);                  gtk_widget_show (smeterdrawingarea);
596                  gtk_widget_show (smeterpixmap);                  gtk_widget_show (smeterpixmap);
597          }          }
598  }  }
# Line 559  GString *convert_frequency (void) Line 611  GString *convert_frequency (void)
611          g_strdelimit (digits->str, " ", '0');          g_strdelimit (digits->str, " ", '0');
612    return digits;    return digits;
613  }  }
614    
615    /* load s-meter pixmaps when main window is displayed */
616    void
617    on_mainwindow_show (GtkWidget * widget, gpointer user_data)
618    {
619      GtkWidget *drawingarea;
620    
621      if ((preferences.hamlib == 3) || (preferences.hamlib == 4))
622        {
623          drawingarea = lookup_widget (mainwindow, "smeterdrawingarea");
624          loadsmeter (drawingarea);
625        }
626    }
627    
628    /* create a new backing pixmap for the s-meter whenever the window is resized */
629    gboolean
630    on_smeterdrawingarea_configure_event (GtkWidget * widget,
631      GdkEventConfigure * event, gpointer user_data)
632    {
633      if ((preferences.hamlib == 3) || (preferences.hamlib == 4))
634        {
635          if (pixmap)       g_object_unref (pixmap);
636          pixmap = gdk_pixmap_new (widget->window,
637            widget->allocation.width, widget->allocation.height, -1);
638        }
639      return FALSE;
640    }
641    
642    /* copy the background pixmap to the drawing area for the s-meter */
643    gboolean
644    on_smeterdrawingarea_expose_event (GtkWidget * widget,
645      GdkEventExpose * event, gpointer user_data)
646    {
647      if ((preferences.hamlib == 3) || (preferences.hamlib == 4))
648        gdk_draw_drawable (widget->window,
649          widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap,
650          event->area.x, event->area.y, event->area.x,
651          event->area.y, event->area.width, event->area.height);
652      return FALSE;
653    }
654  #endif  #endif

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

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