示例#1
0
void WComboBox::updateDom(DomElement& element, bool all)
{
  if (itemsChanged_ || all) {
    if (!all)
      element.removeAllChildren();

    for (unsigned i = 0; i < items_.size(); ++i) {
      DomElement *item = DomElement::createNew(DomElement::OPTION);
      item->setAttribute("value", boost::lexical_cast<std::string>(i));
      item->setProperty(Wt::PropertyInnerHTML, items_[i]);
      if ((int)i == currentIndex_)
	item->setProperty(Wt::PropertySelected, "true");

      element.addChild(item);
    }

    itemsChanged_ = false;
  }

  if (selectionChanged_) {
    element.setProperty(Wt::PropertySelectedIndex,
			boost::lexical_cast<std::string>(currentIndex_));
    selectionChanged_ = false;
  }

  const WSignalInstance_ *s1 = getSignal(SIGNAL(activated(int)));
  const WSignalInstance_ *s2 = getSignal(SIGNAL(activated(const std::string)));
  if (isConnected(s1) || isConnected(s2))
    connect(this, SIGNAL(changed()), this, SLOT(propagateChanged()));

  WFormWidget::updateDom(element, all);

  renderOk();
}
示例#2
0
void WComboBox::updateDom(DomElement& element, bool all)
{
  if (itemsChanged_ || all) {
    if (!all)
      element.removeAllChildren();

    for (unsigned i = 0; i < items_.size(); ++i) {
      DomElement *item = DomElement::createNew(DomElement::OPTION);
      item->setAttribute("value", boost::lexical_cast<std::string>(i));
      item->setProperty(Wt::PropertyInnerHTML,
			toUTF8(escapeText(items_[i].value())));
      if ((int)i == currentIndex_)
	item->setProperty(Wt::PropertySelected, "true");

      element.addChild(item);
    }

    itemsChanged_ = false;
  }

  if (selectionChanged_) {
    element.setProperty(Wt::PropertySelectedIndex,
			boost::lexical_cast<std::string>(currentIndex_));
    selectionChanged_ = false;
  }

  if (activated.isConnected() || sactivated.isConnected())
      changed.connect(SLOT(this, WComboBox::propagateChange));

  WFormWidget::updateDom(element, all);

  renderOk();
}
示例#3
0
void WSelectionBox::updateDom(DomElement& element, bool all)
{
  if (verticalSizeChanged_ || all) {
    element.setAttribute("size",
			 boost::lexical_cast<std::string>(verticalSize_));
    verticalSizeChanged_ = false;
  }

  WComboBox::updateDom(element, all);

  renderOk();
}
示例#4
0
void WContainerWidget::getDomChanges(std::vector<DomElement *>& result)
{
  if (renderState() == RenderUpdate) {
    DomElement *e
      = DomElement::getForUpdate(this, isInline() ? DomElement::SPAN
				 : DomElement::DIV);
    updateDom(*e, false);
    result.push_back(e);
  }

  renderOk();
}
示例#5
0
文件: WWidget.C 项目: bytemaster/wt-1
DomElement *WWidget::createSDomElement(WApplication *app)
{
    if (!needsToBeRendered()) {
        DomElement *result = webWidget()->createStubElement(app);
        renderOk();
        askRerender(true);
        return result;
    } else {
        webWidget()->setRendered(true);
        render(RenderFull);
        return webWidget()->createActualElement(app);
    }
}
示例#6
0
void WGroupBox::updateDom(DomElement& element, bool all)
{
  if (titleChanged_) {
    DomElement *legend
      = DomElement::getForUpdate(formName() + "l", DomElement::LEGEND);
    legend->setProperty(Wt::PropertyInnerHTML,
			toUTF8(escapeText(title_.value())));
    titleChanged_ = false;
  }

  WContainerWidget::updateDom(element, all);

  renderOk();
}
示例#7
0
void WImage::updateDom(DomElement& element, bool all)
{
  if (imageRefChanged_ || all) {
    element.setProperty(Wt::PropertySrc, imageRef_);
    imageRefChanged_ = false;
  }

  if (altTextChanged_ || all) {
    //element.setAttribute("alt", altText_.value());
    altTextChanged_ = false;
  }

  WInteractWidget::updateDom(element, all);

  renderOk();
}
示例#8
0
文件: WWidget.C 项目: bytemaster/wt-1
WWidget::~WWidget()
{
    while (!eventSignals_.empty()) {
#ifndef WT_NO_BOOST_INTRUSIVE
        EventSignalBase *s = &eventSignals_.front();
#else
        EventSignalBase *s = eventSignals_.front();
#endif
        eventSignals_.pop_front();
#ifndef WT_TARGET_JAVA
        delete s;
#else
        s->~EventSignalBase();
#endif
    }

    renderOk();
}
示例#9
0
void WScrollArea::updateDom(DomElement& element, bool all)
{
  if (widgetChanged_ || all) {
    if (widget_)
      element.addChild(widget_->webWidget()->createDomElement());

    widgetChanged_ = false;
  }

  if (scrollBarChanged_ || all) {
    if ((horizontalScrollBar_->tiesChanged_)
	|| (verticalScrollBar_->tiesChanged_)) {
      horizontalScrollBar_->tiesChanged_ = true;
      verticalScrollBar_->tiesChanged_ = true;
    }
    horizontalScrollBar_->updateDom(element, all);
    verticalScrollBar_->updateDom(element, all);

    scrollBarChanged_ = false;
  }

  if (scrollBarPolicyChanged_ || all) {
    switch (scrollBarPolicy_) {
    case ScrollBarAsNeeded:
      element.setProperty(Wt::PropertyStyleOverflowX, "auto");
      break;
    case ScrollBarAlwaysOff:
      element.setProperty(Wt::PropertyStyleOverflowX, "hidden");
      break;
    case ScrollBarAlwaysOn:
      element.setProperty(Wt::PropertyStyleOverflowX, "scroll");
      break;
    }
    //result->setProperty(Wt::PropertyStyleOverflowY, "auto");

    scrollBarPolicyChanged_ = false;
  }    

  WWebWidget::updateDom(element, all);

  renderOk();
}
示例#10
0
DomElement *
WContainerWidget::createDomElement()
{
  DomElement *result;
  
  result = DomElement::createNew(isInline() ?
				 DomElement::SPAN : DomElement::DIV);
  result->setId(this);

  if (addedChildren_) {
    delete addedChildren_;
    addedChildren_ = 0;
  }
  updateDom(*result, true);

  createDomChildren(*result);

  renderOk();

  return result;
}
示例#11
0
void WCompositeWidget::render(WFlags<RenderFlag> flags)
{
  impl_->render(flags);

  renderOk();
}
示例#12
0
void WTable::updateDom(DomElement& element, bool all)
{
  WInteractWidget::updateDom(element, all);

  renderOk();
}