Пример #1
0
void WStackedWidget::setCurrentIndex(int index, const WAnimation& animation,
				     bool autoReverse)
{
  if (!animation.empty() && 
      WApplication::instance()->environment().supportsCss3Animations() &&
      ((isRendered() && javaScriptDefined_) || !canOptimizeUpdates())) {
    if (canOptimizeUpdates() && index == currentIndex_)
      return;

    loadAnimateJS();

    WWidget *previous = currentWidget();

    doJavaScript("$('#" + id() + "').data('obj').adjustScroll("
		 + widget(currentIndex_)->jsRef() + ");");
    setJavaScriptMember("wtAutoReverse", autoReverse ? "true" : "false");

    if (previous)
      previous->animateHide(animation);
    widget(index)->animateShow(animation);

    currentIndex_ = index;
  } else {
    currentIndex_ = index;

    for (int i = 0; i < count(); ++i)
      if (widget(i)->isHidden() != (currentIndex_ != i))
	widget(i)->setHidden(currentIndex_ != i);

    if (currentIndex_ >= 0 && isRendered() && javaScriptDefined_)
      doJavaScript("$('#" + id() + "').data('obj').setCurrent("
		   + widget(currentIndex_)->jsRef() + ");");
  }
}
Пример #2
0
void WStackedWidget::setCurrentIndex(int index, const WAnimation& animation,
				     bool autoReverse)
{
  if (!animation.empty() && loadAnimateJS()
      && (isRendered() || !canOptimizeUpdates())) {
    if (canOptimizeUpdates() && index == currentIndex_)
      return;

    WWidget *previous = currentWidget();

    setJavaScriptMember("wtAutoReverse", autoReverse ? "true" : "false");

    if (previous)
      previous->animateHide(animation);
    widget(index)->animateShow(animation);

    currentIndex_ = index;
  } else {
    currentIndex_ = index;

    for (int i = 0; i < count(); ++i)
      if (widget(i)->isHidden() != (currentIndex_ != i))
	widget(i)->setHidden(currentIndex_ != i);

    if (isRendered())
      doJavaScript("$('#" + id() + "').data('obj').setCurrent("
		   + widget(currentIndex_)->jsRef() + ");");
  }
}
Пример #3
0
	void isPrerendered()
	{
		//prerender a Tile and check if the (child?) Tiles are prerendered.
		DefaultConfig->add<int>(opt::server::prerender_level, 18);
		DefaultConfig->add<string>(opt::server::performance_log, 	"unitTest_Performance_log.delete_me");

		int x = 68595;
		int y = 45006;
		int z = 17;
		shared_ptr<TileIdentifier> ti = boost::make_shared<TileIdentifier>(x,y,z,"default", 	TileIdentifier::PNG);
		shared_ptr<MetaIdentifier> mid = MetaIdentifier::Create(ti);

		req_manager->enqueue(mid);
		//wait for prerendering
		boost::this_thread::sleep(boost::posix_time::milliseconds(5000));

		//now ask for a prerenderd Tile
		std::vector<shared_ptr<MetaIdentifier>> children;
		mid->getSubIdentifiers(children);
		for (auto& c : children)
		{
			for (auto& id : c->getIdentifiers()) {
				auto tile = cache->getTile(id);
				BOOST_CHECK(tile->isRendered());
			}
		}
	}
