Example #1
0
void FilterModel::load(const QVariant& settings)
{
    const QVariantList list = settings.toList();

    for (QVariantList::const_iterator it = list.begin(); 
            it != list.end(); ++it) 
    {
        const QVariantMap map = it->toMap();

        if (!map.contains("instance") || !map.contains("operations"))
            continue;

        // Name to ID conversion
        const QString instance = map["instance"].toString();

        if (instance.isEmpty()) continue;

        Objref_ptr objref = m_instances.find(instance);

        if (!objref) continue;

        FirstLevelItems_t::iterator fit =  m_items.find(objref->id());

        if (fit == m_items.end()) continue;

        // End Name to ID conversion
        
        const QVariantMap operations = map["operations"].toMap();

        for (unsigned int j = 0; 
                j < objref->interface()->operation_count(); j++) 
        {
            OperationDescriptor_ptr op = 
                objref->interface()->get_reflective_by_index(j);
            tag_t tag = op->get_tag();

            OperationsMap_t::iterator opit = 
                fit.value().operations.find(tag);

            if(operations.contains(op->get_name()) && 
                    opit != fit.value().operations.end())
            {
                bool state = operations[op->get_name()].toBool();

                opit.value()->setCheckState((state)?
                        Qt::Checked: Qt::Unchecked);
            }
        }
    }
}
Example #2
0
void ScriptModel::append(corbasim::core::request_ptr req,
        int pos)
{
    LogEntry entry;
    entry.dateTime = QDateTime::currentDateTime();

    OperationDescriptor_ptr op =
        m_instance->get_reflective_by_tag(req->get_tag());

    if (!op) return;

    entry.reflective = op;

    beginInsertRows(QModelIndex(), pos, pos);

    core::holder hold = op->get_holder(req);
    Node_ptr node(new Node(op, hold));
    m_nodes.insert(pos, node);

    // List
    entry.req = req;
    entry.text = QString("Outgoing call ") + op->get_name();
    entry.icon = &m_outputIcon;

    // Background Color
    entry.color = QColor(Qt::yellow);

    m_entries.insert(pos, entry);

    endInsertRows();
}
Example #3
0
void FilterModel::registerInstance(Objref_ptr objref)
{
    m_instances.add(objref);

    FirstLevelItem item;
    item.objref = objref;
    FirstLevelItems_t::iterator it = 
        m_items.insert(objref->id(), item);
    
    OperationsMap_t& operations = it.value().operations;

    QStandardItem * ifItem = new QStandardItem(objref->name());
    ifItem->setEditable(false);
    ifItem->setCheckable(true);
    ifItem->setTristate(true);
    ifItem->setCheckState(Qt::Checked);
    item.item = ifItem;

    const unsigned int count = objref->interface()->operation_count();

    for (unsigned int i = 0; i < count; i++) 
    {
        OperationDescriptor_ptr op =
            objref->interface()->get_reflective_by_index(i);

        QStandardItem * opItem = new QStandardItem(op->get_name());
        opItem->setEditable(false);
        opItem->setCheckable(true);
        opItem->setCheckState(Qt::Checked);

        ifItem->appendRow(opItem);

        operations.insert(op->get_tag(), opItem);
    }

    appendRow(ifItem);
    
    emit filterChanged();
}
Example #4
0
void FilterModel::save(QVariant& settings)
{
    QVariantList list;

    for (FirstLevelItems_t::iterator it = m_items.begin(); 
            it != m_items.end(); ++it) 
    {
        Objref_ptr objref = it.value().objref;

        QVariantMap map;

        map["instance"] = objref->name();

        QVariantMap ops;

        for (unsigned int j = 0; 
                j < objref->interface()->operation_count(); j++) 
        {
            OperationDescriptor_ptr op = 
                objref->interface()->get_reflective_by_index(j);
            tag_t tag = op->get_tag();

            OperationsMap_t::const_iterator opit = 
                it.value().operations.find(tag);

            if (opit != it.value().operations.end())
            {
                ops[op->get_name()] = 
                    (opit.value()->checkState() == Qt::Checked);
            }
        }

        map["operations"] = ops;

        list << map;
    }

    settings = list;
}
corbasim::gui::RequestDialog * SimpleClient::getRequestDialog(int idx)
{
    RequestDialog * dlg = m_dialogs[idx];

    if (!dlg)
    {
        OperationDescriptor_ptr op =
            m_objref->interface()->get_reflective_by_index(idx);
        const char * name = op->get_name();

        dlg = new RequestDialog(op, this);
        dlg->setWindowTitle(name);

        connect(dlg,
            SIGNAL(sendRequest(Request_ptr)),
            this,
            SIGNAL(sendRequest(Request_ptr)));

        m_dialogs[idx] = dlg;
    }

    return dlg;
}
void SimpleClient::initialize(Objref_ptr objref)
{
    m_objref = objref;

    // Signals
    connect(this, SIGNAL(sendRequest(Request_ptr)),
            m_objref.get(), SLOT(sendRequest(Request_ptr)));

    m_log_model.registerInstance(m_objref);

    connect(m_objref.get(),
            SIGNAL(requestSent(ObjectId, const Request_ptr&, const Event_ptr&)),
            &m_log_model,
            SLOT(outputRequest(ObjectId, Request_ptr, Event_ptr)));

    m_filteredLog->registerInstance(m_objref);

    if (m_seqTool)
        m_seqTool->registerInstance(m_objref);

    QGridLayout * grid = NULL;
    InterfaceDescriptor_ptr factory = m_objref->interface();
    const unsigned int count = factory->operation_count();

    // Inicializa los dialogos a nulo
    m_dialogs.resize(count, NULL);

    for (unsigned int i = 0; i < count; i++)
    {
        const unsigned int idx = i % _max_btns_per_page;

        OperationDescriptor_ptr op =
            factory->get_reflective_by_index(i);

        const char * name = op->get_name();

        if (!idx)
        {
            QWidget * w = new QWidget;
            grid = new QGridLayout;
            w->setLayout(grid);

            // TODO Page + number or from... to...
            QString page("From ");
            page += name;
            m_tab->addTab(w, page);
        }

        // Button
        QPushButton * btn = new QPushButton(name);
        grid->addWidget(btn, idx / _max_btns_per_row,
            idx % _max_btns_per_row);

        m_buttons.addButton(btn, i);

        // Menu Operations
        QAction * act = m_operations_menu->addAction(name);
        m_actions.addAction(act);
        act->setData(i);
    }

    // Validator for reference updates
    m_ref->setObjref(m_objref);
}