5 years agoSettings Dialog: Visually break up items in the about listing
Soeren Apel [Fri, 26 May 2017 20:42:38 +0000 (22:42 +0200)]
Settings Dialog: Visually break up items in the about listing

5 years agoRework signaling mechanism for trace repainting
Soeren Apel [Fri, 26 May 2017 14:19:56 +0000 (16:19 +0200)]
Rework signaling mechanism for trace repainting

Before, analog traces would request a repaint of the entire
view when they receive data. To understand how bad this was,
consider 4 enabled analog channels during capture. Every time
one channel would receive a bunch of sample data, it would
force a repaint of the view, resulting in 4 unnecessary

To fix this, the analog traces no longer request a repaint
on incoming sample data. Instead, the mechanism now is such
that the view "collates" repaint requests from all used
signalbases by means of a one-shot timer, i.e. any repaint
request is ignored if the timer is already running.

With the timer, we can also establish an upper bound on
how often the trace should update at most, currently 25Hz.

Since this functionality is very useful for any kind of
view, the existing one-shot timer was moved to the ViewBase
and then extended as explained.

5 years agoAnalogSignal: Only report an extent change when there is one
Soeren Apel [Fri, 26 May 2017 09:34:31 +0000 (11:34 +0200)]
AnalogSignal: Only report an extent change when there is one

5 years agoSignalBase: Also emit data related signals
Soeren Apel [Fri, 26 May 2017 08:46:14 +0000 (10:46 +0200)]
SignalBase: Also emit data related signals

If we have a SignalBase instance we don't want to hook into
every single segment just to be notified when data changes.

5 years agoDisable context menus that could lead to users removing UI parts
Soeren Apel [Thu, 25 May 2017 12:30:46 +0000 (14:30 +0200)]
Disable context menus that could lead to users removing UI parts

If a user removes the main toolbar then there's no way to get it
back. We don't want that.

If a user removes a dock window's contents he can get it back
by using the same context menu but it's a useless feature for us
and potentially very confusing, so we disable this, too.

5 years agoFix #895 by adapting to Qt5 and cleaning up properly
Soeren Apel [Wed, 24 May 2017 21:50:37 +0000 (23:50 +0200)]
Fix #895 by adapting to Qt5 and cleaning up properly

Relevant Qt commit:
"QProgressDialog: don't require setValue(0) to be called."

"Fixed by starting the timer in the constructor (most code doesn't reuse
progress dialogs, so this fixes the most common case)"

This messes us up because we're (ab-)using the dialog
in a non-standard way.

"QProgressDialog is designed to show itself automatically, based
on an internal estimate for the duration of the operation and the
minimumDuration property. You never call show() or exec() on it
manually. You're also not supposed to keep it around when it's not
used. In 5.4, the only way to start the internal duration estimation
was to call setValue(0). But we noticed that many people didn't call

Workaround here:

"As a workaround I added the line m_progressDlg->reset(); in the main
window constructor in order to get the same behavior as in former

5 years agoMainBar: Fix notification message
Soeren Apel [Wed, 24 May 2017 16:06:11 +0000 (18:06 +0200)]
MainBar: Fix notification message

5 years agoFix #942 by making sure we always have at least one positive div
Soeren Apel [Wed, 24 May 2017 11:45:04 +0000 (13:45 +0200)]
Fix #942 by making sure we always have at least one positive div

5 years agoFix #940 by updating the div spin boxes when needed
Soeren Apel [Wed, 24 May 2017 11:44:43 +0000 (13:44 +0200)]
Fix #940 by updating the div spin boxes when needed

Also, prevent the autoranging algo from changing the div
assigment when the user is in the process of changing it.
This way, we only change the div assignment during
acquisition, which is when we actually need this feature.

5 years agoAbout: Also list glibmm/boost/libsigrokdecode version details.
Uwe Hermann [Fri, 26 May 2017 16:36:33 +0000 (18:36 +0200)]
About: Also list glibmm/boost/libsigrokdecode version details.

This fixes parts of bug #912.

5 years agobuild: Add missing check for glib.
Uwe Hermann [Fri, 26 May 2017 16:14:56 +0000 (18:14 +0200)]
build: Add missing check for glib.

