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

Diff of /xlog/src/gui_dialogsdialog.c

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

revision 1.7 by pa4tu, Mon Jan 24 14:10:41 2005 UTC revision 1.8 by pa4tu, Wed Jan 26 18:48:46 2005 UTC
# Line 20  Line 20 
20  /*  /*
21   * gui_dialogsdialog.c - creation and destruction of the dialogs dialog   * gui_dialogsdialog.c - creation and destruction of the dialogs dialog
22   *   *
23   * show a dialog which will allow you to select the fields in the "worked before"   * show a dialog with 2 pages which will allow you to:
24   * dialog. If the worked before dialog is active the fields are updated.   * 1) select the fields in the "worked before" dialog. If the worked before
25     *    dialog is active the fields are updated.
26     * 2) set export options for save as ADIF and TSV (for glabels).
27   */   */
28  #include <stdlib.h>  #include <stdlib.h>
29  #include <gtk/gtk.h>  #include <gtk/gtk.h>
# Line 38  void Line 40  void
40  on_menu_dialogs_activate(GtkMenuItem * menuitem, gpointer user_data)  on_menu_dialogs_activate(GtkMenuItem * menuitem, gpointer user_data)
41  {  {
42          GtkWidget *dialogsdialog, *notebook, *vbox, *label,          GtkWidget *dialogsdialog, *notebook, *vbox, *label,
43                  *frame, *framehbox, *leftvbox, *rightvbox, *vbox2,                  *frame, *framehbox, *leftvbox, *middlevbox, *rightvbox, *vbox2,
44                  *b40, *b41, *b42, *b43, *b44, *b45, *b46, *b47, *b48, *b49,                  *b40, *b41, *b42, *b43, *b44, *b45, *b46, *b47, *b48, *b49,
45                  *b410, *b411, *b412, *b413, *b414, *b415, *b416, *b417, *b418,                  *b410, *b411, *b412, *b413, *b414, *b415, *b416, *b417, *b418,
46                  *badif, *bu1, *bu2,                  *badif, *hsep, *bu1, *bu2, *bu3, *bu4, *bu5, *bu6, *bu7, *bu8,
47                  *b4treeview;                  *bu9, *bu10, *bu11, *bu12, *bu13, *bu14, *bu15, *bu16, *bu17,
48                    *b4treeview, *tsvhbox;
49          gchar **states, **split;          gchar **states, **split;
50          gboolean check;          gboolean check;
51          GtkTreeViewColumn *column;          GtkTreeViewColumn *column;
# Line 54  on_menu_dialogs_activate(GtkMenuItem * m Line 57  on_menu_dialogs_activate(GtkMenuItem * m
57                  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,                  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
58                  GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);                  GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
59          notebook = gtk_notebook_new ();          notebook = gtk_notebook_new ();
         gtk_widget_show (notebook);  
60          gtk_container_add          gtk_container_add
61                  (GTK_CONTAINER (GTK_DIALOG (dialogsdialog)->vbox), notebook);                  (GTK_CONTAINER (GTK_DIALOG (dialogsdialog)->vbox), notebook);
62    
63          vbox = gtk_vbox_new (FALSE, 0);          vbox = gtk_vbox_new (FALSE, 0);
64          gtk_container_add (GTK_CONTAINER (notebook), vbox);          gtk_container_add (GTK_CONTAINER (notebook), vbox);
65          label = gtk_label_new (_("Columns to show in the 'Worked Before' dialog"));          label = gtk_label_new (_("Columns to show in the 'Worked Before' dialog"));
         gtk_widget_show (label);  
66          gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);          gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);
67            gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
68    
69          frame = gtk_frame_new (NULL);          frame = gtk_frame_new (NULL);
70          gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
# Line 92  on_menu_dialogs_activate(GtkMenuItem * m Line 94  on_menu_dialogs_activate(GtkMenuItem * m
94          b46 = gtk_check_button_new_with_label (_("Frequency"));          b46 = gtk_check_button_new_with_label (_("Frequency"));
95          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b46), atoi(split[6]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b46), atoi(split[6]));
96          gtk_box_pack_start (GTK_BOX (leftvbox), b46, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (leftvbox), b46, FALSE, FALSE, 0);
97    
98            middlevbox = gtk_vbox_new (FALSE, 0);
99            gtk_box_pack_start (GTK_BOX (framehbox), middlevbox, FALSE, FALSE, 0);
100          b47 = gtk_check_button_new_with_label (_("Mode"));          b47 = gtk_check_button_new_with_label (_("Mode"));
101          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b47), atoi(split[7]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b47), atoi(split[7]));
102          gtk_box_pack_start (GTK_BOX (leftvbox), b47, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (middlevbox), b47, FALSE, FALSE, 0);
103          b48 = gtk_check_button_new_with_label ("TX(RST)");          b48 = gtk_check_button_new_with_label ("TX(RST)");
104          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b48), atoi(split[8]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b48), atoi(split[8]));
105          gtk_box_pack_start (GTK_BOX (leftvbox), b48, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (middlevbox), b48, FALSE, FALSE, 0);
106          b49 = gtk_check_button_new_with_label ("RX(RST)");          b49 = gtk_check_button_new_with_label ("RX(RST)");
107          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b49), atoi(split[9]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b49), atoi(split[9]));
108          gtk_box_pack_start (GTK_BOX (leftvbox), b49, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (middlevbox), b49, FALSE, FALSE, 0);
   
         rightvbox = gtk_vbox_new (FALSE, 0);  
         gtk_box_pack_start (GTK_BOX (framehbox), rightvbox, FALSE, FALSE, 0);  
