void PathChooserDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(editor); if (!pathChooser) return; model->setData(index, pathChooser->path(), Qt::EditRole); }
void Qt4TargetSetupWidget::addBuildConfigurationInfo(const BuildConfigurationInfo &info, bool importing) { if (importing) { if (!m_haveImported) { // disable everything on first import for (int i = 0; i < m_enabled.count(); ++i) { m_enabled[i] = false; m_checkboxes[i]->setChecked(false); } m_selected = 0; } m_haveImported = true; } int pos = m_pathChoosers.count(); m_enabled.append(true); ++m_selected; m_infoList.append(info); QCheckBox *checkbox = new QCheckBox; checkbox->setText(Qt4BuildConfigurationFactory::buildConfigurationDisplayName(info)); checkbox->setChecked(m_enabled.at(pos)); checkbox->setAttribute(Qt::WA_LayoutUsesWidgetRect); m_newBuildsLayout->addWidget(checkbox, pos * 2, 0); Utils::PathChooser *pathChooser = new Utils::PathChooser(); pathChooser->setExpectedKind(Utils::PathChooser::Directory); pathChooser->setPath(info.directory); QtSupport::BaseQtVersion *version = QtSupport::QtProfileInformation::qtVersion(m_profile); if (!version) return; pathChooser->setReadOnly(!version->supportsShadowBuilds() || importing); m_newBuildsLayout->addWidget(pathChooser, pos * 2, 1); QLabel *reportIssuesLabel = new QLabel; reportIssuesLabel->setIndent(32); m_newBuildsLayout->addWidget(reportIssuesLabel, pos * 2 + 1, 0, 1, 2); reportIssuesLabel->setVisible(false); connect(checkbox, SIGNAL(toggled(bool)), this, SLOT(checkBoxToggled(bool))); connect(pathChooser, SIGNAL(changed(QString)), this, SLOT(pathChanged())); m_checkboxes.append(checkbox); m_pathChoosers.append(pathChooser); m_reportIssuesLabels.append(reportIssuesLabel); m_issues.append(false); reportIssues(pos); emit selectedToggled(); }
void PathChooserDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { QString value = index.model()->data(index, Qt::EditRole).toString(); Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(editor); if (!pathChooser) return; pathChooser->setExpectedKind(m_kind); pathChooser->setPromptDialogFilter(m_filter); pathChooser->setPath(value); }
void TargetSetupWidget::pathChanged() { if (m_ignoreChange) return; Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(sender()); if (!pathChooser) return; int index = m_pathChoosers.indexOf(pathChooser); if (index == -1) return; m_infoList[index]->buildDirectory = pathChooser->fileName(); reportIssues(index); }
QWidget *CustomWizardFieldPage::registerPathChooser(const QString &fieldName, const CustomWizardField &field) { Utils::PathChooser *pathChooser = new Utils::PathChooser; const QString expectedKind = field.controlAttributes.value(QLatin1String("expectedkind")).toLower(); if (expectedKind == QLatin1String("existingdirectory")) pathChooser->setExpectedKind(Utils::PathChooser::ExistingDirectory); else if (expectedKind == QLatin1String("directory")) pathChooser->setExpectedKind(Utils::PathChooser::Directory); else if (expectedKind == QLatin1String("file")) pathChooser->setExpectedKind(Utils::PathChooser::File); else if (expectedKind == QLatin1String("existingcommand")) pathChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); else if (expectedKind == QLatin1String("command")) pathChooser->setExpectedKind(Utils::PathChooser::Command); else if (expectedKind == QLatin1String("any")) pathChooser->setExpectedKind(Utils::PathChooser::Any); pathChooser->setHistoryCompleter(QString::fromLatin1("PE.Custom.") + m_parameters->id + QLatin1Char('.') + field.name); registerField(fieldName, pathChooser, "path", SIGNAL(changed(QString))); // Connect to completeChanged() for derived classes that reimplement isComplete() connect(pathChooser, SIGNAL(changed(QString)), SIGNAL(completeChanged())); const QString defaultText = field.controlAttributes.value(QLatin1String("defaulttext")); m_pathChoosers.push_back(PathChooserData(pathChooser, defaultText)); return pathChooser; } // Utils::PathChooser
QWidget *PathChooserDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(option); Q_UNUSED(index); Utils::PathChooser *editor = new Utils::PathChooser(parent); editor->setAutoFillBackground(true); // To hide the text beneath the editor widget editor->lineEdit()->setMinimumWidth(0); connect(editor, SIGNAL(browsingFinished()), this, SLOT(emitCommitData())); return editor; }
void GettingStartedWelcomePageWidget::slotOpenExample() { QAction *action = qobject_cast<QAction*>(sender()); if (!action) return; QString helpFile = action->property(HelpPathPropertyName).toString(); QString proFile = action->property(ExamplePathPropertyName).toString(); QString qmlMainFileName; bool isQmlProject = false; if (action->dynamicPropertyNames().contains(QmlMainFileName)) { qmlMainFileName = action->property(QmlMainFileName).toString(); isQmlProject = true; } QStringList files; QFileInfo proFileInfo(proFile); // If the Qt is a distro Qt on Linux, it will not be writable, hence compilation will fail if (!proFileInfo.isWritable()) { QDialog d; QGridLayout *lay = new QGridLayout(&d); QLabel *descrLbl = new QLabel; d.setWindowTitle(tr("Copy Project to writable Location?")); descrLbl->setTextFormat(Qt::RichText); descrLbl->setWordWrap(true); descrLbl->setText(tr("<p>The project you are about to open is located in the " "write-protected location:</p><blockquote>%1</blockquote>" "<p>Please select a writable location below and click \"Copy Project and Open\" " "to open a modifiable copy of the project or click \"Keep Project and Open\" " "to open the project in location.</p><p><b>Note:</b> You will not " "be able to alter or compile your project in the current location.</p>") .arg(QDir::toNativeSeparators(proFileInfo.dir().absolutePath()))); lay->addWidget(descrLbl, 0, 0, 1, 2); QLabel *txt = new QLabel(tr("&Location:")); Utils::PathChooser *chooser = new Utils::PathChooser; txt->setBuddy(chooser); chooser->setExpectedKind(Utils::PathChooser::ExistingDirectory); QSettings *settings = Core::ICore::instance()->settings(); chooser->setPath(settings->value( QString::fromLatin1("General/ProjectsFallbackRoot"), QDir::homePath()).toString()); lay->addWidget(txt, 1, 0); lay->addWidget(chooser, 1, 1); QDialogButtonBox *bb = new QDialogButtonBox; connect(bb, SIGNAL(accepted()), &d, SLOT(accept())); connect(bb, SIGNAL(rejected()), &d, SLOT(reject())); QPushButton *copyBtn = bb->addButton(tr("&Copy Project and Open"), QDialogButtonBox::AcceptRole); copyBtn->setDefault(true); bb->addButton(tr("&Keep Project and Open"), QDialogButtonBox::RejectRole); lay->addWidget(bb, 2, 0, 1, 2); connect(chooser, SIGNAL(validChanged(bool)), copyBtn, SLOT(setEnabled(bool))); if (d.exec() == QDialog::Accepted) { QString exampleDirName = proFileInfo.dir().dirName(); QString toDir = chooser->path(); settings->setValue(QString::fromLatin1("General/ProjectsFallbackRoot"), toDir); QDir toDirWithExamplesDir(toDir); if (toDirWithExamplesDir.cd(exampleDirName)) { toDirWithExamplesDir.cdUp(); // step out, just to not be in the way QMessageBox::warning(topLevelWidget(), tr("Warning"), tr("The specified location already exists. " "Please specify a valid location."), QMessageBox::Ok, QMessageBox::NoButton); return; } else { QDir from = proFileInfo.dir(); from.cdUp(); copyRecursive(from, toDir, exampleDirName); // set vars to new location proFileInfo = QFileInfo(toDir + '/'+ exampleDirName + '/' + proFileInfo.fileName()); proFile = proFileInfo.absoluteFilePath(); } } } QString tryFile; files << proFile; if (isQmlProject) { tryFile = proFileInfo.path() + '/' + "/main.qml"; if(!QFile::exists(tryFile)) tryFile = proFileInfo.path() + "/qml/" + qmlMainFileName + ".qml"; // legacy qmlproject case if(!QFile::exists(tryFile)) tryFile = proFileInfo.path() + '/' + qmlMainFileName + ".qml"; if(QFile::exists(tryFile)) files << tryFile; } else { tryFile = proFileInfo.path() + "/main.cpp"; if(!QFile::exists(tryFile)) tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".cpp"; } Core::ICore::instance()->openFiles(files, static_cast<Core::ICore::OpenFilesFlags>(Core::ICore::SwitchMode | Core::ICore::StopOnLoadFail)); if (!tryFile.isEmpty() && Core::EditorManager::instance()->hasEditor(tryFile) && !helpFile.isEmpty()) slotOpenContextHelpPage(helpFile); }