PulseView uses glib directly (in addition to indirectly via
libsigrok and/or libsigrokdecode), so we should explicitly check it.

5 years agobuild: Add missing check for glibmm.
Uwe Hermann [Fri, 26 May 2017 15:56:08 +0000 (17:56 +0200)]
build: Add missing check for glibmm.

Also, list the glibmm version in config.h.

5 years agoAbout: Also show libsigrok libs and features.
Uwe Hermann [Fri, 26 May 2017 14:43:24 +0000 (16:43 +0200)]
About: Also show libsigrok libs and features.

This fixes parts of bug #912.

5 years agoAvoid wrapping driver names etc in about box.
Martin Ling [Fri, 12 May 2017 21:48:28 +0000 (22:48 +0100)]
Avoid wrapping driver names etc in about box.

Fixes #111.

5 years agoFix a build issue with std::roundf() on Android.
Uwe Hermann [Wed, 10 May 2017 14:50:46 +0000 (16:50 +0200)]
Fix a build issue with std::roundf() on Android.

Apparently std::roundf() doesn't exist there, but plain roundf()
from <cmath> does.

This closes bug #945.

5 years agoLog settings location when using "-l 5".
Uwe Hermann [Tue, 9 May 2017 20:08:59 +0000 (22:08 +0200)]
Log settings location when using "-l 5".

This can have various types (e.g. a file or a registry entry) and it can
be in various locations on different OSes, so having this as part of the
log output is pretty useful.

5 years agoImprove icon/theme handling.
Uwe Hermann [Sun, 30 Apr 2017 20:44:33 +0000 (22:44 +0200)]
Improve icon/theme handling.

Only use QIcon::fromTheme() for icons which are included in the
freedesktop.org icon naming specification:


For all others there will be no icon to use from the theme and we always
want our own icons to be used unconditionally in those cases anyway.

5 years agoRename icons to match freedesktop.org icon naming specification.
Uwe Hermann [Wed, 5 Apr 2017 19:34:29 +0000 (21:34 +0200)]
Rename icons to match freedesktop.org icon naming specification.


5 years agoTests: Add another unit test for Segment class
Soeren Apel [Mon, 1 May 2017 13:14:50 +0000 (15:14 +0200)]
Tests: Add another unit test for Segment class

5 years agoSegment: Rework append_samples() so it can handle large input
Soeren Apel [Mon, 1 May 2017 13:04:10 +0000 (15:04 +0200)]
Segment: Rework append_samples() so it can handle large input

Before, adding large blocks of samples didn't work if they
would fill the current chunk, fill a new one and still have
data left to add. Using an iterative approach fixes this and
also makes the function more elegant.

5 years agoAnalogSignal: Don't paint logic when there's no logic data
Soeren Apel [Sun, 23 Apr 2017 14:44:17 +0000 (16:44 +0200)]
AnalogSignal: Don't paint logic when there's no logic data

5 years agoViewItem: Moved bg_colour_state into ViewItemPaintParams
Joel Holdsworth [Wed, 26 Apr 2017 17:20:14 +0000 (11:20 -0600)]
ViewItem: Moved bg_colour_state into ViewItemPaintParams

5 years agoViewPort: Make ViewItemPaintParams mutable
Joel Holdsworth [Wed, 26 Apr 2017 17:09:10 +0000 (11:09 -0600)]
ViewPort: Make ViewItemPaintParams mutable

5 years agoTimeMarker: Align to a integer pixel offset
Joel Holdsworth [Wed, 26 Apr 2017 17:39:48 +0000 (11:39 -0600)]
TimeMarker: Align to a integer pixel offset

5 years agoTrace: Fixed background rectangle
Joel Holdsworth [Wed, 26 Apr 2017 16:13:08 +0000 (10:13 -0600)]
Trace: Fixed background rectangle

It previously ignored the left x-coordinate, and left a 1-pixel
gap at the right-hand side.

5 years agoTrace: Removed coloured_bg state
Joel Holdsworth [Wed, 26 Apr 2017 16:12:23 +0000 (10:12 -0600)]
Trace: Removed coloured_bg state

