305
305
gchar *user_input(gchar *label, gchar *title, gchar *defvalue,
306
gboolean (*validator)(gchar *c))
306
gboolean (*validator)(gchar *c), GtkWindow *below)
308
308
GtkWidget *a,*b,*c,*d,*ent;
309
309
struct user_input_data uid;
310
310
a = gtk_window_new(GTK_WINDOW_DIALOG);
312
gtk_window_set_transient_for(GTK_WINDOW(a),below);
313
gtk_window_set_position(GTK_WINDOW(a),GTK_WIN_POS_CENTER_ON_PARENT);
315
gtk_window_set_position(GTK_WINDOW(a),GTK_WIN_POS_CENTER);
311
316
gtk_window_set_title(GTK_WINDOW(a),title?title:_("Input"));
312
317
gtk_window_set_modal(GTK_WINDOW(a),TRUE);
313
318
gtk_container_set_border_width(GTK_CONTAINER(a),5);
315
320
GTK_SIGNAL_FUNC(user_input_destroy),NULL);
316
321
b = gtk_vbox_new(FALSE,3);
317
322
gtk_container_add(GTK_CONTAINER(a),b);
319
323
c = gtk_hbox_new(FALSE,2);
320
324
gtk_box_pack_start(GTK_BOX(b),c,FALSE,FALSE,0);
323
326
d = gtk_label_new(label);
324
327
gtk_box_pack_start(GTK_BOX(c),d,FALSE,FALSE,0);
327
329
ent = gtk_entry_new();
328
330
gtk_entry_set_text(GTK_ENTRY(ent),defvalue);
329
331
gtk_box_pack_start(GTK_BOX(b),ent,FALSE,FALSE,0);
330
gtk_widget_show(ent);
331
332
c = gtk_hseparator_new();
332
gtk_box_pack_start(GTK_BOX(b),c,FALSE,FALSE,0);
334
c = gtk_hbox_new(FALSE,2);
335
gtk_box_pack_start(GTK_BOX(b),c,FALSE,FALSE,0);
333
gtk_box_pack_start(GTK_BOX(b),c,FALSE,FALSE,3);
334
c = gtk_hbutton_box_new();
335
gtk_box_pack_start(GTK_BOX(b),c,FALSE,FALSE,0);
337
336
d = gtk_button_new_with_label(_("OK"));
338
337
gtk_signal_connect(GTK_OBJECT(d),"clicked",
339
338
GTK_SIGNAL_FUNC(user_input_ok),&uid);
340
gtk_box_pack_start(GTK_BOX(c),d,FALSE,FALSE,0);
339
gtk_container_add(GTK_CONTAINER(c),d);
342
340
d = gtk_button_new_with_label(_("Cancel"));
343
341
gtk_signal_connect(GTK_OBJECT(d),"clicked",GTK_SIGNAL_FUNC(modal_callback),
344
342
(gpointer)MR_CANCEL);
345
343
gtk_signal_connect_object(GTK_OBJECT(d),"clicked",
346
344
GTK_SIGNAL_FUNC(gtk_widget_destroy),
348
gtk_box_pack_start(GTK_BOX(c),d,FALSE,FALSE,0);
346
gtk_container_add(GTK_CONTAINER(c),d);
347
gtk_widget_show_all(a);
352
349
uid.validator = validator;
369
366
gboolean user_input_float(gchar *label, gchar *title, gfloat defvalue,
367
GtkWindow *below, gfloat *result)
372
369
gchar *c,d[128],*e;
373
370
g_snprintf(d,sizeof(d),"%f",defvalue);
374
c = user_input(label,title,d,user_input_float_validator);
371
c = user_input(label,title,d,user_input_float_validator,below);
375
372
if (!c) return TRUE;
376
373
*result = (gfloat)strtod(c,&e);
377
374
g_assert(*e == 0);