/[xlog]/xlog/src/callbacks_preferencesdialog.c
ViewVC logotype

Diff of /xlog/src/callbacks_preferencesdialog.c

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

revision 1.31 by pa4tu, Thu Dec 9 13:41:55 2004 UTC revision 1.32 by pa4tu, Mon Jan 10 18:58:48 2005 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    
20  /* callbacks.c  /* callbacks_preferencesdialog.c
21   *   *
22   * Callbacks for the preferences dialog and the dialogs called from here.   * callbacks for the preferences dialog, both for the widgets and preferences.
  * For callbacks related to the widgets in the main window, see the files  
  * called callbacks_<widgetname>.[c|h].  
23   */   */
24    
   
25  #include <stdlib.h>  #include <stdlib.h>
26  #include <gtk/gtk.h>  #include <gtk/gtk.h>
27  #include <string.h>  #include <string.h>
28    
 #if WANT_HAMLIB  
 #       include <hamlib/rig.h>  
 #       include "hamlib-utils.h"  
 #endif  
   
29  #include "callbacks_preferencesdialog.h"  #include "callbacks_preferencesdialog.h"
30  #include "gui_utils.h"  #include "gui_utils.h"
31  #include "support.h"  #include "support.h"
# Line 43  Line 35 
35    
36  extern GtkWidget *mainwindow;  extern GtkWidget *mainwindow;
37  extern preferencestype preferences;  extern preferencestype preferences;
 extern statetype state;  
38  extern GtkWidget *preferencesdialog;  extern GtkWidget *preferencesdialog;
39  extern gint clocktimer, savetimer;  extern gint clocktimer, savetimer;
40  extern GList *logwindowlist;  extern GList *logwindowlist;
41    
   