The state should be taken from the View

5 years agoDecodeTrace: Make annotation block background opaque
Joel Holdsworth [Wed, 26 Apr 2017 16:09:51 +0000 (10:09 -0600)]
DecodeTrace: Make annotation block background opaque

5 years agoSettings: About: alpha-sort list of protocol decoders
Gerhard Sittig [Sun, 16 Apr 2017 19:34:05 +0000 (21:34 +0200)]
Settings: About: alpha-sort list of protocol decoders

Sort the list of protocol decoders in the "About" page like
sigrok-cli(1) does.

5 years agoSettings: About: add sigrok internal libraries to version list
Gerhard Sittig [Sun, 16 Apr 2017 19:29:27 +0000 (21:29 +0200)]
Settings: About: add sigrok internal libraries to version list

Add version information for libsigrok and libsigrokdecode (when enabled)
to the list of used libraries in the "About" page.

5 years agoDon't use AUTORCC, this would require cmake >= 3.0.
Uwe Hermann [Sun, 2 Apr 2017 15:24:34 +0000 (17:24 +0200)]
Don't use AUTORCC, this would require cmake >= 3.0.

5 years agoINSTALL: Fix incorrect gcc/clang minimum versions.
Uwe Hermann [Fri, 31 Mar 2017 17:35:09 +0000 (19:35 +0200)]
INSTALL: Fix incorrect gcc/clang minimum versions.


5 years agoAdd a hotkey and setting for showing/hiding the minor analog grid.
Uwe Hermann [Fri, 31 Mar 2017 06:27:28 +0000 (08:27 +0200)]
Add a hotkey and setting for showing/hiding the minor analog grid.

The vdiv grid is always shown and is what most users will expect. The
additional "minor" grid could be confusing, so make that configurable.

5 years agoAdd a tooltip for the "Delete decoder trace" icon.
Uwe Hermann [Thu, 30 Mar 2017 17:27:12 +0000 (19:27 +0200)]
Add a tooltip for the "Delete decoder trace" icon.

5 years agoAdd a tooltip for the "Show/hide decoder trace" icon.
Uwe Hermann [Thu, 30 Mar 2017 17:26:41 +0000 (19:26 +0200)]
Add a tooltip for the "Show/hide decoder trace" icon.

5 years agoAdd a tooltip for the decoder name in the decoder popup.
Uwe Hermann [Wed, 29 Mar 2017 23:21:58 +0000 (01:21 +0200)]
Add a tooltip for the decoder name in the decoder popup.

5 years agoAdd a tooltip for the "Stack decoder" button/dropdown.
Uwe Hermann [Wed, 29 Mar 2017 23:21:31 +0000 (01:21 +0200)]
Add a tooltip for the "Stack decoder" button/dropdown.

5 years agoAdd a tooltip for the "Add decoder" button.
Uwe Hermann [Wed, 29 Mar 2017 23:20:42 +0000 (01:20 +0200)]
Add a tooltip for the "Add decoder" button.

5 years agobinding: Add description tooltips to almost all binding types.
Uwe Hermann [Wed, 29 Mar 2017 23:11:11 +0000 (01:11 +0200)]
binding: Add description tooltips to almost all binding types.

This can be the description of an option of an input/output module,
for example.

5 years agoprop/bool: Add a tooltip containing a description.
Uwe Hermann [Wed, 29 Mar 2017 23:48:12 +0000 (01:48 +0200)]
prop/bool: Add a tooltip containing a description.

This can be the description of an option of an input/output module,
for example.

5 years agobinding/prop: Add a description field.
Uwe Hermann [Wed, 29 Mar 2017 22:57:33 +0000 (00:57 +0200)]
binding/prop: Add a description field.

The config key / option bindings only allowed for a single name so far.

Add an additional description field, which can be used for longer
descriptions of the config keys / options.

Hook up the input/output format option descriptions.

5 years agowellarray.hpp: Add missing #include guards.
Uwe Hermann [Tue, 28 Mar 2017 21:20:51 +0000 (23:20 +0200)]
wellarray.hpp: Add missing #include guards.

