void DebuggerItemConfigWidget::apply() { DebuggerItem current = m_model->currentDebugger(); if (!current.isValid()) return; // Nothing was selected here. store(); setItem(item()); }
void DebuggerItemModel::updateDebugger(const DebuggerItem &item) { auto matcher = [item](DebuggerTreeItem *n) { return n->m_item.m_id == item.id(); }; DebuggerTreeItem *treeItem = findItemAtLevel<DebuggerTreeItem *>(2, matcher); QTC_ASSERT(treeItem, return); TreeItem *parent = treeItem->parent(); QTC_ASSERT(parent, return); const DebuggerItem *orig = DebuggerItemManager::findById(item.id()); treeItem->m_changed = !orig || *orig != item; treeItem->m_item = item; treeItem->update(); // Notify views. }
bool DebuggerItemModel::addDebuggerStandardItem(const DebuggerItem &item, bool changed) { if (findStandardItemById(item.id())) return false; QList<QStandardItem *> row = describeItem(item); foreach (QStandardItem *cell, row) { QFont font = cell->font(); font.setBold(changed); cell->setFont(font); }
void DebuggerItemConfigWidget::handleCommandChange() { // Use DebuggerItemManager as a cache: const DebuggerItem *existing = DebuggerItemManager::findByCommand(m_binaryChooser->fileName()); if (existing) { setAbis(existing->abiNames()); m_engineType = existing->engineType(); } else { QFileInfo fi = QFileInfo(m_binaryChooser->path()); if (fi.isExecutable()) { DebuggerItem tmp = item(); tmp.reinitializeFromFile(); setAbis(tmp.abiNames()); m_engineType = tmp.engineType(); } else { setAbis(QStringList()); m_engineType = NoEngineType; } } m_model->updateDebugger(item()); }
foreach (const FileName &cdb, cdbs) { if (findByCommand(cdb)) continue; DebuggerItem item; item.setAutoDetected(true); item.setAbis(Abi::abisOfBinary(cdb)); item.setCommand(cdb); item.setEngineType(CdbEngineType); item.setDisplayName(uniqueDisplayName(tr("Auto-detected CDB at %1").arg(cdb.toUserOutput()))); addDebugger(item); }
void DebuggerOptionsPage::addDebugger() { DebuggerItem item; item.createId(); item.setAutoDetected(false); item.setEngineType(NoEngineType); item.setDisplayName(DebuggerItemManager::uniqueDisplayName(tr("New Debugger"))); item.setAutoDetected(false); m_model->addDebugger(item); m_debuggerView->setCurrentIndex(m_model->lastIndex()); }
QVariant BlackBerryConfiguration::createDebuggerItem( QList<ProjectExplorer::Abi> abis, Qnx::QnxArchitecture arch, const QString &versionName) { Utils::FileName command = arch == X86 ? m_simulatorDebugger : m_deviceDebugger; DebuggerItem debugger; debugger.setCommand(command); debugger.setEngineType(GdbEngineType); debugger.setAutoDetected(true); debugger.setAbis(abis); debugger.setDisplayName(tr("Debugger for %1").arg(versionName)); return DebuggerItemManager::registerDebugger(debugger); }
void DebuggerItemConfigWidget::setItem(const DebuggerItem &item) { store(); // store away the (changed) settings for future use m_id = QVariant(); // reset Id to avoid intermediate signal handling // Set values: m_autodetected = item.isAutoDetected(); m_displayNameLineEdit->setEnabled(!item.isAutoDetected()); m_displayNameLineEdit->setText(item.displayName()); m_binaryChooser->setReadOnly(item.isAutoDetected()); m_binaryChooser->setFileName(item.command()); QString text; QString versionCommand; if (item.engineType() == CdbEngineType) { const bool is64bit = is64BitWindowsSystem(); const QString versionString = is64bit ? tr("64-bit version") : tr("32-bit version"); //: Label text for path configuration. %2 is "x-bit version". text = tr("<html><body><p>Specify the path to the " "<a href=\"%1\">Windows Console Debugger executable</a>" " (%2) here.</p>""</body></html>"). arg(QLatin1String(debuggingToolsWikiLinkC), versionString); versionCommand = QLatin1String("-version"); } else { versionCommand = QLatin1String("--version"); } m_cdbLabel->setText(text); m_cdbLabel->setVisible(!text.isEmpty()); m_binaryChooser->setCommandVersionArguments(QStringList(versionCommand)); setAbis(item.abiNames()); m_engineType = item.engineType(); m_id = item.id(); }
Kit* MerTarget::createKit() const { if (!isValid()) return 0; const QString sysroot(m_sdk->sharedTargetsPath() + QLatin1Char('/') + m_name); FileName path = FileName::fromString(sysroot); if (!path.toFileInfo().exists()) { qWarning() << "Sysroot does not exist" << sysroot; return 0; } Kit *k = new Kit(); k->setAutoDetected(true); k->setUnexpandedDisplayName(QString::fromLatin1("%1-%2").arg(m_sdk->virtualMachineName(), m_name)); k->setIconPath(FileName::fromString(QLatin1String(Constants::MER_OPTIONS_CATEGORY_ICON))); SysRootKitInformation::setSysRoot(k, FileName::fromUserInput(sysroot)); DeviceTypeKitInformation::setDeviceTypeId(k, Constants::MER_DEVICE_TYPE); k->setMutable(DeviceKitInformation::id(), true); const QString gdb = HostOsInfo::withExecutableSuffix(m_defaultGdb); QString gdbDir = QCoreApplication::applicationDirPath(); if (HostOsInfo::isMacHost()) { QDir dir = QDir(gdbDir); dir.cdUp(); dir.cdUp(); dir.cdUp(); gdbDir = dir.path(); } FileName gdbFileName = FileName::fromString(gdbDir + QLatin1Char('/') + gdb); DebuggerItem debugger; debugger.setCommand(gdbFileName); debugger.setEngineType(GdbEngineType); const QString vmName = m_sdk->virtualMachineName(); debugger.setUnexpandedDisplayName(QObject::tr("GDB for %1 %2").arg(vmName, m_name)); debugger.setAutoDetected(true); debugger.setAbi(Abi::abiFromTargetTriplet(m_gccMachineDump)); // TODO is this OK? QVariant id = DebuggerItemManager::registerDebugger(debugger); DebuggerKitInformation::setDebugger(k, id); MerSdkKitInformation::setSdk(k,m_sdk); MerTargetKitInformation::setTargetName(k,name()); return k; }
bool DebuggerItemModel::updateDebuggerStandardItem(const DebuggerItem &item, bool changed) { QStandardItem *sitem = findStandardItemById(item.id()); QTC_ASSERT(sitem, return false); QStandardItem *parent = sitem->parent(); QTC_ASSERT(parent, return false); int row = sitem->row(); QFont font = sitem->font(); font.setBold(changed); parent->child(row, 0)->setData(item.displayName(), Qt::DisplayRole); parent->child(row, 0)->setData(item.abiNames(), Qt::UserRole + 2); parent->child(row, 0)->setFont(font); parent->child(row, 1)->setData(item.command().toUserOutput(), Qt::DisplayRole); parent->child(row, 1)->setFont(font); parent->child(row, 2)->setData(item.engineTypeName(), Qt::DisplayRole); parent->child(row, 2)->setData(static_cast<int>(item.engineType())); parent->child(row, 2)->setFont(font); return true; }
DebuggerItem DebuggerItemModel::debuggerItem(QStandardItem *sitem) const { DebuggerItem item = DebuggerItem(QVariant()); if (sitem && sitem->parent()) { item.setAutoDetected(sitem->parent() == m_autoRoot); QStandardItem *i = sitem->parent()->child(sitem->row(), 0); item.m_id = i->data(); item.setDisplayName(i->data(Qt::DisplayRole).toString()); QStringList abis = i->data(Qt::UserRole + 2).toStringList(); QList<ProjectExplorer::Abi> abiList; foreach (const QString &abi, abis) abiList << ProjectExplorer::Abi(abi); item.setAbis(abiList); i = sitem->parent()->child(sitem->row(), 1); item.setCommand(Utils::FileName::fromUserInput(i->data(Qt::DisplayRole).toString())); i = sitem->parent()->child(sitem->row(), 2); item.setEngineType(static_cast<DebuggerEngineType>(i->data().toInt())); }
void DebuggerOptionsPage::cloneDebugger() { DebuggerItem item = m_model->currentDebugger(); if (!item.isValid()) return; DebuggerItem newItem; newItem.createId(); newItem.setAutoDetected(false); newItem.setCommand(item.command()); newItem.setEngineType(item.engineType()); newItem.setAbis(item.abis()); newItem.setDisplayName(DebuggerItemManager::uniqueDisplayName(tr("Clone of %1").arg(item.displayName()))); newItem.setAutoDetected(false); m_model->addDebugger(newItem); m_debuggerView->setCurrentIndex(m_model->lastIndex()); }
m_container = 0; m_debuggerView = 0; m_addButton = 0; m_cloneButton = 0; m_delButton = 0; } void DebuggerOptionsPage::debuggerSelectionChanged() { QTC_ASSERT(m_container, return); QModelIndex mi = m_debuggerView->currentIndex(); mi = mi.sibling(mi.row(), 0); m_model->setCurrentIndex(mi); DebuggerItem item = m_model->currentDebugger(); m_itemConfigWidget->setItem(item); m_container->setVisible(item.isValid()); updateState(); } void DebuggerOptionsPage::debuggerModelChanged() { QTC_ASSERT(m_container, return); QVariant id = m_model->currentDebuggerId(); const DebuggerItem *item = DebuggerItemManager::findById(id); if (!item) return;