if (!open_file_name.empty()) {
shared_ptr<Session> session = add_session();
- session->main_bar()->load_init_file(open_file_name, open_file_format);
+ session->load_init_file(open_file_name, open_file_format);
}
// Add empty default session if there aren't any sessions
}
// ...and if there isn't any, just use demo then
- session->main_bar()->select_device(other_device ?
- other_device : demo_device);
+ session->select_device(other_device ? other_device : demo_device);
}
}
int index = session_selector_.addTab(window, name);
session_selector_.setCurrentIndex(index);
+ last_focused_session_ = session;
window->setDockNestingEnabled(true);
session_windows_.erase(session);
+ if (last_focused_session_ == session)
+ last_focused_session_.reset();
+
sessions_.remove_if([&](shared_ptr<Session> s) {
return s == session; });
run_stop_button_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
run_stop_button_->setShortcut(QKeySequence(Qt::Key_Space));
+ settings_button_ = new QToolButton();
+ settings_button_->setIcon(QIcon::fromTheme("configure",
+ QIcon(":/icons/configure.png")));
+ settings_button_->setAutoRaise(true);
+
+ QFrame *separator1 = new QFrame();
+ separator1->setFrameStyle(QFrame::VLine | QFrame::Raised);
+ QFrame *separator2 = new QFrame();
+ separator2->setFrameStyle(QFrame::VLine | QFrame::Raised);
+
QHBoxLayout* layout = new QHBoxLayout();
layout->setContentsMargins(2, 2, 2, 2);
layout->addWidget(new_session_button_);
+ layout->addWidget(separator1);
layout->addWidget(run_stop_button_);
+ layout->addWidget(separator2);
+ layout->addWidget(settings_button_);
static_tab_widget_ = new QWidget();
static_tab_widget_->setLayout(layout);
void MainWindow::on_focus_changed()
{
- static shared_ptr<Session> prev_session;
-
shared_ptr<views::ViewBase> view = get_active_view();
if (view) {
for (shared_ptr<Session> session : sessions_) {
if (session->has_view(view)) {
- if (session != prev_session) {
+ if (session != last_focused_session_) {
// Activate correct tab if necessary
shared_ptr<Session> tab_session = get_tab_session(
session_selector_.currentIndex());
on_focused_session_changed(session);
}
- prev_session = session;
break;
}
}
void MainWindow::on_focused_session_changed(shared_ptr<Session> session)
{
+ last_focused_session_ = session;
+
setWindowTitle(session->name() + " - " + WindowTitle);
// Update the state of the run/stop button, too
void MainWindow::on_run_stop_clicked()
{
- Session &session = get_active_view()->session();
+ shared_ptr<Session> session = last_focused_session_;
+
+ if (!session)
+ return;
- switch (session.get_capture_state()) {
+ switch (session->get_capture_state()) {
case Session::Stopped:
- session.start_capture([&](QString message) {
+ session->start_capture([&](QString message) {
session_error("Capture failed", message); });
break;
case Session::AwaitingTrigger:
case Session::Running:
- session.stop_capture();
+ session->stop_capture();
break;
}
}
}
}
- // Refresh window title if the affected session has focus
- shared_ptr<views::ViewBase> view = get_active_view();
+ // Update the tab widget by finding the main window and the tab from that
+ for (auto entry : session_windows_)
+ if (entry.first.get() == session) {
+ QMainWindow *window = entry.second;
+ const int index = session_selector_.indexOf(window);
+ session_selector_.setTabText(index, session->name());
+ }
- if (view && session->has_view(view))
+ // Refresh window title if the affected session has focus
+ if (session == last_focused_session_.get())
setWindowTitle(session->name() + " - " + WindowTitle);
}
// Ignore if caller is not the currently focused session
// unless there is only one session
- if (sessions_.size() > 1) {
- Session &focused_session = get_active_view()->session();
-
- if (caller != &focused_session)
- return;
- }
+ if ((sessions_.size() > 1) && (caller != last_focused_session_.get()))
+ return;
int state = caller->get_capture_state();