42  #if WANT_HAMLIB  #if WANT_HAMLIB
43  /* return value for setting widgets */  /* return value for setting widgets */
44  static gint  gint
45  whichhamlibwidgets (gboolean frequency, gboolean smeter)  whichhamlibwidgets (gboolean frequency, gboolean smeter)
46  {  {
47          if (frequency && smeter)          if (frequency && smeter)
# Line 66  whichhamlibwidgets (gboolean frequency, Line 56  whichhamlibwidgets (gboolean frequency,
56  #endif  #endif
57    
58  /* check save value, if autosave value larger than 0 start timer */  /* check save value, if autosave value larger than 0 start timer */
59  static void  void
60  set_autosave (gint value, gint saving)  set_autosave (gint value, gint saving)
61  {  {
62          if (saving != 1 && preferences.saving == 1)          if (saving != 1 && preferences.saving == 1)
# Line 90  set_autosave (gint value, gint saving) Line 80  set_autosave (gint value, gint saving)
80  }  }
81    
82  /* set the theme if changed */  /* set the theme if changed */
83  static void  void
84  set_theme (gchar * color, gchar * font, gboolean alsoforlog)  set_theme (gchar * color, gchar * font, gboolean alsoforlog)
85  {  {
86          GtkWidget *clocklabel, *qsoframe, *dxccframe, *locatorframe;          GtkWidget *clocklabel, *qsoframe, *dxccframe, *locatorframe;
# Line 131  set_theme (gchar * color, gchar * font, Line 121  set_theme (gchar * color, gchar * font,
121  }  }
122    
123  /* set savepath if changed */  /* set savepath if changed */
124  static void  void
125  set_path (gchar * pathstr)  set_path (gchar * pathstr)
126  {  {
127          if (strlen (pathstr) > 0)          if (strlen (pathstr) > 0)
# Line 142  set_path (gchar * pathstr) Line 132  set_path (gchar * pathstr)
132  }  }
133    
134  /* set logs to load if changed */  /* set logs to load if changed */
135  static void  void
136  set_logstoload (gchar * logs)  set_logstoload (gchar * logs)
137  {  {
138          gchar **logsplit;          gchar **logsplit;
# Line 159  set_logstoload (gchar * logs) Line 149  set_logstoload (gchar * logs)
149  }  }
150    
151  /* set QTH locator */  /* set QTH locator */
152  static void  void
153  set_qthlocator (gchar * locator)  set_qthlocator (gchar * locator)
154  {  {
155          if (g_ascii_strcasecmp (locator, preferences.locator) != 0)          if (g_ascii_strcasecmp (locator, preferences.locator) != 0)
# Line 171  set_qthlocator (gchar * locator) Line 161  set_qthlocator (gchar * locator)
161  }  }
162    
163  /* set callsign */  /* set callsign */
164  static void  void
165  set_callsign (gchar * callsign)  set_callsign (gchar * callsign)
166  {  {
167          if (g_ascii_strcasecmp (callsign, preferences.callsign) != 0)          if (g_ascii_strcasecmp (callsign, preferences.callsign) != 0)
# Line 183  set_callsign (gchar * callsign) Line 173  set_callsign (gchar * callsign)
173  }  }
174    
175  /* enable/disable clock */  /* enable/disable clock */
176  static void  void
177  set_clock (gboolean on)  set_clock (gboolean on)
178  {  {
179          GtkWidget *clockhandlebox;          GtkWidget *clockhandlebox;
# Line 208  set_clock (gboolean on) Line 198  set_clock (gboolean on)
198    
199  #if WANT_HAMLIB  #if WANT_HAMLIB
200  /* check if hamlib has changed */  /* check if hamlib has changed */
201  static gboolean hamlib_changed (gint hamlibwidgets, gchar *radio, gchar *device,  gboolean hamlib_changed (gint hamlibwidgets, gchar *radio, gchar *device,
202          gint polltime, gchar *rigconf)          gint polltime, gchar *rigconf)
203  {  {
204    
# Line 229  static gboolean hamlib_changed (gint ham Line 219  static gboolean hamlib_changed (gint ham
219  }  }
220  #endif  #endif
221    
 /* ok button clicked */  
 void  
 on_preferencesokbutton_clicked (GtkButton * button, gpointer user_data)  
 {  
         GtkWidget *latentry, *longentry, *NScombo, *EWcombo,  
                 *unitscombo, *bandsentry, *bandoptionmenu, *modesentry,  
                 *modeoptionmenu, *bandsradiobutton1, *modesradiobutton1,  
                 *clockcheckbutton, *examplelabel, *autosavecombo,  
                 *themecheckbutton, *pathentry, *logsentry, *qthlocatorentry,  
                 *callsignentry, *fontentry, *bandentry, *modeentry,  
                 *savecheckbutton, *autosavecheckbutton, *typeaheadfindcheckbutton,  
                 *remoteradiobutton1;  
         gchar *temp, *font;  
         gboolean toggletrue, logcoloryesno;  
         gint autosavevalue, saving;  
 #if WANT_HAMLIB  
         GtkWidget *hamlibcheckbutton, *radiocombo, *devicecombo,  
                 *frequencycheckbutton, *digitscombo, *smetercheckbutton,  
                 *pollcombo, *pollingcheckbutton, *rigsetconfentry;  
         gchar *radio = NULL, *device = NULL, *digits = NULL, *pollstr = NULL,  
                 *rigconf = NULL;  
         gboolean hamlibyes, frequencyyesno, smeteryesno, pollingyes;  
         gint hamlibwidgets = 0;  
         gboolean hamlibresult;  
 #endif  
   
         /* check autosave value */  
         autosavecheckbutton =  
                 lookup_widget (preferencesdialog, "autosavecheckbutton");  
         savecheckbutton =  
                 lookup_widget (preferencesdialog, "savecheckbutton");  
         if (gtk_toggle_button_get_active  
                         (GTK_TOGGLE_BUTTON (autosavecheckbutton)))  
                 saving = 1;  
         else if (gtk_toggle_button_get_active  
                  (GTK_TOGGLE_BUTTON (savecheckbutton)))  
                 saving = 2;  
         else  
                 saving = 0;  
         autosavecombo =  
                 lookup_widget (preferencesdialog, "autosavecombo");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (GTK_BIN(autosavecombo)->child),  
                 0, -1);  
         autosavevalue = atoi (temp);  
         set_autosave (autosavevalue, saving);  
   
         /* check type ahead find */  
         typeaheadfindcheckbutton = lookup_widget  
                 (preferencesdialog, "typeaheadfindcheckbutton");  
         if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON  
                                                 (typeaheadfindcheckbutton)))  
                 preferences.typeaheadfind = 1;  
         else  
                 preferences.typeaheadfind = 0;  
   
         /* remote logging */  
         remoteradiobutton1 =  
                 lookup_widget (preferencesdialog, "remoteradiobutton1");  
         if (gtk_toggle_button_get_active  
                         (GTK_TOGGLE_BUTTON (remoteradiobutton1)))  
                 preferences.remoteadding = 1;  
         else  
                 preferences.remoteadding = 2;  
   
         /* apply theme color */  
         fontentry = lookup_widget (preferencesdialog, "fontentry");  
         examplelabel = lookup_widget (preferencesdialog, "examplelabel");  
         themecheckbutton =  
                 lookup_widget (preferencesdialog, "themecheckbutton");  
         logcoloryesno =  
                 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON  
                                                                 (themecheckbutton));  
         temp = getlabelcolor (examplelabel);  
         font = gtk_editable_get_chars (GTK_EDITABLE (fontentry), 0, -1);  
         set_theme (temp, font, logcoloryesno);  
         g_free (font);  
   
         /* get path for the logs */  
         pathentry = lookup_widget (preferencesdialog, "pathentry");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (pathentry), 0, -1);  
         set_path (temp);  
   
         /* get logs to load */  
         logsentry = lookup_widget (preferencesdialog, "logsentry");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (logsentry), 0, -1);  
         set_logstoload (temp);  
   
         /* locator */  
         qthlocatorentry =  
                 lookup_widget (preferencesdialog, "qthlocatorentry");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (qthlocatorentry), 0, -1);  
         set_qthlocator (temp);  
   
         /* callsign */  
         callsignentry = lookup_widget (preferencesdialog, "callsignentry");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (callsignentry), 0, -1);  
         set_callsign (temp);  
   
         /* set latitude, longitude and units */  
         latentry = lookup_widget (preferencesdialog, "latentry");  
         longentry = lookup_widget (preferencesdialog, "longentry");  
         NScombo = lookup_widget (preferencesdialog, "NScombo");  
         EWcombo = lookup_widget (preferencesdialog, "EWcombo");  
         unitscombo = lookup_widget (preferencesdialog, "unitscombo");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (latentry), 0, -1);  
         g_strstrip (temp);  
         if (strlen (temp) == 0)  
                 preferences.latitude = 0.0;  
         else  
                 preferences.latitude = atof (temp);  
         temp = gtk_editable_get_chars (GTK_EDITABLE (longentry), 0, -1);  
         g_strstrip (temp);  
         if (strlen (temp) == 0)  
                 preferences.longitude = 0.0;  
         else  
                 preferences.longitude = atof (temp);  
   
         preferences.NS = gtk_combo_box_get_active (GTK_COMBO_BOX (NScombo)) + 1;  
         preferences.EW = gtk_combo_box_get_active (GTK_COMBO_BOX (EWcombo)) + 1;  
         preferences.units = gtk_combo_box_get_active  
                 (GTK_COMBO_BOX (unitscombo))  == 1 ? 0 : 1;  
   
         state.mylocation = setlocation (preferences.latitude, preferences.NS,  
                 preferences.longitude, preferences.EW);  
   
         /* get the comma seperated list of modes and assign  
          * to the optionmenu */  
         modesentry = lookup_widget (preferencesdialog, "modesentry");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (modesentry), 0, -1);  
         makemodeoptionmenu (temp);  
         preferences.modes = g_strdup (temp);  
   
         /* get the comma seperated list of bands and assign to the optionmenu */  
         bandsentry = lookup_widget (preferencesdialog, "bandsentry");  
         temp = gtk_editable_get_chars (GTK_EDITABLE (bandsentry), 0, -1);  
         makebandoptionmenu (temp);  
         preferences.bands = g_strdup (temp);  
   
         /* set visibility of widgets in QSO frame depending on  
          * state of toggle buttons */  
         bandsradiobutton1 =  
                 lookup_widget (preferencesdialog, "bandsradiobutton1");  
         bandentry = lookup_widget (mainwindow, "bandentry");  
         bandoptionmenu = lookup_widget (mainwindow, "bandoptionmenu");  
         toggletrue =  
                 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON  
                                                                 (bandsradiobutton1));  
         if (toggletrue)  
         {  
                 preferences.bandseditbox = 1;  
                 gtk_widget_hide (bandoptionmenu);  
                 gtk_widget_show (bandentry);  
         }  
         else  
         {  
                 preferences.bandseditbox = 0;  
                 gtk_widget_hide (bandentry);  
                 gtk_widget_show (bandoptionmenu);  
         }  
         modesradiobutton1 =  
                 lookup_widget (preferencesdialog, "modesradiobutton1");  
         modeentry = lookup_widget (mainwindow, "modeentry");  
         modeoptionmenu = lookup_widget (mainwindow, "modeoptionmenu");  
         toggletrue =  
                 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON  
                                                                 (modesradiobutton1));  
         if (toggletrue)  
         {  
                 preferences.modeseditbox = 1;  
                 gtk_widget_hide (modeoptionmenu);  
                 gtk_widget_show (modeentry);  
         }  
         else  
         {  
                 preferences.modeseditbox = 0;  
                 gtk_widget_hide (modeentry);  
                 gtk_widget_show (modeoptionmenu);  
         }  
   
 /* hamlib */  
 #if WANT_HAMLIB  
         hamlibcheckbutton =  
                 lookup_widget (preferencesdialog, "hamlibcheckbutton");  
         frequencycheckbutton =  
                 lookup_widget (preferencesdialog, "frequencycheckbutton");  
         smetercheckbutton =  
                 lookup_widget (preferencesdialog, "smetercheckbutton");  
         pollingcheckbutton =  
                 lookup_widget (preferencesdialog, "pollingcheckbutton");  
         radiocombo = lookup_widget (preferencesdialog, "radiocombo");  
         devicecombo = lookup_widget (preferencesdialog, "devicecombo");  
         digitscombo = lookup_widget (preferencesdialog, "digitscombo");  
         pollcombo = lookup_widget (preferencesdialog, "pollcombo");  
         rigsetconfentry = lookup_widget (preferencesdialog, "rigsetconfentry");  
   
         hamlibyes = gtk_toggle_button_get_active  
                 (GTK_TOGGLE_BUTTON (hamlibcheckbutton));  
         frequencyyesno = gtk_toggle_button_get_active  
                 (GTK_TOGGLE_BUTTON (frequencycheckbutton));  
         smeteryesno = gtk_toggle_button_get_active  
                 (GTK_TOGGLE_BUTTON (smetercheckbutton));  
         pollingyes = gtk_toggle_button_get_active  
                 (GTK_TOGGLE_BUTTON (pollingcheckbutton));  
         radio = gtk_editable_get_chars  
                 (GTK_EDITABLE (GTK_BIN(radiocombo)->child), 0,  -1);  
         device = gtk_editable_get_chars  
                 (GTK_EDITABLE (GTK_BIN(devicecombo)->child), 0, -1);  
         digits = gtk_editable_get_chars  
                 (GTK_EDITABLE (GTK_BIN(digitscombo)->child), 0, -1);  
         if (pollingyes)  
                 pollstr = gtk_editable_get_chars  
                         (GTK_EDITABLE (GTK_BIN(pollcombo)->child), 0, -1);  
         else  
                 pollstr = g_strdup ("0");  
         rigconf = gtk_editable_get_chars (GTK_EDITABLE (rigsetconfentry), 0, -1);  
         if (strlen(rigconf) == 0) rigconf = g_strdup ("?");  
   
         if (hamlibyes)  
                 hamlibwidgets = whichhamlibwidgets (frequencyyesno, smeteryesno);  
         else  
                 hamlibwidgets = 0;  
   
         if (smeteryesno)  
                 sethamlibwidgets (hamlibwidgets, TRUE);  
         else  
                 sethamlibwidgets (hamlibwidgets, FALSE);  
   
         /* hamlib should be started or restarted because settings have changed */  
         if (hamlib_changed (hamlibwidgets, radio, device, atoi(pollstr), rigconf))  
         {  
                 if (preferences.hamlib > 0) stop_hamlib ();  
                 preferences.rigconf = g_strdup (rigconf);  
                 hamlibresult = start_hamlib (radio, device, RIG_DEBUG_NONE, atoi (pollstr));  
                 preferences.radio = g_strdup (radio);  
                 preferences.device = g_strdup (device);  
                 preferences.polltime = atoi (pollstr);  
                 preferences.round = atoi (digits);  
         }  
         else  
         {  
                 if (hamlibwidgets == 0)  
                 {  
                         /* hamlib disabled, close rig */  
                         stop_hamlib ();  
                         preferences.radio = g_strdup ("Dummy");  
                         preferences.device = g_strdup ("/dev/ttyS1");  
                         preferences.rigconf = g_strdup ("?");  
                         preferences.round = 0;  
                         preferences.polltime = 0;  
                 }  
         }  
         preferences.hamlib = hamlibwidgets;  
   
                 g_free (digits);  
         g_free (pollstr);  
         g_free (radio);  
         g_free (device);  
         g_free (rigconf);  
 #endif  
   
         /* clock */  
         clockcheckbutton =  
                 lookup_widget (preferencesdialog, "clockcheckbutton");  
         toggletrue = gtk_toggle_button_get_active  
                 (GTK_TOGGLE_BUTTON (clockcheckbutton));  
         set_clock (toggletrue);  
   
         g_free (temp);  
         gtk_widget_set_sensitive (mainwindow, 1);  
         gtk_widget_destroy (preferencesdialog);  
 }  
   
 /* toggle hamlib widgets in the preferences dialog */  
 void  
 on_hamlibcheckbutton_toggled (GtkToggleButton * togglebutton,  
                                                 gpointer user_data)  
 {  
         GtkWidget *hamlibframe, *pollingframe, *frequencyframe;  
         gboolean toggletrue;  
   
         hamlibframe = lookup_widget (preferencesdialog, "hamlibframe");  
         toggletrue = gtk_toggle_button_get_active (togglebutton);  
         if (toggletrue)  
         {  
                 gtk_widget_set_sensitive (hamlibframe, 1);  
                 if (preferences.hamlib == 0)  
                 {  
                         pollingframe = lookup_widget (preferencesdialog, "pollingframe");  
                         gtk_widget_set_sensitive (pollingframe, 0);  
                         frequencyframe = lookup_widget (preferencesdialog, "frequencyframe");  
                         gtk_widget_set_sensitive (frequencyframe, 0);  
                 }  
         }  
         else  
                 gtk_widget_set_sensitive (hamlibframe, 0);  
 }  
   
 /* cancel the preferences dialog */  
 void  
 on_preferencescancelbutton_clicked (GtkButton * button, gpointer user_data)  
 {  
         gtk_widget_set_sensitive (mainwindow, 1);  
         gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (button)));  
 }  
   
 /* the preferences dialog is deleted */  
 gboolean  
 on_preferencesdialog_delete_event (GtkWidget * widget, GdkEvent * event,  
                                          gpointer user_data)  
 {  
         gtk_widget_set_sensitive (mainwindow, 1);  
         return FALSE;  
 }  
   
