1
2 /*
3 * Ump - Unnamed Math Program
4 * Copyright (c) 2004-2006 by Mattias Hultgren <mattias_hultgren@tele2.se>
5 *
6 * See main.cpp
7 */
8
9 #include <gtk/gtk.h>
10 #include "math2.h"
11 #include "picture.h"
12 #include "picture2gtk.h"
13 #include "main.h"
14 #include "ump_prefwin.h"
15 #include "ump_picturewin.h"
16
17
18 GtkWidget *prefwin = 0;
19 GtkWidget *pref_format_spinner, *pref_format_trailing, *pref_format_type[3], *pref_snap_size;
20 GtkWidget *pref_general_language, *pref_general_start_window;
21
22 struct UMP_prefwin_pref
23 {
24 GtkWidget *notebook;
25
26 GtkWidget *general_translation_label, *general_start_window_label;
27
28 GtkWidget *format_max_decimals_label, *format_frame_decimals, *format_frame_fractions,
29 *format_frame_frac_show_as;
30 GtkWidget *format_fraction_type[3];
31
32 GtkWidget *auto_add, *auto_remove, *auto_up, *auto_down, *auto_treeview;
33 GtkTreeViewColumn *auto_column;
34 GtkListStore *auto_list_store;
35
36 GtkWidget *snap_size_label, *snap_frame;
37
38 GtkWidget *button_ok_label;
39 }pref;
40
41 enum { AUTO_COLUMN_PATH, AUTO_N_COLUMNS };
42
43
44
prefwin_ok(void)45 void prefwin_ok(void)
46 {
47 if( language_filename != gtk_entry_get_text(GTK_ENTRY(GTK_BIN(pref_general_language)->child)) )
48 update_translation( gtk_entry_get_text(GTK_ENTRY(GTK_BIN(pref_general_language)->child)) );
49
50 format.set_max_decimals( gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(pref_format_spinner)) );
51 format.set_mixed_limits( 1e-6, 1e9 );
52
53 format.show_trailingzeros =
54 ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref_format_trailing)) == TRUE );
55
56 for(int i=0;i<3;i++)
57 {
58 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref_format_type[i])) == TRUE)
59 format.set_type( FormatType(i) );
60
61 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref.format_fraction_type[i])) == TRUE)
62 format.set_fraction_type( FormatFractionType(i) );
63 }
64
65 switch(gtk_combo_box_get_active(GTK_COMBO_BOX(pref_general_start_window)))
66 {
67 case 0:
68 default_start_window = "Simple";
69 break;
70 case 1:
71 default_start_window = "Advanced";
72 break;
73 case 2:
74 default_start_window = "Editor";
75 break;
76 case 3:
77 default_start_window = "Graphtool";
78 break;
79 case 4:
80 default_start_window = "MatrixEditor";
81 break;
82 }
83 SNAP_SIZE = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(pref_snap_size) );
84
85 prefwin_close();
86 }
87
language_changed(GtkComboBox * combobox)88 void language_changed(GtkComboBox *combobox)
89 {
90 update_translation( gtk_entry_get_text(GTK_ENTRY(GTK_BIN(pref_general_language)->child)), false );
91
92 gtk_window_set_title(GTK_WINDOW(prefwin), _("Preferences") );
93
94 gtk_label_set_text_with_mnemonic( GTK_LABEL(pref.button_ok_label), button_ok );
95
96 // translates general-page
97 gtk_notebook_set_tab_label( GTK_NOTEBOOK(pref.notebook),
98 gtk_notebook_get_nth_page(GTK_NOTEBOOK(pref.notebook), 0),
99 gtk_label_new_with_mnemonic( _("_General") ) );
100
101 gtk_label_set_text_with_mnemonic(GTK_LABEL(pref.general_translation_label), _("_Translation: ") );
102
103 gtk_label_set_text_with_mnemonic( GTK_LABEL(pref.general_start_window_label), _("Start _window: ") );
104
105 {
106 gint i = gtk_combo_box_get_active(GTK_COMBO_BOX(pref_general_start_window));
107
108 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window),
109 _("Simple calculator") );
110 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window),
111 _("Advanced calculator") );
112 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window), _("UMP-editor") );
113 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window), _("Graph tools") );
114 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window), _("Matrix editor") );
115
116 for(int o=0;o<5;o++) // removing the five first...
117 gtk_combo_box_remove_text(GTK_COMBO_BOX(pref_general_start_window), 0);
118
119 gtk_combo_box_set_active( GTK_COMBO_BOX(pref_general_start_window), i );
120 }
121 // general-page is now translated
122
123
124 // translates number-format-page
125 gtk_notebook_set_tab_label( GTK_NOTEBOOK(pref.notebook),
126 gtk_notebook_get_nth_page(GTK_NOTEBOOK(pref.notebook), 1),
127 gtk_label_new_with_mnemonic( _("_Number format") ) );
128
129 gtk_frame_set_label( GTK_FRAME(pref.format_frame_decimals), _("Decimals") );
130 gtk_button_set_label( GTK_BUTTON(pref_format_type[0]), _("No_rmal") );
131 gtk_button_set_label( GTK_BUTTON(pref_format_type[1]), _("Mi_xed") );
132 gtk_button_set_label( GTK_BUTTON(pref_format_type[2]), _("_Science") );
133
134 gtk_label_set_text_with_mnemonic( GTK_LABEL(pref.format_max_decimals_label),
135 _("Max _decimals: ") );
136
137 gtk_button_set_label( GTK_BUTTON(pref_format_trailing), _("Show trailing _zeros") );
138
139
140 gtk_frame_set_label( GTK_FRAME(pref.format_frame_fractions), _("Fractions") );
141
142 gtk_frame_set_label( GTK_FRAME(pref.format_frame_frac_show_as), _("Show as...") );
143
144 gtk_button_set_label( GTK_BUTTON(pref.format_fraction_type[0]), _("fractions") );
145 gtk_button_set_label( GTK_BUTTON(pref.format_fraction_type[1]), _("integer + fraction") );
146 gtk_button_set_label( GTK_BUTTON(pref.format_fraction_type[2]), _("decimals") );
147 // number-format-page is now translated
148
149 // autoloading page
150 gtk_notebook_set_tab_label( GTK_NOTEBOOK(pref.notebook),
151 gtk_notebook_get_nth_page(GTK_NOTEBOOK(pref.notebook), 2),
152 gtk_label_new_with_mnemonic( _("_Autoloading") ) );
153
154 gtk_button_set_label( GTK_BUTTON(pref.auto_add), _("Add") );
155 gtk_button_set_label( GTK_BUTTON(pref.auto_remove), _("Remove") );
156 gtk_button_set_label( GTK_BUTTON(pref.auto_up), _("Move up") );
157 gtk_button_set_label( GTK_BUTTON(pref.auto_down), _("Move down") );
158
159 gtk_tree_view_column_set_title( GTK_TREE_VIEW_COLUMN(pref.auto_column), _("Path") );
160 // autoloading page is now translated
161
162 // snap page
163 gtk_notebook_set_tab_label( GTK_NOTEBOOK(pref.notebook),
164 gtk_notebook_get_nth_page(GTK_NOTEBOOK(pref.notebook), 3),
165 gtk_label_new_with_mnemonic( _("_Snaping") ) );
166
167 gtk_frame_set_label( GTK_FRAME(pref.snap_frame), _("Snaping") );
168 gtk_label_set_text_with_mnemonic( GTK_LABEL(pref.snap_size_label),
169 _("Snap size: ") );
170 // snap page is now translated
171 }
172
prefwin_browse_button(GtkButton * button,gpointer user_data)173 void prefwin_browse_button(GtkButton *button,gpointer user_data)
174 {
175 GtkWidget *file_chooser, *tmp=GTK_WIDGET(user_data);
176
177 if( tmp == pref_general_language )
178 {
179 file_chooser = gtk_file_chooser_dialog_new( dialog_title_open_file, GTK_WINDOW(prefwin),
180 GTK_FILE_CHOOSER_ACTION_OPEN,
181 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
182 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL );
183
184 gtk_file_chooser_set_filename( GTK_FILE_CHOOSER(file_chooser),
185 gtk_entry_get_text(GTK_ENTRY(GTK_BIN(pref_general_language)->child)) );
186 }
187 else
188 file_chooser = gtk_file_chooser_dialog_new( dialog_title_open_file, GTK_WINDOW(prefwin),
189 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
190 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
191 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL );
192
193
194
195 if(gtk_dialog_run(GTK_DIALOG(file_chooser)) == GTK_RESPONSE_ACCEPT)
196 {
197 char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(file_chooser));
198
199 if( tmp == pref_general_language )
200 gtk_entry_set_text( GTK_ENTRY(GTK_BIN(pref_general_language)->child), filename );
201 else // autoloading -> add
202 {
203 utf8_string file(filename);
204 GtkTreeIter iter;
205
206 math::autoload_directories.insert( file, 0 );
207 gtk_list_store_prepend( pref.auto_list_store, &iter );
208 gtk_list_store_set( pref.auto_list_store, &iter, AUTO_COLUMN_PATH, filename, -1 );
209 }
210 g_free(filename);
211 }
212
213 gtk_widget_destroy(file_chooser);
214 }
215
prefwin_auto_remove(GtkButton * button,gpointer user_data)216 void prefwin_auto_remove(GtkButton *button,gpointer user_data)
217 {
218 GtkTreeSelection *sel;
219 GtkTreeModel *model;
220 GtkTreeIter iter;
221 gchar *name;
222
223 sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(pref.auto_treeview) );
224
225 if( gtk_tree_selection_get_selected( sel, &model, &iter ) )
226 {
227 gtk_tree_model_get( model, &iter, AUTO_COLUMN_PATH, &name, -1 );
228
229 for( int i=0; i<math::autoload_directories.get_size(); i++ )
230 {
231 if( *math::autoload_directories[i] == name )
232 {
233 math::autoload_directories.remove(i);
234 break;
235 }
236 }
237
238 gtk_list_store_remove( pref.auto_list_store, &iter );
239
240 g_free( name );
241 }
242 }
243
prefwin_auto_swap(GtkButton * button,gpointer user_data)244 void prefwin_auto_swap(GtkButton *button,gpointer user_data)
245 {
246 GtkTreeSelection *sel;
247 GtkTreeModel *model;
248 GtkTreeIter iter, iter2;
249 gchar *name;
250 int i;
251
252 sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(pref.auto_treeview) );
253
254 if( gtk_tree_selection_get_selected( sel, &model, &iter ) )
255 {
256 gtk_tree_model_get( model, &iter, AUTO_COLUMN_PATH, &name, -1 );
257
258 for( i=0; i<math::autoload_directories.get_size(); i++ )
259 {
260 if( *math::autoload_directories[i] == name )
261 break;
262 }
263
264 if( GTK_WIDGET(user_data) == pref.auto_up )
265 {
266 if( i != 0 )
267 {
268 math::autoload_directories.swap( i, i-1 );
269
270 gtk_tree_model_get_iter_first( model, &iter2 );
271 for( int a=0; a<(i-1); a++ )
272 {
273 if( gtk_tree_model_iter_next( model, &iter2 ) == FALSE )
274 return;
275 }
276 gtk_list_store_swap( pref.auto_list_store, &iter, &iter2 );
277 }
278 }
279 else
280 {
281 if( i != math::autoload_directories.get_size()-1 )
282 {
283 math::autoload_directories.swap( i, i+1 );
284
285 iter2 = iter;
286 if( gtk_tree_model_iter_next( model, &iter2 ) == TRUE )
287 gtk_list_store_swap( pref.auto_list_store, &iter, &iter2 );
288 }
289 }
290
291 g_free( name );
292 }
293 }
294
prefwin_show(GtkWindow * parent)295 void prefwin_show(GtkWindow *parent)
296 {
297 if(prefwin == 0)
298 {
299 GtkWidget *vbox,*hbox,*apply,*box,*box2,*tmp,*table;
300 GtkAdjustment *spinner_adj;
301
302 prefwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
303
304 gtk_window_set_title( GTK_WINDOW(prefwin), _("Preferences") );
305 gtk_container_set_border_width( GTK_CONTAINER(prefwin), 5 );
306
307 g_signal_connect_swapped( GTK_OBJECT(prefwin), "delete-event", G_CALLBACK(prefwin_ok), NULL );
308
309 vbox = gtk_vbox_new( FALSE, 3 );
310
311 pref.notebook = gtk_notebook_new();
312
313 // General page starts
314 table = gtk_table_new( 2, 3, FALSE );
315 gtk_table_set_row_spacings( GTK_TABLE(table), 3 );
316 gtk_table_set_col_spacings( GTK_TABLE(table), 3 );
317 gtk_container_set_border_width( GTK_CONTAINER(table), 5 );
318
319 pref.general_translation_label = gtk_label_new_with_mnemonic( _("_Translation: ") );
320 gtk_table_attach( GTK_TABLE(table), pref.general_translation_label, 0, 1, 0, 1, GTK_FILL,
321 GtkAttachOptions(0), 1, 1);
322 gtk_misc_set_alignment( GTK_MISC(pref.general_translation_label), 0, 0.5 );
323
324 pref_general_language = gtk_combo_box_entry_new_text();
325 gtk_label_set_mnemonic_widget( GTK_LABEL(pref.general_translation_label),
326 pref_general_language );
327 gtk_entry_set_max_length(GTK_ENTRY(GTK_BIN(pref_general_language)->child),200);
328 gtk_combo_box_append_text(GTK_COMBO_BOX(pref_general_language), "English");
329 gtk_combo_box_append_text(GTK_COMBO_BOX(pref_general_language), "Svenska");
330 gtk_entry_set_text(GTK_ENTRY(GTK_BIN(pref_general_language)->child), language_filename.c_str());
331 g_signal_connect( GTK_OBJECT(pref_general_language), "changed",
332 G_CALLBACK(language_changed), 0 );
333 gtk_table_attach( GTK_TABLE(table), pref_general_language, 1, 2, 0, 1,
334 GtkAttachOptions(GTK_FILL | GTK_EXPAND), GtkAttachOptions(0), 1, 1 );
335 {
336 GtkWidget *tmpimg;
337 tmpimg = gtk_image_new_from_stock( GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON );
338
339 tmp = gtk_button_new();
340 gtk_container_add(GTK_CONTAINER(tmp),tmpimg);
341 }
342 g_signal_connect( GTK_OBJECT(tmp), "clicked", G_CALLBACK(prefwin_browse_button),
343 gpointer(pref_general_language) );
344 gtk_table_attach( GTK_TABLE(table), tmp, 2, 3, 0, 1, GTK_FILL, GtkAttachOptions(0), 1, 1 );
345
346
347 pref.general_start_window_label = gtk_label_new_with_mnemonic( _("Start _window: ") );
348 gtk_table_attach( GTK_TABLE(table), pref.general_start_window_label, 0, 1, 1, 2, GTK_FILL,
349 GtkAttachOptions(0), 1, 1 );
350 gtk_misc_set_alignment(GTK_MISC (pref.general_start_window_label), 0, 0.5);
351
352 pref_general_start_window = gtk_combo_box_new_text();
353 gtk_label_set_mnemonic_widget( GTK_LABEL(pref.general_start_window_label),
354 pref_general_start_window );
355 gtk_table_attach( GTK_TABLE(table), pref_general_start_window, 1, 3, 1, 2,
356 GtkAttachOptions(GTK_FILL | GTK_EXPAND), GTK_FILL, 0, 0 );
357
358 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window),
359 _("Simple calculator") );
360 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window),
361 _("Advanced calculator") );
362 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window), _("UMP-editor") );
363 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window), _("Graph tools") );
364 gtk_combo_box_append_text( GTK_COMBO_BOX(pref_general_start_window), _("Matrix editor") );
365 if(default_start_window == "Simple")
366 gtk_combo_box_set_active( GTK_COMBO_BOX(pref_general_start_window), 0 );
367 else if(default_start_window == "Editor")
368 gtk_combo_box_set_active( GTK_COMBO_BOX(pref_general_start_window), 2 );
369 else if(default_start_window == "Graphtool")
370 gtk_combo_box_set_active( GTK_COMBO_BOX(pref_general_start_window), 3 );
371 else if(default_start_window == "MatrixEditor")
372 gtk_combo_box_set_active( GTK_COMBO_BOX(pref_general_start_window), 4 );
373 else // "Advanced"
374 gtk_combo_box_set_active( GTK_COMBO_BOX(pref_general_start_window), 1 );
375
376
377 tmp = gtk_label_new_with_mnemonic( _("_General") );
378 gtk_notebook_append_page(GTK_NOTEBOOK(pref.notebook),table,tmp);
379 // General page starts
380
381 // Number format starts
382 box2 = gtk_vbox_new( FALSE, 3 );
383 gtk_container_set_border_width(GTK_CONTAINER(box2), 5);
384
385
386 { // decimals frame
387 pref.format_frame_decimals = gtk_frame_new( _("Decimals") );
388 gtk_box_pack_start( GTK_BOX(box2), pref.format_frame_decimals, FALSE, FALSE, 0 );
389 gtk_container_set_border_width( GTK_CONTAINER(pref.format_frame_decimals), 5 );
390
391
392 box = gtk_vbox_new(FALSE,3);
393 gtk_container_add( GTK_CONTAINER(pref.format_frame_decimals), box );
394 gtk_container_set_border_width( GTK_CONTAINER(box), 5 );
395
396
397 pref_format_type[0] = gtk_radio_button_new_with_mnemonic( 0, _("No_rmal") );
398 pref_format_type[1] = gtk_radio_button_new_with_mnemonic_from_widget(
399 GTK_RADIO_BUTTON(pref_format_type[0]), _("Mi_xed") );
400 pref_format_type[2] = gtk_radio_button_new_with_mnemonic_from_widget(
401 GTK_RADIO_BUTTON(pref_format_type[0]), _("_Science") );
402
403 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pref_format_type[format.get_type()]),TRUE);
404
405 hbox = gtk_hbox_new(FALSE,3);
406 for(int i=0;i<3;i++)
407 gtk_box_pack_start(GTK_BOX(hbox), pref_format_type[i], FALSE, FALSE, 0);
408 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
409
410 pref.format_max_decimals_label = gtk_label_new_with_mnemonic( _("Max _decimals: ") );
411
412 spinner_adj = (GtkAdjustment *) gtk_adjustment_new( gdouble(format.get_max_decimals()),
413 0.0, 50.0, 1.0, 5.0, 5.0 );
414 pref_format_spinner = gtk_spin_button_new( spinner_adj, 1.0, 0 );
415 gtk_label_set_mnemonic_widget( GTK_LABEL(pref.format_max_decimals_label),
416 pref_format_spinner );
417
418 hbox = gtk_hbox_new( FALSE, 3 );
419 gtk_box_pack_start( GTK_BOX(hbox), pref.format_max_decimals_label, FALSE, FALSE, 0 );
420 gtk_box_pack_start( GTK_BOX(hbox), pref_format_spinner, FALSE, FALSE, 0 );
421
422 gtk_box_pack_start( GTK_BOX(box), hbox, FALSE, FALSE, 2 );
423
424 pref_format_trailing = gtk_check_button_new_with_mnemonic( _("Show trailing _zeros") );
425
426 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(pref_format_trailing),
427 (format.show_trailingzeros) ? TRUE : FALSE );
428
429 gtk_box_pack_start(GTK_BOX(box), pref_format_trailing, FALSE, FALSE, 0);
430 } // decimals frame
431
432 { // fractions frame
433 GtkWidget *hbox;
434
435 pref.format_frame_fractions = gtk_frame_new( _("Fractions") );
436 gtk_box_pack_start( GTK_BOX(box2), pref.format_frame_fractions, FALSE, FALSE, 0 );
437
438 gtk_container_set_border_width(GTK_CONTAINER(pref.format_frame_fractions), 5);
439
440 pref.format_frame_frac_show_as = gtk_frame_new( _("Show as...") );
441 gtk_frame_set_shadow_type( GTK_FRAME(pref.format_frame_frac_show_as), GTK_SHADOW_NONE );
442 gtk_container_add( GTK_CONTAINER(pref.format_frame_fractions),
443 pref.format_frame_frac_show_as );
444 gtk_container_set_border_width(GTK_CONTAINER(pref.format_frame_frac_show_as), 3);
445
446 hbox = gtk_hbox_new( FALSE, 3 );
447 gtk_container_add( GTK_CONTAINER(pref.format_frame_frac_show_as), hbox );
448 gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
449
450
451 pref.format_fraction_type[0] = gtk_radio_button_new_with_mnemonic( 0, _("fractions") );
452 pref.format_fraction_type[1] = gtk_radio_button_new_with_mnemonic_from_widget(
453 GTK_RADIO_BUTTON(pref.format_fraction_type[0]), _("integer + fraction") );
454 pref.format_fraction_type[2] = gtk_radio_button_new_with_mnemonic_from_widget(
455 GTK_RADIO_BUTTON(pref.format_fraction_type[0]), _("decimals") );
456
457 gtk_toggle_button_set_active(
458 GTK_TOGGLE_BUTTON(pref.format_fraction_type[format.get_fraction_type()]), TRUE );
459
460 for(int i=0;i<3;i++)
461 gtk_box_pack_start(GTK_BOX(hbox), pref.format_fraction_type[i], FALSE, FALSE, 0);
462
463 } // fractions frame
464
465 tmp = gtk_label_new_with_mnemonic( _("_Number format") );
466 gtk_notebook_append_page(GTK_NOTEBOOK(pref.notebook),box2,tmp);
467 // Number format ends
468
469 // Autoload page starts
470 table = gtk_table_new( 4, 2, FALSE );
471 gtk_table_set_row_spacings( GTK_TABLE(table), 3 );
472 gtk_table_set_col_spacings( GTK_TABLE(table), 3 );
473 gtk_container_set_border_width(GTK_CONTAINER(table), 5);
474
475 {
476 GtkTreeIter iter;
477 GtkCellRenderer *renderer;
478
479 pref.auto_list_store = gtk_list_store_new( AUTO_N_COLUMNS, G_TYPE_STRING );
480
481 for( int i=0; i<math::autoload_directories.get_size(); i++ )
482 {
483 gtk_list_store_append( pref.auto_list_store, &iter );
484 gtk_list_store_set( pref.auto_list_store, &iter, AUTO_COLUMN_PATH,
485 math::autoload_directories[i]->c_str(), -1 );
486 }
487 pref.auto_treeview = gtk_tree_view_new_with_model( GTK_TREE_MODEL(pref.auto_list_store) );
488 gtk_table_attach( GTK_TABLE(table), pref.auto_treeview, 0, 1, 0, 4,
489 GtkAttachOptions(GTK_EXPAND | GTK_FILL),
490 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 0, 0 );
491
492 renderer = gtk_cell_renderer_text_new();
493 pref.auto_column = gtk_tree_view_column_new_with_attributes( _("Path"), renderer, "text",
494 AUTO_COLUMN_PATH, NULL );
495 gtk_tree_view_append_column( GTK_TREE_VIEW(pref.auto_treeview), pref.auto_column );
496 }
497 pref.auto_add = gtk_button_new_with_mnemonic( _("Add") );
498 g_signal_connect( GTK_OBJECT(pref.auto_add), "clicked", G_CALLBACK(prefwin_browse_button),
499 gpointer(pref.auto_add) );
500 gtk_table_attach( GTK_TABLE(table), pref.auto_add, 1, 2, 0, 1, GTK_FILL,
501 GtkAttachOptions(0), 0, 0 );
502
503 pref.auto_remove = gtk_button_new_with_mnemonic( _("Remove") );
504 g_signal_connect( GTK_OBJECT(pref.auto_remove), "clicked", G_CALLBACK(prefwin_auto_remove),
505 0 );
506 gtk_table_attach( GTK_TABLE(table), pref.auto_remove, 1, 2, 1, 2, GTK_FILL,
507 GtkAttachOptions(0), 0, 0 );
508
509 pref.auto_up = gtk_button_new_with_mnemonic( _("Move up") );
510 g_signal_connect( GTK_OBJECT(pref.auto_up), "clicked", G_CALLBACK(prefwin_auto_swap),
511 gpointer(pref.auto_up) );
512 gtk_table_attach( GTK_TABLE(table), pref.auto_up, 1, 2, 2, 3, GTK_FILL,
513 GtkAttachOptions(0), 0, 0 );
514
515 pref.auto_down = gtk_button_new_with_mnemonic( _("Move down") );
516 g_signal_connect( GTK_OBJECT(pref.auto_down), "clicked", G_CALLBACK(prefwin_auto_swap),
517 gpointer(pref.auto_down) );
518 gtk_table_attach( GTK_TABLE(table), pref.auto_down, 1, 2, 3, 4, GTK_FILL,
519 GtkAttachOptions(0), 0, 0 );
520
521 tmp = gtk_label_new_with_mnemonic( _("_Autoloading") );
522 gtk_notebook_append_page( GTK_NOTEBOOK(pref.notebook), table, tmp );
523 // Autoload page ends
524 // snaping starts
525 box2 = gtk_vbox_new( FALSE, 3 );
526 gtk_container_set_border_width(GTK_CONTAINER(box2), 5);
527
528
529 pref.snap_frame = gtk_frame_new( _("Snaping") );
530 gtk_box_pack_start( GTK_BOX(box2), pref.snap_frame, FALSE, FALSE, 0 );
531 gtk_container_set_border_width( GTK_CONTAINER(pref.snap_frame), 5 );
532
533 box = gtk_vbox_new( FALSE, 3 );
534 gtk_container_add( GTK_CONTAINER(pref.snap_frame), box );
535 gtk_container_set_border_width( GTK_CONTAINER(box), 5 );
536
537 pref_snap_size = gtk_spin_button_new_with_range( 0.0, 100.0, 1.0 );
538 gtk_spin_button_set_value( GTK_SPIN_BUTTON(pref_snap_size), gdouble(SNAP_SIZE) );
539 pref.snap_size_label = gtk_label_new_with_mnemonic( _("Snap size: ") );
540 gtk_label_set_mnemonic_widget( GTK_LABEL(pref.snap_size_label), pref_snap_size );
541
542
543 hbox = gtk_hbox_new( FALSE, 3 );
544 gtk_box_pack_start( GTK_BOX(hbox), pref.snap_size_label, FALSE, FALSE, 0 );
545 gtk_box_pack_start( GTK_BOX(hbox), pref_snap_size, FALSE, FALSE, 0 );
546
547 gtk_box_pack_start( GTK_BOX(box), hbox, FALSE, FALSE, 2 );
548
549 tmp = gtk_label_new_with_mnemonic( _("_Snaping") );
550 gtk_notebook_append_page( GTK_NOTEBOOK(pref.notebook), box2, tmp );
551 // snaping ends
552 gtk_box_pack_start( GTK_BOX(vbox), pref.notebook, TRUE, TRUE, 0 );
553 gtk_notebook_set_tab_pos( GTK_NOTEBOOK(pref.notebook), GTK_POS_LEFT );
554
555 {
556 GtkWidget *tmpimg,*tmpbox;
557 tmpimg = gtk_image_new_from_stock( GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON );
558
559 pref.button_ok_label = gtk_label_new_with_mnemonic(button_ok);
560
561 tmpbox = gtk_hbox_new( FALSE, 0 );
562 gtk_box_pack_start( GTK_BOX(tmpbox), tmpimg, FALSE, FALSE, 2 );
563 gtk_box_pack_start( GTK_BOX(tmpbox), pref.button_ok_label, FALSE, FALSE, 2 );
564 apply = gtk_button_new();
565 gtk_container_add( GTK_CONTAINER(apply), tmpbox );
566 }
567 g_signal_connect_swapped( GTK_OBJECT(apply), "clicked", G_CALLBACK(prefwin_ok), NULL );
568
569 hbox = gtk_hbox_new(FALSE,0);
570 gtk_box_pack_end(GTK_BOX(hbox), apply, FALSE, FALSE, 0);
571
572
573 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
574
575
576 gtk_container_add(GTK_CONTAINER(prefwin), vbox);
577
578 gtk_window_set_modal(GTK_WINDOW(prefwin), TRUE);
579 if(parent != 0)
580 gtk_window_set_transient_for(GTK_WINDOW(prefwin), parent);
581
582 gtk_widget_show_all(prefwin);
583 }
584 else
585 gtk_window_present(GTK_WINDOW(prefwin));
586 }
587
588
prefwin_close(void)589 void prefwin_close(void)
590 {
591 gtk_widget_destroy(prefwin);
592 prefwin = 0;
593 }
594