Commit Graph

30 Commits

Author SHA1 Message Date
Samuel Ghinet
2c8c7707c5 Enable disabled test in QDS's wizard factories
The test was disabled because it required a method to be virtual, in
order to be mocked; and where it was integrated in (branch 6.0), it was
a patch release, and we couldn't break binary compatibility.

Task-number: QDS-5691
Change-Id: If8d3101be7b92942b32ffff1d88ab0823f26e08b
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2022-01-19 09:52:39 +00:00
Samuel Ghinet
c1c147a9dc QDS-5691 Create a tab for Recent choices
The Recents should store presets, rather than normal project items,
while the rest of tabs are to store normal project (i.e. wizard) items
but with the default screen size written under the wizard name.

In this patch I also did a few renames: e.g. the Presets view now uses a
PresetModel rather than ProjectModel, because we now store presets. A
Preset is a higher level concept than Project / Wizard item: it can be a
project/wizard item with pre-defined configurations; and now we can have
multiple presets using the same Wizard factory. Renamed struct
ProjectCategory to WizardCategory, because the items are grouped by the
category of the wizard (i.e. the "category" property of IWizardFactory)

I extracted a class, PresetData, to hold the data that is being shared
by the PresetModel (items in the view) and the PresetCategoryModel
(header/tab items). It stored both information on normal presets and on
recent presets.

Made changes to JsonWizardFactory so that I could extract the list of
screen sizes without requiring to build a wizard object first. This is
important, because multiple JsonWizard objects cannot be created at the
same time and I need to show the screen sizes of multiple presets /
wizards as the Presets view is opened. This also required class
WizardFactories to use JsonWizardFactory instead of Core::IWizardFactory
-- since "screen sizes" are a particularity of the json wizards, not of
all kinds of wizards.

Also, fixed a TODO in WizardHandler::reset() method.

Also, added a few utilities I had need of, in algorithm.h.

Change-Id: Ifd986e2def19b2e112f0aa1ab3db63d522736321
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2022-01-17 08:59:09 +00:00
Thomas Hartmann
14effaf9cb Allow clearing the wizards path
The QmlDesigner now depends on the CppEditor plugin
and the CppEditor plugin enables most of the C++
related wizards.

The easiest solution is to simply clear the wizard
paths before setting the QDS specific path.

Change-Id: I7ee6c84693053e6ad32ec28a6cf262dee615992f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-11-05 09:25:49 +00:00
Tapani Mattila
05fa3b06e5 Wizards: Enable using default values for json wizards by using json "imports"
Task-number: QDS-5214
Change-Id: I67ba3aef15edb3935fb9aeb6b317348de3f60dca
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2021-10-11 09:29:51 +00:00
hjk
a8d44b04da ProjectExplorer: FilePath-ify JsonWizardFactory
Change-Id: Ib56daffeb7e6eac3879e00e41812c699338e1fcb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-09-27 08:11:18 +00:00
hjk
1167f0fac7 Core: FilePath-ify DocumentManager
And adjust users.

Change-Id: I10ca9aeb442a07f7c8d42af362b294aa3398f5c1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-09-22 09:10:29 +00:00
Samuel Ghinet
b985530144 Make changes in the QtCreator side required for QDS new project dialog
* We need the showing of the Wizard dialog to be optional
* Each wizard has a "detailsPage.qml" file that stores wizard-specific
  UI configuration. We need a way to access that path (QUrl) from QDS.
* ComboboxField is used directly by QDS, and the field object is
  fetched by a call to JsonFieldPage::jsonField() - hence, the
  ComboboxField needs to be dllexported. We need to access fields
  directly from QDS because the QML controls use those fields as backend.
* From QDS we need to select / activate in a combobox field, and to see
  which item is current (activated). We also need to make use of the
  model that the ComboBoxField uses in order to show those same items in
  the qml controls of QDS.
* From QDS we need to set the text in a LineEditField

Task-number: QDS-4490
Change-Id: Ia42d539a5bcbf3dff4593fb027ac18c52da4d046
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2021-09-21 13:21:44 +00:00
hjk
430a33dcd9 Core/Utils: Migrate further to Utils::Id
The coreplugin/id.h header is kept for downstream for now.

Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-07-06 06:07:13 +00:00
hjk
e109b731ad Utils: Rename FilePathList to simply FilePaths
The exact storage type does not really matter here.

Change-Id: Iefec40f0f5909c8e7ba3415db4a11962694e1b38
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-12-18 08:43:18 +00:00
hjk
473a741c9f Utils: Rename FileName to FilePath
More in line with QFileInfo terminonlogy which appears to be
best-of-breed within Qt.

Change-Id: I1d051ff1c8363ebd4ee56376451df45216c4c9ab
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-05-28 12:23:26 +00:00
Eike Ziller
e0d38ae414 Export Wizard values to JavaScript macro
Registers a new function "value('name')", available to the wizard json
files, which returns the value of the variable "name" as a JavaScript
object. So, variables with a string value are actual JavaScript strings,
booleans are booleans, lists are lists, and dictionaries are
dictionaries.

The patch also makes it actually possible to assign JSON lists and
dictionaries to values.

This removes some hacks involving creating complex JavaScript objects
through string substitution.

