コード例 #1
0
ファイル: WWebWidget.Cpp プロジェクト: SiteView/ecc82Server
void WWebWidget::updateSignalConnection(DomElement& element,
				     const char *signal,
				     const std::string eventName,
				     const char *condition,
				     bool all, const char *argName)
{
  WSignalInstance_ *s = getSignal(signal);
  if (all
      || s->connectivityChanged()
      || s->staticCodeChanged()) {
    if (isConnected(s))
      element.setEventSignal(eventName, *s, argName, condition);
    else
      element.removeEventSignal(eventName);

    s->connectivityOk();
  }
}
コード例 #2
0
void WAbstractToggleButton::updateDom(DomElement& element, bool all)
{
  if (checkedChanged_ || all) {
    element.setProperty(Wt::PropertyChecked, checked_ ? "true" : "false");
    checkedChanged_ = false;
  }

  const WSignalInstance_ *changeS = getSignal(SIGNAL(changed()));
  const WSignalInstance_ *checkedS = getSignal(SIGNAL(checked()));
  const WSignalInstance_ *unCheckedS = getSignal(SIGNAL(unChecked()));

  bool needUpdateChangeSignal =
    (changeS->connectivityChanged()
     || checkedS->connectivityChanged()
     || unCheckedS->connectivityChanged()
     || changeS->staticCodeChanged()
     || checkedS->staticCodeChanged()
     || unCheckedS->staticCodeChanged());

  WFormWidget::updateDom(element, all);

  if (needUpdateChangeSignal || all) {
    element.removeEventSignal("change");

    DomElement *e = DomElement::getForUpdate(this, DomElement::INPUT);

    if (isConnected(changeS))
      element.addEventSignal("change", *changeS, 0, 0);
    if (isConnected(checkedS))
      element.addEventSignal("change", *checkedS, 0,
			     (e->createReference()
			      + ".checked == true").c_str());
    if (isConnected(unCheckedS))
      element.addEventSignal("change", *unCheckedS, 0,
			     (e->createReference()
			      + ".checked == false").c_str());
    delete e;
  }
}