From b1438495d44786ab42faff80a8a53cd04b1bf41a Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Mon, 13 Mar 2023 14:46:47 +0800 Subject: [PATCH] fix: The status of The hot key and toolbar is not same --- DSView/pv/config/appconfig.cpp | 16 +-- DSView/pv/config/appconfig.h | 12 ++- DSView/pv/dock/dsotriggerdock.cpp | 3 +- DSView/pv/mainwindow.cpp | 47 ++++----- DSView/pv/toolbars/trigbar.cpp | 160 +++++++++++------------------- DSView/pv/toolbars/trigbar.h | 20 +--- 6 files changed, 96 insertions(+), 162 deletions(-) diff --git a/DSView/pv/config/appconfig.cpp b/DSView/pv/config/appconfig.cpp index 78ad1470..ec3f895a 100644 --- a/DSView/pv/config/appconfig.cpp +++ b/DSView/pv/config/appconfig.cpp @@ -123,19 +123,19 @@ void _saveApp(AppOptions &o, QSettings &st){ void _loadDockOptions(DockOptions &o, QSettings &st, const char *group){ st.beginGroup(group); - getFiled("decodeDoc", st, o.decodeDoc, false); - getFiled("triggerDoc", st, o.triggerDoc, false); - getFiled("measureDoc", st, o.measureDoc, false); - getFiled("searchDoc", st, o.searchDoc, false); + getFiled("decodeDoc", st, o.decodeDock, false); + getFiled("triggerDoc", st, o.triggerDock, false); + getFiled("measureDoc", st, o.measureDock, false); + getFiled("searchDoc", st, o.searchDock, false); st.endGroup(); } void _saveDockOptions(DockOptions &o, QSettings &st, const char *group){ st.beginGroup(group); - setFiled("decodeDoc", st, o.decodeDoc); - setFiled("triggerDoc", st, o.triggerDoc); - setFiled("measureDoc", st, o.measureDoc); - setFiled("searchDoc", st, o.searchDoc); + setFiled("decodeDoc", st, o.decodeDock); + setFiled("triggerDoc", st, o.triggerDock); + setFiled("measureDoc", st, o.measureDock); + setFiled("searchDoc", st, o.searchDock); st.endGroup(); } diff --git a/DSView/pv/config/appconfig.h b/DSView/pv/config/appconfig.h index 49eca089..78f49da3 100644 --- a/DSView/pv/config/appconfig.h +++ b/DSView/pv/config/appconfig.h @@ -63,11 +63,13 @@ struct AppOptions std::vector m_protocolFormats; }; - struct DockOptions{ - bool decodeDoc; - bool triggerDoc; - bool measureDoc; - bool searchDoc; + // The dock pannel open status. + struct DockOptions + { + bool decodeDock; + bool triggerDock; + bool measureDock; + bool searchDock; }; struct FrameOptions diff --git a/DSView/pv/dock/dsotriggerdock.cpp b/DSView/pv/dock/dsotriggerdock.cpp index b1c318fd..8ef51545 100644 --- a/DSView/pv/dock/dsotriggerdock.cpp +++ b/DSView/pv/dock/dsotriggerdock.cpp @@ -366,7 +366,8 @@ void DsoTriggerDock::init() _margin_slider->setDisabled(true); _channel_comboBox->setDisabled(true); return; - } else { + } + else { for(QAbstractButton * btn : _source_group->buttons()) btn->setDisabled(false); diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index e89f6805..df009756 100644 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -476,7 +476,6 @@ namespace pv _trigger_dock->setVisible(false); _dso_trigger_dock->setVisible(visible); } - _trig_bar->update_trig_btn(visible); } void MainWindow::on_measure(bool visible) @@ -1078,23 +1077,9 @@ namespace pv } } - if (_device_agent->get_work_mode() != DSO) - { - _dso_trigger_dock->setVisible(false); - _trig_bar->update_trig_btn(_trigger_dock->isVisible()); + if (_device_agent->have_instance()){ + _trig_bar->reload(); } - else - { - _trigger_dock->setVisible(false); - _trig_bar->update_trig_btn(_dso_trigger_dock->isVisible()); - } - if (_device_agent->get_work_mode() != LOGIC) - { - on_protocol(false); - } - _trig_bar->update_protocol_btn(_protocol_dock->isVisible()); - _trig_bar->update_measure_btn(_measure_dock->isVisible()); - _trig_bar->update_search_btn(_search_dock->isVisible()); } bool MainWindow::eventFilter(QObject *object, QEvent *event) @@ -1127,31 +1112,31 @@ namespace pv case Qt::Key_S: _sampling_bar->run_or_stop(); break; + case Qt::Key_I: _sampling_bar->run_or_stop_instant(); break; + case Qt::Key_T: - if (_device_agent->get_work_mode() == DSO) - on_trigger(!_dso_trigger_dock->isVisible()); - else if (_device_agent->get_work_mode() == LOGIC) - on_trigger(!_trigger_dock->isVisible()); + _trig_bar->trigger_clicked(); break; case Qt::Key_D: - if (_device_agent->get_work_mode() == LOGIC) - on_protocol(!_protocol_dock->isVisible()); + _trig_bar->protocol_clicked(); break; case Qt::Key_M: - on_measure(!_measure_dock->isVisible()); + _trig_bar->measure_clicked(); break; + case Qt::Key_R: - if (_device_agent->get_work_mode() == LOGIC) - on_search(!_search_dock->isVisible()); + _trig_bar->search_clicked(); break; + case Qt::Key_O: _sampling_bar->config_device(); break; + case Qt::Key_PageUp: _view->set_scale_offset(_view->scale(), _view->offset() - _view->get_view_width()); @@ -1161,12 +1146,15 @@ namespace pv _view->offset() + _view->get_view_width()); break; + case Qt::Key_Left: _view->zoom(1); break; + case Qt::Key_Right: _view->zoom(-1); break; + case Qt::Key_0: for (auto s : sigs) { @@ -1182,6 +1170,7 @@ namespace pv _view->setFocus(); update(); break; + case Qt::Key_1: for (auto s : sigs) { @@ -1197,6 +1186,7 @@ namespace pv _view->setFocus(); update(); break; + case Qt::Key_Up: for (auto s : sigs) { @@ -1211,6 +1201,7 @@ namespace pv } } break; + case Qt::Key_Down: for (auto s : sigs) { @@ -1225,6 +1216,7 @@ namespace pv } } break; + default: QWidget::keyPressEvent((QKeyEvent *)event); } @@ -1453,8 +1445,7 @@ namespace pv _view->set_device(); _trigger_widget->init(); _trigger_widget->device_updated(); - _trig_bar->reload(); - _trig_bar->restore_status(); + _trig_bar->reload(); _dso_trigger_widget->init(); _measure_widget->reload(); } diff --git a/DSView/pv/toolbars/trigbar.cpp b/DSView/pv/toolbars/trigbar.cpp index eda0c185..76f732b7 100644 --- a/DSView/pv/toolbars/trigbar.cpp +++ b/DSView/pv/toolbars/trigbar.cpp @@ -31,8 +31,8 @@ #include "../dialogs/mathoptions.h" #include "../view/trace.h" #include "../dialogs/applicationpardlg.h" -#include "../config/appconfig.h" #include "../ui/langresource.h" +#include "../config/appconfig.h" namespace pv { namespace toolbars { @@ -53,10 +53,8 @@ TrigBar::TrigBar(SigSession *session, QWidget *parent) : setMovable(false); setContentsMargins(0,0,0,0); - _trig_button.setCheckable(true); - - _protocol_button.setCheckable(true); - + _trig_button.setCheckable(true); + _protocol_button.setCheckable(true); _measure_button.setCheckable(true); _search_button.setCheckable(true); @@ -178,94 +176,63 @@ void TrigBar::reStyle() _dark_style->setIcon(QIcon(iconPath+"/dark.svg")); _light_style->setIcon(QIcon(iconPath+"/light.svg")); - _action_dispalyOptions->setIcon(QIcon(iconPath+"/gear.svg")); - - AppConfig &app = AppConfig::Instance(); + _action_dispalyOptions->setIcon(QIcon(iconPath+"/gear.svg")); + AppConfig &app = AppConfig::Instance(); QString icon_fname = iconPath +"/"+ app._frameOptions.style +".svg"; _themes->setIcon(QIcon(icon_fname)); } void TrigBar::protocol_clicked() { - sig_protocol(_protocol_button.isChecked()); - - DockOptions *opt = getDockOptions(); - opt->decodeDoc = _protocol_button.isChecked(); - AppConfig::Instance().SaveFrame(); + if (_protocol_button.isVisible()) + { + DockOptions *opt = getDockOptions(); + opt->decodeDock = !opt->decodeDock; + sig_protocol(opt->decodeDock); + _protocol_button.setChecked(opt->decodeDock); + AppConfig::Instance().SaveFrame(); + } } void TrigBar::trigger_clicked() { - sig_trigger(_trig_button.isChecked()); - - DockOptions *opt = getDockOptions(); - opt->triggerDoc = _trig_button.isChecked(); - AppConfig::Instance().SaveFrame(); -} - -void TrigBar::update_trig_btn(bool checked) -{ - _trig_button.setChecked(checked); -} - -void TrigBar::update_protocol_btn(bool checked) -{ - _protocol_button.setChecked(checked); -} - -void TrigBar::update_measure_btn(bool checked) -{ - _measure_button.setChecked(checked); -} - -void TrigBar::update_search_btn(bool checked) -{ - _search_button.setChecked(checked); + if (_trig_button.isVisible()) + { + DockOptions *opt = getDockOptions(); + opt->triggerDock = !opt->triggerDock; + sig_trigger(opt->triggerDock); + _trig_button.setChecked(opt->triggerDock); + AppConfig::Instance().SaveFrame(); + } } void TrigBar::measure_clicked() -{ - sig_measure(_measure_button.isChecked()); - - DockOptions *opt = getDockOptions(); - opt->measureDoc = _measure_button.isChecked(); - AppConfig::Instance().SaveFrame(); +{ + if (_measure_button.isVisible()) + { + DockOptions *opt = getDockOptions(); + opt->measureDock = !opt->measureDock; + sig_measure(opt->measureDock); + _measure_button.setChecked(opt->measureDock); + AppConfig::Instance().SaveFrame(); + } } void TrigBar::search_clicked() { - sig_search(_search_button.isChecked()); - - DockOptions *opt = getDockOptions(); - opt->searchDoc = _search_button.isChecked(); - AppConfig::Instance().SaveFrame(); -} - -void TrigBar::close_all() -{ - if (_trig_button.isChecked()) { - _trig_button.setChecked(false); - sig_trigger(false); - } - if (_protocol_button.isChecked()) { - _protocol_button.setChecked(false); - sig_protocol(false); - } - if (_measure_button.isChecked()) { - _measure_button.setChecked(false); - sig_measure(false); - } - if(_search_button.isChecked()) { - _search_button.setChecked(false); - sig_search(false); - } + if (_search_button.isVisible()) + { + DockOptions *opt = getDockOptions(); + opt->searchDock = !opt->searchDock; + sig_search(opt->searchDock); + _search_button.setChecked(opt->searchDock); + AppConfig::Instance().SaveFrame(); + } } void TrigBar::reload() { - close_all(); - int mode = _session->get_device()->get_work_mode(); if (mode == LOGIC) { @@ -296,6 +263,18 @@ void TrigBar::reload() _action_dispalyOptions->setVisible(false); } + DockOptions *opt = getDockOptions(); + + sig_protocol(_protocol_action->isVisible() && opt->decodeDock); + sig_trigger(_trig_action->isVisible() && opt->triggerDock); + sig_measure(_measure_action->isVisible() && opt->measureDock); + sig_search(_search_action->isVisible() && opt->searchDock); + + _protocol_action->setChecked(opt->decodeDock); + _trig_action->setChecked(opt->triggerDock); + _measure_action->setChecked(opt->measureDock); + _search_action->setChecked(opt->searchDock); + update_view_status(); update(); } @@ -332,43 +311,16 @@ void TrigBar::on_actionLissajous_triggered() lissajous_dlg.exec(); } - void TrigBar::on_application_param(){ - // pv::dialogs::MathOptions math_dlg(_session, this); math_dlg.exec(); return; - - pv::dialogs::ApplicationParamDlg dlg; - dlg.ShowDlg(this); + void TrigBar::on_application_param() + { + pv::dialogs::ApplicationParamDlg dlg; + dlg.ShowDlg(this); } - -void TrigBar::restore_status() -{ - DockOptions *opt = getDockOptions(); - - if (opt->decodeDoc){ - _protocol_button.setChecked(true); - sig_protocol(true); - } - - if (opt->triggerDoc){ - _trig_button.setChecked(true); - sig_trigger(true); - } - - if (opt->measureDoc){ - _measure_button.setChecked(true); - sig_measure(true); - } - - if (opt->searchDoc){ - _search_button.setChecked(true); - sig_search(true); - } -} - DockOptions* TrigBar::getDockOptions() { - AppConfig &app = AppConfig::Instance(); - int mode = _session->get_device()->get_work_mode(); + AppConfig &app = AppConfig::Instance(); + int mode = _session->get_device()->get_work_mode(); if (mode == LOGIC) return &app._frameOptions._logicDock; diff --git a/DSView/pv/toolbars/trigbar.h b/DSView/pv/toolbars/trigbar.h index b3f34673..4b3e887e 100644 --- a/DSView/pv/toolbars/trigbar.h +++ b/DSView/pv/toolbars/trigbar.h @@ -27,7 +27,6 @@ #include #include #include - class DockOptions; @@ -45,8 +44,6 @@ class TrigBar : public QToolBar public: explicit TrigBar(SigSession *session, QWidget *parent = 0); - - void close_all(); void reload(); void update_view_status(); @@ -54,7 +51,7 @@ private: void changeEvent(QEvent *event); void retranslateUi(); void reStyle(); - DockOptions* getDockOptions(); + DockOptions* getDockOptions(); signals: void sig_setTheme(QString style); @@ -68,6 +65,9 @@ private slots: void on_actionDark_triggered(); void on_actionLight_triggered(); void on_actionLissajous_triggered(); + void on_actionFft_triggered(); + void on_actionMath_triggered(); + void on_application_param(); public slots: void protocol_clicked(); @@ -75,18 +75,6 @@ public slots: void measure_clicked(); void search_clicked(); - void update_trig_btn(bool checked); - void update_protocol_btn(bool checked); - void update_measure_btn(bool checked); - void update_search_btn(bool checked); - - void on_actionFft_triggered(); - void on_actionMath_triggered(); - void on_application_param(); - -public: - void restore_status(); - private: SigSession *_session; bool _enable;