+
+ ui->entry_V = NULL;
+ ui->entry_A = NULL;
+
+ gtk_widget_destroy(GTK_WIDGET(self));
+}
+
+static int apply_dialog(ses_ui_t* ui)
+{
+ GtkWidget* dialog;
+ GtkWidget* content_area;
+ GtkWidget* grid;
+
+ GtkWidget* label_V;
+ GtkWidget* label_A;
+ GtkWidget* entry_V;
+ GtkWidget* entry_A;
+
+ dialog = gtk_dialog_new_with_buttons ("apply",
+ ui->window,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ "_OK",
+ GTK_RESPONSE_NONE,
+ NULL);
+
+ if (!dialog)
+ return -ENOMEM;
+
+ grid = gtk_grid_new();
+ if (!grid)
+ goto grid_error;
+
+ label_V = gtk_label_new("V wave / 电压波形");
+ if (!label_V)
+ goto label_V_error;
+
+ label_A = gtk_label_new("A wave / 电流波形");
+ if (!label_A)
+ goto label_A_error;
+
+ entry_V = gtk_entry_new();
+ if (!entry_V)
+ goto entry_V_error;
+
+ entry_A = gtk_entry_new();
+ if (!entry_A)
+ goto entry_A_error;
+
+ content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
+
+ gtk_container_add(GTK_CONTAINER(content_area), grid);
+
+ gtk_grid_attach(GTK_GRID(grid), label_V, 0, 0, 1, 1);
+ gtk_grid_attach(GTK_GRID(grid), entry_V, 1, 0, 1, 1);
+
+ gtk_grid_attach(GTK_GRID(grid), label_A, 0, 1, 1, 1);
+ gtk_grid_attach(GTK_GRID(grid), entry_A, 1, 1, 1, 1);
+
+ g_signal_connect(dialog, "response", G_CALLBACK(apply_response), ui);
+
+ ui->entry_V = GTK_ENTRY(entry_V);
+ ui->entry_A = GTK_ENTRY(entry_A);
+
+ gtk_widget_show_all(dialog);
+ return 0;
+
+entry_A_error:
+ gtk_widget_destroy(entry_V);
+entry_V_error:
+ gtk_widget_destroy(label_A);
+label_A_error:
+ gtk_widget_destroy(label_V);
+label_V_error:
+ gtk_widget_destroy(grid);
+grid_error:
+ gtk_widget_destroy(dialog);
+ return -ENOMEM;
+}
+
+static void apply_clicked(GtkButton* self, gpointer user_data)
+{
+ ses_ui_t* ui = user_data;
+
+ int ret = ui_save_file(ui);
+ if (ret < 0)
+ return;
+
+ ret = apply_dialog(ui);