5 years agoSimplify Qt5 setup, require cmake >= 2.8.12.
Uwe Hermann [Tue, 28 Mar 2017 20:54:27 +0000 (22:54 +0200)]
Simplify Qt5 setup, require cmake >= 2.8.12.

We now require cmake >= 2.8.12 (released 2013 or so, should be available
pretty much anywhere by now) which further simplifies the Qt5 setup.


5 years agoDrop support for Qt4.
Uwe Hermann [Tue, 28 Mar 2017 20:26:02 +0000 (22:26 +0200)]
Drop support for Qt4.

We now require Qt5 for PulseView. Qt5 has been out since 2012 or so and
is available pretty much everywhere now.

We're successfully using Qt5 on Linux, Windows, *BSD, Mac OS X, and Android.

Dropping Qt4 support simplifies the build system quite a bit, reduces the
number of test scenarios we have to consider etc. etc.

5 years agoDrop unused boost-thread dependency.
Uwe Hermann [Tue, 28 Mar 2017 06:41:48 +0000 (08:41 +0200)]
Drop unused boost-thread dependency.

We no longer use boost-thread currently (in favor of C++11 thread
facilities), so drop the obsolete dependency from code and docs.

5 years agoUse alphabetical order for #includes.
Uwe Hermann [Tue, 28 Mar 2017 06:30:43 +0000 (08:30 +0200)]
Use alphabetical order for #includes.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,llvm-include-order" -fix

5 years agoWhitespace cosmetics.
Uwe Hermann [Fri, 24 Mar 2017 22:19:14 +0000 (23:19 +0100)]
Whitespace cosmetics.

5 years agoSpeed up analog trace painting
Soeren Apel [Sun, 26 Mar 2017 19:04:30 +0000 (21:04 +0200)]
Speed up analog trace painting

5 years agoSignalBase: Don't use static state
Soeren Apel [Thu, 23 Mar 2017 20:52:51 +0000 (21:52 +0100)]
SignalBase: Don't use static state

It's used across all SessionBase instances, d'oh.
Let's not do this.

5 years agoSettings: Whitespace fix
Soeren Apel [Thu, 23 Mar 2017 20:43:58 +0000 (21:43 +0100)]
Settings: Whitespace fix

5 years agoConsistenty use auto-generated namespace comments.
Uwe Hermann [Wed, 22 Mar 2017 22:34:36 +0000 (23:34 +0100)]
Consistenty use auto-generated namespace comments.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,google-readability-namespace-comments" -fix

Switch to the format used by clang-tidy to allow easy, automatic,
tool-based maintenance / checking of the comments.

This also found a few instances of comments that were out of sync.

5 years agoRandom simplifications, cosmetics/whitespace/consistency fixes.
Uwe Hermann [Sat, 18 Mar 2017 23:20:26 +0000 (00:20 +0100)]
Random simplifications, cosmetics/whitespace/consistency fixes.

5 years agoUse the "default" keyword.
Uwe Hermann [Tue, 21 Mar 2017 23:45:20 +0000 (00:45 +0100)]
Use the "default" keyword.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-equals-default" -fix

(with manual fixups to move the "= default" to the .hpp)

5 years agoUse bool literals for boolean values.
Uwe Hermann [Tue, 21 Mar 2017 23:01:10 +0000 (00:01 +0100)]
Use bool literals for boolean values.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-bool-literals" -fix

5 years agoDon't use redundant void argument.
Uwe Hermann [Tue, 21 Mar 2017 21:38:59 +0000 (22:38 +0100)]
Don't use redundant void argument.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-redundant-void-arg" -fix

5 years agoDon't use deprecated headers.
Uwe Hermann [Mon, 20 Mar 2017 20:40:29 +0000 (21:40 +0100)]
Don't use deprecated headers.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-deprecated-headers" -fix

(with some additional manual fixups)

5 years agoUse nullptr in a few places.
Uwe Hermann [Mon, 20 Mar 2017 20:26:44 +0000 (21:26 +0100)]
Use nullptr in a few places.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-nullptr" -fix

5 years agoRemove unused "using" declarations.
Uwe Hermann [Mon, 20 Mar 2017 20:00:14 +0000 (21:00 +0100)]
Remove unused "using" declarations.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,misc-unused-using-decls" -fix

