本文整理汇总了C++中DomElement::setEvent方法的典型用法代码示例。如果您正苦于以下问题:C++ DomElement::setEvent方法的具体用法?C++ DomElement::setEvent怎么用?C++ DomElement::setEvent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DomElement
的用法示例。
在下文中一共展示了DomElement::setEvent方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setJavaScriptMember
DomElement *WAbstractMedia::createDomElement(WApplication *app)
{
DomElement *result = 0;
if (isInLayout()) {
// It's easier to set WT_RESIZE_JS after the following code,
// but if it's not set, the alternative content will think that
// it is not included in a layout manager. Set some phony function
// now, which will be overwritten later in this method.
setJavaScriptMember(WT_RESIZE_JS, "function() {}");
}
if (app->environment().agentIsIElt(9) ||
app->environment().agent() == WEnvironment::MobileWebKitAndroid) {
// Shortcut: IE misbehaves when it encounters a media element
result = DomElement::createNew(DomElement_DIV);
if (alternative_)
result->addChild(alternative_->createSDomElement(app));
} else {
DomElement *media = createMediaDomElement();
DomElement *wrap = 0;
if (isInLayout()) {
media->setProperty(PropertyStylePosition, "absolute");
media->setProperty(PropertyStyleLeft, "0");
media->setProperty(PropertyStyleRight, "0");
wrap = DomElement::createNew(DomElement_DIV);
wrap->setProperty(PropertyStylePosition, "relative");
}
result = wrap ? wrap : media;
if (wrap) {
mediaId_ = id() + "_media";
media->setId(mediaId_);
} else {
mediaId_ = id();
}
updateMediaDom(*media, true);
// Create the 'source' elements
for (std::size_t i = 0; i < sources_.size(); ++i) {
DomElement *src = DomElement::createNew(DomElement_SOURCE);
src->setId(mediaId_ + "s" + boost::lexical_cast<std::string>(i));
renderSource(src, *sources_[i], i + 1 >= sources_.size());
media->addChild(src);
}
sourcesRendered_ = sources_.size();
sourcesChanged_ = false;
if (wrap) {
wrap->addChild(media);
}
}
if (isInLayout()) {
std::stringstream ss;
ss <<
"""function(self, w, h) {";
if (!mediaId_.empty()) {
ss <<
"" "v=" + jsMediaRef() + ";"
"" "if (v) {"
"" "if (w >= 0) "
"" "v.setAttribute('width', w);"
"" "if (h >= 0) "
"" "v.setAttribute('height', h);"
"" "}";
}
if (alternative_) {
ss <<
"""a=" + alternative_->jsRef() + ";"
"" "if (a && a." << WT_RESIZE_JS <<")"
"" "a." << WT_RESIZE_JS << "(a, w, h);";
}
ss
<<"}";
setJavaScriptMember(WT_RESIZE_JS, ss.str());
}
setId(result, app);
updateDom(*result, true);
if (isInLayout()) {
result->setEvent(PLAYBACKSTARTED_SIGNAL, std::string());
result->setEvent(PLAYBACKPAUSED_SIGNAL, std::string());
result->setEvent(ENDED_SIGNAL, std::string());
result->setEvent(TIMEUPDATED_SIGNAL, std::string());
result->setEvent(VOLUMECHANGED_SIGNAL, std::string());
}
setJavaScriptMember("mediaId", "'" + mediaId_ + "'");
return result;
}
示例2: updateDom
//.........这里部分代码省略.........
std::string v = element.getProperty(Wt::PropertyDisabled);
if (!v.empty()) {
input->setProperty(Wt::PropertyDisabled, v);
element.removeProperty(Wt::PropertyDisabled);
}
v = element.getProperty(Wt::PropertyReadOnly);
if (!v.empty()) {
input->setProperty(Wt::PropertyReadOnly, v);
element.removeProperty(Wt::PropertyReadOnly);
}
}
if (stateChanged_ || all) {
input->setProperty(Wt::PropertyChecked,
state_ == Unchecked ? "false" : "true");
if (supportsIndeterminate(env))
input->setProperty(Wt::PropertyIndeterminate,
state_ == PartiallyChecked ? "true" : "false");
else
input->setProperty(Wt::PropertyStyleOpacity,
state_ == PartiallyChecked ? "0.5" : "");
stateChanged_ = false;
}
std::vector<DomElement::EventAction> changeActions;
if (needUpdateChangeSignal
|| (piggyBackChangeOnClick && needUpdateClickedSignal)
|| all) {
std::string dom = "o";
if (check) {
if (check->isConnected())
changeActions.push_back
(DomElement::EventAction(dom + ".checked",
check->javaScript(),
check->encodeCmd(),
check->isExposedSignal()));
check->updateOk();
}
if (uncheck) {
if (uncheck->isConnected())
changeActions.push_back
(DomElement::EventAction("!" + dom + ".checked",
uncheck->javaScript(),
uncheck->encodeCmd(),
uncheck->isExposedSignal()));
uncheck->updateOk();
}
if (change) {
if (change->needsUpdate(all))
changeActions.push_back
(DomElement::EventAction(std::string(),
change->javaScript(),
change->encodeCmd(),
change->isExposedSignal()));
change->updateOk();
}
if (!piggyBackChangeOnClick) {
if (!(all && changeActions.empty()))
input->setEvent("change", changeActions);
}
}
if (needUpdateClickedSignal || all) {
if (piggyBackChangeOnClick) {
if (click) {
changeActions.push_back
(DomElement::EventAction(std::string(),
click->javaScript(),
click->encodeCmd(),
click->isExposedSignal()));
click->updateOk();
}
if (!(all && changeActions.empty()))
input->setEvent(CLICK_SIGNAL, changeActions);
} else
if (click)
updateSignalConnection(*input, *click, CLICK_SIGNAL, all);
}
if (span) {
if (all || textChanged_) {
span->setProperty(PropertyInnerHTML, text_.formattedText());
textChanged_ = false;
}
}
if (&element != input) {
element.addChild(input);
element.addChild(span);
}
}
示例3: updateDom
//.........这里部分代码省略.........
element.setAttribute("title", v);
}
if (flags_.test(BIT_STATE_CHANGED) || all) {
input->setProperty(Wt::PropertyChecked,
state_ == Unchecked ? "false" : "true");
if (supportsIndeterminate(env))
input->setProperty(Wt::PropertyIndeterminate,
state_ == PartiallyChecked ? "true" : "false");
else
input->setProperty(Wt::PropertyStyleOpacity,
state_ == PartiallyChecked ? "0.5" : "");
flags_.reset(BIT_STATE_CHANGED);
}
std::vector<DomElement::EventAction> changeActions;
if (needUpdateChangeSignal
|| (piggyBackChangeOnClick && needUpdateClickedSignal)
|| all) {
std::string dom = "o";
if (check) {
if (check->isConnected())
changeActions.push_back
(DomElement::EventAction(dom + ".checked",
check->javaScript(),
check->encodeCmd(),
check->isExposedSignal()));
check->updateOk();
}
if (uncheck) {
if (uncheck->isConnected())
changeActions.push_back
(DomElement::EventAction("!" + dom + ".checked",
uncheck->javaScript(),
uncheck->encodeCmd(),
uncheck->isExposedSignal()));
uncheck->updateOk();
}
if (change) {
if (change->isConnected())
changeActions.push_back
(DomElement::EventAction(std::string(),
change->javaScript(),
change->encodeCmd(),
change->isExposedSignal()));
change->updateOk();
}
if (!piggyBackChangeOnClick) {
if (!(all && changeActions.empty()))
input->setEvent("change", changeActions);
}
}
if (needUpdateClickedSignal || all) {
if (piggyBackChangeOnClick) {
if (click) {
changeActions.push_back
(DomElement::EventAction(std::string(),
click->javaScript(),
click->encodeCmd(),
click->isExposedSignal()));
click->updateOk();
}
if (!(all && changeActions.empty()))
input->setEvent(CLICK_SIGNAL, changeActions);
} else
if (click)
updateSignalConnection(*input, *click, CLICK_SIGNAL, all);
}
if (span) {
if (all || flags_.test(BIT_TEXT_CHANGED)) {
span->setProperty(PropertyInnerHTML, text_.formattedText());
if(all || flags_.test(BIT_WORD_WRAP_CHANGED)) {
span->setProperty(PropertyStyleWhiteSpace, flags_.test(BIT_WORD_WRAP) ? "normal" : "nowrap");
flags_.reset(BIT_WORD_WRAP_CHANGED);
}
flags_.reset(BIT_TEXT_CHANGED);
}
}
if (&element != input) {
if (label) {
label->addChild(input);
label->addChild(span);
element.addChild(label);
} else {
element.addChild(input);
element.addChild(span);
}
}
}
示例4: updateDom
void WInteractWidget::updateDom(DomElement& element, bool all)
{
bool updateKeyDown = false;
WApplication *app = WApplication::instance();
/*
* -- combine enterPress, escapePress and keyDown signals
*/
EventSignal<> *enterPress = voidEventSignal(ENTER_PRESS_SIGNAL, false);
EventSignal<> *escapePress = voidEventSignal(ESCAPE_PRESS_SIGNAL, false);
EventSignal<WKeyEvent> *keyDown = keyEventSignal(KEYDOWN_SIGNAL, false);
updateKeyDown = (enterPress && enterPress->needsUpdate(all))
|| (escapePress && escapePress->needsUpdate(all))
|| (keyDown && keyDown->needsUpdate(all));
if (updateKeyDown) {
std::vector<DomElement::EventAction> actions;
if (enterPress) {
if (enterPress->needsUpdate(true)) {
/*
* prevent enterPressed from triggering a changed event on all
* browsers except for Opera and IE
*/
std::string extraJS;
const WEnvironment& env = app->environment();
if (dynamic_cast<WFormWidget *>(this)
&& !env.agentIsOpera() && !env.agentIsIE())
extraJS = "var g=this.onchange;"
"" "this.onchange=function(){this.onchange=g;};";
actions.push_back
(DomElement::EventAction("e.keyCode && (e.keyCode == 13)",
enterPress->javaScript() + extraJS,
enterPress->encodeCmd(),
enterPress->isExposedSignal()));
}
enterPress->updateOk();
}
if (escapePress) {
if (escapePress->needsUpdate(true)) {
actions.push_back
(DomElement::EventAction("e.keyCode && (e.keyCode == 27)",
escapePress->javaScript(),
escapePress->encodeCmd(),
escapePress->isExposedSignal()));
}
escapePress->updateOk();
}
if (keyDown) {
if (keyDown->needsUpdate(true)) {
actions.push_back
(DomElement::EventAction(std::string(),
keyDown->javaScript(),
keyDown->encodeCmd(),
keyDown->isExposedSignal()));
}
keyDown->updateOk();
}
if (!actions.empty())
element.setEvent("keydown", actions);
else if (!all)
element.setEvent("keydown", std::string(), std::string());
}
/*
* -- allow computation of dragged mouse distance
*/
EventSignal<WMouseEvent> *mouseDown
= mouseEventSignal(MOUSE_DOWN_SIGNAL, false);
EventSignal<WMouseEvent> *mouseUp
= mouseEventSignal(MOUSE_UP_SIGNAL, false);
EventSignal<WMouseEvent> *mouseMove
= mouseEventSignal(MOUSE_MOVE_SIGNAL, false);
EventSignal<WMouseEvent> *mouseDrag
= mouseEventSignal(MOUSE_DRAG_SIGNAL, false);
bool updateMouseMove
= (mouseMove && mouseMove->needsUpdate(all))
|| (mouseDrag && mouseDrag->needsUpdate(all));
bool updateMouseDown
= (mouseDown && mouseDown->needsUpdate(all))
|| updateMouseMove;
bool updateMouseUp
= (mouseUp && mouseUp->needsUpdate(all))
|| updateMouseMove;
std::string CheckDisabled = "if($(o).hasClass('" +
app->theme()->disabledClass() +
"')){" WT_CLASS ".cancelEvent(e);return;}";
//.........这里部分代码省略.........