109          b410 = gtk_check_button_new_with_label (_("Qsl Out"));          b410 = gtk_check_button_new_with_label (_("Qsl Out"));
110          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b410), atoi(split[10]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b410), atoi(split[10]));
111          gtk_box_pack_start (GTK_BOX (rightvbox), b410, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (middlevbox), b410, FALSE, FALSE, 0);
112          b411 = gtk_check_button_new_with_label (_("Qsl In"));          b411 = gtk_check_button_new_with_label (_("Qsl In"));
113          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b411), atoi(split[11]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b411), atoi(split[11]));
114          gtk_box_pack_start (GTK_BOX (rightvbox), b411, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (middlevbox), b411, FALSE, FALSE, 0);
115          b412 = gtk_check_button_new_with_label (_("Power"));          b412 = gtk_check_button_new_with_label (_("Power"));
116          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b412), atoi(split[12]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b412), atoi(split[12]));
117          gtk_box_pack_start (GTK_BOX (rightvbox), b412, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (middlevbox), b412, FALSE, FALSE, 0);
118    
119            rightvbox = gtk_vbox_new (FALSE, 0);
120            gtk_box_pack_start (GTK_BOX (framehbox), rightvbox, FALSE, FALSE, 0);
121          b413 = gtk_check_button_new_with_label (_("Name"));          b413 = gtk_check_button_new_with_label (_("Name"));
122          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b413), atoi(split[13]));          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b413), atoi(split[13]));
123          gtk_box_pack_start (GTK_BOX (rightvbox), b413, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (rightvbox), b413, FALSE, FALSE, 0);
# Line 138  on_menu_dialogs_activate(GtkMenuItem * m Line 143  on_menu_dialogs_activate(GtkMenuItem * m
143          gtk_container_add (GTK_CONTAINER (notebook), vbox);          gtk_container_add (GTK_CONTAINER (notebook), vbox);
144    
145          label = gtk_label_new (_("Export options for the 'Save As' dialog"));          label = gtk_label_new (_("Export options for the 'Save As' dialog"));
         gtk_widget_show (label);  
146          gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);          gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);
147            gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
148    
149          frame = gtk_frame_new (NULL);          frame = gtk_frame_new ("ADIF");
150          gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
         label = gtk_label_new ("ADIF");  
         gtk_frame_set_label_widget (GTK_FRAME (frame), label);  
151          badif = gtk_check_button_new_with_label          badif = gtk_check_button_new_with_label
152                  (_("When saving as ADIF convert frequency to band"));                  (_("When saving as ADIF convert frequency to band"));
153          if (preferences.saveasadif == 1)          if (preferences.saveasadif == 1)
154                  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (badif), TRUE);                  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (badif), TRUE);
155          gtk_container_add (GTK_CONTAINER (frame), badif);          gtk_container_add (GTK_CONTAINER (frame), badif);
156            gtk_label_set_line_wrap (GTK_LABEL (GTK_BIN (badif)->child), TRUE);
157    
158          frame = gtk_frame_new (NULL);          frame = gtk_frame_new ("TSV");
159          gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);          gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
         label = gtk_label_new ("labels");  
         gtk_frame_set_label_widget (GTK_FRAME (frame), label);  
