#ifdef ENABLE_DECODE
#include "subwindows/decoder_selector/subwindow.hpp"
+#include "views/decoder_output/view.hpp"
#endif
#include <libsigrokcxx/libsigrokcxx.hpp>
namespace pv {
-namespace view {
-class ViewItem;
-}
-
using toolbars::MainBar;
const QString MainWindow::WindowTitle = tr("PulseView");
icon_green_(":/icons/status-green.svg"),
icon_grey_(":/icons/status-grey.svg")
{
- GlobalSettings::add_change_handler(this);
-
setup_ui();
restore_ui_settings();
}
MainWindow::~MainWindow()
{
- GlobalSettings::remove_change_handler(this);
-
// Make sure we no longer hold any shared pointers to widgets after the
// destructor finishes (goes for sessions and sub windows alike)
// This view will be the main view if there's no main bar yet
v = make_shared<views::trace::View>(session,
(main_bar ? false : true), dock_main);
+#ifdef ENABLE_DECODE
+ if (type == views::ViewTypeDecoderOutput)
+ v = make_shared<views::decoder_output::View>(session, false, dock_main);
+#endif
if (!v)
return nullptr;
views::trace::View *tv =
qobject_cast<views::trace::View*>(v.get());
- tv->enable_colored_bg(settings.value(GlobalSettings::Key_View_ColoredBG).toBool());
- tv->enable_show_sampling_points(settings.value(GlobalSettings::Key_View_ShowSamplingPoints).toBool());
- tv->enable_show_analog_minor_grid(settings.value(GlobalSettings::Key_View_ShowAnalogMinorGrid).toBool());
-
if (!main_bar) {
/* Initial view, create the main bar */
main_bar = make_shared<MainBar>(session, this, tv);
}
}
-void MainWindow::on_setting_changed(const QString &key, const QVariant &value)
-{
- if (key == GlobalSettings::Key_View_ColoredBG)
- on_settingViewColoredBg_changed(value);
-
- if (key == GlobalSettings::Key_View_ShowSamplingPoints)
- on_settingViewShowSamplingPoints_changed(value);
-
- if (key == GlobalSettings::Key_View_ShowAnalogMinorGrid)
- on_settingViewShowAnalogMinorGrid_changed(value);
-}
-
void MainWindow::setup_ui()
{
setObjectName(QString::fromUtf8("MainWindow"));
settings.endGroup();
}
-void MainWindow::zoom_current_view(double steps)
-{
- shared_ptr<Session> session = get_tab_session(session_selector_.currentIndex());
-
- if (!session)
- return;
-
- shared_ptr<views::ViewBase> v = session.get()->main_view();
- views::trace::View *tv =
- qobject_cast<views::trace::View*>(v.get());
- tv->zoom(steps);
-}
-
shared_ptr<Session> MainWindow::get_tab_session(int index) const
{
// Find the session that belongs to the tab's main window
settings.setValue(GlobalSettings::Key_View_ShowAnalogMinorGrid, !state);
}
-void MainWindow::on_settingViewColoredBg_changed(const QVariant new_value)
-{
- bool state = new_value.toBool();
-
- for (auto& entry : view_docks_) {
- shared_ptr<views::ViewBase> viewbase = entry.second;
-
- // Only trace views have this setting
- views::trace::View* view =
- qobject_cast<views::trace::View*>(viewbase.get());
- if (view)
- view->enable_colored_bg(state);
- }
-}
-
-void MainWindow::on_settingViewShowSamplingPoints_changed(const QVariant new_value)
-{
- bool state = new_value.toBool();
-
- for (auto& entry : view_docks_) {
- shared_ptr<views::ViewBase> viewbase = entry.second;
-
- // Only trace views have this setting
- views::trace::View* view =
- qobject_cast<views::trace::View*>(viewbase.get());
- if (view)
- view->enable_show_sampling_points(state);
- }
-}
-
-void MainWindow::on_settingViewShowAnalogMinorGrid_changed(const QVariant new_value)
-{
- bool state = new_value.toBool();
-
- for (auto& entry : view_docks_) {
- shared_ptr<views::ViewBase> viewbase = entry.second;
-
- // Only trace views have this setting
- views::trace::View* view =
- qobject_cast<views::trace::View*>(viewbase.get());
- if (view)
- view->enable_show_analog_minor_grid(state);
- }
-}
-
void MainWindow::on_close_current_tab()
{
int tab = session_selector_.currentIndex();
#include <QTabWidget>
#include <QToolButton>
-#include "globalsettings.hpp"
#include "session.hpp"
#include "subwindows/subwindowbase.hpp"
#include "views/viewbase.hpp"
#endif
}
-class MainWindow : public QMainWindow, public GlobalSettingsInterface
+class MainWindow : public QMainWindow
{
Q_OBJECT
void save_sessions();
void restore_sessions();
- void on_setting_changed(const QString &key, const QVariant &value);
-
private:
void setup_ui();
void save_ui_settings();
void restore_ui_settings();
- void zoom_current_view(double steps);
- void scroll_to_start_or_end(bool start);
-
shared_ptr<Session> get_tab_session(int index) const;
void closeEvent(QCloseEvent *event);
void on_view_show_sampling_points_shortcut();
void on_view_show_analog_minor_grid_shortcut();
- void on_settingViewColoredBg_changed(const QVariant new_value);
- void on_settingViewShowSamplingPoints_changed(const QVariant new_value);
- void on_settingViewShowAnalogMinorGrid_changed(const QVariant new_value);
-
void on_close_current_tab();
private:
return make_pair(*left_time, *right_time);
}
-void View::enable_show_sampling_points(bool state)
-{
- (void)state;
-
- viewport_->update();
-}
-
-void View::enable_show_analog_minor_grid(bool state)
-{
- (void)state;
-
- viewport_->update();
-}
-
-void View::enable_colored_bg(bool state)
-{
- colored_bg_ = state;
- viewport_->update();
-}
-
bool View::colored_bg() const
{
return colored_bg_;
void View::on_setting_changed(const QString &key, const QVariant &value)
{
+ GlobalSettings settings;
+
+ if (key == GlobalSettings::Key_View_ColoredBG) {
+ colored_bg_ = settings.value(GlobalSettings::Key_View_ColoredBG).toBool();
+ viewport_->update();
+ }
+
+ if ((key == GlobalSettings::Key_View_ShowSamplingPoints) ||
+ (key == GlobalSettings::Key_View_ShowAnalogMinorGrid))
+ viewport_->update();
+
if (key == GlobalSettings::Key_View_TriggerIsZeroTime)
on_settingViewTriggerIsZeroTime_changed(value);
- if (key == GlobalSettings::Key_View_SnapDistance) {
- GlobalSettings settings;
+ if (key == GlobalSettings::Key_View_SnapDistance)
snap_distance_ = settings.value(GlobalSettings::Key_View_SnapDistance).toInt();
- }
}
void View::trigger_event(int segment_id, util::Timestamp location)