(with manual add-on fixes such as dropping unused headers as well,
and commenting some false-positive cases)

5 years agoSettings: Add Qt version
Soeren Apel [Wed, 22 Mar 2017 22:42:23 +0000 (23:42 +0100)]
Settings: Add Qt version

5 years agoDecoderStack: Fix memory leak
Soeren Apel [Wed, 22 Mar 2017 22:26:21 +0000 (23:26 +0100)]
DecoderStack: Fix memory leak

5 years agoAnalogSignal: display type-related improvements
Soeren Apel [Wed, 22 Mar 2017 21:33:09 +0000 (22:33 +0100)]
AnalogSignal: display type-related improvements

1) Only show the v/div setting if analog trace is drawn
2) Update the trace when the display type is changed

5 years agoAnalogSignal: Implement converted logic trace painting
Soeren Apel [Wed, 22 Mar 2017 22:24:13 +0000 (23:24 +0100)]
AnalogSignal: Implement converted logic trace painting

Yeah, it violates the DRY principle and isn't nice OOP-wise
but it'll do for now. The entire group of Trace/Signal classes
needs to be reworked anyway to support device-independent
signal types anyway (think math traces and such).

5 years agoLogicSignal: Don't depend on device_ being valid
Soeren Apel [Wed, 22 Mar 2017 19:05:38 +0000 (20:05 +0100)]
LogicSignal: Don't depend on device_ being valid

5 years agoAnalogSignal: Add conversion type and display type
Soeren Apel [Wed, 22 Mar 2017 22:07:41 +0000 (23:07 +0100)]
AnalogSignal: Add conversion type and display type

5 years agoSignalBase: Implement A2D conversions
Soeren Apel [Wed, 22 Mar 2017 22:03:21 +0000 (23:03 +0100)]
SignalBase: Implement A2D conversions

5 years agoSession: Make sure we don't try to add a non-existant decoder
Soeren Apel [Sat, 18 Mar 2017 11:12:41 +0000 (12:12 +0100)]
Session: Make sure we don't try to add a non-existant decoder

This can happen if either the saved configuration is wrong
or a decoder simply doesn't exist. We don't want to crash then.

5 years agoLogicSegment: Remove constructor requiring sigrok::Logic
Soeren Apel [Thu, 16 Mar 2017 21:24:17 +0000 (22:24 +0100)]
LogicSegment: Remove constructor requiring sigrok::Logic

5 years agoLogicSegment: Make constructor and append_payload() more generic
Soeren Apel [Thu, 16 Mar 2017 20:40:33 +0000 (21:40 +0100)]
LogicSegment: Make constructor and append_payload() more generic

5 years agoUse presence of logic/analog data as indicator of channel type
Soeren Apel [Wed, 15 Mar 2017 18:22:17 +0000 (19:22 +0100)]
Use presence of logic/analog data as indicator of channel type

However, don't do this for the StoreSession. Reason is that we
only want to save the original data and not treat any converted
data as its own channel.

5 years agoSignalBase: Allow checking for logic data directly
Soeren Apel [Tue, 14 Mar 2017 21:54:20 +0000 (22:54 +0100)]
SignalBase: Allow checking for logic data directly

If we always return a valid pointer, we need to look
at the channel type to figure out if this data is
supposed to be valid or not. This isn't useful.

5 years agoIntroduce PV-internal channel types
Soeren Apel [Wed, 22 Mar 2017 21:45:41 +0000 (22:45 +0100)]
Introduce PV-internal channel types

5 years agomain.cpp: Minor consistency fixes found by clang-tidy.
Uwe Hermann [Sat, 18 Mar 2017 19:01:54 +0000 (20:01 +0100)]
main.cpp: Minor consistency fixes found by clang-tidy.

5 years agoDon't use std:: in the code directly (where possible).
Uwe Hermann [Wed, 15 Mar 2017 22:16:05 +0000 (23:16 +0100)]
Don't use std:: in the code directly (where possible).

Use "using std::foo" to make the actual code itself a lot more readable.