Пример #4
0
void WCalendar::renderMonth()
{
  needRenderMonth_ = true;

  if (isRendered())
    scheduleRender();
}
Пример #5
0
void WPopupWidget::setHidden(bool hidden, const WAnimation& animation)
{
    if (WWebWidget::canOptimizeUpdates() && hidden == isHidden())
        return;

    WCompositeWidget::setHidden(hidden, animation);

    if (!hidden && anchorWidget_)
        positionAt(anchorWidget_, orientation_);

    if (hidden)
        this->hidden().emit();
    else
        this->shown().emit();

    if (!WWebWidget::canOptimizeUpdates() || isRendered()) {
        if (hidden)
            doJavaScript("var o = jQuery.data(" + jsRef() + ", 'popup');"
                         "if (o) o.hidden();");
        else
            doJavaScript("var o = jQuery.data(" + jsRef() + ", 'popup');"
                         "if (o) o.shown();");
    }

    if (!WWebWidget::canOptimizeUpdates() && hidden && deleteWhenHidden_)
        delete this;
}
Пример #6
0
void WLineEdit::setInputMask(const WT_USTRING &mask,
			     WFlags<InputMaskFlag> flags)
{
  inputMaskFlags_ = flags;

  if (inputMask_ != mask) {
    inputMask_ = mask;
    mask_.clear();
    raw_.clear();
    case_.clear();
    spaceChar_ = ' ';
    WT_USTRING textBefore;
    if (!inputMask_.empty()) {
      textBefore = displayText();
      processInputMask();
      setText(textBefore);
    }

    if (isRendered() && javaScriptDefined_) {
      std::u32string space;
      space += spaceChar_;

      doJavaScript("jQuery.data(" + jsRef() + ", 'lobj')"
        ".setInputMask(" + WWebWidget::jsStringLiteral(mask_) + "," +
			   WWebWidget::jsStringLiteral(raw_) +  "," +
			   WWebWidget::jsStringLiteral(displayContent_) + "," +
			   WWebWidget::jsStringLiteral(case_) + "," +
			   WWebWidget::jsStringLiteral(space) + ", true);");
    } else if (!inputMask_.empty())
      repaint();
  }
}
Пример #7
0
std::string WTextEdit::renderRemoveJs()
{
  if (isRendered())
    return jsRef() + ".ed.remove();" WT_CLASS ".remove('" + id() + "');";
  else
    return WTextArea::renderRemoveJs();
}
Пример #8
0
void AbstractButton::setText(const WString& text)
{
  text_ = text;

  if (isRendered())
    addUpdateJS(elVar() + ".setText(" + text_.jsStringLiteral() + ");");
}
Пример #9
0
void Widget::setHidden(bool hidden, const WAnimation& animation)
{
  WWebWidget::setHidden(hidden, animation);

  if (isRendered() || !canOptimizeUpdates())
    addUpdateJS(elVar() + ".setVisible(" + (hidden ? "false" : "true") + ");");
}
Пример #10
0
 void
 Movie::prerender(MatrixStack& theCurrentMatrixStack) {
     I18nShapeWidget::prerender(theCurrentMatrixStack);
     if (isRendered() && isPlaying()) {
         // trigger update for OpenGL texture
         masl::MovieEngineSingleton::get().getNative()->updateMovieTexture(this);
     }
 }
Пример #11
0
 void Popup::doDelayedJavaScript(const Wt::WString & jscode) {
   if (isRendered()) {
     doJavaScript(jscode.toUTF8());
   }
   else {
     additions_.push_back(jscode);
   }
 }
Пример #12
0
void Component::propagateSetEnabled(bool enabled)
{
  if (isRendered())
    addUpdateJS(elVar()
		+ ".setDisabled(" + (enabled ? "false" : "true") + ");");

  Widget::propagateSetEnabled(enabled);
}
Пример #13
0
void AbstractButton::setIcon(const std::string& iconPath)
{
  icon_ = iconPath;

  if (isRendered())
    addUpdateJS(elVar() + ".icon = " + WWebWidget::jsStringLiteral(icon_) + ";"
		+ elVar() + ".setText(" + elVar() + ".text);");
}
Пример #14
0
  virtual std::string renderRemoveJs()
  {
    if (isRendered())
      return player_->jsPlayerRef() + ".jPlayer('destroy');"
	WT_CLASS ".remove('" + id() + "');";
    else
      return WTemplate::renderRemoveJs();
  }
