本文整理汇总了C++中XMLHelper::getBoolAttribute方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLHelper::getBoolAttribute方法的具体用法?C++ XMLHelper::getBoolAttribute怎么用?C++ XMLHelper::getBoolAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLHelper
的用法示例。
在下文中一共展示了XMLHelper::getBoolAttribute方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RKComponent
RKVarSlot::RKVarSlot (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
XMLHelper *xml = XMLHelper::getStaticHelper ();
// basic layout
QGridLayout *g_layout = new QGridLayout (this, 4, 3, RKGlobals::spacingHint ());
QLabel *label = new QLabel (xml->getStringAttribute (element, "label", i18n ("Variable:"), DL_INFO), this);
g_layout->addWidget (label, 0, 2);
select = new QPushButton (QString::null, this);
setSelectButton (false);
connect (select, SIGNAL (clicked ()), this, SLOT (selectPressed ()));
g_layout->addWidget (select, 1, 0);
g_layout->addColSpacing (1, 5);
list = new QListView (this);
list->setSelectionMode (QListView::Extended);
list->addColumn (" "); // for counter
list->addColumn (i18n ("Name"));
list->setSorting (2);
g_layout->addWidget (list, 1, 2);
// initialize properties
addChild ("source", source = new RKComponentPropertyRObjects (this, false));
addChild ("available", available = new RKComponentPropertyRObjects (this, true));
addChild ("selected", selected = new RKComponentPropertyRObjects (this, false));
// find out about options
if (multi = xml->getBoolAttribute (element, "multi", false, DL_INFO)) {
available->setListLength (xml->getIntAttribute (element, "min_vars", 1, DL_INFO), xml->getIntAttribute (element, "min_vars_if_any", 1, DL_INFO), xml->getIntAttribute (element, "max_vars", 0, DL_INFO));
connect (list, SIGNAL (selectionChanged ()), this, SLOT (listSelectionChanged ()));
} else {
available->setListLength (1, 1, 1);
// make it look like a line-edit
list->header ()->hide ();
list->setFixedHeight (list->fontMetrics ().height () + 2*list->itemMargin () + 4); // the height of a single line including margins
list->setColumnWidthMode (0, QListView::Manual);
list->setColumnWidth (0, 0);
list->setHScrollBarMode (QScrollView::AlwaysOff);
list->setVScrollBarMode (QScrollView::AlwaysOff);
g_layout->setRowStretch (3, 1); // so the label does not get separated from the view
}
// initialize filters
available->setClassFilter (QStringList::split (" ", xml->getStringAttribute (element, "classes", QString::null, DL_INFO)));
setRequired (xml->getBoolAttribute (element, "required", false, DL_INFO));
available->setTypeFilter (QStringList::split (" ", xml->getStringAttribute (element, "types", QString::null, DL_INFO)));
available->setDimensionFilter (xml->getIntAttribute (element, "num_dimensions", 0, DL_INFO), xml->getIntAttribute (element, "min_length", 0, DL_INFO), xml->getIntAttribute (element, "max_length", INT_MAX, DL_INFO));
connect (available, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (availablePropertyChanged (RKComponentPropertyBase *)));
availablePropertyChanged (available); // initialize
}
示例2: RKComponent
RKPluginBrowser::RKPluginBrowser (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
// get xml-helper
XMLHelper *xml = XMLHelper::getStaticHelper ();
// create and add property
addChild ("selection", selection = new RKComponentPropertyBase (this, true));
connect (selection, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (textChanged (RKComponentPropertyBase *)));
setRequired (xml->getBoolAttribute (element, "required", true, DL_INFO));
connect (requirednessProperty (), SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (requirednessChanged(RKComponentPropertyBase*)));
QVBoxLayout *vbox = new QVBoxLayout (this, RKGlobals::spacingHint ());
int intmode = xml->getMultiChoiceAttribute (element, "type", "file;dir;savefile", 0, DL_INFO);
GetFileNameWidget::FileType mode;
if (intmode == 0) {
mode = GetFileNameWidget::ExistingFile;
} else if (intmode == 0) {
mode = GetFileNameWidget::ExistingDirectory;
} else {
mode = GetFileNameWidget::SaveFile;
}
selector = new GetFileNameWidget (this, mode, xml->getStringAttribute (element, "label", i18n ("Enter filename"), DL_INFO), i18n ("Select"), xml->getStringAttribute (element, "initial", QString::null, DL_INFO));
selector->setFilter (xml->getStringAttribute (element, "filter", QString::null, DL_INFO));
connect (selector, SIGNAL (locationChanged ()), SLOT (textChanged ()));
vbox->addWidget (selector);
// initialize
updating = false;
textChanged ();
}
示例3: RKComponent
RKPluginSaveObject::RKPluginSaveObject (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
// read settings
XMLHelper *xml = XMLHelper::getStaticHelper ();
bool checkable = xml->getBoolAttribute (element, "checkable", false, DL_INFO);
bool checked = xml->getBoolAttribute (element, "checked", false, DL_INFO);
bool required = xml->getBoolAttribute (element, "required", true, DL_INFO);
QString label = xml->getStringAttribute (element, "label", i18n ("Save to:"), DL_INFO);
QString initial = xml->getStringAttribute (element, "initial", i18n ("my.data"), DL_INFO);
// create and add properties
addChild ("selection", selection = new RKComponentPropertyBase (this, required));
connect (selection, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (externalChange ()));
selection->setInternal (true); // the two separate properties "parent" and "objectname" are used for (re-)storing.
addChild ("parent", parent = new RKComponentPropertyRObjects (this, false));
connect (parent, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (externalChange ()));
addChild ("objectname", objectname = new RKComponentPropertyBase (this, false));
connect (objectname, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (externalChange ()));
addChild ("active", active = new RKComponentPropertyBool (this, false, false, "1", "0"));
connect (active, SIGNAL (valueChanged (RKComponentPropertyBase *)), this, SLOT (externalChange ()));
if (!checkable) active->setInternal (true);
// create GUI
groupbox = new QGroupBox (label, this);
groupbox->setCheckable (checkable);
if (checkable) groupbox->setChecked (checked);
connect (groupbox, SIGNAL (toggled(bool)), this, SLOT (internalChange ()));
selector = new RKSaveObjectChooser (groupbox, initial);
connect (selector, SIGNAL (changed (bool)), SLOT (internalChange ()));
QVBoxLayout *vbox = new QVBoxLayout (this);
vbox->setContentsMargins (0, 0, 0, 0);
QVBoxLayout *vbox_b = new QVBoxLayout (groupbox);
vbox_b->setContentsMargins (0, 0, 0, 0);
vbox_b->addWidget (selector);
vbox->addWidget (groupbox);
// initialize
setRequired (required);
updating = false;
internalChange ();
}
示例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
RKPluginFrame::RKPluginFrame (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
XMLHelper* xml = parent_component->xmlHelper ();
QVBoxLayout *layout = new QVBoxLayout (this);
layout->setContentsMargins (0, 0, 0, 0);
frame = new QGroupBox (xml->i18nStringAttribute (element, "label", QString(), DL_INFO), this);
layout->addWidget (frame);
layout = new QVBoxLayout (frame);
page = new KVBox (frame);
page->setSpacing (RKGlobals::spacingHint ());
layout->addWidget (page);
checked = 0;
if (xml->getBoolAttribute (element, "checkable", false, DL_INFO)) {
frame->setCheckable (true);
frame->setChecked (xml->getBoolAttribute (element, "checked", true, DL_INFO));
initCheckedProperty ();
connect (frame, SIGNAL (toggled(bool)), this, SLOT (checkedChanged(bool)));
}
示例6: 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 ());
}
示例7: RKComponent
RKInput::RKInput (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
textedit = 0;
lineedit = 0;
// get xml-helper
XMLHelper *xml = parent_component->xmlHelper ();
// create and add property
addChild ("text", text = new RKComponentPropertyBase (this, false));
connect (text, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (textChanged(RKComponentPropertyBase*)));
setRequired (xml->getBoolAttribute (element, "required", false, DL_INFO));
connect (requirednessProperty (), SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (requirednessChanged(RKComponentPropertyBase*)));
// do all the layouting
QVBoxLayout *vbox = new QVBoxLayout (this);
vbox->setContentsMargins (0, 0, 0, 0);
label_string = xml->i18nStringAttribute (element, "label", i18n ("Enter text"), DL_INFO);
if (!label_string.isEmpty ()) {
QLabel *label = new QLabel (label_string, this);
vbox->addWidget (label);
}
int size = xml->getMultiChoiceAttribute (element, "size", "small;medium;large", 1, DL_INFO);
if (size == 2) {
textedit = new QTextEdit (this);
QFontMetrics fm = QFontMetrics (textedit->currentFont ());
int lheight = fm.lineSpacing ();
int margin = fm.descent () + 2;
textedit->setMinimumSize (250, lheight * 4 + margin);
vbox->addWidget (textedit);
connect (textedit, SIGNAL (textChanged()), SLOT (textChanged()));
} else {
lineedit = new QLineEdit (this);
vbox->addWidget (lineedit);
connect (lineedit, SIGNAL (textChanged(QString)), SLOT (textChanged(QString)));
}
vbox->addStretch (1); // to keep the label attached
// initialize
updating = false;
// DO NOT replace "" with QString (), here! it is important, that this is actually an empty string, not a null string.
text->setValue (xml->getStringAttribute (element, "initial", "", DL_INFO));
}
示例8: if
RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_component, QWidget* parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
is_valid = true;
// get xml-helper
XMLHelper *xml = parent_component->xmlHelper ();
// create layout
QVBoxLayout *vbox = new QVBoxLayout (this);
vbox->setContentsMargins (0, 0, 0, 0);
QLabel *label = new QLabel (xml->i18nStringAttribute (element, "label", i18n ("Enter data:"), DL_INFO), this);
vbox->addWidget (label);
display = new RKTableView (this);
vbox->addWidget (display);
mode = static_cast<Mode> (xml->getMultiChoiceAttribute (element, "mode", "integer;real;string", 1, DL_WARNING));
if (mode == Integer) {
min = xml->getIntAttribute (element, "min", INT_MIN, DL_INFO) - .1; // we'll only allow ints anyway. Make sure not to run into floating point precision issues.
max = xml->getIntAttribute (element, "max", INT_MAX, DL_INFO) + .1;
} else if (mode == Real) {
min = xml->getDoubleAttribute (element, "min", -FLT_MAX, DL_INFO);
max = xml->getDoubleAttribute (element, "max", FLT_MAX, DL_INFO);
} else {
min = -FLT_MAX;
max = FLT_MAX;
}
min_rows = xml->getIntAttribute (element, "min_rows", 0, DL_INFO);
min_columns = xml->getIntAttribute (element, "min_columns", 0, DL_INFO);
// Note: string type matrix allows missings, implicitly (treating them as empty strings)
allow_missings = xml->getBoolAttribute (element, "allow_missings", false, DL_INFO);
if (mode == String) allow_missings = true;
allow_user_resize_columns = xml->getBoolAttribute (element, "allow_user_resize_columns", true, DL_INFO);
allow_user_resize_rows = xml->getBoolAttribute (element, "allow_user_resize_rows", true, DL_INFO);
trailing_rows = allow_user_resize_rows ? 1 : 0;
trailing_columns = allow_user_resize_columns ? 1 : 0;
row_count = new RKComponentPropertyInt (this, false, xml->getIntAttribute (element, "rows", qMax (2, min_rows), DL_INFO));
column_count = new RKComponentPropertyInt (this, false, xml->getIntAttribute (element, "columns", qMax (2, min_columns), DL_INFO));
tsv_data = new RKComponentPropertyBase (this, false);
row_count->setInternal (true);
addChild ("rows", row_count);
column_count->setInternal (true);
addChild ("columns", column_count);
addChild ("tsv", tsv_data);
connect (row_count, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (dimensionPropertyChanged(RKComponentPropertyBase*)));
connect (column_count, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (dimensionPropertyChanged(RKComponentPropertyBase*)));
connect (tsv_data, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (tsvPropertyChanged()));
updating_tsv_data = false;
model = new RKMatrixInputModel (this);
QString headers = xml->getStringAttribute (element, "horiz_headers", QString (), DL_INFO);
if (!headers.isEmpty ()) model->horiz_header = headers.split (';');
else if (!headers.isNull ()) display->horizontalHeader ()->hide (); // attribute explicitly set to ""
headers = xml->getStringAttribute (element, "vert_headers", QString (), DL_INFO);
if (!headers.isEmpty ()) model->vert_header = headers.split (';');
else if (!headers.isNull ()) display->verticalHeader ()->hide ();
updateAll ();
display->setModel (model);
display->setAlternatingRowColors (true);
if (xml->getBoolAttribute (element, "fixed_width", false, DL_INFO)) {
display->horizontalHeader ()->setStretchLastSection (true);
}
if (xml->getBoolAttribute (element, "fixed_height", false, DL_INFO)) {
int max_row = row_count->intValue () - 1;
display->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
display->setFixedHeight (display->horizontalHeader ()->height () + display->rowViewportPosition (max_row) + display->rowHeight (max_row));
}
// define standard actions
KAction *cut = KStandardAction::cut (this, SLOT (cut()), this);
display->addAction (cut);
KAction *copy = KStandardAction::copy (this, SLOT (copy()), this);
display->addAction (copy);
KAction *paste = KStandardAction::paste (this, SLOT (paste()), this);
display->addAction (paste);
display->setContextMenuPolicy (Qt::ActionsContextMenu);
display->setRKItemDelegate (new RKItemDelegate (display, model, true));
connect (display, SIGNAL (blankSelectionRequest()), this, SLOT (clearSelectedCells()));
}
示例9: 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 {
//.........这里部分代码省略.........
示例10: if
RKPreviewBox::RKPreviewBox (const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget) : RKComponent (parent_component, parent_widget) {
RK_TRACE (PLUGIN);
prior_preview_done = true;
new_preview_pending = false;
// get xml-helper
XMLHelper *xml = parent_component->xmlHelper ();
preview_mode = (PreviewMode) xml->getMultiChoiceAttribute (element, "mode", "plot;data;output;custom", 0, DL_INFO);
placement = (PreviewPlacement) xml->getMultiChoiceAttribute (element, "placement", "default;attached;detached;docked", 0, DL_INFO);
if (placement == DefaultPreview) placement = DockedPreview;
preview_active = xml->getBoolAttribute (element, "active", false, DL_INFO);
idprop = RObject::rQuote (QString ().sprintf ("%p", this));
// create and add property
addChild ("state", state = new RKComponentPropertyBool (this, true, preview_active, "active", "inactive"));
state->setInternal (true); // restoring this does not make sense.
connect (state, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (changedState(RKComponentPropertyBase*)));
// create checkbox
QVBoxLayout *vbox = new QVBoxLayout (this);
vbox->setContentsMargins (0, 0, 0, 0);
toggle_preview_box = new QCheckBox (xml->i18nStringAttribute (element, "label", i18n ("Preview"), DL_INFO), this);
vbox->addWidget (toggle_preview_box);
toggle_preview_box->setChecked (preview_active);
connect (toggle_preview_box, SIGNAL (stateChanged(int)), this, SLOT (changedState(int)));
// status label
status_label = new QLabel (QString (), this);
status_label->setWordWrap (true);
vbox->addWidget (status_label);
// prepare placement
placement_command = ".rk.with.window.hints ({";
placement_end = "\n}, ";
if (placement == AttachedPreview) placement_end.append ("\"attached\"");
else if (placement == DetachedPreview) placement_end.append ("\"detached\"");
else placement_end.append ("\"\"");
placement_end.append (", " + RObject::rQuote (idprop) + ", style=\"preview\")");
if (placement == DockedPreview) {
RKStandardComponent *uicomp = topmostStandardComponent ();
if (uicomp) {
uicomp->addDockedPreview (state, toggle_preview_box->text (), idprop);
if (preview_mode == OutputPreview) {
RKGlobals::rInterface ()->issueCommand ("local ({\n"
"outfile <- tempfile (fileext='html')\n"
"rk.assign.preview.data(" + idprop + ", list (filename=outfile, on.delete=function (id) {\n"
" rk.flush.output (outfile, ask=FALSE)\n"
" unlink (outfile)\n"
"}))\n"
"oldfile <- rk.set.output.html.file (outfile, style='preview') # for initialization\n"
"rk.set.output.html.file (oldfile)\n"
"})\n" + placement_command + "rk.show.html(rk.get.preview.data (" + idprop + ")$filename)" + placement_end, RCommand::Plugin | RCommand::Sync);
} else {
// For all others, create an empty data.frame as dummy. Even for custom docked previews it has the effect of initializing the preview area with _something_.
RKGlobals::rInterface ()->issueCommand ("local ({\nrk.assign.preview.data(" + idprop + ", data.frame ())\n})\n" + placement_command + "rk.edit(rkward::.rk.variables$.rk.preview.data[[" + idprop + "]])" + placement_end, RCommand::Plugin | RCommand::Sync);
}
// A bit of a hack: For now, in wizards, docked previews are always active, and control boxes are meaningless.
if (uicomp->isWizardish ()) {
hide ();
toggle_preview_box->setChecked (true);
}
}
}
// find and connect to code property of the parent
QString dummy;
RKComponentBase *cp = parentComponent ()->lookupComponent ("code", &dummy);
if (cp && dummy.isNull () && (cp->type () == PropertyCode)) {
code_property = static_cast<RKComponentPropertyCode *> (cp);
connect (code_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (changedCode(RKComponentPropertyBase*)));
} else {