diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/GipfelWidget.H | 2 | ||||
-rw-r--r-- | src/GipfelWidget.cxx | 8 | ||||
-rw-r--r-- | src/gipfel.cxx | 9 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/GipfelWidget.H b/src/GipfelWidget.H index 3671a87..7d1b5ba 100644 --- a/src/GipfelWidget.H +++ b/src/GipfelWidget.H @@ -128,7 +128,7 @@ class GipfelWidget : public Fl_Widget { int get_distortion_profile_name(char *buf, int buflen); - int save_distortion_params(const char *prof_name); + int save_distortion_params(const char *prof_name, int force); int load_distortion_params(const char *prof_name); diff --git a/src/GipfelWidget.cxx b/src/GipfelWidget.cxx index a8efa97..2127e64 100644 --- a/src/GipfelWidget.cxx +++ b/src/GipfelWidget.cxx @@ -807,9 +807,15 @@ GipfelWidget::load_distortion_params(const char *prof_name) { } int -GipfelWidget::save_distortion_params(const char *prof_name) { +GipfelWidget::save_distortion_params(const char *prof_name, int force) { + int dummy; Fl_Preferences prof(dist_prefs, prof_name); + + if (!force && (prof.get("k0", dummy, 0) == 0)) { + return 1; + } + prof.set("k0", pan->parms.k0); prof.set("k1", pan->parms.k1); diff --git a/src/gipfel.cxx b/src/gipfel.cxx index 2fcce48..108c3ad 100644 --- a/src/gipfel.cxx +++ b/src/gipfel.cxx @@ -176,6 +176,8 @@ void save_distortion_cb(Fl_Widget *, void *) { const char * prof_name; double k0, k1; + buf[0] = '\0'; + gipf->get_distortion_params(&k0, &k1); gipf->get_distortion_profile_name(buf, sizeof(buf)); prof_name = fl_input("Save Distortion Profile (k0=%f, k1=%f)", @@ -185,7 +187,12 @@ void save_distortion_cb(Fl_Widget *, void *) { return; } - gipf->save_distortion_params(prof_name); + if (gipf->save_distortion_params(prof_name, 0) != 0) { + if (fl_choice("A profile with this name exists.\n", + "Cancel", "Overwrite", NULL) == 1) { + gipf->save_distortion_params(prof_name, 1); + } + } set_values(); } |