diff options
| author | schwieni <mschwienbacher@gmail.com> | 2019-03-22 12:32:41 +0000 |
|---|---|---|
| committer | Markus Schwienbacher <mschwienbacher@gmail.com> | 2019-03-25 17:15:50 +0000 |
| commit | 6949c0d92402e635b23a4ed49b83e1f38b8a2cb1 (patch) | |
| tree | 87dffad314e07edb81f30c8ae4291378b01b09f5 /src/live_effects | |
| parent | correct clang-format lpe-pts2ellipse.cpp (diff) | |
| download | inkscape-6949c0d92402e635b23a4ed49b83e1f38b8a2cb1.tar.gz inkscape-6949c0d92402e635b23a4ed49b83e1f38b8a2cb1.zip | |
lpe-pts2ellipse: parameter enabling based on creation method
Diffstat (limited to 'src/live_effects')
| -rw-r--r-- | src/live_effects/effect.cpp | 5 | ||||
| -rw-r--r-- | src/live_effects/lpe-pts2ellipse.cpp | 35 | ||||
| -rw-r--r-- | src/live_effects/parameter/parameter.cpp | 1 | ||||
| -rw-r--r-- | src/live_effects/parameter/parameter.h | 2 |
4 files changed, 36 insertions, 7 deletions
diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 63895ed61..0c027a57f 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -1488,6 +1488,11 @@ Effect::newWidget() if ((*it)->widget_is_visible) { Parameter * param = *it; Gtk::Widget * widg = param->param_newWidget(); + if (param->widget_is_enabled) { + widg->set_sensitive(true); + } else { + widg->set_sensitive(false); + } Glib::ustring * tip = param->param_getTooltip(); if (widg) { vbox->pack_start(*widg, true, true, 2); diff --git a/src/live_effects/lpe-pts2ellipse.cpp b/src/live_effects/lpe-pts2ellipse.cpp index f83103032..8fb6c89f7 100644 --- a/src/live_effects/lpe-pts2ellipse.cpp +++ b/src/live_effects/lpe-pts2ellipse.cpp @@ -49,11 +49,11 @@ LPEPts2Ellipse::LPEPts2Ellipse(LivePathEffectObject *lpeobject) , gen_isometric_frame(_("_Frame (isometric rectangle)"), _("Draw parallelogram around the ellipse"), "gen_isometric_frame", &wr, this, false) , gen_arc(_("_Arc"), _("Generate open arc (open ellipse)"), "gen_arc", &wr, this, false) - , other_arc(_("_Other Arc side"), _("Switch sides of the arc"), "arc_other", &wr, this, false) - , slice_arc(_("_Slice Arc"), _("Slice the arc"), "slice_arc", &wr, this, false) + , other_arc(_("_Other arc side"), _("Switch sides of the arc"), "arc_other", &wr, this, false) + , slice_arc(_("_Slice arc"), _("Slice the arc"), "slice_arc", &wr, this, false) , draw_axes(_("A_xes"), _("Draw both semi-major and semi-minor axes"), "draw_axes", &wr, this, false) - , rot_axes(_("Axes Rotation"), _("Axes rotation angle [deg]"), "rot_axes", &wr, this, 0) - , draw_ori_path(_("Source _Path"), _("Show the original source path"), "draw_ori_path", &wr, this, false) + , rot_axes(_("Axes rotation"), _("Axes rotation angle [deg]"), "rot_axes", &wr, this, 0) + , draw_ori_path(_("Source _path"), _("Show the original source path"), "draw_ori_path", &wr, this, false) { registerParameter(&method); registerParameter(&gen_arc); @@ -259,11 +259,32 @@ Geom::PathVector LPEPts2Ellipse::doEffect_path(Geom::PathVector const &path_in) pts.pop_back(); } - // special mode: Use first two edges, interpret them as two sides of a parallelogram and - // generate an ellipse residing inside the parallelogram. This effect is quite useful when - // generating isometric views. Hence, the name. + // modify GUI based on selected method switch (method) { case EM_ISOMETRIC_CIRCLE: + case EM_STEINER_ELLIPSE: + case EM_STEINER_INELLIPSE: + gen_arc.param_widget_is_enabled(false); + other_arc.param_widget_is_enabled(false); + slice_arc.param_widget_is_enabled(false); + break; + default: + gen_arc.param_widget_is_enabled(true); + if (gen_arc.get_value()) { + slice_arc.param_widget_is_enabled(true); + other_arc.param_widget_is_enabled(true); + } else { + other_arc.param_widget_is_enabled(false); + slice_arc.param_widget_is_enabled(false); + } + } + + // call method specific code + switch (method) { + case EM_ISOMETRIC_CIRCLE: + // special mode: Use first two edges, interpret them as two sides of a parallelogram and + // generate an ellipse residing inside the parallelogram. This effect is quite useful when + // generating isometric views. Hence, the name. if (0 != genIsometricEllipse(pts, path_out)) { return path_in; } diff --git a/src/live_effects/parameter/parameter.cpp b/src/live_effects/parameter/parameter.cpp index a6f8021b3..a235e6076 100644 --- a/src/live_effects/parameter/parameter.cpp +++ b/src/live_effects/parameter/parameter.cpp @@ -34,6 +34,7 @@ Parameter::Parameter( Glib::ustring label, Glib::ustring tip, param_label(std::move(label)), oncanvas_editable(false), widget_is_visible(true), + widget_is_enabled(true), param_tooltip(std::move(tip)), param_effect(effect) { diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h index 4ef31427e..62684b730 100644 --- a/src/live_effects/parameter/parameter.h +++ b/src/live_effects/parameter/parameter.h @@ -63,6 +63,7 @@ public: virtual gchar * param_getSVGValue() const = 0; virtual gchar * param_getDefaultSVGValue() const = 0; virtual void param_widget_is_visible(bool is_visible) {widget_is_visible = is_visible;} + virtual void param_widget_is_enabled(bool is_enabled) {widget_is_enabled = is_enabled;} void write_to_SVG(); virtual void param_set_default() = 0; @@ -89,6 +90,7 @@ public: bool oncanvas_editable; bool widget_is_visible; + bool widget_is_enabled; protected: |
