/[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.1 by pa4tu, Sat Oct 19 17:50:20 2002 UTC revision 1.2 by pa4tu, Thu Nov 21 19:57:46 2002 UTC
# Line 40  extern statetype state; Line 40  extern statetype state;
40  extern GList *logwindowlist;  extern GList *logwindowlist;
41    
42  #if WANT_HAMLIB  #if WANT_HAMLIB
43          extern GdkPixmap *pixmap;  extern GdkPixmap *pixmap;
44  #endif  #endif
45    
46  /* catch keys for the main window, so we can have shortcuts */  /* catch keys for the main window, so we can have shortcuts */
47  gboolean on_mainwindow_key_press_event (GtkWidget *widget, GdkEventKey *event,  gboolean
48          gpointer user_data)  on_mainwindow_key_press_event (GtkWidget * widget, GdkEventKey * event,
49                                   gpointer user_data)
50  {  {
51          GtkWidget *abutton, *ubutton, *dbutton, *menubar, *save, *clear, *search,    GtkWidget *abutton, *ubutton, *dbutton, *menubar, *save, *clear, *search,
52                  *new, *clickall;      *new, *clickall;
53          GtkAdjustment *adj;    GtkAdjustment *adj;
54          GList *selection;    GList *selection;
55          gint current_row;    gint current_row;
56          logtype *logwindow;    logtype *logwindow;
57    
58    
59          switch (event->keyval)    switch (event->keyval)
60          {      {
61                  case GDK_Control_L: /* did we push the control key ?*/      case GDK_Control_L: /* did we push the control key ? */
62                  case GDK_Control_R:      case GDK_Control_R:
63                          state.controlkey = TRUE;        state.controlkey = TRUE;
64                          return TRUE;        return TRUE;
65                          break;        break;
66                  case GDK_a: /* control a = add a QSO */      case GDK_a:         /* control a = add a QSO */
67                          if (state.controlkey)        if (state.controlkey)
68                          {          {
69                                  abutton = lookup_widget(mainwindow, "abutton");            abutton = lookup_widget (mainwindow, "abutton");
70                                  gtk_signal_emit_by_name(GTK_OBJECT(abutton),"clicked");            gtk_signal_emit_by_name (GTK_OBJECT (abutton), "clicked");
71                          }          }
72                          return TRUE;        return TRUE;
73                          break;        break;
74                  case GDK_u: /* control u = update a selected QSO */      case GDK_u:         /* control u = update a selected QSO */
75                          if (state.controlkey)        if (state.controlkey)
76                          {          {
77                                  ubutton = lookup_widget(mainwindow, "ubutton");            ubutton = lookup_widget (mainwindow, "ubutton");
78                                  gtk_signal_emit_by_name(GTK_OBJECT(ubutton),"clicked");            gtk_signal_emit_by_name (GTK_OBJECT (ubutton), "clicked");
79                          }          }
80                          return TRUE;        return TRUE;
81                          break;        break;
82                  case GDK_d: /* control d = delete a selected QSO from the log */      case GDK_d:         /* control d = delete a selected QSO from the log */
83                          if (state.controlkey)        if (state.controlkey)
84                          {          {
85                                  dbutton = lookup_widget(mainwindow, "dbutton");            dbutton = lookup_widget (mainwindow, "dbutton");
86                                  gtk_signal_emit_by_name(GTK_OBJECT(dbutton),"clicked");            gtk_signal_emit_by_name (GTK_OBJECT (dbutton), "clicked");
87                          }          }
88                          return TRUE;        return TRUE;
89                          break;        break;
90                  case GDK_s: /* control s = save log */      case GDK_s:         /* control s = save log */
91                          if (state.controlkey)        if (state.controlkey)
92                          {          {
93                                  state.controlkey = FALSE;            state.controlkey = FALSE;
94                                  menubar = lookup_widget(mainwindow, "menubar");            menubar = lookup_widget (mainwindow, "menubar");
95                                  save = lookup_widget(menubar, "save");            save = lookup_widget (menubar, "save");
96                                  gtk_signal_emit_by_name(GTK_OBJECT(save),"activate");            gtk_signal_emit_by_name (GTK_OBJECT (save), "activate");
97                          }          }
98                          return TRUE;        return TRUE;
99                          break;        break;
100                  case GDK_y: /* control y = clear qso frame */      case GDK_y:         /* control y = clear qso frame */
101                          if (state.controlkey)        if (state.controlkey)
102                          {          {
103                                  clear = lookup_widget(create_qsoframemenu(), "clearframe");            clear = lookup_widget (create_qsoframemenu (), "clearframe");
104                                  gtk_signal_emit_by_name(GTK_OBJECT(clear),"activate");            gtk_signal_emit_by_name (GTK_OBJECT (clear), "activate");
105                          }          }
106                          return TRUE;        return TRUE;
107                          break;        break;
108                  case GDK_k: /* control k = click all buttons */      case GDK_k:         /* control k = click all buttons */
109                          if (state.controlkey)        if (state.controlkey)
110                          {          {
111                                  clickall = lookup_widget(create_qsoframemenu(), "clickall");            clickall = lookup_widget (create_qsoframemenu (), "clickall");
112                                  gtk_signal_emit_by_name(GTK_OBJECT(clickall),"activate");            gtk_signal_emit_by_name (GTK_OBJECT (clickall), "activate");
113                          }          }
114                          return TRUE;        return TRUE;
115                          break;        break;
116                  case GDK_f: /* control f = find QSO in the log */      case GDK_f:         /* control f = find QSO in the log */
117                          if (state.controlkey)        if (state.controlkey)
118                          {          {
119                                  state.controlkey = FALSE;            state.controlkey = FALSE;
120                                  menubar = lookup_widget(mainwindow, "menubar");            menubar = lookup_widget (mainwindow, "menubar");
121                                  search = lookup_widget(menubar, "search");            search = lookup_widget (menubar, "search");
122                                  gtk_signal_emit_by_name(GTK_OBJECT(search),"activate");            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;  
123          }          }
124          return FALSE;        return TRUE;
125          break;
126        case GDK_n:         /* control n = new log */
127          if (state.controlkey)
128            {
129              menubar = lookup_widget (mainwindow, "menubar");
130              new = lookup_widget (menubar, "new");
131              gtk_signal_emit_by_name (GTK_OBJECT (new), "activate");
132            }
133          return TRUE;
134          break;
135        case GDK_Page_Up:           /* PgUp can scroll the log */
136        case GDK_KP_Page_Up:
137          logwindow = g_list_nth_data (logwindowlist,
138                                       gtk_notebook_get_current_page (GTK_NOTEBOOK
139                                                                      (mainnotebook)));
140          selection = GTK_CLIST (logwindow->clist)->selection;
141          if (selection)
142            gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));
143          return TRUE;
144          break;
145        case GDK_Page_Down: /* PgDn can scroll the log */
146        case GDK_KP_Page_Down:
147          logwindow = g_list_nth_data (logwindowlist,
148                                       gtk_notebook_get_current_page (GTK_NOTEBOOK
149                                                                      (mainnotebook)));
150          selection = GTK_CLIST (logwindow->clist)->selection;
151          if (selection)
152            gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));
153          return TRUE;
154          break;
155        case GDK_Home:              /* Go to beginning of the log */
156        case GDK_KP_Home:
157          logwindow = g_list_nth_data (logwindowlist,
158                                       gtk_notebook_get_current_page (GTK_NOTEBOOK
159                                                                      (mainnotebook)));
160          if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))
161            {
162              selection = GTK_CLIST (logwindow->clist)->selection;
163              if (selection)
164                gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));
165              adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW
166                                                         (logwindow->
167                                                          scrolledwindow));
168              gtk_adjustment_set_value (adj, adj->lower);
169            }
170          return TRUE;
171          break;
172        case GDK_End:               /* Go to end of the log */
173        case GDK_KP_End:
174          logwindow = g_list_nth_data (logwindowlist,
175                                       gtk_notebook_get_current_page (GTK_NOTEBOOK
176                                                                      (mainnotebook)));
177          if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))
178            {
179              selection = GTK_CLIST (logwindow->clist)->selection;
180              if (selection)
181                gtk_clist_unselect_all (GTK_CLIST (logwindow->clist));
182              adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW
183                                                         (logwindow->
184                                                          scrolledwindow));
185              gtk_adjustment_set_value (adj, adj->upper - adj->page_size);
186            }
187          return TRUE;
188          break;
189        case GDK_Up:                /* Up Arrow, select previous QSO if clist has focus */
190        case GDK_KP_Up:
191          logwindow = g_list_nth_data (logwindowlist,
192                                       gtk_notebook_get_current_page (GTK_NOTEBOOK
193                                                                      (mainnotebook)));
194          if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))
195            {
196              selection = GTK_CLIST (logwindow->clist)->selection;
197              if (selection)
198                {
199                  current_row = (gint) selection->data;
200                  if (current_row > 0)
201                    {
202                      if (gtk_clist_row_is_visible (GTK_CLIST (logwindow->clist),
203                                                    current_row - 1) !=
204                          GTK_VISIBILITY_FULL)
205                        gtk_clist_moveto (GTK_CLIST (logwindow->clist),
206                                          current_row - 1, -1, 0, 0);
207                      gtk_clist_select_row (GTK_CLIST (logwindow->clist),
208                                            current_row - 1, 0);
209                    }
210                }
211            }
212          return TRUE;
213          break;
214        case GDK_Down:              /* Down Arrow, select next QSO if clist has focus */
215        case GDK_KP_Down:
216          logwindow = g_list_nth_data (logwindowlist,
217                                       gtk_notebook_get_current_page (GTK_NOTEBOOK
218                                                                      (mainnotebook)));
219          if (GTK_WIDGET_HAS_FOCUS (logwindow->clist))
220            {
221              selection = GTK_CLIST (logwindow->clist)->selection;
222              if (selection)
223                {
224                  current_row = (gint) selection->data;
225                  if (current_row < GTK_CLIST (logwindow->clist)->rows - 1)
226                    {
227                      if (gtk_clist_row_is_visible (GTK_CLIST (logwindow->clist),
228                                                    current_row + 1) !=
229                          GTK_VISIBILITY_FULL)
230                        gtk_clist_moveto (GTK_CLIST (logwindow->clist),
231                                          current_row + 1, -1, 1, 0);
232                      gtk_clist_select_row (GTK_CLIST (logwindow->clist),
233                                            current_row + 1, 0);
234                    }
235                }
236            }
237          return TRUE;
238          break;
239        default:
240          break;
241        }
242      return FALSE;
243  }  }
244    
245  /* did we release the control key ? */  /* did we release the control key ? */
246  gboolean on_mainwindow_key_release_event (GtkWidget *widget, GdkEventKey *event,  gboolean
247          gpointer user_data)  on_mainwindow_key_release_event (GtkWidget * widget, GdkEventKey * event,
248                                     gpointer user_data)
249  {  {
250          switch (event->keyval) {    switch (event->keyval)
251                  case GDK_Control_L:      {
252                  case GDK_Control_R:      case GDK_Control_L:
253                          state.controlkey = FALSE;      case GDK_Control_R:
254                          return TRUE;        state.controlkey = FALSE;
255                          break;        return TRUE;
256                  default:        break;
257                          break;      default:
258          }        break;
259          return FALSE;      }
260      return FALSE;
261  }  }
262    
263  /* capture the delete event and display a warning in case the log  /* capture the delete event and display a warning in case the log
264   * has not been saved */   * has not been saved */
265  gboolean on_mainwindow_delete_event (GtkWidget *widget, GdkEvent *event,  gboolean
266          gpointer user_data)  on_mainwindow_delete_event (GtkWidget * widget, GdkEvent * event,
267                                gpointer user_data)
268  {  {
269          GtkWidget *savedialog;    GtkWidget *savedialog;
270          gint i;    gint i;
271          logtype *logwindow;    logtype *logwindow;
272          gboolean logchanged = FALSE;    gboolean logchanged = FALSE;
273    
274          for (i = 0; i < g_list_length(logwindowlist); i++)    for (i = 0; i < g_list_length (logwindowlist); i++)
275          {      {
276                  logwindow = g_list_nth_data(logwindowlist, i);        logwindow = g_list_nth_data (logwindowlist, i);
277                  if (logwindow->logchanged) logchanged = TRUE;        if (logwindow->logchanged)
278          }          logchanged = TRUE;
279        }
280          if (logchanged) {  
281                  savedialog = create_savedialog();    if (logchanged)
282                  gtk_widget_set_sensitive(mainwindow, 0);      {
283                  gtk_widget_show(savedialog);        savedialog = create_savedialog ();
284                  return(TRUE);        gtk_widget_set_sensitive (mainwindow, 0);
285          }        gtk_widget_show (savedialog);
286          else {        return (TRUE);
287                  save_windowsize_and_cleanup();      }
288                  gtk_exit(0);    else
289                  return(FALSE);      {
290          }        save_windowsize_and_cleanup ();
291          gtk_exit (0);
292          return (FALSE);
293        }
294  }  }
295    
296  void on_mainnotebook_switch_page(GtkNotebook *notebook, GtkNotebookPage *page,  void
297          gint page_num, gpointer user_data)  on_mainnotebook_switch_page (GtkNotebook * notebook, GtkNotebookPage * page,
298                                 gint page_num, gpointer user_data)
299  {  {
300          logtype *logwindow = NULL;    logtype *logwindow = NULL;
301    
302          while (page_num >= 0)    while (page_num >= 0)
303          {      {
304                  logwindow = g_list_nth_data(logwindowlist, page_num);        logwindow = g_list_nth_data (logwindowlist, page_num);
305                  if (logwindow) break;        if (logwindow)
306                  page_num--;          break;
307          }        page_num--;
308          if (logwindow) set_qsoframe(logwindow);      }
309      if (logwindow)
310        set_qsoframe (logwindow);
311  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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