222  /* toggle sensistivity of band widgets in preferences dialog */  /* toggle sensistivity of band widgets in preferences dialog */
223  void  void
224  on_bandsradiobutton_toggled (GtkToggleButton * togglebutton,  on_bandsradiobutton_toggled (GtkToggleButton * togglebutton,
# Line 610  on_autosavecheckbutton_toggled (GtkToggl Line 286  on_autosavecheckbutton_toggled (GtkToggl
286    
287  /* check save */  /* check save */
288  void  void
289  on_savecheckbutton_toggled (GtkToggleButton * togglebutton,  on_savecheckbutton_toggled (GtkToggleButton * togglebutton, gpointer user_data)
                                         gpointer user_data)  
290  {  {
291          gboolean state;          gboolean state;
292          GtkWidget *autosavecheckbutton, *autosaveframe;          GtkWidget *autosavecheckbutton, *autosaveframe;
# Line 630  on_savecheckbutton_toggled (GtkToggleBut Line 305  on_savecheckbutton_toggled (GtkToggleBut
305  /* check polling */  /* check polling */
306  void  void
307  on_pollingcheckbutton_toggled (GtkToggleButton * togglebutton,  on_pollingcheckbutton_toggled (GtkToggleButton * togglebutton,
308                                                   gpointer user_data)          gpointer user_data)
309  {  {
310          gboolean state;          gboolean state;
311          GtkWidget *pollingframe;          GtkWidget *pollingframe;
# Line 643  on_pollingcheckbutton_toggled (GtkToggle Line 318  on_pollingcheckbutton_toggled (GtkToggle
318  /* check frequency meter */  /* check frequency meter */
319  void  void
320  on_frequencycheckbutton_toggled (GtkToggleButton * togglebutton,  on_frequencycheckbutton_toggled (GtkToggleButton * togglebutton,
321                                   gpointer user_data)          gpointer user_data)
322  {  {
323          gboolean state;          gboolean state;
324          GtkWidget *frequencyframe;          GtkWidget *frequencyframe;
# Line 653  on_frequencycheckbutton_toggled (GtkTogg Line 328  on_frequencycheckbutton_toggled (GtkTogg
328          gtk_widget_set_sensitive (frequencyframe, state);          gtk_widget_set_sensitive (frequencyframe, state);
329  }  }
330    
331    /* toggle hamlib widgets in the preferences dialog */
332    void
333    on_hamlibcheckbutton_toggled (GtkToggleButton * togglebutton,
334            gpointer user_data)
335    {
336            GtkWidget *hamlibframe, *pollingframe, *frequencyframe,
337                    *frequencycheckbutton, *pollingcheckbutton;
338            gboolean state;
339    
340            hamlibframe = lookup_widget (preferencesdialog, "hamlibframe");
341            state = gtk_toggle_button_get_active (togglebutton);
342            gtk_widget_set_sensitive (hamlibframe, state);
343    
344            if (state)
345            {
346                    pollingcheckbutton = lookup_widget (preferencesdialog,
347                            "pollingcheckbutton");
348                    pollingframe = lookup_widget (preferencesdialog, "pollingframe");
349                    state = gtk_toggle_button_get_active
350                            (GTK_TOGGLE_BUTTON (pollingcheckbutton));
351                    gtk_widget_set_sensitive (pollingframe, state);
352    
353                    frequencycheckbutton = lookup_widget (preferencesdialog,
354                            "frequencycheckbutton");
355                    frequencyframe = lookup_widget (preferencesdialog, "frequencyframe");
356                    state = gtk_toggle_button_get_active
357                            (GTK_TOGGLE_BUTTON (frequencycheckbutton));
358                    gtk_widget_set_sensitive (frequencyframe, state);
359            }
360    }
361    
 /* end of file */  

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.32

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