| 2482 | } |
| 2483 | |
| 2484 | static void |
| 2485 | preset_save_as_write_cb (GtkDialog *overwrite_dlg, int response, GtkDialog *dialog) |
| 2486 | { |
| 2487 | const char *name, *category; |
| 2488 | GtkEditable *entry; |
| 2489 | GtkTextView *tv; |
| 2490 | signal_user_data_t *ud = ghb_ud(); |
| 2491 | |
| 2492 | if (overwrite_dlg) |
| 2493 | gtk_window_destroy(GTK_WINDOW(overwrite_dlg)); |
| 2494 | |
| 2495 | if (response == GTK_RESPONSE_ACCEPT) |
| 2496 | { |
| 2497 | GtkTextBuffer * buffer; |
| 2498 | GtkTextIter start, end; |
| 2499 | char * desc; |
| 2500 | gboolean def; |
| 2501 | |
| 2502 | g_signal_handlers_disconnect_by_data(dialog, ud); |
| 2503 | gtk_widget_set_visible(GTK_WIDGET(dialog), FALSE); |
| 2504 | |
| 2505 | entry = GTK_EDITABLE(ghb_builder_widget("PresetName")); |
| 2506 | tv = GTK_TEXT_VIEW(ghb_builder_widget("PresetDescription")); |
| 2507 | |
| 2508 | // save the preset |
| 2509 | name = gtk_editable_get_text(entry); |
| 2510 | category = ghb_dict_get_string(ud->settings, "PresetCategory"); |
| 2511 | if (!g_strcmp0(category, "new")) |
| 2512 | { |
| 2513 | entry = GTK_EDITABLE(ghb_builder_widget("PresetCategoryName")); |
| 2514 | category = gtk_editable_get_text(entry); |
| 2515 | } |
| 2516 | if (category == NULL || category[0] == 0) |
| 2517 | { |
| 2518 | ghb_log("Invalid empty category."); |
| 2519 | return; |
| 2520 | } |
| 2521 | buffer = gtk_text_view_get_buffer(tv); |
| 2522 | gtk_text_buffer_get_bounds(buffer, &start, &end); |
| 2523 | desc = gtk_text_buffer_get_text(buffer, &start, &end, FALSE); |
| 2524 | def = ghb_dict_get_bool(ud->settings, "PresetSetDefault"); |
| 2525 | settings_save(ud, category, name, desc, def); |
| 2526 | free(desc); |
| 2527 | } |
| 2528 | } |
| 2529 | |
| 2530 | static void |
| 2531 | preset_save_as_response_cb (GtkDialog *dialog, int response, |
no test coverage detected