Commit Graph

48 Commits

Author SHA1 Message Date
hjk
684d3e40a7 Python: use new runconfiguration aspect update mechanism
Change-Id: I60807350460e75172bf4744beeb1474755ff4187
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-27 08:07:04 +00:00
Eike Ziller
4e6142c932 Merge remote-tracking branch 'origin/4.11'
Conflicts:
	src/plugins/autotest/testresultspane.cpp
	src/plugins/cmakeprojectmanager/cmaketool.cpp

Change-Id: Iade695ac9cab8bf3e3a1abd6e2c71f4a19132ac0
2019-11-21 22:18:35 +02:00
hjk
c2127c9ec4 ProjectExplorer: Introduce and use a Target::buildSystemUpdated signal
Change-Id: I497d46866146600a1ed9162bd720c574ee4d4769
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-21 13:08:06 +00:00
hjk
738bbf1a87 ProjectExplorer: Introduce per-buildsystem setRootProjectNode
Currently diverting to the original Project::setRootProjectNode.
Idea is to focus on the BuildSystem <-> generated tree relation.

Change-Id: I8b20173e364713f0919cf4f8b76a2f79ef8770bb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-21 07:40:22 +00:00
hjk
2758682723 ProjectExplorer: Move BuildSystem owership to BuildConfiguration
... or Target.

This patch moves build system from conceptually "one per project"
to "one per target (i.e. per project-and-kit)" or "per
BuildConfigurations" for targets where the builds differ
significantly.

Building requires usually items from the kit (Qt version, compiler,
...) so a target-agnostic build is practically almost always wrong.

Moving the build system to the target also has the potential
to solve issues caused by switching targets while parsing, that
used Project::activeTarget() regularly, with potentially different
results before and after the switch.

This patch might create performance/size regressions when several
targets are set up per project as the build system implementation's
internal data are duplicated in this case.

The idea is to fix that by sharing per-project pieces again in
the project implementation once these problems occur.

Change-Id: I87f640ce418b93175b5029124eaa55f3b8721dca
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-19 11:05:52 +00:00
David Schulz
b2e1499782 Python: Use native separator in user visible path
Change-Id: I7ef46a2cae7744162a6f9da92a4736d74a029705
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-11-15 14:05:50 +00:00
David Schulz
40612bceee Python: Fix python run configuration
Add the WorkingDirectoryAspect to prevent running the
main script in an unpredictable location.

Change-Id: I1be206261b7983e933b53ccd57c93089154d8417
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2019-11-15 14:05:38 +00:00
Christian Stenger
dd93820fdd Python: Restrict creating run configurations
Some upcoming wizards will have other files beside
python scripts. (e.g. qml, ui)
Ensure that these files do not get a run configuration.

Change-Id: I0fe55edc6ccfe2db64537401e6a46fd4bdd7e153
Reviewed-by: hjk <hjk@qt.io>
2019-11-15 12:01:12 +00:00
Eike Ziller
646c7860cb Merge remote-tracking branch 'origin/4.11'
Conflicts:
	src/plugins/genericprojectmanager/genericprojectplugin.cpp
	src/plugins/projectexplorer/environmentaspect.cpp
	src/plugins/projectexplorer/environmentaspect.h
	src/plugins/projectexplorer/environmentaspectwidget.cpp

Change-Id: Id21d62cf14419febd1e06c9b429fcdf4501c0eaf
2019-11-11 12:58:11 +01:00
Christian Stenger
890e62931c Python: Fix linking for mingw build
Change-Id: Id3a0718e49b4054aa65ef17b3c9ac889cbaf549f
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-11-08 07:49:35 +00:00
Christian Kandeler
efa9832912 LayoutBuilder: Allow for more compact code at calling sites
Change-Id: I12bb6dbfc138e03138b9a74d36e864d8ea36092f
Reviewed-by: hjk <hjk@qt.io>
2019-11-07 11:53:37 +00:00
Eike Ziller
34e8f58c47 Fix lupdate issues
Change-Id: Ib0cbb96a1a4857db5724f9d1e316b97bf2827dbd
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-11-04 14:06:09 +00:00
Eike Ziller
04f0123c43 Merge remote-tracking branch 'origin/4.11'
Change-Id: Ie951c531a5b2efd8e6b972c4d04b7f1c681c8ef9
2019-11-04 14:41:36 +01:00
David Schulz
3df6a29d4f Python: remove reference to out of scope variable
Change-Id: Idd4dbab5ee01fda331452fefd27de71625afa5af
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-11-04 08:03:17 +00:00
David Schulz
54f2ebf91d Python: cache the module path for executable
This reduces ui freezes when switching the interpreter for a python
project.

Change-Id: Iaa8ce8ed8d51666f8696eb96f504aaf8c4a11822
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-11-04 05:47:38 +00:00
Eike Ziller
04bd6e39c8 Merge remote-tracking branch 'origin/4.11'
Conflicts:
	share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quick3dnodeinstance.cpp

