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

Diff of /xlog/src/callbacks_mainwindow.c

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

revision 1.3 by pa4tu, Sat Jan 11 16:13:00 2003 UTC revision 1.4 by pa4tu, Mon Mar 3 15:34:42 2003 UTC
# Line 22  Line 22 
22   */   */
23    
24  #include <gtk/gtk.h>  #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>  
25    
26  #include "callbacks_mainwindow.h"  #include "callbacks_mainwindow.h"
27  #include "interface.h"  #include "interface.h"
# Line 39  extern preferencestype preferences; Line 38  extern preferencestype preferences;
38  extern statetype state;  extern statetype state;
39  extern GList *logwindowlist;  extern GList *logwindowlist;
40    
 #if WANT_HAMLIB  
 extern GdkPixmap *pixmap;  
 #endif  
   
 /* catch keys for the main window, so we can have shortcuts */  
 gboolean  
 on_mainwindow_key_press_event (GtkWidget * widget, GdkEventKey * event,  
                                gpointer user_data)  
 {  
   GtkWidget *abutton, *ubutton, *dbutton, *menubar, *save, *clear, *search,  
     *new, *clickall;  
   GtkAdjustment *adj;  
   GList *selection;  
   gint current_row;  
   logtype *logwindow;  
   
   
   switch (event->keyval)  
     {  
     case GDK_Control_L: /* did we push the control key ? */  
     case GDK_Control_R:  
       state.controlkey = TRUE;  
       return TRUE;  
       break;  
     case GDK_a:         /* control a = add a QSO */  
       if (state.controlkey)  
         {  
           abutton = lookup_widget (mainwindow, "abutton");  
           gtk_signal_emit_by_name (GTK_OBJECT (abutton), "clicked");  
         }  
       return TRUE;  
       break;  
     case GDK_u:         /* control u = update a selected QSO */  
       if (state.controlkey)  
         {  
           ubutton = lookup_widget (mainwindow, "ubutton");  
           gtk_signal_emit_by_name (GTK_OBJECT (ubutton), "clicked");  
         }  
       return TRUE;  
       break;  
     case GDK_d:         /* control d = delete a selected QSO from the log */  
       if (state.controlkey)  
         {  
           dbutton = lookup_widget (mainwindow, "dbutton");  
           gtk_signal_emit_by_name (GTK_OBJECT (dbutton), "clicked");  
         }  
       return TRUE;  
       break;  
     case GDK_s:         /* control s = save log */  
       if (state.controlkey)  
         {  
           state.controlkey = FALSE;  
           menubar = lookup_widget (mainwindow, "menubar");  
           save = lookup_widget (menubar, "save");  
           gtk_signal_emit_by_name (GTK_OBJECT (save), "activate");  
         }  
       return TRUE;  
       break;  
     case GDK_y:         /* control y = clear qso frame */  
       if (state.controlkey)  
         {  
           clear = lookup_widget (create_qsoframemenu (), "clearframe");  
           gtk_signal_emit_by_name (GTK_OBJECT (clear), "activate");  
         }  
       return TRUE;  
       break;  
     case GDK_k:         /* control k = click all buttons */  
       if (state.controlkey)  
         {  
           clickall = lookup_widget (create_qsoframemenu (), "clickall");  
           gtk_signal_emit_by_name (GTK_OBJECT (clickall), "activate");  
         }  
       return TRUE;  
       break;  
     case GDK_f:         /* control f = find QSO in the log */  
       if (state.controlkey)  
         {  
           state.controlkey = FALSE;  
           menubar = lookup_widget (mainwindow, "menubar");  
           search = lookup_widget (menubar, "search");  
           gtk_signal_emit_by_name (GTK_OBJECT (search), "activate");  
         }  
       return TRUE;  
       break;  
     case GDK_n:         /* control n = new log */  
       if (state.controlkey)  
         {  
           menubar = lookup_widget (mainwindow, "menubar");  
           new = lookup_widget (menubar, "new");  
           gtk_signal_emit_by_name (GTK_OBJECT (new), "activate");  
         }  
       return TRUE;  
       break;  
     case GDK_Page_Up:           /* PgUp can scroll the log */  
     case GDK_KP_Page_Up:  
       logwindow = g_list_nth_data (logwindowlist,  
                                    gtk_notebook_get_current_page (GTK_NOTEBOOK  
                                                                   (mainnotebook)));  
       selection = GTK_CLIST (logwindow->clist)->selection;  
       if (selection)  
         gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));  
       return TRUE;  
       break;  
     case GDK_Page_Down: /* PgDn can scroll the log */  
     case GDK_KP_Page_Down:  
       logwindow = g_list_nth_data (logwindowlist,  
                                    gtk_notebook_get_current_page (GTK_NOTEBOOK  
                                                                   (mainnotebook)));  
       selection = GTK_CLIST (logwindow->clist)->selection;  
       if (selection)  
         gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));  
       return TRUE;  
       break;  
     case GDK_Home:              /* Go to beginning of the log */  
     case GDK_KP_Home:  
       logwindow = g_list_nth_data (logwindowlist,  
                                    gtk_notebook_get_current_page (GTK_NOTEBOOK  
                                                                   (mainnotebook)));  
       if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))  
         {  
           selection = GTK_CLIST (logwindow->clist)->selection;  
           if (selection)  
             gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));  
           adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW  
                                                      (logwindow->  
                                                       scrolledwindow));  
           gtk_adjustment_set_value (adj, adj->lower);  
         }  
       return TRUE;  
       break;  
     case GDK_End:               /* Go to end of the log */  
     case GDK_KP_End:  
       logwindow = g_list_nth_data (logwindowlist,  
                                    gtk_notebook_get_current_page (GTK_NOTEBOOK  
                                                                   (mainnotebook)));  
       if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))  
         {  
           selection = GTK_CLIST (logwindow->clist)->selection;  
           if (selection)  
             gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));  
           adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW  
                                                      (logwindow->  
                                                       scrolledwindow));  
           gtk_adjustment_set_value (adj, adj->upper - adj->page_size);  
         }  
       return TRUE;  
       break;  
     case GDK_Up:                /* Up Arrow, select previous QSO if clist has focus */  
     case GDK_KP_Up:  
       logwindow = g_list_nth_data (logwindowlist,  
                                    gtk_notebook_get_current_page (GTK_NOTEBOOK  
                                                                   (mainnotebook)));  
       if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))  
         {  
           selection = GTK_CLIST (logwindow->clist)->selection;  
           if (selection)  
             {  
               current_row = (gint) selection->data;  
               if (current_row > 0)  
                 {  
                   if (gtk_clist_row_is_visible (GTK_CLIST (logwindow->clist),  
                                                 current_row - 1) !=  
                       GTK_VISIBILITY_FULL)  
                     gtk_clist_moveto (GTK_CLIST (logwindow->clist),  
                                       current_row - 1, -1, 0, 0);  
                   gtk_clist_select_row (GTK_CLIST (logwindow->clist),  
                                         current_row - 1, 0);  
                 }  
             }  
         }  
       return TRUE;  
       break;  
     case GDK_Down:              /* Down Arrow, select next QSO if clist has focus */  
     case GDK_KP_Down:  
       logwindow = g_list_nth_data (logwindowlist,  
                                    gtk_notebook_get_current_page (GTK_NOTEBOOK  
                                                                   (mainnotebook)));  
       if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))  
         {  
           selection = GTK_CLIST (logwindow->clist)->selection;  
           if (selection)  
             {  
               current_row = (gint) selection->data;  
               if (current_row < GTK_CLIST (logwindow->clist)->rows - 1)  
                 {  
                   if (gtk_clist_row_is_visible (GTK_CLIST (logwindow->clist),  
                                                 current_row + 1) !=  
                       GTK_VISIBILITY_FULL)  
                     gtk_clist_moveto (GTK_CLIST (logwindow->clist),  
                                       current_row + 1, -1, 1, 0);  
                   gtk_clist_select_row (GTK_CLIST (logwindow->clist),  
                                         current_row + 1, 0);  
                 }  
             }  
         }  
       return TRUE;  
       break;  
     default:  
       break;  
     }  
   return FALSE;  
 }  
   
 /* did we release the control key ? */  
 gboolean  
 on_mainwindow_key_release_event (GtkWidget * widget, GdkEventKey * event,  
                                  gpointer user_data)  
 {  
   switch (event->keyval)  
     {  
     case GDK_Control_L:  
     case GDK_Control_R:  
       state.controlkey = FALSE;  
       return TRUE;  
       break;  
     default:  
       break;  
     }  
   return FALSE;  
 }  
   
41  /* capture the delete event and display a warning in case the log  /* capture the delete event and display a warning in case the log
42   * has not been saved */   * has not been saved */
43  gboolean  gboolean
# Line 288  on_mainwindow_delete_event (GtkWidget * Line 66  on_mainwindow_delete_event (GtkWidget *
66    else    else
67      {      {
68        save_windowsize_and_cleanup ();        save_windowsize_and_cleanup ();
69        gtk_exit (0);        gtk_main_quit ();
70        return (FALSE);        return (FALSE);
71      }      }
72  }  }

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

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