160          vbox2 = gtk_vbox_new (FALSE, 0);          vbox2 = gtk_vbox_new (FALSE, 0);
161          gtk_container_add (GTK_CONTAINER (frame), vbox2);          gtk_container_add (GTK_CONTAINER (frame), vbox2);
162          bu1 = gtk_check_button_new_with_label          label = gtk_label_new
163                  (_("When saving as labels export freefield1"));  ("Fields to export when saving as TSV (Tab Separated Value) for glabels");
164          gtk_container_add (GTK_CONTAINER (vbox2), bu1);          gtk_container_add (GTK_CONTAINER (vbox2), label);
165          bu2 = gtk_check_button_new_with_label          gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
166                  (_("When saving as labels export freefield2"));          hsep = gtk_hseparator_new ();
167          if (preferences.saveaslabels == 3)          gtk_container_add (GTK_CONTAINER (vbox2), hsep);
168          {          tsvhbox = gtk_hbox_new (FALSE, 0);
169                  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu1), 1);          gtk_container_add (GTK_CONTAINER (vbox2), tsvhbox);
170                  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu2), 1);  
171          }          split = g_strsplit(preferences.saveastsv, ",", 0);
172          else if (preferences.saveaslabels == 2)          leftvbox = gtk_vbox_new (FALSE, 0);
173                  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu2), 1);          gtk_box_pack_start (GTK_BOX (tsvhbox), leftvbox, FALSE, FALSE, 0);
174          else if (preferences.saveaslabels == 1)          bu1 = gtk_check_button_new_with_label (_("Date"));
175                  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu1), 1);          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu1), atoi(split[0]));
176            gtk_box_pack_start (GTK_BOX (leftvbox), bu1, FALSE, FALSE, 0);
177            bu2 = gtk_check_button_new_with_label ("GMT");
178            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu2), atoi(split[1]));
179            gtk_box_pack_start (GTK_BOX (leftvbox), bu2, FALSE, FALSE, 0);
180            bu3 = gtk_check_button_new_with_label (_("GMT - end"));
181            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu3), atoi(split[2]));
182            gtk_box_pack_start (GTK_BOX (leftvbox), bu3, FALSE, FALSE, 0);
183            bu4 = gtk_check_button_new_with_label (_("Call"));
184            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu4), atoi(split[3]));
185            gtk_box_pack_start (GTK_BOX (leftvbox), bu4, FALSE, FALSE, 0);
186            bu5 = gtk_check_button_new_with_label (_("Frequency"));
187            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu5), atoi(split[4]));
188            gtk_box_pack_start (GTK_BOX (leftvbox), bu5, FALSE, FALSE, 0);
189            bu6 = gtk_check_button_new_with_label (_("Mode"));
190            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu6), atoi(split[5]));
191            gtk_box_pack_start (GTK_BOX (leftvbox), bu6, FALSE, FALSE, 0);
192    
193            middlevbox = gtk_vbox_new (FALSE, 0);
194            gtk_box_pack_start (GTK_BOX (tsvhbox), middlevbox, FALSE, FALSE, 0);
195            bu7 = gtk_check_button_new_with_label ("TX(RST)");
196            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu7), atoi(split[6]));
197            gtk_box_pack_start (GTK_BOX (middlevbox), bu7, FALSE, FALSE, 0);
198            bu8 = gtk_check_button_new_with_label ("RX(RST)");
199            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu8), atoi(split[7]));
200            gtk_box_pack_start (GTK_BOX (middlevbox), bu8, FALSE, FALSE, 0);
201            bu9 = gtk_check_button_new_with_label (_("Qsl Out"));
202            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu9), atoi(split[8]));
203            gtk_box_pack_start (GTK_BOX (middlevbox), bu9, FALSE, FALSE, 0);
204            bu10 = gtk_check_button_new_with_label (_("Qsl In"));
205            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu10), atoi(split[9]));
206            gtk_box_pack_start (GTK_BOX (middlevbox), bu10, FALSE, FALSE, 0);
207            bu11 = gtk_check_button_new_with_label (_("Power"));
208            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu11), atoi(split[10]));
209            gtk_box_pack_start (GTK_BOX (middlevbox), bu11, FALSE, FALSE, 0);
210            bu12 = gtk_check_button_new_with_label (_("Name"));
211            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu12), atoi(split[11]));
212            gtk_box_pack_start (GTK_BOX (middlevbox), bu12, FALSE, FALSE, 0);
213    
214            rightvbox = gtk_vbox_new (FALSE, 0);
215            gtk_box_pack_start (GTK_BOX (tsvhbox), rightvbox, FALSE, FALSE, 0);
216            bu13 = gtk_check_button_new_with_label ("QTH");
217            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu13), atoi(split[12]));
218            gtk_box_pack_start (GTK_BOX (rightvbox), bu13, FALSE, FALSE, 0);
219            bu14 = gtk_check_button_new_with_label (_("Locator"));
220            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu14), atoi(split[13]));
221            gtk_box_pack_start (GTK_BOX (rightvbox), bu14, FALSE, FALSE, 0);
222            bu15 = gtk_check_button_new_with_label (_("Freefield1"));
223            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu15), atoi(split[14]));
224            gtk_box_pack_start (GTK_BOX (rightvbox), bu15, FALSE, FALSE, 0);
225            bu16 = gtk_check_button_new_with_label (_("Freefield2"));
226            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu16), atoi(split[15]));
227            gtk_box_pack_start (GTK_BOX (rightvbox), bu16, FALSE, FALSE, 0);
228            bu17 = gtk_check_button_new_with_label (_("Remarks"));
229            gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bu17), atoi(split[16]));
230            gtk_box_pack_start (GTK_BOX (rightvbox), bu17, FALSE, FALSE, 0);
231    
232          gtk_container_add (GTK_CONTAINER (vbox2), bu2);          g_strfreev(split);
233    
234          label = gtk_label_new (_("Worked Before"));          label = gtk_label_new (_("Worked Before"));
         gtk_widget_show (label);  