Change-Id: I8ea57eba526ab830608fd928c28771c5441749f8
2019-11-01 15:31:19 +01:00
Christian Stenger
b2ede6ff51 Python: Check for changes before applying
Storing the python settings seems to be rather costly
and may take some time.
Perform an early return if nothing has changed.

Change-Id: I509e83f503d2af31a7464df893e0e4e69e99a277
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-10-30 13:21:29 +00:00
David Schulz
6664d78ded Python: detect virtual environments for documents and projects
After opening a document or project the directory hierarchy is looked up
for a Scripts/(activate && python.exe) on windows or bin/(activate &&
python) on unix. This is the usual structure of python virtual
environments. If such a folder is found add the python from that folder
to the list of configured interpreters in the settings, set it as the
current interpreter for the project and try to open the corresponding
language server.

Change-Id: I038c309ea2988f9370194330d250d1515beac0a0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-30 08:46:12 +00:00
Leena Miettinen
70ce398602 Python: Fix UI text
Change-Id: Ia3fa732d9ed6bb880ea7721712093fbe8faa27bd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-10-29 07:52:51 +00:00
Eike Ziller
bea3a8fa6f Merge remote-tracking branch 'origin/4.11'
Change-Id: I66389d88d5a60c6c86547b93cca945af42aa807b
2019-10-28 11:48:31 +01:00
David Schulz
95bd328c31 Python: export Interpreter generator
Change-Id: I591bd6c14706e1699f028a9a3a6dfd9b89eec66a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-25 12:50:46 +00:00
David Schulz
01df962d6a Python: install python language server with --user
Change-Id: Ifd8e19ea7d52d85ec0c497e5cbfe24300571398e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-25 12:50:35 +00:00
David Schulz
10c94994db Python: close all info bars after language server setup
Change-Id: I607f7cb5a31f3db0c7d7d77011860a1ea87eb8d2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-25 12:50:24 +00:00
hjk
6a878c7293 ProjectExplorer: Use a functor for BuildSystem creation
... instead of creating the BuildSystem direct. This will help the
shift of BuildSystem owner ship as a Project will have potentially
multiple BuildSystem instances (one per BuildConfiguration), but
still be responsible for creating them with the Targets.

Change-Id: I2dd71c7687ed41af9e42c874b3f932ce704e7ee3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-25 09:01:52 +00:00
hjk
66c7d75dbd Qbs, Qmake, Python, Generic: Introduce BuildSystem derived classes
... and move context menu action handling there.

This is a temporary measure to be able to move that functionality
alongside the actual BuildSystem to the BuildConfiguration.

There is a lot to be cleaned up left, to keep the patch small.

Change-Id: If4b0820a13b376fc97b70785052924972ce22705
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-10-25 07:55:10 +00:00
hjk
6eaf239777 ProjectExplorer: Prepare more flexibility to aspect layouting
This hides the explicit use of a QFormLayout from the aspect
interface in a new LayoutBuilder class. That currently works
only on a QFormLayout in the back, but opens the possibility
to use e.g. a QGridLayout as use on the Kits and some option
pages.

The aspects now only announce sub-widgets they like to add,
actuall positioning is does by a new LayoutBuilder class,
also cramming several widgets in an hbox in the right column
of the QFormLayout is done there.

Change-Id: I2b788192c465f2ab82261849d34e514697c5a491
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-10-18 12:24:39 +00:00
David Schulz
8b04019270 Python: Fix opening document in wrong pyls
The document was always opened in the first of the configured python
language servers.

Change-Id: If33cb4a08884b93047016be1d8cf5c27ea7950d9
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-18 05:23:40 +00:00
David Schulz
28c3f0c31e Python: Add info bar entry to enable pyls
Show an editor info bar entry displaying that the language server for
the current python is disabled and a button to quickly enable the pyls.

Change-Id: I3adb2e7cbfb1a32e35413b0b06dfbe66a0b214af
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-18 05:23:29 +00:00
David Schulz
c8ccfea225 Python: Switch pyls on interpreter change
Change-Id: I458b635986a55003a1e7254e27e2df9667704273
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-18 05:23:10 +00:00
David Schulz
6d5c61b164 Python: Add virtual env name to auto detected interpreters
Change-Id: Ia4d2e5399aa983b6bca510ca8b0e6848da5f769a
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2019-10-02 10:32:31 +00:00
David Schulz
aa8ce0ba24 Python: remove unused static string
Change-Id: I4357157d98f039c654b16de4e469c18c32bbb0ed
Reviewed-by: hjk <hjk@qt.io>
2019-10-02 10:32:17 +00:00
David Schulz
a30b936760 Python: add task for pyls installation
Change-Id: I0a85a3ae9fe4e8b327b3b90732556bf940215b7a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-30 12:50:45 +00:00
David Schulz
94f717bd3c Python: make pyls install kill timer a member
Change-Id: I62515673ef65e87b2f23345aa52a22a86a2be763
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-30 12:40:36 +00:00
David Schulz
90963249a4 Python: Add info bar to install python language server
If the detected python for the current document does not have an
installed language server, check whether pip is installed, try to
install the language server and if that was successful set it up.

