void set_dialog_default_position() { int w, h; XPLMGetScreenSize(&w, &h); set_dialog_position(get_dialog_default_x(), get_dialog_default_y()); debug("moved dialog to default position"); }
int DialogInput(GtkWidget * parent, const char *title, const char *mes, const char *init_str, char **s, int *x, int *y) { GtkWidget *dlg, *text; GtkBox *vbox; int data; gint res_id; dlg = gtk_dialog_new_with_buttons(title, GTK_WINDOW(parent), #if GTK_CHECK_VERSION(3, 12, 0) && USE_HEADER_BAR GTK_DIALOG_USE_HEADER_BAR | #endif GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK); gtk_window_set_resizable(GTK_WINDOW(dlg), FALSE); vbox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); if (mes) { GtkWidget *label; label = gtk_label_new(mes); gtk_box_pack_start(vbox, label, FALSE, FALSE, 5); } text = create_text_entry(FALSE, TRUE); if (init_str) { gtk_entry_set_text(GTK_ENTRY(text), init_str); } gtk_box_pack_start(vbox, text, FALSE, FALSE, 5); set_dialog_position(dlg, x, y); gtk_widget_show_all(dlg); res_id = ndialog_run(dlg); switch (res_id) { case GTK_RESPONSE_OK: *s = g_strdup(gtk_entry_get_text(GTK_ENTRY(text))); data = IDOK; break; default: data = IDCANCEL; break; } get_dialog_position(dlg, x, y); gtk_widget_destroy(dlg); reset_event(); return data; }
int DialogButton(GtkWidget *parent, const char *title, const char *caption, struct narray *array, int *x, int *y) { GtkWidget *dlg; gint res_id; char **d; int i, anum; d = arraydata(array); anum = arraynum(array); if (anum < 1) { return -1; } dlg = gtk_dialog_new(); for (i = 0; i < anum; i++) { if (d[i] && g_utf8_validate(d[i], -1, NULL)) { gtk_dialog_add_button(GTK_DIALOG(dlg), d[i], i); } } if (title && g_utf8_validate(title, -1, NULL)) { gtk_window_set_title(GTK_WINDOW(dlg), title); } if (caption && g_utf8_validate(caption, -1, NULL)) { GtkWidget *box, *label; box = gtk_dialog_get_content_area(GTK_DIALOG(dlg)); label = gtk_label_new(caption); gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); } gtk_window_set_resizable(GTK_WINDOW(dlg), FALSE); set_dialog_position(dlg, x, y); gtk_widget_show_all(dlg); res_id = ndialog_run(dlg); get_dialog_position(dlg, x, y); gtk_widget_destroy(dlg); reset_event(); return res_id; }
int DialogCheck(GtkWidget *parent, const char *title, const char *caption, struct narray *array, int *r, int *x, int *y) { GtkWidget *dlg, *btn, **btn_ary; GtkBox *vbox; int data; gint res_id; char **d; int i, anum; d = arraydata(array); anum = arraynum(array); btn_ary = g_malloc(anum * sizeof(*btn_ary)); if (btn_ary == NULL) return IDCANCEL; dlg = gtk_dialog_new_with_buttons(title, GTK_WINDOW(parent), #if GTK_CHECK_VERSION(3, 12, 0) && USE_HEADER_BAR GTK_DIALOG_USE_HEADER_BAR | #endif GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK); gtk_window_set_resizable(GTK_WINDOW(dlg), FALSE); vbox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); if (caption) { GtkWidget *label; label = gtk_label_new(caption); gtk_box_pack_start(vbox, label, FALSE, FALSE, 5); } btn = NULL; for (i = 0; i < anum; i++) { btn = gtk_check_button_new_with_mnemonic(d[i]); gtk_box_pack_start(vbox, btn, FALSE, FALSE, 2); btn_ary[i] = btn; } for (i = 0; i < anum; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(btn_ary[i]), r[i]); } set_dialog_position(dlg, x, y); gtk_widget_show_all(dlg); res_id = ndialog_run(dlg); switch (res_id) { case GTK_RESPONSE_OK: for (i = 0; i < anum; i++) { r[i] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(btn_ary[i])); } data = IDOK; break; default: data = IDCANCEL; break; } g_free(btn_ary); get_dialog_position(dlg, x, y); gtk_widget_destroy(dlg); reset_event(); return data; }
int DialogSpinEntry(GtkWidget *parent, const char *title, const char *caption, double min, double max, double inc, double *r, int *x, int *y) { GtkWidget *dlg, *spin; GtkBox *vbox; int data, n; gint res_id; double prec; dlg = gtk_dialog_new_with_buttons(title, GTK_WINDOW(parent), #if GTK_CHECK_VERSION(3, 12, 0) && USE_HEADER_BAR GTK_DIALOG_USE_HEADER_BAR | #endif GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK); gtk_window_set_resizable(GTK_WINDOW(dlg), FALSE); vbox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); if (caption) { GtkWidget *label; label = gtk_label_new(caption); gtk_box_pack_start(vbox, label, FALSE, FALSE, 5); } if (inc == 0) inc = 1; spin = gtk_spin_button_new_with_range(min, max, inc); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spin), TRUE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), *r); gtk_box_pack_start(vbox, spin, FALSE, FALSE, 2); gtk_entry_set_activates_default(GTK_ENTRY(spin), TRUE); prec = log10(fabs(inc)); if (prec < 0) { n = ceil(- prec); } else { n = 0; } gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), n); set_dialog_position(dlg, x, y); gtk_widget_show_all(dlg); res_id = ndialog_run(dlg); switch (res_id) { case GTK_RESPONSE_OK: *r = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin)); data = IDOK; break; default: data = IDCANCEL; break; } get_dialog_position(dlg, x, y); gtk_widget_destroy(dlg); reset_event(); return data; }
int DialogComboEntry(GtkWidget *parent, const char *title, const char *caption, struct narray *array, int sel, char **r, int *x, int *y) { GtkWidget *dlg, *combo; GtkBox *vbox; int data; gint res_id; char **d; const char *s; int i, anum; d = arraydata(array); anum = arraynum(array); *r = NULL; dlg = gtk_dialog_new_with_buttons(title, GTK_WINDOW(parent), #if GTK_CHECK_VERSION(3, 12, 0) && USE_HEADER_BAR GTK_DIALOG_USE_HEADER_BAR | #endif GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_OK"), GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK); gtk_window_set_resizable(GTK_WINDOW(dlg), FALSE); vbox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); if (caption) { GtkWidget *label; label = gtk_label_new(caption); gtk_box_pack_start(vbox, label, FALSE, FALSE, 5); } combo = combo_box_entry_create(); for (i = 0; i < anum; i++) { combo_box_append_text(combo, d[i]); } if (sel >= 0 && sel < anum) { combo_box_set_active(combo, sel); } gtk_box_pack_start(vbox, combo, FALSE, FALSE, 2); set_dialog_position(dlg, x, y); gtk_widget_show_all(dlg); res_id = ndialog_run(dlg); switch (res_id) { case GTK_RESPONSE_OK: s = combo_box_entry_get_text(combo); if (s) { *r = g_strdup(s); } else { *r = NULL; } data = IDOK; break; default: data = IDCANCEL; break; } get_dialog_position(dlg, x, y); gtk_widget_destroy(dlg); reset_event(); return data; }