Change-Id: I4ac6da22bc5bccc9fadee97694c2fa14d44c9307
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-05-09 11:19:43 +00:00
Tobias Hunger
6db7392daf ProjectExplorer: Initialize page index
Change-Id: I91369bf4f5a8b785f656933a9e9a9603a6e1883d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-29 15:14:43 +00:00
Tobias Hunger
95ac4edfd4 Projectexplorer: Modernize codebase
Change-Id: I4793b58aa77bcd46af99f8b843c0f7439cdc9269
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Reviewed-by: Vikas Pachdha <vikas.pachdha@theqtcompany.com>
2016-04-15 09:40:53 +00:00
hjk
39a38d5679 Wholesale conversion to #pragma once
Kudos to cgmb and https://github.com/cgmb/guardonce

Change-Id: Ifa8970734b8d43fd08c9260c645bdb0228633791
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-03-30 15:20:19 +00:00
Tobias Hunger
397e7f4843 Update License according to agreement with Free Qt Foundation
* Update files in src/plugins

Change-Id: Ia5d77fad7d19d4bb3498e78661982f68729adb22
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-01-19 15:57:01 +00:00
Tobias Hunger
480f40c038 JSONWizard: Unify "options" handling
Code was duplicated between the factory of the wizard and the file
generator.

Change-Id: Ied2ba99218a5f06e8a0dce0fbc12f277195de8ad
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2015-12-14 14:26:17 +00:00
Tobias Hunger
eebe44d3cf Wizards: Turn "platform" into an Id
It used to be a string constant.

Change-Id: Ibea34dc52e97a483989e6d628b908231f4e2dc54
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2015-12-02 14:49:20 +00:00
Tobias Hunger
4b0a8648e4 FeatureProvider: Remove Feature and FeatureSet
Use Core::Id for Feature and QSet<Core::Id> for FeatureSet.

Change-Id: I12341036bd9eaa82589d92bd3f7d21f2e6b737bd
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2015-12-02 14:49:17 +00:00
Tobias Hunger
ca29cbfc8a Consistently use Utils::FileNameList
Consistently use Utils::FileNameList in favor of QList<Utils::FileName>

Change-Id: Iafbb466c882bfd91c25c9e78f107d401bfdb6d55
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
2015-11-16 08:33:02 +00:00
Jochen Becher
431b25ad27 Introduce dragging for all explorer nodes.
Extend drop support with variant values. A drop may be a file drop or a
value drop or both.

Rename Utils::FileDropSupport to Utils::DropSupport and add methods to
add not only files but any QVariant value to the mime data. Project
explorer adds dragged nodes (which will be needed for future ModelEditor
plugin).

Change-Id: I799542c60fdecb3e64af0d3ba47b6caa9adbcfd7
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-06-15 08:12:56 +00:00
Tobias Hunger
9d0c39768f Wizards: Allow for async wizards
Change-Id: Id150ede2549150be8e720c5a0e31b05309cb3fb9
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-06-03 12:59:22 +00:00
Tobias Hunger
7e41b40c91 Wizards: Treat running wizards in the same way as a running NewDialog
That is block the New file or project action.

Change-Id: Ic7bb6013fce02fdcdd5c86b70ba5428218597a40
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-06-03 08:07:29 +00:00
Tobias Hunger
bd40ef3659 JsonWizard: Make enabled state of wizard more dynamic
Now it can be toggled based on platform selected.

Change-Id: I663e8cff149da8df55baab4ab4f61c2c2e06f837
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2015-05-28 15:44:50 +00:00
Tobias Hunger
25f2f8e1ee IWizardFactory: Create wizards with factoryCreators
Do not use the object pool to hold potential wizards. Register
FactoryCreator functions with IWizardFactory instead and use
those to create the wizards when necessary.

This saves us a couple of cycles during startup since we can now
delay construction of all wizards and it makes us more flexible
wrt. managing the lifecycle of the wizard factories.

Change-Id: I95d6a6dfcdf0fd995e1934a9fefcd96c6a676753
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-05-26 11:47:53 +00:00
hjk
da8270e1d0 ProjectExplorer: Move private slots to Pimpl
Change-Id: I62a8f4f0e94b3e9f85e9a88f3447c5fbfdd38295
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
2015-02-24 14:45:32 +00:00
Eike Ziller
3c85058694 Update License
Change-Id: I711d5fb475ef814a1dc9d2822740e827f3f67125
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2015-01-16 12:37:56 +01:00
Tobias Hunger
b9d2fd8eac JsonWizard: Allow enableing/disableing of pages from the Json file
Change-Id: Ic21f0f176f2a82577eaf4a72fbb01c011e1ada2b
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2014-11-03 09:42:07 +01:00
Eike Ziller
9c7019f0b2 License update.
Change-Id: I0acde2c3b995693de682679471f03af85bdd0a61
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2014-10-15 15:19:55 +02:00
Ulf Hermann
544783cf2a ProjectExplorer: Avoid static initialization fiasko
The search paths can only be constructed once the extension system is
ready. This may never happen if the plugin is loaded directly, e.g.
from an autotest.

Change-Id: Ibfcb7bbb6138480d772d5097aaa8b0ae44d1b043
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2014-09-29 14:58:43 +02:00
Tobias Hunger
3491b1f22a Add JsonWizard
This is a generalization of the customwizard (using Json for its
configuration files since that is so easy to handle in Qt 5 and
since it is incompatible with the customwizard anyway).

It allows to define an arbitrary number of pages and generators to
generate the actual files.

Change-Id: I45a01cf7fb906701b627fa1471a898cad472f679
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2014-09-19 16:54:50 +02:00