There are some exceptions where we usually cannot do this, e.g. std::thread
often conflicts with "thread" from Qt or Boost.

5 years agoOnly show sampling points when zoomed in far enough.
Uwe Hermann [Fri, 17 Mar 2017 22:53:49 +0000 (23:53 +0100)]
Only show sampling points when zoomed in far enough.

5 years agoShow sampling points in analog traces.
Uwe Hermann [Fri, 17 Mar 2017 22:05:23 +0000 (23:05 +0100)]
Show sampling points in analog traces.

This fixes (parts of) bug #485.

5 years agoAnalogSignal::paint_trace(): Factor out a const variable.
Uwe Hermann [Fri, 17 Mar 2017 22:00:04 +0000 (23:00 +0100)]
AnalogSignal::paint_trace(): Factor out a const variable.

5 years agoAdd a hotkey to show/hide sampling points.
Uwe Hermann [Fri, 17 Mar 2017 19:47:36 +0000 (20:47 +0100)]
Add a hotkey to show/hide sampling points.

This is also hooked up into the global settings, so it will be
persistent across multiple PulseView runs.

This fixes (parts of) bug #485.

5 years agoShow sampling points in logic traces.
Uwe Hermann [Fri, 17 Mar 2017 19:35:20 +0000 (20:35 +0100)]
Show sampling points in logic traces.

This fixes (parts of) bug #485.

5 years agoIncrease session saving chunk size for much better performance.
Uwe Hermann [Thu, 16 Mar 2017 22:29:24 +0000 (23:29 +0100)]
Increase session saving chunk size for much better performance.

Increasing the StoreSession chunk size from 1Msamples to 10Msamples
leads to massively faster session saving due to reduced overhead.

In some cases a 2x (or more) speed-up has been observed. A further increase
to, say, 100Msamples shows no further noticeable improvements.

This also has the additional benefit of generating fewer entries/files
within the sigrok session (*.sr) output/ZIP files, which can potentially
be beneficial for very long captures.

5 years agoTraceView: Use sticky scrolling setting directly
Soeren Apel [Mon, 13 Mar 2017 18:15:32 +0000 (19:15 +0100)]
TraceView: Use sticky scrolling setting directly

5 years agoSettings: Activate first item upon dialog creation
Soeren Apel [Mon, 13 Mar 2017 07:56:03 +0000 (08:56 +0100)]
Settings: Activate first item upon dialog creation

5 years agoSettings: Change icon for "Views"
Soeren Apel [Mon, 13 Mar 2017 07:18:47 +0000 (08:18 +0100)]
Settings: Change icon for "Views"

5 years agoTie the "sticky scrolling" setting in with the settings mgmt
Soeren Apel [Sun, 12 Mar 2017 20:32:35 +0000 (21:32 +0100)]
Tie the "sticky scrolling" setting in with the settings mgmt

5 years agoSettings: Change view settings shortcuts
Soeren Apel [Fri, 10 Mar 2017 07:52:02 +0000 (08:52 +0100)]
Settings: Change view settings shortcuts

5 years agoIntegrate the about dialog into the settings dialog
Soeren Apel [Thu, 9 Mar 2017 18:38:20 +0000 (19:38 +0100)]
Integrate the about dialog into the settings dialog

5 years agoSettings: Prettify the settings dialog
Soeren Apel [Wed, 8 Mar 2017 21:53:51 +0000 (22:53 +0100)]
Settings: Prettify the settings dialog

5 years agoSession: Don't reset session name for file devices
Soeren Apel [Wed, 8 Mar 2017 08:44:16 +0000 (09:44 +0100)]
Session: Don't reset session name for file devices

5 years agoUse the "default" keyword.
Uwe Hermann [Fri, 10 Mar 2017 21:09:58 +0000 (22:09 +0100)]
Use the "default" keyword.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-equals-default" -fix

(with manual fixups to move the "= default" to the .hpp)

5 years agoUse emplace_back() where possible.
Uwe Hermann [Fri, 10 Mar 2017 20:32:43 +0000 (21:32 +0100)]
Use emplace_back() where possible.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-emplace" -fix