Change-Id: Ib6cf3bacdcf3489728990cace5417862b7c78be5
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-30 07:26:12 +00:00
David Schulz
e232dfe2e6 Python: Check for Python language server after document was opened
Show an info bar entry with a one click solution to setup a language
server if the python which is most likely to be used for this file
has an installed language server.

Change-Id: Ia52bb043b543699527740951f68cc6be546833df
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-26 07:35:11 +00:00
Christian Stenger
c5f7de0a99 Python: Remove unused function
Change-Id: If464646dfad66a1afabb9b5b9c6366a35597f370
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-09-17 13:05:33 +00:00
David Schulz
a90c9c6409 Python: extract PythonRunConfiguration and PythonProject
Change-Id: I4ff0f43fdb8beb9a7f2f7816197de0c796da8d89
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-17 06:56:51 +00:00
Tobias Hunger
007d134bc3 Python: Simplify code based on Project::projectFileIsDirty signal
Change-Id: Ife19edf47b903080c073ffef844074be48b65b23
Reviewed-by: hjk <hjk@qt.io>
2019-08-16 12:46:02 +00:00
hjk
fcffb5f2fc Utils/all: Create an OutputFormatterFactory
Essentially following the scheme used for the various project
configurations. This makes it possible to construct OutputFormatters
by Id only, potentially reducing hard plugin dependencies and
opening the road to have several output formatters per
RunConfiguration/Outputpane/...

Change-Id: I4b5fb6fb6be8b0d9a0859f178bb0effc3398b09e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-08-13 13:07:06 +00:00
Tobias Hunger
ae345003aa ProjectExplorer: De-virtualize some more virtual methods
Use setters/getters for the bool flags in
Project::needsBuildConfigurations() and
Project::hasMakeInstallEquivalent.

Change-Id: I5ce937c3a5e8e0db627cda02a9007f8c28ccda0c
Reviewed-by: hjk <hjk@qt.io>
2019-08-13 10:24:30 +00:00
Eike Ziller
21c2bf7e72 Merge remote-tracking branch 'origin/4.10'
Conflicts:
	src/plugins/python/CMakeLists.txt

Change-Id: I18808710dd99b97d4e1e7c3d223b7f814083de31
2019-08-12 17:04:12 +02:00
Tobias Hunger
09530d6dcc ProjectExplorer: Use RAII pattern for parsing start/stop signalling
Change-Id: I13de537140f265db3e3d0ab1cd924d6897cd90c8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-08-09 12:45:29 +00:00
hjk
f9c221eb54 ProjectExplorer: Re-work setup runworker factories
This combines two of the previous three paths to create run workers,
and refers to RunConfigurations by id, not by type where possible
to decrease coupling between the classes.

Only allow "type of run configuration" and "type of device"
as the only possible kind of restriction and require a uniform
RunWorker constructor signature.

Adapt user code to fit that pattern.

Change-Id: I5a6d49c9a144785fd0235d7586f244b56f67b366
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-08-09 12:34:42 +00:00
hjk
09e5c167bd ProjectExplorer: Add convenience Project::addTargetFor{Default,}Kit
Less noise on the user side.

Change-Id: I5cdf4af4910a3cc1ee0af1b43fcbc7329a6d59db
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-08-01 16:16:29 +00:00
Christian Stenger
fd4c04407f Python: Fix compile for gcc < 6.0
Change-Id: Ia7ef177677a65aa565755313ee9d023aa8e53ef0
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-07-30 08:42:31 +00:00
David Schulz
a99e5af1da Python: make interpreter configurable
Add settings page to setup python interpreter and use a combo box in the
run configuration to switch between those configured interpreter.

Change-Id: I51014b785ea822ee138d39c788149f1d22901e55
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-07-30 07:41:30 +00:00
hjk
8b72e92167 Utils: Add CommandLine convenience constructors
... taking a QString for the executable.

This weakens the very explicit QString -> FileName conversion via the
named constructors for the special case of constructing a CommandLine.

I think that's worthwhile here, as it reduces the noise on the caller
site under circumstance where the nature of the thing is obvious.

Change-Id: I27b4a73639728893d053b2e7ba65cb745f0ffe83
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-07-23 15:51:45 +00:00
David Schulz
3213e12ce7 rename PythonEditor plugin to Python
The plugin does not only contain a pure editor, but all kind of support
for a programming language like project and run support.

Change-Id: I1251367c8db2e7a54986415ffc5b860cb210de3c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-07-17 06:21:23 +00:00