diff --git a/plugins/filetemplates/classidentifierpage.h b/plugins/filetemplates/classidentifierpage.h --- a/plugins/filetemplates/classidentifierpage.h +++ b/plugins/filetemplates/classidentifierpage.h @@ -54,6 +54,11 @@ */ void setInheritanceList(const QStringList& list); + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + Q_SIGNALS: void inheritanceChanged(); /** diff --git a/plugins/filetemplates/classidentifierpage.cpp b/plugins/filetemplates/classidentifierpage.cpp --- a/plugins/filetemplates/classidentifierpage.cpp +++ b/plugins/filetemplates/classidentifierpage.cpp @@ -74,3 +74,8 @@ { d->classid->keditlistwidget->setItems(list); } + +void ClassIdentifierPage::setFocusToFirstEditWidget() +{ + d->classid->identifierLineEdit->setFocus(); +} diff --git a/plugins/filetemplates/classmemberspage.h b/plugins/filetemplates/classmemberspage.h --- a/plugins/filetemplates/classmemberspage.h +++ b/plugins/filetemplates/classmemberspage.h @@ -46,6 +46,11 @@ */ void setMembers(const KDevelop::VariableDescriptionList& members); + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + private: class ClassMembersPagePrivate* const d; }; diff --git a/plugins/filetemplates/classmemberspage.cpp b/plugins/filetemplates/classmemberspage.cpp --- a/plugins/filetemplates/classmemberspage.cpp +++ b/plugins/filetemplates/classmemberspage.cpp @@ -107,3 +107,8 @@ } return list; } + +void ClassMembersPage::setFocusToFirstEditWidget() +{ + d->editListWidget->lineEdit()->setFocus(); +} diff --git a/plugins/filetemplates/licensepage.h b/plugins/filetemplates/licensepage.h --- a/plugins/filetemplates/licensepage.h +++ b/plugins/filetemplates/licensepage.h @@ -44,6 +44,11 @@ */ QString license() const; + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + private: // data struct LicensePagePrivate* const d; diff --git a/plugins/filetemplates/licensepage.cpp b/plugins/filetemplates/licensepage.cpp --- a/plugins/filetemplates/licensepage.cpp +++ b/plugins/filetemplates/licensepage.cpp @@ -270,6 +270,11 @@ return licenseText; } +void LicensePage::setFocusToFirstEditWidget() +{ + d->license->licenseComboBox->setFocus(); +} + } Q_DECLARE_TYPEINFO(KDevelop::LicensePagePrivate::LicenseInfo, Q_MOVABLE_TYPE); diff --git a/plugins/filetemplates/outputpage.h b/plugins/filetemplates/outputpage.h --- a/plugins/filetemplates/outputpage.h +++ b/plugins/filetemplates/outputpage.h @@ -69,6 +69,11 @@ */ QHash filePositions() const; + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + Q_SIGNALS: /** * @copydoc ClassIdentifierPage::isValid diff --git a/plugins/filetemplates/outputpage.cpp b/plugins/filetemplates/outputpage.cpp --- a/plugins/filetemplates/outputpage.cpp +++ b/plugins/filetemplates/outputpage.cpp @@ -265,6 +265,11 @@ return positions; } +void OutputPage::setFocusToFirstEditWidget() +{ + d->output->lowerFilenameCheckBox->setFocus(); +} + } #include "moc_outputpage.cpp" diff --git a/plugins/filetemplates/overridespage.h b/plugins/filetemplates/overridespage.h --- a/plugins/filetemplates/overridespage.h +++ b/plugins/filetemplates/overridespage.h @@ -79,6 +79,11 @@ QWidget* extraFunctionsContainer() const; + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + public Q_SLOTS: /** * Selects all functions for overriding diff --git a/plugins/filetemplates/overridespage.cpp b/plugins/filetemplates/overridespage.cpp --- a/plugins/filetemplates/overridespage.cpp +++ b/plugins/filetemplates/overridespage.cpp @@ -264,3 +264,8 @@ overrideTree()->expandAll(); overrideTree()->header()->resizeSections(QHeaderView::ResizeToContents); } + +void OverridesPage::setFocusToFirstEditWidget() +{ + d->overrides->overridesTree->setFocus(); +} diff --git a/plugins/filetemplates/templateclassassistant.cpp b/plugins/filetemplates/templateclassassistant.cpp --- a/plugins/filetemplates/templateclassassistant.cpp +++ b/plugins/filetemplates/templateclassassistant.cpp @@ -484,26 +484,39 @@ if (currentPage() == d->classIdentifierPage) { d->classIdentifierPageWidget->setInheritanceList(d->fileTemplate.defaultBaseClasses()); + d->classIdentifierPageWidget->setFocusToFirstEditWidget(); + } + else if (currentPage() == d->testCasesPage) + { + d->testCasesPageWidget->setFocusToFirstEditWidget(); } else if (currentPage() == d->membersPage) { d->membersPageWidget->setMembers(d->generator->description().members); + d->membersPageWidget->setFocusToFirstEditWidget(); } else if (currentPage() == d->overridesPage) { d->overridesPageWidget->clear(); d->overridesPageWidget->addCustomDeclarations(i18n("Default"), d->helper->defaultMethods(d->generator->name())); d->overridesPageWidget->addBaseClasses(d->generator->directBaseClasses(), d->generator->allBaseClasses()); + d->overridesPageWidget->setFocusToFirstEditWidget(); + } + else if (currentPage() == d->licensePage) + { + d->licensePageWidget->setFocusToFirstEditWidget(); } else if (d->templateOptionsPage && (currentPage() == d->templateOptionsPage)) { d->templateOptionsPageWidget->load(d->fileTemplate, d->renderer); + d->templateOptionsPageWidget->setFocusToFirstEditWidget(); } else if (currentPage() == d->outputPage) { d->outputPageWidget->loadFileTemplate(d->fileTemplate, d->baseUrl, d->renderer); + d->outputPageWidget->setFocusToFirstEditWidget(); } } diff --git a/plugins/filetemplates/templateoptionspage.h b/plugins/filetemplates/templateoptionspage.h --- a/plugins/filetemplates/templateoptionspage.h +++ b/plugins/filetemplates/templateoptionspage.h @@ -75,6 +75,11 @@ **/ QVariantHash templateOptions() const; + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + private: class TemplateOptionsPagePrivate* const d; }; diff --git a/plugins/filetemplates/templateoptionspage.cpp b/plugins/filetemplates/templateoptionspage.cpp --- a/plugins/filetemplates/templateoptionspage.cpp +++ b/plugins/filetemplates/templateoptionspage.cpp @@ -43,12 +43,15 @@ QList entries; QHash controls; QHash typeProperties; + QWidget *firstEditWidget; }; TemplateOptionsPage::TemplateOptionsPage(QWidget* parent, Qt::WindowFlags f) : QWidget(parent, f) , d(new TemplateOptionsPagePrivate) { + d->firstEditWidget = 0; + d->typeProperties.insert(QStringLiteral("String"), "text"); d->typeProperties.insert(QStringLiteral("Int"), "value"); d->typeProperties.insert(QStringLiteral("Bool"), "checked"); @@ -62,6 +65,8 @@ void TemplateOptionsPage::load(const SourceFileTemplate& fileTemplate, TemplateRenderer* renderer) { d->entries.clear(); + d->controls.clear(); + d->firstEditWidget = 0; QLayout* layout = new QVBoxLayout(); QHash > options = fileTemplate.customOptions(renderer); @@ -114,6 +119,9 @@ QLabel* label = new QLabel(entryLabelText, box); formLayout->addRow(label, control); d->controls.insert(entry.name, control); + if (d->firstEditWidget == 0) { + d->firstEditWidget = control; + } } } @@ -139,3 +147,10 @@ return values; } + +void TemplateOptionsPage::setFocusToFirstEditWidget() +{ + if (d->firstEditWidget) { + d->firstEditWidget->setFocus(); + } +} diff --git a/plugins/filetemplates/testcasespage.h b/plugins/filetemplates/testcasespage.h --- a/plugins/filetemplates/testcasespage.h +++ b/plugins/filetemplates/testcasespage.h @@ -57,6 +57,11 @@ */ void setTestCases(const QStringList& testCases); + /** + * Set the keyboard input focus to the first edit widget. + */ + void setFocusToFirstEditWidget(); + Q_SIGNALS: void isValid(bool valid); diff --git a/plugins/filetemplates/testcasespage.cpp b/plugins/filetemplates/testcasespage.cpp --- a/plugins/filetemplates/testcasespage.cpp +++ b/plugins/filetemplates/testcasespage.cpp @@ -69,6 +69,11 @@ return d->ui->keditlistwidget->items(); } +void TestCasesPage::setFocusToFirstEditWidget() +{ + d->ui->identifierLineEdit->setFocus(); +} + void TestCasesPage::identifierChanged(const QString& identifier) { emit isValid(!identifier.isEmpty());