Introduce an aggregating output formatter that forwards its input to a
sub-formatter that feels responsible for it, or otherwise lets the base
class handle it.
Our output panes now use such an aggregating formatter.
In particular, this means that in the future, we won't have to stuff all
run control output formatting into the Qt output formatter anymore.
Change-Id: I5498f200a61db10ccff3ec8974c6825da7f7072d
Reviewed-by: hjk <hjk@qt.io>
Do an initial check and if it fails, warn the user that they cannot
expect subsequent operations to succeed.
Task-number: QTCREATORBUG-18294
Change-Id: I3bb323cf7b7ed99f97258da94cfd7669f8520717
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Introduce a generic Utils::TouchBar that implements a touch bar for
macOS based on QAction. Touch bars can be nested, and one is set to be
the application's top level touch bar.
Also add an ActionContainer for the touch bar. That allows us to manage
the layout of the touch bar the same way we do with menus.
Since the touch bar is an input device with very limited space, a
command in the touch bar needs to be specifically styled for the touch
bar by setting either touchBarText or touchBarIcon (or both).
Touch bars can be nested by nesting the ActionContainers. A nested touch
bar ActionContainer needs to specify an icon and/or text to show in the
touch bar button that opens that sub-bar.
Commands are only shown in the touch bar if they are valid within the
current context.
Implementation-wise we cannot use the standard NSPopoverTouchBarItem for
nesting touch bar levels. We cannot hide items in the touch bar, because
hidden items still take up space in the touch bar. So we need to rebuild
the touch bar regularly. Since the items we show are very dynamic, every
time the items in the toplevel bar change because of a context change,
any opened sub-level touch bar closes. That is why we maintain a stack of
touch bar levels ourselves, replacing the main touch bar with the current
level, and managing opening and closing the levels manually.
This patch adds buttons for Help, Bookmarks, Header/Source, Follow
(Symbol), Decl/Def, and a sub-bar for the debugger actions.
Fixes: QTCREATORBUG-21263
Change-Id: Ib63e610f21a993f1d324fe23c83a7f2224f434ac
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
We don't want various plugins to depend on the Help plugin,
but we also do not want Core to depend on QtHelp.
For example when turning the Help plugin off, documentation should
actually no longer be registered through QtHelp. So we need
parts of the interface in Core, which must then be delegated
to the actual implementation in Help.
As positive side-effects the interface in Core will be slimmer,
and the code in the Help plugin can later be simplified, too,
because then we don't have the "Core" and the "Gui" help engines
separated in different plugins anymore, which should remove the
need for some setup indirections.
Task-number: QTCREATORBUG-20381
Change-Id: I634c5811c45d6a3dfd6ddc682cae270e38384cbf
Reviewed-by: hjk <hjk@qt.io>
Postpone the Mode object creation until it is really necessary,
the private data object may be needed before.
In the QmlDesigner this patch moves the connection to the DesignMode
instance back to delayedInitialize, essentially reverting part of
e8b3b8140b.
Change-Id: I07146b0bc93eede09af8e824e916edb6de1817ef
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Split up getting the data from the arguments list and actually applying
the values, and move the details of theme creation and application to
better places.
This gets rid of ugly control flow details like that
CorePlugin::initialize created the action manager before calling
parseArguments, because that is needed to apply the presentation mode
argument setting, and parseArguments created the main window because
that needs to be created _after_ setting the theme (which can be
overridden by command line argument), but _before_ applying the override
color argument setting.
Change-Id: I9c99305b6efbfcc4b37cea9e5c70d816a621963b
Reviewed-by: David Schulz <david.schulz@qt.io>
Also, rename it to Core::Find. It hasn't been a plugin for a while.
Change-Id: I845885ccf18bdc1440258d523b033758d5583881
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
And then use this to add the "Open in Graphical Shell" and "Open in
Terminal" actions.
Those actions cannot be implemented in Utils directly since the Core::FileUtils
depends on the Options dialog.
This affects all PathChoosers, and there's currently no way for a PathChooser
to opt out or have a different context menu. That can be added at a later
point.
Change-Id: I22121c19d66f08785381c7e0bca5317628eb6342
Task-number: QTCREATORBUG-14736
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Instead of transforming to absolute paths in the client, pass the
working directory and leave it to the target.
Change-Id: I4f8724c8857e89a7ee77116c78cf8b25c56795fa
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
+ always set the global palette and base style on apply
This is required for correctly using the selected theme
with multiple installations of Qt Creator.
Task-number: QTCREATORBUG-13203
Task-number: QTCREATORBUG-13396
Change-Id: I036b96721b6d184dae43d08c5e8bc9e6d1328a7b
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
After the move of locator into core plugin
Change-Id: Ie2504ca96f6a77206f0b77a5fc5698adb86b6a4c
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Add some unit tests to the VcsManager to test the detection and
caching of version control systems.
Change-Id: I2b3f9218c12aebde8a8120fc869efc76c36ae41a
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
- Add Q_PLUGIN_METADATA for Qt 5, use Q_EXPORT_PLUGIN
for Qt 4.
- Generate the Json files for Qt 5 from the pluginspec
files by using a XSLT sheet.
Change-Id: I8653f182ae7d61615971c093df10b84fb06c2172
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
And use it for some of the plugins. It avoids the plugins to
do the timing on their own, and actually adds guarantees about
the order the delayed initialization is done.
Change-Id: I88ad9b46b24b82c91509774170fe0e7e99e88e4b
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
If a plugin requests asyncronous shutdown, the shutdown sequence does
not continue to deleting the plugins before it has sent a
asynchronousShutdownFinished signal. During that time an event loop
is running.
Make it possible to trigger a debug-attach in a running instance
of Qt Creator by means of -client, use that in qtcdebugger, thus
enabling it to attaching to crashing executables in run mode
(Windows/CDB).
Modify IPlugin and application so that the complete command line is
serialized and transmitted to a running instance via QtSingleApplication
if -client is specified. Introduce IPlugin::remoteArgument and use that
in core for opening files and in the debugger for attaching.
Use -client in qtcdebugger with some logic to keep it alive as long as
the debuggee, make CDB break in that case as the events are not replayed
correctly in case the debugger is not spawned by the registered handler.
Rubber-stamped-by: con <qtc-committer@nokia.com>
This removes the all hard dependencies to and from welcome screen,
except the one to the core plugin. More in detail:
- Add IWelcomePage to add a tab to the welcome screen
- Move tabs in the modules where they belong
- Enables QHelpManager to open help fullscreen and contextually
- "Getting Started" moves to Qt4ProjectManager
- Projects & Sessions (aka "Develop") moves to ProjectExplorer
- "Community" remains in the welcome plugin for simplicity