本文整理汇总了C++中DomElement::setId方法的典型用法代码示例。如果您正苦于以下问题:C++ DomElement::setId方法的具体用法?C++ DomElement::setId怎么用?C++ DomElement::setId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DomElement
的用法示例。
在下文中一共展示了DomElement::setId方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createContents
void WWidgetCanvasPainter::createContents(DomElement *result,
WPaintDevice *device)
{
std::string wstr = boost::lexical_cast<std::string>(widget_->renderWidth_);
std::string hstr = boost::lexical_cast<std::string>(widget_->renderHeight_);
result->setProperty(PropertyStylePosition, "relative");
result->setProperty(PropertyStyleOverflowX, "hidden");
DomElement *canvas = DomElement::createNew(DomElement_CANVAS);
canvas->setId('c' + widget_->id());
canvas->setProperty(PropertyStyleDisplay, "block");
canvas->setAttribute("width", wstr);
canvas->setAttribute("height", hstr);
result->addChild(canvas);
WCanvasPaintDevice *canvasDevice = dynamic_cast<WCanvasPaintDevice *>(device);
DomElement *text = 0;
if (canvasDevice->textMethod() == WCanvasPaintDevice::DomText) {
text = DomElement::createNew(DomElement_DIV);
text->setId('t' + widget_->id());
text->setProperty(PropertyStylePosition, "absolute");
text->setProperty(PropertyStyleZIndex, "1");
text->setProperty(PropertyStyleTop, "0px");
text->setProperty(PropertyStyleLeft, "0px");
}
canvasDevice->render("c" + widget_->id(), text ? text : result);
if (text)
result->addChild(text);
delete device;
}
示例2: setId
DomElement *WTable::createDomElement(WApplication *app)
{
bool withIds = !app->environment().agentIsSpiderBot();
DomElement *table = DomElement::createNew(domElementType());
setId(table, app);
DomElement *thead = 0;
if (headerRowCount_ != 0) {
thead = DomElement::createNew(DomElement_THEAD);
if (withIds)
thead->setId(id() + "th");
}
DomElement *tbody = DomElement::createNew(DomElement_TBODY);
if (withIds)
tbody->setId(id() + "tb");
DomElement *colgroup = DomElement::createNew(DomElement_COLGROUP);
for (unsigned col = 0; col < columns_.size(); ++col) {
DomElement *c = DomElement::createNew(DomElement_COL);
if (withIds)
c->setId(columns_[col]->id());
columns_[col]->updateDom(*c, true);
colgroup->addChild(c);
}
table->addChild(colgroup);
flags_.reset(BIT_COLUMNS_CHANGED);
for (unsigned row = 0; row < (unsigned)rowCount(); ++row)
for (unsigned col = 0; col < (unsigned)columnCount(); ++col)
itemAt(row, col).overSpanned = false;
for (unsigned row = 0; row < (unsigned)rowCount(); ++row) {
DomElement *tr = createRowDomElement(row, withIds, app);
if (row < static_cast<unsigned>(headerRowCount_))
thead->addChild(tr);
else
tbody->addChild(tr);
}
rowsAdded_ = 0;
if (thead)
table->addChild(thead);
table->addChild(tbody);
updateDom(*table, true);
flags_.reset(BIT_GRID_CHANGED);
delete rowsChanged_;
rowsChanged_ = 0;
return table;
}
示例3: createContents
void WWidgetCanvasPainter::createContents(DomElement *result,
WPaintDevice *device)
{
std::string wstr = boost::lexical_cast<std::string>(widget_->renderWidth_);
std::string hstr = boost::lexical_cast<std::string>(widget_->renderHeight_);
result->setProperty(PropertyStylePosition, "relative");
result->setProperty(PropertyStyleOverflowX, "hidden");
result->setProperty(PropertyStyleOverflowY, "hidden");
DomElement *canvas = DomElement::createNew(DomElement_CANVAS);
canvas->setId('c' + widget_->id());
canvas->setProperty(PropertyStyleDisplay, "block");
canvas->setAttribute("width", wstr);
canvas->setAttribute("height", hstr);
result->addChild(canvas);
widget_->sizeChanged_ = false;
WCanvasPaintDevice *canvasDevice = dynamic_cast<WCanvasPaintDevice *>(device);
DomElement *text = 0;
if (canvasDevice->textMethod() == WCanvasPaintDevice::DomText) {
text = DomElement::createNew(DomElement_DIV);
text->setId('t' + widget_->id());
text->setProperty(PropertyStylePosition, "absolute");
text->setProperty(PropertyStyleZIndex, "1");
text->setProperty(PropertyStyleTop, "0px");
text->setProperty(PropertyStyleLeft, "0px");
}
DomElement *el = text ? text : result;
bool hasJsObjects = widget_->jsObjects_.size() > 0;
if (hasJsObjects) {
WStringStream ss;
WApplication *app = WApplication::instance();
ss << "new " WT_CLASS ".WPaintedWidget("
<< app->javaScriptClass() << "," << widget_->jsRef() << ");";
widget_->jsObjects_.updateJs(ss);
el->callJavaScript(ss.str());
}
canvasDevice->render('c' + widget_->id(), el);
if (hasJsObjects) {
WStringStream ss;
ss << widget_->objJsRef() << ".repaint=function(){";
ss << canvasDevice->recordedJs_.str();
ss << "};";
el->callJavaScript(ss.str());
}
if (text)
result->addChild(text);
delete device;
}
示例4: getDomChanges
void WAbstractMedia::getDomChanges(std::vector<DomElement *>& result,
WApplication *app)
{
if (!mediaId_.empty()) {
DomElement *media = DomElement::getForUpdate(mediaId_, DomElement_DIV);
updateMediaDom(*media, false);
if (sourcesChanged_) {
// Updating source elements seems to be ill-supported in at least FF,
// so we delete them all and reinsert them.
// Delete source elements that are no longer required
for (std::size_t i = 0; i < sourcesRendered_; ++i)
media->callJavaScript
(WT_CLASS ".remove('" + mediaId_ + "s"
+ boost::lexical_cast<std::string>(i) + "');",
true);
sourcesRendered_ = 0;
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;
// Explicitly request rerun of media selection algorithm
// 4.8.9.2 says it should happen automatically, but FF doesn't
media->callJavaScript(jsMediaRef() + ".load();");
}
result.push_back(media);
}
WInteractWidget::getDomChanges(result, app);
}
示例5: createPainter
DomElement *WPaintedWidget::createDomElement(WApplication *app)
{
createPainter();
DomElement *result = DomElement::createNew(domElementType());
setId(result, app);
DomElement *wrap = result;
if (width().isAuto() && height().isAuto()) {
result->setProperty(PropertyStylePosition, "relative");
wrap = DomElement::createNew(DomElement_DIV);
wrap->setProperty(PropertyStylePosition, "absolute");
wrap->setProperty(PropertyStyleLeft, "0");
wrap->setProperty(PropertyStyleRight, "0");
}
DomElement *canvas = DomElement::createNew(DomElement_DIV);
if (!app->environment().agentIsSpiderBot())
canvas->setId('p' + id());
WPaintDevice *device = painter_->getPaintDevice(false);
//handle the widget correctly when inline and using VML
if (painter_->renderType() == WWidgetPainter::InlineVml && isInline()) {
result->setProperty(PropertyStyle, "zoom: 1;");
canvas->setProperty(PropertyStyleDisplay, "inline");
canvas->setProperty(PropertyStyle, "zoom: 1;");
}
if (renderWidth_ != 0 && renderHeight_ != 0) {
paintEvent(device);
#ifdef WT_TARGET_JAVA
if (device->painter())
device->painter()->end();
#endif // WT_TARGET_JAVA
}
painter_->createContents(canvas, device);
needRepaint_ = false;
wrap->addChild(canvas);
if (wrap != result)
result->addChild(wrap);
updateDom(*result, true);
return result;
}
示例6: updateDom
void WPushButton::updateDom(DomElement& element, bool all)
{
if (all && element.type() == DomElement_BUTTON)
element.setAttribute("type", "button");
bool updateInnerHtml = !icon_.isNull() && flags_.test(BIT_TEXT_CHANGED);
if (updateInnerHtml || flags_.test(BIT_ICON_CHANGED)
|| (all && !icon_.isNull())) {
DomElement *image = DomElement::createNew(DomElement_IMG);
image->setProperty(PropertySrc, icon_.resolveUrl(WApplication::instance()));
image->setId("im" + formName());
element.insertChildAt(image, 0);
flags_.set(BIT_ICON_RENDERED);
flags_.reset(BIT_ICON_CHANGED);
}
if (flags_.test(BIT_TEXT_CHANGED) || all) {
element.setProperty(Wt::PropertyInnerHTML, text_.formattedText());
flags_.reset(BIT_TEXT_CHANGED);
}
// bool needsUrlResolution = false;
if (flags_.test(BIT_LINK_CHANGED) || all) {
if (element.type() == DomElement_A) {
/* needsUrlResolution = */ WAnchor::renderHRef(this, linkState_, element);
WAnchor::renderHTarget(linkState_, element, all);
} else
renderHRef(element);
flags_.reset(BIT_LINK_CHANGED);
}
if (isCheckable()) {
if (flags_.test(BIT_CHECKED_CHANGED) || all) {
if (!all || flags_.test(BIT_IS_CHECKED)) {
toggleStyleClass("active", flags_.test(BIT_IS_CHECKED), true);
}
flags_.reset(BIT_CHECKED_CHANGED);
}
}
if (!all)
WApplication::instance()->theme()->apply(this, element,
MainElementThemeRole);
WFormWidget::updateDom(element, all);
}
示例7: updateDom
void WGroupBox::updateDom(DomElement& element, bool all)
{
if (all || titleChanged_) {
DomElement *legend;
if (all) {
legend = DomElement::createNew(DomElement_LEGEND);
legend->setId(id() + "l");
} else
legend = DomElement::getForUpdate(id() + "l", DomElement_LEGEND);
legend->setProperty(Wt::PropertyInnerHTML, escapeText(title_).toUTF8());
element.addChild(legend);
titleChanged_ = false;
}
WContainerWidget::updateDom(element, all);
}
示例8: updateDom
void WProgressBar::updateDom(DomElement& element, bool all)
{
DomElement *bar = 0, *label = 0;
if (all) {
WApplication *app = WApplication::instance();
bar = DomElement::createNew(DomElement_DIV);
bar->setId("bar" + id());
bar->setProperty(PropertyClass, valueStyleClass_);
app->theme()->apply(this, *bar, ProgressBarBarRole);
label = DomElement::createNew(DomElement_DIV);
label->setId("lbl" + id());
app->theme()->apply(this, *label, ProgressBarLabelRole);
}
if (changed_ || all) {
if (!bar)
bar = DomElement::getForUpdate("bar" + id(), DomElement_DIV);
if (!label)
label = DomElement::getForUpdate("lbl" + id(), DomElement_DIV);
bar->setProperty(PropertyStyleWidth,
boost::lexical_cast<std::string>(percentage()) + "%");
WString s = text();
removeScript(s);
label->setProperty(PropertyInnerHTML, s.toUTF8());
changed_ = false;
}
if (bar)
element.addChild(bar);
if (label)
element.addChild(label);
WInteractWidget::updateDom(element, all);
}
示例9: createContents
void WWidgetRasterPainter::createContents(DomElement *result,
WPaintDevice *device)
{
std::string wstr = boost::lexical_cast<std::string>(widget_->renderWidth_);
std::string hstr = boost::lexical_cast<std::string>(widget_->renderHeight_);
DomElement *img = DomElement::createNew(DomElement_IMG);
img->setId('i' + widget_->id());
img->setAttribute("width", wstr);
img->setAttribute("height", hstr);
img->setAttribute("class", "unselectable");
img->setAttribute("unselectable", "on");
img->setAttribute("onselectstart", "return false;");
img->setAttribute("onmousedown", "return false;");
WResource *resource = dynamic_cast<WResource *>(device);
img->setAttribute("src", resource->generateUrl());
result->addChild(img);
}
示例10: createDomElement
DomElement *WWebWidget::createSDomElement()
{
if (hidden_ && wApp && wApp->loading()) {
/*
* just create a stub, but let the element believe that it is
* up-to-date so that static slots are loaded correctly.
*/
DomElement *real = createDomElement();
delete real;
stubbed_ = true;
DomElement *stub = DomElement::createNew(DomElement::SPAN);
stub->setId(this);
return stub;
} else {
stubbed_ = false;
return createDomElement();
}
}
示例11: itemAt
DomElement *WTable::createRowDomElement(int row, bool withIds, WApplication *app)
{
DomElement *tr = DomElement::createNew(DomElement_TR);
if (withIds)
tr->setId(rows_[row]->id());
rows_[row]->updateDom(*tr, true);
// because of the mix of addChild() and insertChildAt()
tr->setWasEmpty(false);
int spanCounter = 0;
for (int col = 0; col < columnCount(); ++col) {
WTableRow::TableData& d = itemAt(row, col);
if (!d.overSpanned) {
DomElement *td = d.cell->createSDomElement(app);
/*
* So, IE gets confused when doing appendChild() for TH followed by
* insertCell(-1) for TD. But, we cannot insertChild() for element 0,
* so we do TH with appendChild, and insertCell(col).
*/
if (col < headerColumnCount_ || row < headerRowCount_)
tr->addChild(td);
else
tr->insertChildAt(td, col - spanCounter);
for (int i = 0; i < d.cell->rowSpan(); ++i)
for (int j = 0; j < d.cell->columnSpan(); ++j)
if (i + j > 0) {
itemAt(row + i, col + j).overSpanned = true;
itemAt(row + i, col + j).cell->setRendered(false);
}
} else {
spanCounter++;
}
}
return tr;
}
示例12: updateDom
void WImage::updateDom(DomElement& element, bool all)
{
DomElement *img = &element;
if (all && element.type() == DomElement_SPAN) {
DomElement *map = map_->createSDomElement(WApplication::instance());
element.addChild(map);
img = DomElement::createNew(DomElement_IMG);
img->setId("i" + id());
}
if (flags_.test(BIT_IMAGE_LINK_CHANGED) || all) {
if (!imageLink_.isNull()) {
std::string url = resolveRelativeUrl(imageLink_.url());
WApplication *app = WApplication::instance();
url = app->encodeUntrustedUrl(url);
img->setProperty(Wt::PropertySrc, url);
} else
img->setProperty(Wt::PropertySrc, "#");
flags_.reset(BIT_IMAGE_LINK_CHANGED);
}
if (flags_.test(BIT_ALT_TEXT_CHANGED) || all) {
img->setAttribute("alt", altText_.toUTF8());
flags_.reset(BIT_ALT_TEXT_CHANGED);
}
if (flags_.test(BIT_MAP_CREATED) || (all && map_)) {
img->setAttribute("usemap", '#' + map_->id());
flags_.reset(BIT_MAP_CREATED);
}
WInteractWidget::updateDom(*img, all);
if (&element != img)
element.addChild(img);
}
示例13: voidEventSignal
DomElement *WFileUpload::createDomElement(WApplication *app)
{
DomElement *result = DomElement::createNew(domElementType());
if (result->type() == DomElement_FORM)
result->setId(id());
else
result->setName(id());
EventSignal<> *change = voidEventSignal(CHANGE_SIGNAL, false);
if (fileUploadTarget_) {
DomElement *i = DomElement::createNew(DomElement_IFRAME);
i->setProperty(PropertyClass, "Wt-resource");
i->setProperty(PropertySrc, fileUploadTarget_->url());
i->setName("if" + id());
if (app->environment().agentIsIE()) {
// http://msdn.microsoft.com/en-us/library/ms536474%28v=vs.85%29.aspx
// HTA's (started by mshta.exe) have a different security model than
// a normal web app, and therefore a HTA browser does not allow
// interaction from iframes to the parent window unless this
// attribute is set. If omitted, this causes the 'uploaded()'
// signal to be blocked when a Wt app is executed as a HTA.
i->setAttribute("APPLICATION", "yes");
}
DomElement *form = result;
form->setAttribute("method", "post");
form->setAttribute("action", fileUploadTarget_->url());
form->setAttribute("enctype", "multipart/form-data");
form->setProperty(PropertyStyle, "margin:0;padding:0;display:inline");
form->setProperty(PropertyTarget, "if" + id());
/*
* wrap iframe in an extra span to work around bug in IE which does
* not set the name use DOM methods
*/
DomElement *d = DomElement::createNew(DomElement_SPAN);
d->addChild(i);
form->addChild(d);
DomElement *input = DomElement::createNew(DomElement_INPUT);
input->setAttribute("type", "file");
if (flags_.test(BIT_MULTIPLE))
input->setAttribute("multiple", "multiple");
input->setAttribute("name", "data");
input->setAttribute("size", boost::lexical_cast<std::string>(textSize_));
input->setId("in" + id());
if (!isEnabled())
input->setProperty(Wt::PropertyDisabled, "true");
if (change)
updateSignalConnection(*input, *change, "change", true);
form->addChild(input);
} else {
result->setAttribute("type", "file");
if (flags_.test(BIT_MULTIPLE))
result->setAttribute("multiple", "multiple");
result->setAttribute("size", boost::lexical_cast<std::string>(textSize_));
if (!isEnabled())
result->setProperty(Wt::PropertyDisabled, "true");
if (change)
updateSignalConnection(*result, *change, "change", true);
}
updateDom(*result, true);
flags_.reset(BIT_ENABLE_AJAX);
return result;
}
示例14: createDomChildren
void WContainerWidget::createDomChildren(DomElement& parent, WApplication *app)
{
if (layout_) {
#ifndef WT_NO_LAYOUT
bool fitWidth = contentAlignment_ & AlignJustify;
bool fitHeight = !(contentAlignment_ & AlignVerticalMask);
DomElement *c = layoutImpl()->createDomElement(fitWidth, fitHeight, app);
/*
* Take the hint: if the container is relative, then we can use an absolute
* layout for its contents, under the assumption that a .wtResize or
* auto-javascript sets the width too (like in WTreeView, WTableView)
*/
if (positionScheme() == Relative || positionScheme() == Absolute) {
c->setProperty(PropertyStylePosition, "absolute");
c->setProperty(PropertyStyleLeft, "0");
c->setProperty(PropertyStyleRight, "0");
} else if (app->environment().agentIsIE()) {
/*
* position: relative element needs to be in a position: relative
* parent otherwise scrolling is broken
*/
if (app->environment().agentIsIE()
&& this->parent()->positionScheme() != Static)
parent.setProperty(PropertyStylePosition, "relative");
}
switch (contentAlignment_ & AlignHorizontalMask) {
case AlignCenter: {
DomElement *itable = DomElement::createNew(DomElement_TABLE);
itable->setProperty(PropertyClass, "Wt-hcenter");
if (fitHeight)
itable->setProperty(PropertyStyle, "height:100%;");
DomElement *irow = DomElement::createNew(DomElement_TR);
DomElement *itd = DomElement::createNew(DomElement_TD);
if (fitHeight)
itd->setProperty(PropertyStyle, "height:100%;");
itd->addChild(c);
irow->addChild(itd);
itable->addChild(irow);
itable->setId(id() + "l");
c = itable;
break;
}
case AlignLeft:
break;
case AlignRight:
c->setProperty(PropertyStyleFloat, "right");
break;
default:
break;
}
parent.addChild(c);
flags_.reset(BIT_LAYOUT_NEEDS_RERENDER);
#endif // WT_NO_LAYOUT
} else {
for (unsigned i = 0; i < children_->size(); ++i)
parent.addChild((*children_)[i]->createSDomElement(app));
}
if (transientImpl_)
transientImpl_->addedChildren_.clear();
}
示例15: 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;
}