本文整理汇总了C++中XMLHelper::getChildElements方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLHelper::getChildElements方法的具体用法?C++ XMLHelper::getChildElements怎么用?C++ XMLHelper::getChildElements使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLHelper
的用法示例。
在下文中一共展示了XMLHelper::getChildElements方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addSubMenu
int RKComponentMap::addSubMenu (QDomElement& parent, const QDomElement& description, const QString& cnamespace) {
RK_TRACE (PLUGIN);
int counter = 0;
XMLHelper* xml = XMLHelper::getStaticHelper ();
// 1: check whether menu already exists, and create new menu otherwise
QDomElement menu_element = findOrCreateElement (parent, "Menu", xml->getStringAttribute (description, "id", "none", DL_ERROR), xml->getStringAttribute (description, "label", i18n ("(no label)"), DL_WARNING), xml->getIntAttribute (description, "index", -1, DL_INFO));
// 2: recurse into submenus (of element to add!)
XMLChildList list = xml->getChildElements (description, "menu", DL_INFO);
for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) {
counter += addSubMenu (menu_element, (*it), cnamespace);
}
// 3: add entries
list = xml->getChildElements (description, "entry", DL_INFO);
for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) {
QString id = cnamespace + xml->getStringAttribute ((*it), "component", "#invalid#", DL_ERROR);
RKComponentHandle* handle = components[id];
if ((!handle) || (!handle->isPlugin ())) {
RK_DO (qDebug ("No such component found while creating menu-entries or component is not a standalone plugin: \"%s\". No entry created.", id.latin1 ()), PLUGIN, DL_ERROR);
} else {
findOrCreateElement (menu_element, "Action", id, QString::null, xml->getIntAttribute ((*it), "index", -1, DL_INFO));
counter++;
}
}
return counter;
}
示例2: addPluginMap
int RKComponentMap::addPluginMap (const QString& plugin_map_file) {
RK_TRACE (PLUGIN);
XMLHelper* xml = XMLHelper::getStaticHelper ();
QDomElement element;
XMLChildList list;
QDomElement document_element = xml->openXMLFile (plugin_map_file, DL_ERROR);
if (xml->highestError () >= DL_ERROR) return (0);
QString prefix = QFileInfo (plugin_map_file).dirPath (true) + "/" + xml->getStringAttribute (document_element, "base_prefix", QString::null, DL_INFO);
QString cnamespace = xml->getStringAttribute (document_element, "namespace", "rkward", DL_INFO) + "::";
// step 1: create (list of) components
element = xml->getChildElement (document_element, "components", DL_INFO);
list = xml->getChildElements (element, "component", DL_INFO);
for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) {
QString filename = prefix + xml->getStringAttribute((*it), "file", QString::null, DL_WARNING);
QString id = cnamespace + xml->getStringAttribute((*it), "id", QString::null, DL_WARNING);
int type = xml->getMultiChoiceAttribute ((*it), "type", "standard", 0, DL_WARNING);
QString label = xml->getStringAttribute ((*it), "label", i18n ("(no label)"), DL_WARNING);
if (components.contains (id)) {
RK_DO (qDebug ("RKComponentMap already contains a component with id \"%s\". Ignoring second entry.", id.latin1 ()), PLUGIN, DL_WARNING);
} else if (!QFileInfo (filename).isReadable ()) {
RK_DO (qDebug ("Specified file '%s' for component id \"%s\" does not exist or is not readable. Ignoring.", filename.latin1 (), id.latin1 ()), PLUGIN, DL_ERROR);
} else {
components.insert (id, RKComponentHandle::createComponentHandle (filename, (RKComponentType) type, id, label));
}
}
// step 2: create / insert into menus
QDomElement xmlgui_menubar_elem = xml->getChildElement (xmlguiBuildDocument ().documentElement (), "MenuBar", DL_ERROR);
element = xml->getChildElement (document_element, "hierarchy", DL_INFO);
list = xml->getChildElements (element, "menu", DL_INFO);
int counter = 0;
for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) {
counter += addSubMenu (xmlgui_menubar_elem, (*it), cnamespace);
}
// step 3: included files
QStringList includelist;
list = xml->getChildElements (document_element, "include", DL_INFO);
for (XMLChildList::const_iterator it=list.constBegin (); it != list.constEnd (); ++it) {
QString file = prefix + xml->getStringAttribute (*it, "file", QString::null, DL_ERROR);
if (QFileInfo (file).isReadable ()) {
includelist.append (file);
} else {
RK_DO (qDebug ("Specified include file '%s' does not exist or is not readable. Ignoring.", file.latin1 ()), PLUGIN, DL_ERROR);
}
}
for (QStringList::const_iterator it = includelist.constBegin (); it != includelist.constEnd (); ++it) {
counter += addPluginMap (*it);
}
return counter;
}
示例3: findOrCreateElement
//static
QDomElement RKComponentMap::findOrCreateElement (QDomElement& parent, const QString& tagname, const QString& name, const QString& label, int index) {
RK_TRACE (PLUGIN);
XMLHelper* xml = XMLHelper::getStaticHelper ();
XMLChildList list = xml->getChildElements (parent, QString::null, DL_INFO); // we need to look at all children, so we get the order right
QDomElement insert_after_element;
for (XMLChildList::const_iterator it=list.begin (); it != list.end (); ++it) {
if ((tagname == (*it).tagName ()) && (name == xml->getStringAttribute ((*it), "name", "", DL_ERROR))) {
return (*it);
} else {
if (index >= 0) {
if (index > xml->getIntAttribute ((*it), "index", -1, DL_INFO)) {
insert_after_element = *it;
}
}
}
}
// element not found. Create a new one instead
QDomElement ret = xmlguiBuildDocument ().createElement (tagname);
ret.setAttribute ("name", name);
ret.setAttribute ("index", index);
if (!label.isEmpty ()) {
QDomElement text = xmlguiBuildDocument ().createElement ("text");
text.appendChild (xmlguiBuildDocument ().createTextNode (label));
ret.appendChild (text);
}
parent.insertAfter (ret, insert_after_element); // if index_after_element.isNull, this add the new element as the last child of parent!
return ret;
}
示例4: RKComponent
RKValueSelector::RKValueSelector (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
updating = false;
XMLHelper *xml = parent_component->xmlHelper ();
standalone = element.tagName () == "select";
addChild ("selected", selected = new RKComponentPropertyStringList (this, false));
connect (selected, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (selectionPropertyChanged()));
selected->setInternal (!standalone);
addChild ("available", available = new RKComponentPropertyStringList (this, false));
connect (available, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (availablePropertyChanged()));
available->setInternal (true);
addChild ("labels", labels = new RKComponentPropertyStringList (this, false));
connect (labels, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (labelsPropertyChanged()));
labels->setInternal (true);
QVBoxLayout *vbox = new QVBoxLayout (this);
vbox->setContentsMargins (0, 0, 0, 0);
label_string = xml->i18nStringAttribute (element, "label", QString (), DL_INFO);
if (!label_string.isNull ()) {
QLabel *label = new QLabel (label_string, this);
vbox->addWidget (label);
}
list_view = new QTreeView (this);
list_view->setHeaderHidden (true);
list_view->setSelectionMode (QAbstractItemView::ExtendedSelection);
list_view->setRootIsDecorated (false);
model = new QStringListModel (this);
list_view->setModel (model);
connect (list_view->selectionModel (), SIGNAL (selectionChanged(QItemSelection,QItemSelection)), this, SLOT (listSelectionChanged()));
vbox->addWidget (list_view);
XMLChildList options = xml->getChildElements (element, "option", DL_INFO);
if (!options.isEmpty ()) {
QStringList values_list;
QStringList labels_list;
QStringList selected_list;
for (int i = 0; i < options.size (); ++i) {
const QDomElement &child = options[i];
QString v = xml->getStringAttribute (child, "value", QString (), DL_WARNING);
QString l = xml->i18nStringAttribute (child, "label", v, DL_INFO);
if (xml->getBoolAttribute (child, "checked", false, DL_INFO)) selected_list.append (v);
labels_list.append (l);
values_list.append (v);
}
available->setValueList (values_list);
labels->setValueList (labels_list);
selected->setValueList (selected_list);
}
}
示例5: RKComponent
RKRadio::RKRadio (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
// create and register properties
addChild ("string", string = new RKComponentPropertyBase (this, false));
connect (string, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (propertyChanged (RKComponentPropertyBase *)));
addChild ("number", number = new RKComponentPropertyInt (this, true, -1));
connect (number, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (propertyChanged (RKComponentPropertyBase *)));
// get xml-helper
XMLHelper *xml = XMLHelper::getStaticHelper ();
// create layout
QVBoxLayout *vbox = new QVBoxLayout (this, RKGlobals::spacingHint ());
// create ButtonGroup
group = new QButtonGroup (xml->getStringAttribute (element, "label", i18n ("Select one:"), DL_INFO), this);
// create internal layout for the buttons in the ButtonGroup
group->setColumnLayout (0, Qt::Vertical);
group->layout()->setSpacing (RKGlobals::spacingHint ());
group->layout()->setMargin (RKGlobals::marginHint ());
QVBoxLayout *group_layout = new QVBoxLayout (group->layout(), RKGlobals::spacingHint ());
// create all the options
XMLChildList option_elements = xml->getChildElements (element, "option", DL_ERROR);
int checked = 0;
int i = 0;
for (XMLChildList::const_iterator it = option_elements.begin (); it != option_elements.end (); ++it) {
QRadioButton *button = new QRadioButton (xml->getStringAttribute (*it, "label", QString::null, DL_ERROR), group);
options.insert (i, xml->getStringAttribute (*it, "value", QString::null, DL_WARNING));
group_layout->addWidget (button);
if (xml->getBoolAttribute (*it, "checked", false, DL_INFO)) {
button->setChecked (true);
checked = i;
}
++i;
}
updating = false;
number->setIntValue (checked); // will also take care of checking the correct button
number->setMin (0);
number->setMax (i-1);
vbox->addWidget (group);
connect (group, SIGNAL (clicked (int)), this, SLOT (buttonClicked (int)));
// initialize
buttonClicked (group->selectedId ());
}
示例6: visible_column_labels
RKOptionSet::RKOptionSet (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
XMLHelper *xml = XMLHelper::getStaticHelper ();
updating = false;
last_known_status = Processing;
n_invalid_rows = n_unfinished_rows = 0;
min_rows = xml->getIntAttribute (element, "min_rows", 0, DL_INFO);
min_rows_if_any = xml->getIntAttribute (element, "min_rows_if_any", 1, DL_INFO);
max_rows = xml->getIntAttribute (element, "max_rows", INT_MAX, DL_INFO);
// build UI framework
QVBoxLayout *layout = new QVBoxLayout (this);
switcher = new QStackedWidget (this);
layout->addWidget (switcher);
user_area = new KVBox (this);
switcher->addWidget (user_area);
updating_notice = new QLabel (i18n ("Updating status, please wait"), this);
switcher->addWidget (updating_notice);
update_timer.setInterval (0);
update_timer.setSingleShot (true);
connect (&update_timer, SIGNAL (timeout()), this, SLOT (slotUpdateUnfinishedRows()));
// create some meta properties
serialization_of_set = new RKComponentPropertyBase (this, false);
addChild ("serialized", serialization_of_set);
connect (serialization_of_set, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (serializationPropertyChanged(RKComponentPropertyBase*)));
row_count = new RKComponentPropertyInt (this, false, 0);
row_count->setInternal (true);
addChild ("row_count", row_count); // NOTE: read-only
return_to_row = active_row = -1;
current_row = new RKComponentPropertyInt (this, false, active_row);
current_row->setInternal (true);
addChild ("current_row", current_row); // NOTE: read-write
connect (current_row, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (currentRowPropertyChanged(RKComponentPropertyBase*)));
// first build the contents, as we will need to refer to the elements inside, later
model = 0;
display = 0; // will be created from the builder, on demand -> createDisplay ()
contents_container = new RKComponent (this, user_area);
QDomElement content_element = xml->getChildElement (element, "content", DL_ERROR);
RKComponentBuilder *builder = new RKComponentBuilder (contents_container, content_element);
builder->buildElement (content_element, user_area, false); // NOTE that parent widget != parent component, here, by intention. The point is that the display should not be disabled along with the contents
builder->parseLogic (xml->getChildElement (element, "logic", DL_INFO), false);
builder->makeConnections ();
addChild ("contents", contents_container);
connect (standardComponent (), SIGNAL (standardInitializationComplete()), this, SLOT (fetchDefaults()));
// create columns
XMLChildList options = xml->getChildElements (element, "optioncolumn", DL_WARNING);
QStringList visible_column_labels ("#"); // Optionally hidden first row for index
for (int i = 0; i < options.size (); ++i) {
const QDomElement &e = options.at (i);
QString id = xml->getStringAttribute (e, "id", QString (), DL_ERROR);
QString label = xml->getStringAttribute (e, "label", QString (), DL_DEBUG);
QString governor = xml->getStringAttribute (e, "connect", QString (), DL_INFO);
bool external = xml->getBoolAttribute (e, "external", false, DL_INFO);
while (child_map.contains (id)) {
RK_DEBUG (PLUGIN, DL_ERROR, "optionset already contains a property named %s. Renaming to _%s", qPrintable (id), qPrintable (id));
id = "_" + id;
}
ColumnInfo col_inf;
col_inf.column_name = id;
col_inf.external = external;
col_inf.governor = governor;
if (external && e.hasAttribute ("default")) col_inf.default_value = xml->getStringAttribute (e, "default", QString (), DL_ERROR);
RKComponentPropertyStringList *column_property = new RKComponentPropertyStringList (this, false);
column_property->setInternal (external); // Yes, looks strange, indeed. External properties should simply not be serialized / restored...
addChild (id, column_property);
connect (column_property, SIGNAL (valueChanged(RKComponentPropertyBase *)), this, SLOT (columnPropertyChanged(RKComponentPropertyBase *)));
if (!label.isEmpty ()) {
col_inf.display_index = visible_column_labels.size ();
col_inf.column_label = label;
visible_column_labels.append (label);
visible_columns.append (column_property);
} else {
col_inf.display_index = -1;
}
column_map.insert (column_property, col_inf);
}
keycolumn = 0;
QString keycol = xml->getStringAttribute (element, "keycolumn", QString (), DL_DEBUG);
if (!keycol.isEmpty ()) {
keycolumn = static_cast<RKComponentPropertyStringList*> (child_map.value (keycol));
if (!column_map.contains (keycolumn)) {
RK_DEBUG (PLUGIN, DL_ERROR, "optionset does not contain an optioncolumn named %s. Falling back to manual insertion mode", qPrintable (keycol));
keycolumn = 0;
} else if (!column_map[keycolumn].external) {
RK_DEBUG (PLUGIN, DL_ERROR, "keycolumn (%s) is not marked as external. Falling back to manual insertion mode", qPrintable (keycol));
keycolumn = 0;
} else {
//.........这里部分代码省略.........