Using emplace_back() has multiple advantages:

 - It's usually shorter and easier to read.

 - It's more efficient.

   V1: v.push_back("foo");
   V2: v.emplace_back("foo");

   V1 will construct a temporary std::string from the string literal "foo",
   another copy of that temporary object will be constructed and placed
   into the vector 'v', then the temporary object's destructor will be called.

   V2 will simply create a std::string directly in the vector 'v', i.e.
   there's only one construction (not 2) and no destructor needs to be called.

5 years agoUse bool literals for boolean values.
Uwe Hermann [Fri, 10 Mar 2017 20:41:30 +0000 (21:41 +0100)]
Use bool literals for boolean values.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-bool-literals" -fix

5 years agoDon't use redundant void argument.
Uwe Hermann [Fri, 10 Mar 2017 20:17:22 +0000 (21:17 +0100)]
Don't use redundant void argument.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-redundant-void-arg" -fix

5 years agoPrefer std::make_shared().
Uwe Hermann [Fri, 10 Mar 2017 19:26:31 +0000 (20:26 +0100)]
Prefer std::make_shared().

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-make-shared" -fix

(with some additional manual fixups)

Using make_shared() over manual construction has multiple advantages:

 - It's shorter to write and easier to read.

   V1: auto sb = shared_ptr<Foo>(new Foo());
   V2: auto sb = make_shared<Foo>();

 - The type "Foo" is repeated less often (less code duplication, lower
   risk of forgetting to update one of the "Foo"s upon copy-paste etc.)

 - Manual construction leads to two individual allocations (actual data and
   the control block of the shared_ptr). Using make_shared() will only lead
   to one allocation, which has performance, cache-locality and memory
   consumption benefits.

 - It's exception-safe, whereas manual construction is not necessarily:

   V1: func(shared_ptr<Foo>(new Foo()), shared_ptr<Foo>(new Foo()));
   V2: func(make_shared<Foo>(), make_shared<Foo>());

   In "V1", one of the "new" invocations could throw, potentially
   causing memory leaks. No leaks will happen with make_shared().

5 years agoDon't use deprecated headers.
Uwe Hermann [Thu, 9 Mar 2017 23:34:10 +0000 (00:34 +0100)]
Don't use deprecated headers.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-deprecated-headers" -fix

(with some additional manual fixups)

5 years agoUse nullptr in a few places.
Uwe Hermann [Thu, 9 Mar 2017 23:11:45 +0000 (00:11 +0100)]
Use nullptr in a few places.

This patch was generated using clang-tidy:

  clang-tidy -checks="-*,modernize-use-nullptr" -fix

5 years agoGlobalSettings: Implement undo function for the "cancel" button
Soeren Apel [Tue, 7 Mar 2017 21:14:49 +0000 (22:14 +0100)]
GlobalSettings: Implement undo function for the "cancel" button

5 years agoTraceView: Fix "always zoom to fit" feature
Soeren Apel [Mon, 6 Mar 2017 18:07:36 +0000 (19:07 +0100)]
TraceView: Fix "always zoom to fit" feature

5 years agoTraceView: Only perform "always zoom to fit" for the main view
Soeren Apel [Sun, 5 Mar 2017 20:16:56 +0000 (21:16 +0100)]
TraceView: Only perform "always zoom to fit" for the main view

5 years agoIntroduce ViewBase::is_main_view
Soeren Apel [Sun, 5 Mar 2017 20:07:23 +0000 (21:07 +0100)]
Introduce ViewBase::is_main_view

5 years agoMainWindow: Restructure add_view()
Soeren Apel [Sun, 5 Mar 2017 19:54:51 +0000 (20:54 +0100)]
MainWindow: Restructure add_view()

5 years agoTie the "always zoom to fit" setting in with the settings mgmt
Soeren Apel [Sun, 5 Mar 2017 19:30:34 +0000 (20:30 +0100)]
Tie the "always zoom to fit" setting in with the settings mgmt

5 years agoTie the "use coloured bg" setting in with the settings mgmt
Soeren Apel [Sun, 5 Mar 2017 18:58:37 +0000 (19:58 +0100)]
Tie the "use coloured bg" setting in with the settings mgmt