本文整理汇总了C++中BrowserNodeList类的典型用法代码示例。如果您正苦于以下问题:C++ BrowserNodeList类的具体用法?C++ BrowserNodeList怎么用?C++ BrowserNodeList使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了BrowserNodeList类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: send_uml_def
void ClassData::send_uml_def(ToolCom * com, BrowserNode * bn,
const QString & comment)
{
int api = com->api_format(true);
BasicData::send_uml_def(com, bn, comment);
com->write_bool(FALSE); // class member
if (api >= 13)
com->write_bool(FALSE); // volatile
com->write_char(((api >= 23) ||
(uml_visibility != UmlPackageVisibility))
? uml_visibility : UmlPublic);
if (api >= 30)
com->write_string(constraint);
com->write_bool(is_abstract);
if (stereotype == "typedef") {
BrowserNodeList inh;
browser_node->children(inh, UmlGeneralisation, UmlRealize);
if (inh.count() != 0)
// first inheritance is taken in all cases
((RelationData *) inh.at(0)->get_data())->get_end_class()->write_id(com);
else if (base_type.type != 0)
base_type.type->write_id(com);
else if (!base_type.explicit_type.isEmpty()) {
com->write_id(0);
com->write_string(base_type.explicit_type);
}
else {
// no base_type, try with a dependency
browser_node->children(inh, UmlDependency);
if (inh.count() != 0)
((RelationData *) inh.at(0)->get_data())->get_end_class()->write_id(com);
else {
com->write_id(0);
com->write_string("");
}
}
}
if (api >= 48)
com->write_bool(is_active);
}
示例2: instances
void BrowserOperation::instances(BrowserNodeList & result)
{
IdIterator<BrowserOperation> it(all);
BrowserOperation * op;
while(it.hasNext()){
it.next();
if ((op = it.value()) != 0)
if (!op->deletedp())
result.append(op);
}
result.sort_it();
}
示例3: type
QString type(const QString & t, const QStringList & types,
BrowserNodeList & nodes)
{
int rank = types.findIndex(t);
return (rank != -1)
? QString(((BrowserClass *) nodes.at(rank))->get_name())
: t;
}
示例4: children
void BrowserNode::children(BrowserNodeList & nodes,
UmlCode kind1, UmlCode kind2) const {
Q3ListViewItem * child;
for (child = firstChild(); child; child = child->nextSibling())
if (!((BrowserNode *) child)->is_deleted &&
((((BrowserNode *) child)->get_type() == kind1) ||
(((BrowserNode *) child)->get_type() == kind2)))
nodes.append((BrowserNode *) child);
}
示例5: set_type
void AttributeData::set_type(const QString &value)
{
QStringList list;
BrowserNodeList nodes;
BrowserClass::instances(nodes);
nodes.full_names(list);
AType t;
if (!value.isEmpty())
{
int rank = list.indexOf(value);
if (rank != -1)
t.type = (BrowserClass *) nodes.at(rank);
else
t.explicit_type = value;
}
set_type(t);
}
示例6: enter_child_name
bool BrowserNode::enter_child_name(QString & r, const QString & msg, UmlCode type,
BrowserNodeList & nodes,
BrowserNode ** old, bool allow_spaces,
bool allow_empty, bool existing) {
if (existing && nodes.isEmpty()) {
msg_warning(TR("Error"), TR("nothing available"));
return FALSE;
}
QStringList list;
nodes.full_names(list);
list.prepend(QString::null);
*old = 0;
for (;;) {
BooL ok = FALSE;
r = (list.count() == 1)
? MyInputDialog::getText("Uml", msg, QString::null, ok)
: MyInputDialog::getText("Uml", msg, list, QString::null, existing, ok);
if (! ok)
return FALSE;
if (!r.isEmpty()) {
int index = list.findIndex(r);
if (index != -1) {
*old = nodes.at(index - 1);
return TRUE;
}
}
if (wrong_child_name(r, type, allow_spaces, allow_empty))
msg_critical(TR("Error"), r + "\n\n" + TR("illegal name or already used"));
else
return TRUE;
}
}
示例7: GenericDelegate
void QuickEdit::TypeDelegateSetup()
{
GenericDelegate* delegate = new GenericDelegate(ui->tvEditor, false);
delegate->widgetCreator = [](QWidget* parent)
{
BrowserNodeList result;
QStringList classes;
BrowserClass::instances(result);
result.full_names(classes);
QStringList basics = GenerationSettings::basic_types();
classes+=basics;
QCompleter* completer = new QCompleter(classes, parent);
completer->setCaseSensitivity(Qt::CaseSensitive);
QComboBox* box = new QComboBox(parent);
QStringListModel* model = new QStringListModel;
model->setStringList(classes);
box->setModel(model);
box->setEditable(true);
box->setCompleter(completer);
return box;
};
delegate->dataAccessor = [](QWidget* editor, const QModelIndex& index)
{
QString value = index.model()->data(index, Qt::EditRole).toString();
QComboBox* box = static_cast<QComboBox*>(editor);
box->setCurrentText(value);
};
delegate->dataSetter = [](QWidget* editor, QAbstractItemModel* model, const QModelIndex& index)
{
QComboBox* box = static_cast<QComboBox*>(editor);
QString value = box->currentText();
model->setData(index, value, Qt::EditRole);
};
ui->tvEditor->setItemDelegateForColumn(columns.indexOf("type"), delegate);
}
示例8: the_type
AType the_type(const QString & t, const QStringList & types,
BrowserNodeList & nodes)
{
AType result;
int rank = types.findIndex(t);
if (rank != -1)
result.type = ((BrowserClass *) nodes.at(rank));
else
result.explicit_type = t;
return result;
}
示例9: switch
bool ClassInstanceData::tool_cmd(ToolCom * com, const char * args,
BrowserNode * bn, const QString & comment) {
if (((unsigned char) args[-1]) >= firstSetCmd) {
if (!bn->is_writable() && !root_permission())
com->write_ack(FALSE);
else {
switch ((unsigned char) args[-1]) {
case setTypeCmd:
set_class((BrowserClass *) com->get_id(args));
break;
case setAttributeCmd:
{
BrowserAttribute * at = (BrowserAttribute *) com->get_id(args);
bool find = FALSE;
Q3ValueList<SlotAttr>::Iterator it_attr;
for (it_attr = attributes.begin(); it_attr != attributes.end(); ++it_attr) {
SlotAttr & slot_attr = *it_attr;
if (slot_attr.att == at) {
find = TRUE;
if (*args == 0)
// remove it
attributes.remove(it_attr);
else
// replace it
slot_attr.value = args;
break;
}
}
if (! find) {
// add it
Q3PtrList<BrowserClass> l;
cl->get_all_parents(l);
l.append(cl);
if (at->deletedp() ||
(l.findRef((BrowserClass *) at->parent()) == -1)) {
// illegal
com->write_ack(FALSE);
return TRUE;
}
attributes.append(SlotAttr(at, args));
}
}
break;
case addRelationCmd:
if (! change_rel(com, args, TRUE))
return TRUE;
break;
case removeRelationCmd:
if (! change_rel(com, args, FALSE))
return TRUE;
break;
default:
return BasicData::tool_cmd(com, args, bn, comment);
}
// ok case
bn->modified();
modified();
com->write_ack(TRUE);
}
}
else {
switch ((unsigned char) args[-1]) {
case attributesCmd:
if (args[0] == 0) {
com->write_unsigned(attributes.count());
Q3ValueList<SlotAttr>::Iterator it;
for (it = attributes.begin(); it != attributes.end(); ++it) {
const SlotAttr & slot = *it;
slot.att->write_id(com);
com->write_string(slot.value);
}
}
else {
// get all available attributes
BrowserNodeList l;
BrowserNode * bn;
cl->get_attrs(l);
com->write_unsigned(l.count());
for (bn = l.first(); bn != 0; bn = l.next())
bn->write_id(com);
}
break;
case relationsCmd:
{
BrowserClassInstance * other =
(BrowserClassInstance *) com->get_id(args);
if (other == 0) {
com->write_unsigned(relations.count());
//.........这里部分代码省略.........
示例10: switch
bool BrowserNode::tool_cmd(ToolCom * com, const char * args) {
switch ((unsigned char) args[-1]) {
case applyCmd:
{
QLOG_FATAL() << Q_FUNC_INFO << "If this got called then we have a logic flaw going on and BrowserNode needs to have Q_OBJECT in it to properly catch ToolCom::Run execution result";
Q_ASSERT_X(0, "applyCmd happened", "very bad");
int runResult = ToolCom::run(args, this, FALSE, FALSE);
com->write_unsigned(runResult);
break;
}
case createCmd:
// invalid creation
com->write_id(0);
break;
case parentCmd:
if (this != BrowserView::get_project())
((BrowserNode *) parent())->write_id(com);
else
com->write_id(0);
break;
case childrenCmd:
{
unsigned v = com->api_format();
unsigned n = 0;
Q3ListViewItem * child;
for (child = firstChild(); child != 0; child = child->nextSibling())
if (!((BrowserNode *) child)->deletedp() &&
((BrowserNode *) child)->api_compatible(v))
n += 1;
com->write_unsigned(n);
for (child = firstChild(); child != 0; child = child->nextSibling())
if (!((BrowserNode *) child)->deletedp() &&
((BrowserNode *) child)->api_compatible(v))
((BrowserNode *) child)->write_id(com);
}
break;
case getDefCmd:
case getUmlDefCmd:
case getCppDefCmd:
case getJavaDefCmd:
case getPhpDefCmd:
case getPythonDefCmd:
case getIdlDefCmd:
get_data()->send_uml_def(com, this, comment);
break;
case isWritableCmd:
com->write_bool(!is_read_only);
break;
case supportFileCmd:
// goes up to the package
return ((BrowserNode *) parent())->tool_cmd(com, args);
case isOpenCmd:
com->write_bool(isOpen());
break;
case referencedByCmd:
{
BrowserNodeList targetof;
referenced_by(targetof);
// remove duplicats
targetof.sort_it();
BrowserNode * bn;
targetof.first();
while ((bn = targetof.current()) != 0)
if (bn == targetof.next())
targetof.remove();
com->write_unsigned(targetof.count());
for (bn = targetof.first(); bn != 0; bn = targetof.next())
bn->write_id(com);
}
break;
case setCoupleValueCmd:
if (is_read_only && !root_permission())
com->write_ack(FALSE);
else {
set_value(args, args + strlen(args) + 1);
package_modified();
get_data()->modified();
com->write_ack(TRUE);
}
break;
case setDescriptionCmd:
if (is_read_only && !root_permission())
com->write_ack(FALSE);
else {
set_comment(args);
package_modified();
com->write_ack(TRUE);
}
break;
case setNameCmd:
if (is_read_only && !root_permission())
com->write_ack(FALSE);
//.........这里部分代码省略.........
示例11: d
void RelatedElementsDialog::accept() {
bool inh = (inh_rb != 0) && inh_rb->isChecked();
bool dep = dep_rb->isChecked();
bool assoc = (assoc_rb != 0) && assoc_rb->isChecked();
if (!inh && !dep && !assoc)
return;
bool sametype = sametype_rb->isChecked();
UmlCode k = elt->get_type();
elts.clear();
Q3PtrDict<BrowserNode> d(71);
BrowserNodeList added;
int lvl = sb_level->value();
added.append(elt);
d.insert(elt, elt);
do {
BrowserNodeList newones;
Q3PtrListIterator<BrowserNode> it(added);
for (; it.current() != 0; ++it) {
BrowserNode * e = (BrowserNode *) it.current();
BrowserNode * bn;
if (referenced_rb->isChecked()) {
for (bn = (BrowserNode *) e->firstChild();
bn != 0;
bn = (BrowserNode *) bn->nextSibling()) {
if (! bn->deletedp()) {
BrowserNode * target;
switch (bn->get_type()) {
case UmlAssociation:
case UmlDirectionalAssociation:
case UmlAggregation:
case UmlAggregationByValue:
case UmlDirectionalAggregation:
case UmlDirectionalAggregationByValue:
if (! assoc) continue;
target = ((RelationData *) bn->get_data())->get_end_class();
break;
case UmlDependency:
if (! dep) continue;
target = ((RelationData *) bn->get_data())->get_end_class();
break;
case UmlGeneralisation:
case UmlRealize:
if (! inh) continue;
target = ((RelationData *) bn->get_data())->get_end_class();
break;
case UmlDependOn:
if (! dep) continue;
target = ((SimpleRelationData *) bn->get_data())->get_end_node();
break;
case UmlInherit:
if (! inh) continue;
target = ((SimpleRelationData *) bn->get_data())->get_end_node();
break;
default:
continue;
}
if ((sametype && (target->get_type() != k)) ||
(d[target] != 0))
continue;
d.insert(target, target);
newones.append(target);
}
}
}
if (referencing_rb->isChecked()) {
if (e->get_type() == UmlClass)
BrowserRelation::get_relating(e, d, newones, inh, dep, assoc);
BrowserSimpleRelation::get_relating(e, d, newones, inh, dep, sametype, k);
}
}
added = newones;
} while (--lvl != 0);
d.remove(elt);
Q3PtrDictIterator<BrowserNode> it(d);
while (it.current()) {
elts.append(it.current());
++it;
}
QDialog::accept();
}