235          gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook),          gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook),
236                  gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), label);                  gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), label);
237          label = gtk_label_new (_("Save As"));          label = gtk_label_new (_("Save As"));
         gtk_widget_show (label);  
238          gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook),          gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook),
239                  gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), label);                  gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), label);
240    
241          gtk_button_set_label (GTK_BUTTON (b416), preferences.freefield1);          gtk_button_set_label (GTK_BUTTON (b416), preferences.freefield1);
242          gtk_button_set_label (GTK_BUTTON (b417), preferences.freefield2);          gtk_button_set_label (GTK_BUTTON (b417), preferences.freefield2);
243            gtk_button_set_label (GTK_BUTTON (bu15), preferences.freefield1);
244            gtk_button_set_label (GTK_BUTTON (bu16), preferences.freefield2);
245    
246          gtk_widget_show_all (dialogsdialog);              gtk_widget_show_all (dialogsdialog);    
247          response = gtk_dialog_run (GTK_DIALOG(dialogsdialog));          response = gtk_dialog_run (GTK_DIALOG(dialogsdialog));
# Line 339  on_menu_dialogs_activate(GtkMenuItem * m Line 396  on_menu_dialogs_activate(GtkMenuItem * m
396                  else                  else
397                          preferences.saveasadif = 0;                          preferences.saveasadif = 0;
398    
399                    states = g_new0 (gchar *, 18);
400                  check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu1));                  check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu1));
401                  if (check)                  states[0] = g_strdup (check ? "1" : "0");
                         preferences.saveaslabels = 1;  
                 else  
                         preferences.saveaslabels = 0;  
402                  check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu2));                  check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu2));
403                  if (check)                  states[1] = g_strdup (check ? "1" : "0");
404                          preferences.saveaslabels = preferences.saveaslabels + 2;                  check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu3));
405                    states[2] = g_strdup (check ? "1" : "0");
406                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu4));
407                    states[3] = g_strdup (check ? "1" : "0");
408                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu5));
409                    states[4] = g_strdup (check ? "1" : "0");
410                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu6));
411                    states[5] = g_strdup (check ? "1" : "0");
412                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu7));
413                    states[6] = g_strdup (check ? "1" : "0");
414                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu8));
415                    states[7] = g_strdup (check ? "1" : "0");
416                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu9));
417                    states[8] = g_strdup (check ? "1" : "0");
418                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu10));
419                    states[9] = g_strdup (check ? "1" : "0");
420                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu11));
421                    states[10] = g_strdup (check ? "1" : "0");
422                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu12));
423                    states[11] = g_strdup (check ? "1" : "0");
424                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu13));
425                    states[12] = g_strdup (check ? "1" : "0");
426                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu14));
427                    states[13] = g_strdup (check ? "1" : "0");
428                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu15));
429                    states[14] = g_strdup (check ? "1" : "0");
430                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu16));
431                    states[15] = g_strdup (check ? "1" : "0");
432                    check = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(bu17));
433                    states[16] = g_strdup (check ? "1" : "0");
434    
435                    states[17] = NULL;      /* terminator for g_strjoinv */
436                    preferences.saveastsv = g_strjoinv (",", states);
437    
438                    for (i = 0; i < 17; i++)
439                            g_free (states[i]);
440                    g_free (states);
441          }          }
442          gtk_widget_destroy (dialogsdialog);          gtk_widget_destroy (dialogsdialog);
443  }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

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