Пример #15
0
void WMediaPlayer::playerDoRaw(const std::string& jqueryMethod)
{
  WStringStream ss;

  if (isRendered())
    ss << jsPlayerRef();

  ss << jqueryMethod;

  if (isRendered())
    ss << ';';

  if (isRendered())
    doJavaScript(ss.str());
  else 
    initialJs_ += ss.str();
}
Пример #16
0
void Calendar::select(const WDate& date)
{
  selection_.clear();
  selection_.insert(date);

  if (isRendered())
    addUpdateJS(elVar() + ".setValue(Date.parseDate('"
		+ date.toString("dd/MM/yyyy").toUTF8() + "','d/m/Y');");
}
Пример #17
0
std::string WTextEdit::renderRemoveJs(bool recursive)
{
  if (isRendered()) {
    std::string result = jsRef() + ".ed.remove();";
    if (!recursive)
      result += WT_CLASS ".remove('" + id() + "');";
    return result;
  } else
    return WTextArea::renderRemoveJs(recursive);
}
Пример #18
0
void WSuggestionPopup::setDefaultIndex(int row)
{
  if (defaultValue_ != row) {
    defaultValue_ = row;

    if (isRendered())
      doJavaScript("jQuery.data(" + jsRef() + ", 'obj').defaultValue = "
		   + boost::lexical_cast<std::string>(defaultValue_)
		   + ';');      
  }
}
Пример #19
0
void WPopupWidget::setTransient(bool isTransient, int autoHideDelay)
{
    transient_ = isTransient;
    autoHideDelay_ = autoHideDelay;
    if (isRendered()) {
        WStringStream ss;
        ss << "jQuery.data(" << jsRef() << ", 'popup').setTransient("
           << transient_ << ',' << autoHideDelay_ << ");";
        doJavaScript(ss.str());
    }
}
Пример #20
0
void WMediaPlayer::play()
{
  if (isRendered()) {
    /*
     * play is being delayed so that other changes (e.g. addSource() are
     * reflected first, see #2819
     */
    doJavaScript("setTimeout(function(){" + jsPlayerRef() 
		 + ".jPlayer('play'); }, 0);");
  } else
    playerDo("play");
}
Пример #21
0
void AbstractButton::setChecked(bool how)
{
  if (checkable_) {
    if (checked_ != how) {
      checked_ = how;

      if (isRendered())
	addUpdateJS(elVar() + "." + checkMethodJS()
		    + "(" + (checked_ ? "true" : "false") + ");");
    }
  }
}
Пример #22
0
void WStackedWidget::setTransitionAnimation(const WAnimation& animation,
					    bool autoReverse)
{
  if (loadAnimateJS()) {
    if (!animation.empty())
      addStyleClass("Wt-animated");

    animation_ = animation;
    autoReverseAnimation_ = autoReverse;

    if (isRendered()) {
      setJavaScriptMember("wtAnimateChild",
			  "$('#" + id() + "').data('obj').animateChild");
      setJavaScriptMember("wtAutoReverse",
			  autoReverseAnimation_ ? "true" : "false");
    }
  }
}
Пример #23
0
void WFormWidget::defineJavaScript(bool force)
{
  if (force || !flags_.test(BIT_JS_OBJECT)) {
    flags_.set(BIT_JS_OBJECT);

    if (!isRendered())
      return;

    WApplication *app = WApplication::instance();

    LOAD_JAVASCRIPT(app, "js/WFormWidget.js", "WFormWidget", wtjs1);

    doJavaScript("new " WT_CLASS ".WFormWidget("
		 + app->javaScriptClass() + "," 
		 + jsRef() + ","
		 + emptyText_.jsStringLiteral() + ");");
  }
}
Пример #24
0
void TableView::setCurrentCell(int row, int column)
{
  currentRow_ = std::max(-1, std::min(model_->rowCount(), row));
  currentColumn_ = std::max(-1, std::min(model_->columnCount(), column));

  if (isRendered()) {
    if (currentRow_ == -1) {
      addUpdateJS(elVar() + ".getSelectionModel().clearSelections();");      
    } else {
      if (selectionBehavior_ == SelectRows)
	addUpdateJS(elVar() + ".getSelectionModel().selectRow("
		    + boost::lexical_cast<std::string>(row) + ");");
      else
	addUpdateJS(elVar() + ".getSelectionModel().select("
		    + boost::lexical_cast<std::string>(row) + ","
		    + boost::lexical_cast<std::string>(column) + ");");
    }
  }
}
Пример #25
0
void Widget::renderExtAdd(WWidget *c)
{
  if (!isRendered())
    return;

  std::stringstream js;

  Widget *w = dynamic_cast<Widget *>(c);
  FormField *ff = dynamic_cast<FormField *>(c);

  if (w && !ff) {
    std::string var = w->createExtElement(js, 0);
    js << elVar() << ".add(" << var << ");";
  } else {
    c->createJavaScript(js, elVar() + ".add(");
  }

  addUpdateJS(js.str());
}
Пример #26
0
void WFormWidget::validatorChanged()
{
  std::string validateJS = validator_->javaScriptValidate();
  if (!validateJS.empty()) {
    setJavaScriptMember("wtValidate", validateJS);

    if (!validateJs_) {
      validateJs_ = new JSlot();
      validateJs_->setJavaScript("function(o){" WT_CLASS ".validate(o)}");

      keyWentUp().connect(*validateJs_);
      changed().connect(*validateJs_);
      if (domElementType() != DomElement_SELECT)
	clicked().connect(*validateJs_);
    } else if (isRendered())
      validateJs_->exec(jsRef());
  } else {
    delete validateJs_;
    validateJs_ = 0;
  }

  std::string inputFilter = validator_->inputFilter();

  if (!inputFilter.empty()) {
    if (!filterInput_) {
      filterInput_ = new JSlot();

      keyPressed().connect(*filterInput_);
    }

    Wt::Utils::replace(inputFilter, '/', "\\/");

    filterInput_->setJavaScript
      ("function(o,e){" WT_CLASS ".filter(o,e,"
       + jsStringLiteral(inputFilter) + ")}");
  } else {
    delete filterInput_;
    filterInput_ = 0;
  }

  validate();
}
Пример #27
0
WValidator::State WFormWidget::validate()
{
  if (validator()) {
    WValidator::Result result = validator()->validate(valueText());

    if (isRendered())
      WApplication::instance()->theme()
	->applyValidationStyle(this, result, ValidationInvalidStyle);

    if (validationToolTip_ != result.message()) {
      validationToolTip_ = result.message();
      flags_.set(BIT_VALIDATION_CHANGED);
      repaint();
    }

    validated_.emit(result);

    return result.state();
  } else
    return WValidator::Valid;
}
Пример #28
0
void WMediaPlayer::setVideoSize(int width, int height)
{
  if (width != videoWidth_ || height != videoHeight_) {
    videoWidth_ = width;
    videoHeight_ = height;

    setWidth(videoWidth_);

    if (isRendered()) {
      WStringStream ss;

      ss << "'size', {"
	 <<   "width: \"" << videoWidth_ << "px\","
	 <<   "height: \"" << videoHeight_ << "px\","
	 <<   "cssClass: \"jp-video-" << videoHeight_ << "p\""
	 << "}";

      playerDo("option", ss.str());
    }
  }
}
Пример #29
0
void WLineEdit::setText(const WT_USTRING& text)
{
  WT_USTRING newDisplayText = inputText(text);
  WT_USTRING newText = removeSpaces(newDisplayText);
  if (maskChanged_ || content_ != newText || 
      displayContent_ != newDisplayText) {
    content_ = newText;
    displayContent_ = newDisplayText;

    if (isRendered() && !inputMask_.empty()) {
      doJavaScript("jQuery.data(" + jsRef() + ", 'lobj')"
	 ".setValue(" + WWebWidget::jsStringLiteral(newDisplayText) + ");");
    }

    flags_.set(BIT_CONTENT_CHANGED);
    repaint();

    validate();

    applyEmptyText();
  }
}
Пример #30
0
void WFormWidget::setValidator(WValidator *validator)
{
  bool firstValidator = !validator_;

  if (validator_)
    validator_->removeFormWidget(this);

  validator_ = validator;

  if (validator_) {
#ifndef WT_TARGET_JAVA
    if (!validator_->parent())
      WObject::addChild(validator_);
#endif // WT_TARGET_JAVA

    validator_->addFormWidget(this);

    if (firstValidator)
      setToolTip(toolTip());

    validatorChanged();
#ifndef WT_TARGET_JAVA
    if (!validator_->parent())
      WObject::addChild(validator_);
#endif // WT_TARGET_JAVA
  } else {
    if (isRendered())
      WApplication::instance()->theme()
	->applyValidationStyle(this, WValidator::Result(), ValidationNoStyle);

    delete validateJs_;
    validateJs_ = 0;
    delete filterInput_;
    filterInput_ = 0;
  }
}