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

Diff of /xlog/src/callbacks_menu.c

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

revision 1.25 by pa4tu, Sat May 24 18:54:06 2003 UTC revision 1.26 by pa4tu, Sun May 25 18:55:13 2003 UTC
# Line 24  Line 24 
24  #include <gtk/gtk.h>  #include <gtk/gtk.h>
25  #include <stdio.h>  #include <stdio.h>
26  #include <stdlib.h>  #include <stdlib.h>
27    #include <sys/types.h>
28    #include <sys/stat.h>
29    #include <unistd.h>
30    #include <time.h>
31    
32  #include "callbacks_menu.h"  #include "callbacks_menu.h"
33  #include "callbacks_printdialog.h"  #include "callbacks_printdialog.h"
# Line 53  extern GList *searchhistory; Line 57  extern GList *searchhistory;
57  extern GList *logwindowlist;  extern GList *logwindowlist;
58    
59  #if WANT_HAMLIB  #if WANT_HAMLIB
60  extern GList *riglist;    extern GList *riglist;
61      extern gchar *xlogdir;
62      gint saved_fd;
63      gint tracetimer = -1;
64      fileinfo finfo;
65  #endif  #endif
66    
67  void  void
# Line 982  on_menu_dialogs_activate(GtkMenuItem * m Line 990  on_menu_dialogs_activate(GtkMenuItem * m
990    gtk_widget_show (dialogsdialog);    gtk_widget_show (dialogsdialog);
991  }  }
992    
993    /* check if tracefile has changed */
994    static int fileupdated(void)
995    {
996      struct stat s;
997      gint status;
998    
999      if (finfo.filename)
1000      {
1001        status = stat (finfo.filename, &s);
1002          if (finfo.modified != s.st_mtime)
1003            return 1;
1004      }
1005      return -1;
1006    }
1007    
1008    
1009    static gint
1010    updatetrace (gpointer data)
1011    {
1012      GtkWidget *tracetextview;
1013      GtkTextBuffer *buffer;
1014      GtkTextIter start, end;
1015      GtkTextMark *mark;
1016      FILE *fd;
1017      gint numread = 0;
1018      gchar buf[1025];
1019    
1020      fflush(stderr);
1021      if (fileupdated ())
1022        {
1023          if ((fd = fopen(finfo.filename, "r")))
1024            {
1025              tracetextview = lookup_widget((GtkWidget *)data, "tracetextview");
1026              buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tracetextview));
1027              gtk_text_buffer_get_bounds (buffer, &start, &end);
1028              fseek (fd, finfo.filesize, SEEK_SET);
1029              while (!feof(fd))  
1030                {
1031                  numread = fread(buf, 1, 1024, fd);
1032                  gtk_text_buffer_insert (buffer, &end, buf, numread);
1033                  mark = gtk_text_buffer_get_mark (buffer, "insert");
1034                  gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tracetextview),
1035                    mark, 0.0, FALSE, 0.0, 1.0);
1036                }
1037              fclose (fd);
1038            }
1039        }
1040      return 1;
1041    }
1042    
1043  void  void
1044  on_trace_hamlib_activate(GtkMenuItem * menuitem, gpointer user_data)  on_trace_hamlib_activate(GtkMenuItem * menuitem, gpointer user_data)
1045  {  {
1046  #if WANT_HAMLIB  #if WANT_HAMLIB
1047    GtkWidget *tracedialog;    GtkWidget *tracedialog, *tracelabel;
1048      gint hamlibresult;
1049      gchar *tracestr;
1050                    
1051      /* redirect stderr to a file and start the file monitor,
1052         stop and start hamlib with tracing enabled */
1053    tracedialog = create_tracedialog();    tracedialog = create_tracedialog();
1054    gtk_widget_set_sensitive (mainwindow, 0);  
1055      saved_fd = dup (STDERR_FILENO);
1056      finfo.filename = g_strdup_printf ( "%s/hamlib.out", xlogdir);
1057      stop_hamlib();
1058      finfo.fd = freopen (finfo.filename, "w", stderr);
1059      hamlibresult = start_hamlib (preferences.radio, preferences.device,
1060        RIG_DEBUG_TRACE, preferences.polltime);
1061      tracetimer = gtk_timeout_add (1000, (GtkFunction) updatetrace, tracedialog);
1062    
1063      tracelabel = lookup_widget(tracedialog, "tracelabel");
1064      tracestr = g_strdup_printf ( _("Saving to %s"), finfo.filename);
1065      gtk_label_set_text (GTK_LABEL (tracelabel), tracestr);
1066      g_free(tracestr);
1067    gtk_widget_show (tracedialog);    gtk_widget_show (tracedialog);
1068  #endif  #endif
1069  }  }

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

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