Ejemplo n.º 1
0
void PerformanceRecordTreeWidget::updateTree() {
    // clear top level items
    topItems_.clear();
    if(clearTreeOnUpdate_){
        items_.clear();
        clear();
    }

    // create/update tree item
    QString numStr;
    QTreeWidgetItem* recordItem;
    std::map<std::string, QTreeWidgetItem*>::iterator sampleMapIterator;
    PerformanceSample* theSample;
    std::string nameStr = "";
    std::string subStr = "";
    float num = 0.f;
    for (size_t i = 0; i < performanceSamples_.size(); ++i) {
        nameStr = performanceSamples_[i].getName();
        if(showType_ == PerformanceRecordTreeWidget::TimeTypeTotalProcess){
            theSample = &performanceSamples_[i];
            num = theSample->getChildrenTime();
        }
        else{
            if(showType_ == PerformanceRecordTreeWidget::TimeTypeBeforeProcess)
                subStr = "beforeprocess";
            else if(showType_ == PerformanceRecordTreeWidget::TimeTypeProcess)
                subStr = "process";
            else
                subStr = "afterprocess";

            theSample = performanceSamples_[i].getChild(subStr);
            num = theSample->getTime();
            nameStr += "." + subStr;
        }

        numStr.sprintf("%4.4f", num*1000.f);

        sampleMapIterator = items_.lower_bound(nameStr);
        if(sampleMapIterator != items_.end() && !(items_.key_comp()(nameStr, sampleMapIterator->first))){ //exists
            recordItem = sampleMapIterator->second;
            recordItem->setText(1, numStr);
            createSampleHierarchy(theSample, recordItem);
        }
        else{ //doesn't exist
            recordItem = new QTreeWidgetItem(QStringList() << QString::fromStdString(nameStr) << numStr);
            items_.insert(std::pair<std::string, QTreeWidgetItem*>(nameStr, recordItem));
            createSampleHierarchy(theSample, recordItem);
        }
        topItems_.append(recordItem);
    }

    addTopLevelItems(topItems_);
}
Ejemplo n.º 2
0
void CallView::refresh()
{
    clear();
    setColumnWidth(1, _eventType2 ? 50:0);

    if (_eventType)
        _headerLabels[0] = _eventType->name();
    if (_eventType2)
        _headerLabels[1] = _eventType2->name();
    setHeaderLabels(_headerLabels);

    if (!_data || !_activeItem) return;

    TraceFunction* f = activeFunction();
    if (!f) return;

    TraceCall* call;
    // In the call lists, we skip cycles to show the real call relations
    TraceCallList l = _showCallers ? f->callers(true) : f->callings(true);

    QList<QTreeWidgetItem*> items;
    for (call=l.first();call;call=l.next())
	if (call->subCost(_eventType)>0)
            items.append(new CallItem(this, 0, call));

    // when inserting, switch off sorting for performance reason
    setSortingEnabled(false);
    addTopLevelItems(items);
    setSortingEnabled(true);
    // enabling sorting switches on the indicator, but we want it off
    header()->setSortIndicatorShown(false);
    // resize to content now (section size still can be interactively changed)
    header()->resizeSections(QHeaderView::ResizeToContents);

    if (!_eventType2)
        setColumnWidth(1, 0);
}
Ejemplo n.º 3
0
void InterfaceTree::display()
{
#ifdef HAVE_LIBPCAP
    interface_t device;
#if HAVE_EXTCAP
    QIcon extcap_icon(StockIcon("x-capture-options"));
#endif

    setDisabled(false);
    clear();

    if (global_capture_opts.all_ifaces->len == 0) {
        // Error,or just no interfaces?
        QTreeWidgetItem *ti = new QTreeWidgetItem();
        QLabel *err_label;

        if (global_capture_opts.ifaces_err == 0) {
            err_label = new QLabel("No interfaces found");
        } else {
            err_label = new QLabel(global_capture_opts.ifaces_err_info);
        }
        err_label->setWordWrap(true);

        setColumnCount(1);
        addTopLevelItem(ti);
        setItemWidget(ti, 0, err_label);
        resizeColumnToContents(0);
        return;
    }

    /* when no interfaces were available initially and an update of the
       interface list called this function, the column count is set to 1
       reset it to ensure that the interface list is properly displayed */
    resetColumnCount();

    // List physical interfaces first. Alternatively we could sort them by
    // traffic, interface name, or most recently used.
    QList<QTreeWidgetItem *> phys_ifaces;
    QList<QTreeWidgetItem *> virt_ifaces;

    for (guint i = 0; i < global_capture_opts.all_ifaces->len; i++) {
        device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);

        /* Continue if capture device is hidden */
        if (device.hidden) {
            continue;
        }

        InterfaceTreeWidgetItem *ti = new InterfaceTreeWidgetItem();
        ti->setText(IFTREE_COL_NAME, QString().fromUtf8(device.display_name));
        ti->setData(IFTREE_COL_NAME, Qt::UserRole, QString(device.name));
        ti->setData(IFTREE_COL_STATS, Qt::UserRole, qVariantFromValue(&ti->points));
#if HAVE_EXTCAP
        if (device.if_info.type == IF_EXTCAP) {
            if (extcap_has_configuration((const char *)(device.name), FALSE)) {
                ti->setIcon(IFTREE_COL_EXTCAP, extcap_icon);
                ti->setData(IFTREE_COL_EXTCAP, Qt::UserRole, QString(device.if_info.extcap));

                if (!(device.external_cap_args_settings != 0 &&
                      g_hash_table_size(device.external_cap_args_settings) > 0))
                {
                    QFont ti_font = ti->font(IFTREE_COL_NAME);
                    ti_font.setItalic(true);
                    ti->setFont(IFTREE_COL_NAME, ti_font);
                }
            }
            virt_ifaces << ti;
        } else
#endif
        {
            phys_ifaces << ti;
        }

        // XXX Need to handle interfaces passed from the command line.
        if (strstr(prefs.capture_device, device.name) != NULL) {
            device.selected = TRUE;
            global_capture_opts.num_selected++;
            global_capture_opts.all_ifaces = g_array_remove_index(global_capture_opts.all_ifaces, i);
            g_array_insert_val(global_capture_opts.all_ifaces, i, device);
        }
    }

    if (!phys_ifaces.isEmpty()) addTopLevelItems(phys_ifaces);
    if (!virt_ifaces.isEmpty()) addTopLevelItems(virt_ifaces);
    setSelectedInterfaces();

    // XXX Add other device information
    resizeColumnToContents(IFTREE_COL_NAME);
    resizeColumnToContents(IFTREE_COL_STATS);

#if HAVE_EXTCAP
    resizeColumnToContents(IFTREE_COL_EXTCAP);
#endif

#else
    QTreeWidgetItem *ti = new QTreeWidgetItem();

    clear();
    setColumnCount(1);
    ti->setText(0, tr("Interface information not available"));
    addTopLevelItem(ti);
    resizeColumnToContents(0);
#endif // HAVE_LIBPCAP
}