// for code lines InstrItem::InstrItem(InstrView* iv, QTreeWidget* parent, Addr addr, bool inside, const QString& code, const QString& cmd, const QString& args, TraceInstr* instr) : QTreeWidgetItem(parent) { _view = iv; _addr = addr; _instr = instr; _instrCall = 0; _instrJump = 0; _inside = inside; setTextAlignment(0, Qt::AlignRight); setTextAlignment(1, Qt::AlignRight); setTextAlignment(2, Qt::AlignRight); if (args == "...") setText(0, args); else setText(0, addr.pretty()); setText(4, code); setText(5, cmd); setText(6, args); TraceLine* l; if (instr && (l = instr->line())) setText(7, l->name()); updateGroup(); updateCost(); }
void SourceView::context(QListViewItem* i, const QPoint & p, int c) { QPopupMenu popup; // Menu entry: TraceLineCall* lc = i ? ((SourceItem*) i)->lineCall() : 0; TraceLineJump* lj = i ? ((SourceItem*) i)->lineJump() : 0; TraceFunction* f = lc ? lc->call()->called() : 0; TraceLine* line = lj ? lj->lineTo() : 0; if (f) { QString name = f->name(); if ((int)name.length()>Configuration::maxSymbolLength()) name = name.left(Configuration::maxSymbolLength()) + "..."; popup.insertItem(i18n("Go to '%1'").arg(name), 93); popup.insertSeparator(); } else if (line) { popup.insertItem(i18n("Go to Line %1").arg(line->name()), 93); popup.insertSeparator(); } if ((c == 1) || (c == 2)) { addCostMenu(&popup); popup.insertSeparator(); } addGoMenu(&popup); int r = popup.exec(p); if (r == 93) { if (f) activated(f); if (line) activated(line); } }