index 500578db464a75fd1cdfed451b29cb7b7abae47e..527f2fdd925ccf37bbc707d4c0454b44a0d7a61a 100644 (file)
#include "live_effects/effect.h"
#include "svg/svg.h"
#include "libnr/nr-values.h"
-
+#include "xml/repr.h"
#include <gtkmm.h>
-#include "ui/widget/scalar.h"
+#include "ui/widget/registered-widget.h"
#include "svg/stringstream.h"
Parameter::Parameter( const Glib::ustring& label, const Glib::ustring& tip,
const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,
Effect* effect )
- : oncanvas_editable(false)
+ : param_key(key),
+ param_wr(wr),
+ param_label(label),
+ oncanvas_editable(false),
+ param_tooltip(tip),
+ param_effect(effect)
{
- param_label = label;
- param_tooltip = tip;
- param_key = key;
- param_wr = wr;
- param_effect = effect;
}
+void
+Parameter::param_write_to_repr(const char * svgd)
+{
+ param_effect->getRepr()->setAttribute(param_key.c_str(), svgd);
+}
/*###########################################
* REAL PARAM
ScalarParam::ScalarParam( const Glib::ustring& label, const Glib::ustring& tip,
const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,
Effect* effect, gdouble default_value)
- : Parameter(label, tip, key, wr, effect)
+ : Parameter(label, tip, key, wr, effect),
+ value(default_value),
+ min(-NR_HUGE),
+ max(NR_HUGE),
+ integer(false),
+ defvalue(default_value),
+ digits(2),
+ inc_step(0.1),
+ inc_page(1)
{
- defvalue = default_value;
- value = defvalue;
- min = -NR_HUGE;
- max = NR_HUGE;
- integer = false;
- rsu = NULL;
- inc_step = 0.1;
- inc_page = 1;
- digits = 2;
}
ScalarParam::~ScalarParam()
{
- if (rsu)
- delete rsu;
}
bool
value = max;
if (value < min)
value = min;
-
- if (rsu && !rsu->is_updating())
- rsu->setValue(value);
}
void
{
this->min = min;
this->max = max;
- if (rsu)
- rsu->getS()->setRange(this->min, this->max);
param_set_value(value); // reset value to see whether it is in ranges
}
digits = 0;
inc_step = 1;
inc_page = 10;
- if (rsu) {
- rsu->getS()->setDigits(digits);
- rsu->getS()->setIncrements(inc_step, inc_page);
- }
}
Gtk::Widget *
-ScalarParam::param_getWidget()
+ScalarParam::param_newWidget(Gtk::Tooltips * /*tooltips*/)
{
- if (!rsu) {
- rsu = new Inkscape::UI::Widget::RegisteredScalar();
- rsu->init(param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());
- rsu->setValue(value);
- rsu->getS()->setDigits(digits);
- rsu->getS()->setIncrements(inc_step, inc_page);
- rsu->getS()->setRange(min, max);
-
- rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter"));
- }
- return dynamic_cast<Gtk::Widget *> (rsu->getS());
+ Inkscape::UI::Widget::RegisteredScalar *rsu = Gtk::manage( new Inkscape::UI::Widget::RegisteredScalar(
+ param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc() ) );
+
+ rsu->setValue(value);
+ rsu->setDigits(digits);
+ rsu->setIncrements(inc_step, inc_page);
+ rsu->setRange(min, max);
+ rsu->setProgrammatically = false;
+
+ rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change scalar parameter"));
+
+ return dynamic_cast<Gtk::Widget *> (rsu);
}
void
ScalarParam::param_set_digits(unsigned digits)
{
this->digits = digits;
- if (rsu) {
- rsu->getS()->setDigits(digits);
- }
}
void
{
inc_step = step;
inc_page = page;
- if (rsu) {
- rsu->getS()->setIncrements(inc_step, inc_page);
- }
}