Fix #1147 by implementing decoder selector subwindow
Fix #971: Allow saving/restoring of session setups
Centralize session error notification
Adjust trace view namespace
Don't use deprecated headers. This patch was generated using clang-tidy: clang-tidy -checks="-*,modernize-deprecated-headers" -fix (with some additional manual fixups)
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.
license: remove FSF postal address from boiler plate license text Remove the FSF postal address as it might change (it did in the past). Reference the gnu.org website instead which is more stable.
MainBar: Correct event handler name
Implement views::trace::StandardBar and derive MainBar from it
Move file loading from MainBar to Session
Move run/stop button from the menu bar to the tab widget
Move the "new session" button to the main window's tab area
MainBar: Remove empty menu button
Add "new session" and "new view" toolbar buttons Those are temporary and will eventually replaced by a proper UI.
MainWindow/MainBar: Fix signals Before, QMetaObject::connectSlotsByName(this) was used to connect the signals to the slots automagically. This is no longer feasible for the MainBar as there are slots that can't be auto-assigned and the MainWindow doesn't have any signals at the moment.
Session/MainBar: Fix device change handling
Implement multi-session handling This includes letting sessions restore their internal state on their own and that there are unique names associated with each session that the GUI can use when there is no data.
Make the first view own the toolbar instead of the main window Handling multiple sessions requires that every session can be controlled individually. This means that either a) there could be one toolbar that adjusts dynamically to the session whose view currently has focus or b) every session has its own toolbar. I opted for b) because it's more intuitive and more straightforward to implement. So now every session has a main view (the first one created) and a main bar that sits in the same dock widget.
Fix #805 by resetting selected device on failure It can happen that devices can be selected but not used (permissions problems, connection issues, driver issues, etc.), so in those cases we want to fail gracefully instead of segfaulting. The reason for the segfault is the device selector button isn't reset in case the device couldn't be opened, causing the rest of the application to try and work with a device instance that is actually invalid. Resetting the device selector when the device failed to open not only fixes this but also makes the UI more consistent with the internal state.
MainBar: Support having no selected device