Add result() getter and done() signal in order to
conform to QtcProcess API.
Change-Id: Idc7c57e03d6e8acead9d4c034f4efc56250f944d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Conform to QtcProcess behavior and don't emit stdOutText()
and stdErrText() on finished when progressive output is off.
Use cleanedStdOut() / cleanedStdErr() getter instead.
Change-Id: I2c416c0264f2203c7a9c73de900c12777f4fd3b3
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Conform to QtcProcess interface and provide cleanedStdOut()
and cleanedStdErr() getters, to be called after the process
finished.
Use cleanedStdOut() inside DiffEditorController for getting
the output after the process finished instead of connecting
to stdOutText() signal.
Change-Id: I7ba3735b0ab2167ac1f3b0954dd5dc9553910aac
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Do it also in fully synchronous case, as QtcProcess
is able to handle them even when EventLoopMode is off.
Change-Id: Ic24ff34e3d8808d2aaaf0300ba4ac95662e46d23
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Handle SilentOutput flag into accound when runSynchronous()
to make it consistent with fully synchronous case.
Change-Id: I955714872601f8fb7ffff8d570eec5ff610d9cfe
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Make error reporting consistent with runSynchronous() case,
where error channel is reported via appendError().
Amends 2c5095c94d
Change-Id: I0d962d42eb696e91f05ebb4f1f92677607b24a27
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
In case of calling execute() the fully or not fully
synchronous setting is no-op now, as we execute
always in the caller thread and don't use blocking
API of QtcProcess and don't create nested event loop.
Behave the same regardless of these flags and always
setup std callbacks if needed.
Rename setupSynchronous() into installStdCallbacks()
to better reflect the current intention.
Change-Id: I93642c61d98a26c16298725f0d910d0dd80414b1
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
The QFutureInterface<void>::get() method was introduced
in 6.3, so we can't use it yet. Create ProgressTimer
manually in the caller thread for the future passed to
ProgressManager::addTask().
Amends a5683616b9
Change-Id: I1f96c433e759d66eaaa1a32489e9db4facecf46a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Pass the future interface of the running task into
ProgressManager::addTimedTask() instead of not
related future. In this way canceling the timed task
(after pressing the small x button) makes the
future interface canceled in the worker thread.
Change-Id: I4596823d40bd079841e59c9bdba025d30cb33711
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Get rid of unused workingDirectory (default working
directory will be used) and exitCodeInterpreter.
Simplify internals a bit.
Change-Id: I2a7547e5a594dd7a21f390daeb06778656e9e971
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Provide instead a protected setter, used in VcsCommand c'tor.
Remove a forceCLocale arg from setProcessEnvironment() method,
as it is used only in VcsCommand context when
ShellCommand::ForceCLocale flag was set. Move setting
C locale env directly to the shell command, just before
the command is executed, so that we are sure the flag
was already set.
Modify env directly in VcsCommand c'tor with regards to
SSH_ASKPASS variable.
Change-Id: Icff555ade4984368f7ce79f762d1bb5d3614076a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Use ShellCommand class name in signal-slot connections.
Change-Id: Id50ee6887708558a2ba0972ece6c420b0be36f72
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Add virtual postRunCommand() method, called
by the end of runCommand().
In this way the rest of the API of VcsCommand remains
an implementation detail.
Change-Id: Ia4149334bd39a1448266d2406e0987bee07a9c58
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Remove VcsCommand::m_sshPrompt, as it is always taken
from settings.
Change-Id: I9f46bb5a9de03e907f2098ca72a647c969e55a27
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Add a global synchronizer to the VcsPlugin.
Fixes: QTCREATORBUG-25744
Change-Id: I97578f4a5b5275071aa0253a22fc9ab2f90d9b75
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Amends 6e85ff9f4b
Using "invokeMethod(m_outputWindow, ..." has the disadvantage that it
crashes if m_outputWindow was deleted. This is nicely handled when
connecting to signals, so switch back to signals.
Change-Id: I6a681ac48a86536fa8e69e42d3c61ffa9d30c3d5
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
- VcsCommand calls into VcsOutputWindow at construction, so we need to
construct it in the main thread
- VcsCommand may not call into global settings from runCommand, so we
need to store the ssh prompt command
- accessing the GitClient singleton in a non-main thread is not
thread-safe
Change-Id: I3dcdff8091c2dcea1c165ce5b3eca5ef62d474fd
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Before we have used the OutputProxyFactory, which
was called in the non-gui thread. The factory, when run,
created the connection between the thread and outside
world (e.g. VersionControl output window). Instead of
setting the factory we provide a set of virtual functions
called directly from non-gui threads. We also provide overrides
for them in VcsCommand class. Their implementation
safely redirects the calls directly to the VcsOutputWindow
through the QMetaObject::invokeMethod() with auto connection
as a default.
Task-number: QTCREATORBUG-25744
Change-Id: I09f2da278003b71095e953a51499a5513cb8f03f
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
The timeout and exit code interpreter properties are already
accessible via the SynchronousProcess parameter.
Change-Id: I1ba9c768a781009df65b5070a1d017c41d7e2663
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
The result is fully stored in the object anyway. Using the extra
SynchronousProcessResponse structure only causes copies of
the data and complicates access on the user side in
a lot of cases.
The result bits are now also accessible individually.
There's obvious room for follow-up changes on the topic, e.g.
ShellCommand::runCommand's parameter list could shrink to
just a SynchronousProcess parameter.
Change-Id: I45aa7eb23832340be06905929280c012e1217263
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
The potential extensibility was never used, and a similar use case
in QtcProcess (setLowPriority()) used a named setter.
Change-Id: I87d84ea2206995d5069265f8df78f40cf2ba8a36
Reviewed-by: Orgad Shaneh <orgads@gmail.com>