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() + ");"); } }
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() + ");"); } }
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()); } } }
void WCalendar::renderMonth() { needRenderMonth_ = true; if (isRendered()) scheduleRender(); }
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; }
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(); } }
std::string WTextEdit::renderRemoveJs() { if (isRendered()) return jsRef() + ".ed.remove();" WT_CLASS ".remove('" + id() + "');"; else return WTextArea::renderRemoveJs(); }
void AbstractButton::setText(const WString& text) { text_ = text; if (isRendered()) addUpdateJS(elVar() + ".setText(" + text_.jsStringLiteral() + ");"); }
void Widget::setHidden(bool hidden, const WAnimation& animation) { WWebWidget::setHidden(hidden, animation); if (isRendered() || !canOptimizeUpdates()) addUpdateJS(elVar() + ".setVisible(" + (hidden ? "false" : "true") + ");"); }
void Movie::prerender(MatrixStack& theCurrentMatrixStack) { I18nShapeWidget::prerender(theCurrentMatrixStack); if (isRendered() && isPlaying()) { // trigger update for OpenGL texture masl::MovieEngineSingleton::get().getNative()->updateMovieTexture(this); } }
void Popup::doDelayedJavaScript(const Wt::WString & jscode) { if (isRendered()) { doJavaScript(jscode.toUTF8()); } else { additions_.push_back(jscode); } }
void Component::propagateSetEnabled(bool enabled) { if (isRendered()) addUpdateJS(elVar() + ".setDisabled(" + (enabled ? "false" : "true") + ");"); Widget::propagateSetEnabled(enabled); }
void AbstractButton::setIcon(const std::string& iconPath) { icon_ = iconPath; if (isRendered()) addUpdateJS(elVar() + ".icon = " + WWebWidget::jsStringLiteral(icon_) + ";" + elVar() + ".setText(" + elVar() + ".text);"); }
virtual std::string renderRemoveJs() { if (isRendered()) return player_->jsPlayerRef() + ".jPlayer('destroy');" WT_CLASS ".remove('" + id() + "');"; else return WTemplate::renderRemoveJs(); }
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(); }
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');"); }
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); }
void WSuggestionPopup::setDefaultIndex(int row) { if (defaultValue_ != row) { defaultValue_ = row; if (isRendered()) doJavaScript("jQuery.data(" + jsRef() + ", 'obj').defaultValue = " + boost::lexical_cast<std::string>(defaultValue_) + ';'); } }
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()); } }
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"); }
void AbstractButton::setChecked(bool how) { if (checkable_) { if (checked_ != how) { checked_ = how; if (isRendered()) addUpdateJS(elVar() + "." + checkMethodJS() + "(" + (checked_ ? "true" : "false") + ");"); } } }
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"); } } }
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() + ");"); } }
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) + ");"); } } }
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()); }
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(); }
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; }
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()); } } }
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(); } }
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; } }