static gboolean rawxyz_dialog(RawXYZArgs *args, GwySurface *surface) { GtkWidget *dialog, *label; GtkTable *table; RawXYZControls controls; gint row, response; gchar *s; controls.args = args; controls.surface = surface; dialog = gtk_dialog_new_with_buttons(_("Import XYZ Data"), NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); gwy_help_add_to_file_dialog(GTK_DIALOG(dialog), GWY_HELP_DEFAULT); controls.dialog = dialog; table = GTK_TABLE(gtk_table_new(6, 5, FALSE)); gtk_table_set_row_spacings(table, 2); gtk_table_set_col_spacings(table, 6); gtk_container_set_border_width(GTK_CONTAINER(table), 4); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), GTK_WIDGET(table), TRUE, TRUE, 0); row = 0; label = gtk_label_new(_("Number of points:")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_table_attach(table, label, 0, 1, row, row+1, GTK_FILL, 0, 0, 0); s = g_strdup_printf("%u", surface->n); label = gtk_label_new(s); g_free(s); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(table, label, 1, 2, row, row+1, GTK_FILL, 0, 0, 0); row++; construct_range(table, _("X-range:"), row++, &controls.xmin, &controls.xmax, &controls.xunit); construct_range(table, _("Y-range:"), row++, &controls.ymin, &controls.ymax, &controls.yunit); construct_range(table, _("Z-range:"), row++, &controls.zmin, &controls.zmax, &controls.zunit); gtk_table_set_row_spacing(table, row-1, 8); row = construct_units(&controls, table, row); g_signal_connect_swapped(controls.xy_units, "changed", G_CALLBACK(xyunits_changed), &controls); g_signal_connect_swapped(controls.z_units, "changed", G_CALLBACK(zunits_changed), &controls); gtk_entry_set_text(GTK_ENTRY(controls.xy_units), args->xy_units); gtk_entry_set_text(GTK_ENTRY(controls.z_units), args->z_units); xyunits_changed(&controls, GTK_ENTRY(controls.xy_units)); zunits_changed(&controls, GTK_ENTRY(controls.z_units)); gtk_widget_show_all(dialog); do { response = gtk_dialog_run(GTK_DIALOG(dialog)); switch (response) { case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_DELETE_EVENT: gtk_widget_destroy(dialog); case GTK_RESPONSE_NONE: return FALSE; break; case GTK_RESPONSE_OK: break; default: g_assert_not_reached(); break; } } while (response != GTK_RESPONSE_OK); gtk_widget_destroy(dialog); return TRUE; }
void MaxArray<T,C>::fill(size_t n, const T& x) { FTL_ASSERT(n <= C); if (n > _size) { construct_range(data() + _size, n - _size, x); } }