#include "devices/hardwaredevice.hpp"
#include "dialogs/settings.hpp"
#include "globalsettings.hpp"
-#include "subwindows/decoder_selector/subwindow.hpp"
#include "toolbars/mainbar.hpp"
#include "util.hpp"
#include "views/trace/view.hpp"
#include "views/trace/standardbar.hpp"
+#ifdef ENABLE_DECODE
+#include "subwindows/decoder_selector/subwindow.hpp"
+#endif
+
#include <libsigrokcxx/libsigrokcxx.hpp>
using std::dynamic_pointer_cast;
shared_ptr<subwindows::SubWindowBase> v;
QMainWindow *main_window = nullptr;
- for (auto entry : session_windows_)
+ for (auto& entry : session_windows_)
if (entry.first.get() == &session)
main_window = entry.second;
QString title = "";
switch (type) {
+#ifdef ENABLE_DECODE
case subwindows::SubWindowTypeDecoderSelector:
title = tr("Decoder Selector");
+ break;
+#endif
+ default:
+ break;
}
QDockWidget* dock = new QDockWidget(title, main_window);
QMainWindow *dock_main = new QMainWindow(dock);
dock_main->setWindowFlags(Qt::Widget); // Remove Qt::Window flag
+#ifdef ENABLE_DECODE
if (type == subwindows::SubWindowTypeDecoderSelector)
v = make_shared<subwindows::decoder_selector::SubWindow>(session, dock_main);
+#endif
if (!v)
return nullptr;
QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable);
QAbstractButton *close_btn =
- dock->findChildren<QAbstractButton*>
+ dock->findChildren<QAbstractButton*> // clazy:exclude=detaching-temporary
("qt_dockwidget_closebutton").front();
connect(close_btn, SIGNAL(clicked(bool)),
if (v->has_toolbar())
dock_main->addToolBar(v->create_toolbar(dock_main));
+ if (v->minimum_width() > 0)
+ dock->setMinimumSize(v->minimum_width(), 0);
+
return v;
}
}
void MainWindow::add_session_with_file(string open_file_name,
- string open_file_format)
+ string open_file_format, string open_setup_file_name)
{
shared_ptr<Session> session = add_session();
- session->load_init_file(open_file_name, open_file_format);
+ session->load_init_file(open_file_name, open_file_format, open_setup_file_name);
}
void MainWindow::add_default_session()
icon.addFile(QString(":/icons/pulseview.png"));
setWindowIcon(icon);
+ // Set up keyboard shortcuts that affect all views at once
view_sticky_scrolling_shortcut_ = new QShortcut(QKeySequence(Qt::Key_S), this, SLOT(on_view_sticky_scrolling_shortcut()));
view_sticky_scrolling_shortcut_->setAutoRepeat(false);
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
void MainWindow::on_show_decoder_selector(Session *session)
{
+#ifdef ENABLE_DECODE
// Close dock widget if it's already showing and return
- for (auto entry : sub_windows_) {
+ for (auto& entry : sub_windows_) {
QDockWidget* dock = entry.first;
- if (dynamic_pointer_cast<subwindows::decoder_selector::SubWindow>(entry.second)) {
+ shared_ptr<subwindows::SubWindowBase> decoder_selector =
+ dynamic_pointer_cast<subwindows::decoder_selector::SubWindow>(entry.second);
+
+ if (decoder_selector && (&decoder_selector->session() == session)) {
sub_windows_.erase(dock);
dock->close();
return;
}
// We get a pointer and need a reference
- for (shared_ptr<Session> s : sessions_)
+ for (shared_ptr<Session>& s : sessions_)
if (s.get() == session)
add_subwindow(subwindows::SubWindowTypeDecoderSelector, *s);
+#endif
}
void MainWindow::on_sub_window_close_clicked()