static void build_dwiz_buttons (GtkWidget *dlg, DATASET *dwinfo) { GtkWidget *hbox = gtk_dialog_get_action_area(GTK_DIALOG(dlg)); GtkWidget *b; /* "Cancel" button */ b = gtk_button_new_from_stock(GTK_STOCK_CANCEL); g_object_set_data(G_OBJECT(b), "dlg", dlg); g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(dwiz_cancel), dwinfo); gtk_container_add(GTK_CONTAINER(hbox), b); g_object_set_data(G_OBJECT(dlg), "cancel", b); /* "Back" button */ b = gtk_button_new_from_stock(GTK_STOCK_GO_BACK); g_object_set_data(G_OBJECT(b), "dlg", dlg); g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(dwiz_back), dlg); gtk_container_add(GTK_CONTAINER(hbox), b); g_object_set_data(G_OBJECT(dlg), "back", b); /* "Forward" button */ b = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD); g_object_set_data(G_OBJECT(b), "dlg", dlg); g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(dwiz_forward), dlg); gtk_container_add(GTK_CONTAINER(hbox), b); g_object_set_data(G_OBJECT(dlg), "forward", b); /* "Apply" button */ b = gtk_button_new_from_stock(GTK_STOCK_APPLY); g_object_set_data(G_OBJECT(b), "dlg", dlg); g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(dwiz_apply), dwinfo); gtk_container_add(GTK_CONTAINER(hbox), b); g_object_set_data(G_OBJECT(dlg), "apply", b); /* Help button for panel mode selection */ b = context_help_button(hbox, PANEL_MODE); g_object_set_data(G_OBJECT(dlg), "help", b); }
void blocking_edit_dialog (int ci, const char *title, const char *info, const char *deflt, void (*okfunc)(), void *okptr, Varclick click, GtkWidget *parent, int *canceled) { dialog_t *d; GtkWidget *w; MODEL *pmod = NULL; int helpcode; int clear = 0; if (open_edit_dialog != NULL && ci != MINIBUF) { gtk_window_present(GTK_WINDOW(open_edit_dialog)); return; } helpcode = edit_dialog_help_code(ci, okptr); d = edit_dialog_new(ci, title, okfunc, okptr, helpcode, parent, canceled); if (d == NULL) return; open_edit_dialog = d->dialog; set_dialog_border_widths(d->vbox, d->bbox); gretl_dialog_set_resizeable(d->dialog, FALSE); gtk_button_box_set_layout(GTK_BUTTON_BOX(d->bbox), GTK_BUTTONBOX_END); if (ci == ESTIMATE) { /* estimating saved equation system */ dlg_display_sys(d); } else if (ci == SYSTEM && d->data != NULL) { /* respecifying equation system */ edit_dialog_add_note(info, d->vbox); dlg_display_sys(d); clear = 1; } else if (ci == NLS || ci == MLE || ci == GMM || ci == SYSTEM || ci == RESTRICT) { int hsize = 62; edit_dialog_add_note(info, d->vbox); d->edit = dlg_text_edit_new(&hsize, TRUE); dialog_table_setup(d, hsize); gretl_dialog_set_resizeable(d->dialog, TRUE); if (ci != RESTRICT && deflt != NULL) { /* re-specifying a nonlinear model */ textview_set_text(d->edit, deflt); if (ci == NLS || ci == MLE || ci == GMM) { pmod = okptr; } } else if (dlg_text_set_previous(d) || dlg_text_set_gmm_skel(d)) { /* insert previous text, if any and if the command is the same as previously -- or insert skeleton of command */ clear = 1; } if (ci != RESTRICT && ci != GMM) { g_signal_connect(G_OBJECT(d->edit), "button-press-event", G_CALLBACK(edit_dialog_popup_handler), d); } } else { if (info != NULL) { w = gtk_label_new(info); gtk_label_set_justify(GTK_LABEL(w), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(d->vbox), w, TRUE, TRUE, 5); gtk_widget_show(w); } d->edit = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(d->vbox), d->edit, TRUE, TRUE, 5); /* make the Enter key do the business */ if (okfunc != NULL) { gtk_entry_set_activates_default(GTK_ENTRY(d->edit), TRUE); } if (deflt != NULL && *deflt != '\0') { gtk_entry_set_text(GTK_ENTRY(d->edit), deflt); gtk_editable_select_region(GTK_EDITABLE(d->edit), 0, strlen(deflt)); } g_signal_connect(G_OBJECT(GTK_EDITABLE(d->edit)), "changed", G_CALLBACK(raise_and_focus_dialog), d->dialog); } if (ci == SYSTEM || ci == ESTIMATE) { GtkWidget *bt, *bv; bt = dialog_option_switch(d->vbox, d, OPT_T, NULL); bv = dialog_option_switch(d->vbox, d, OPT_V, NULL); system_estimator_list(d->vbox, d, bt, bv); } else if (ci == NLS || ci == MLE) { dialog_option_switch(d->vbox, d, OPT_V, pmod); dialog_option_switch(d->vbox, d, OPT_R, pmod); if (ci == MLE) { iter_control_button(d->vbox, d, pmod); } } else if (ci == GMM) { dialog_option_switch(d->vbox, d, OPT_V, pmod); build_gmm_combo(d->vbox, d, pmod); } else if (ci == RESTRICT && ols_model_window(okptr)) { dialog_option_switch(d->vbox, d, OPT_B, NULL); } else if (ci == RESTRICT && vecm_model_window(okptr)) { dialog_option_switch(d->vbox, d, OPT_F, NULL); } else if (ci == GR_BOX) { dialog_option_switch(d->vbox, d, OPT_O, NULL); } if (click == VARCLICK_INSERT_ID) { active_edit_id = d->edit; } else if (click == VARCLICK_INSERT_NAME) { active_edit_name = d->edit; } else if (click == VARCLICK_INSERT_TEXT) { active_edit_text = d->edit; } if (click != VARCLICK_NONE || helpcode > 0) { gtk_window_set_keep_above(GTK_WINDOW(d->dialog), FALSE); } else { gtk_window_set_keep_above(GTK_WINDOW(d->dialog), TRUE); } gtk_widget_grab_focus(d->edit); /* "Clear" button? */ if (clear) { w = gtk_button_new_from_stock(GTK_STOCK_CLEAR); gtk_container_add(GTK_CONTAINER(d->bbox), w); g_signal_connect(G_OBJECT(w), "clicked", G_CALLBACK(clear_dlg_previous), d); } /* "Cancel" button */ cancel_delete_button(d->bbox, d->dialog); /* "OK" button */ if (canceled != NULL) { w = ok_validate_button(d->bbox, canceled, NULL); } else { w = ok_button(d->bbox); } g_signal_connect(G_OBJECT(w), "clicked", G_CALLBACK(edit_dialog_ok), d); gtk_widget_grab_default(w); /* "Help" button, if wanted */ if (helpcode > 0) { context_help_button(d->bbox, helpcode); } if (ci == GENR) { gtk_widget_set_size_request(GTK_WIDGET(d->dialog), 400, -1); } gtk_widget_show_all(d->dialog); }