From 4e7757fdf3ef9055c8d2bcacbfb71ce661fc53fe Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Fri, 14 Apr 2023 16:00:43 +0800 Subject: [PATCH] Users can decide whether to translate parameter names of decoder --- DSView/pv/dialogs/decoderoptionsdlg.cpp | 61 ++++++++++++++++++++--- DSView/pv/dialogs/decoderoptionsdlg.h | 6 +++ DSView/pv/prop/binding/decoderoptions.cpp | 17 ++++++- DSView/pv/ui/langresource.h | 4 ++ DSView/pv/view/decodetrace.cpp | 34 ++++++++----- lang/cn/dlg.json | 4 ++ lang/en/dlg.json | 4 ++ 7 files changed, 108 insertions(+), 22 deletions(-) diff --git a/DSView/pv/dialogs/decoderoptionsdlg.cpp b/DSView/pv/dialogs/decoderoptionsdlg.cpp index 0b62c613..2413e173 100644 --- a/DSView/pv/dialogs/decoderoptionsdlg.cpp +++ b/DSView/pv/dialogs/decoderoptionsdlg.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include "../data/decoderstack.h" #include "../prop/binding/decoderoptions.h" @@ -47,6 +48,7 @@ #include "../ui/msgbox.h" #include "../ui/langresource.h" +#include "../config/appconfig.h" namespace pv { namespace dialogs { @@ -58,6 +60,7 @@ DecoderOptionsDlg::DecoderOptionsDlg(QWidget *parent) _cursor1 = 0; _cursor2 = 0; _contentHeight = 0; + _is_reload_form = false; } DecoderOptionsDlg::~DecoderOptionsDlg() @@ -163,7 +166,20 @@ void DecoderOptionsDlg::load_options_view() _end_comboBox->setCurrentIndex(dex2); update_decode_range(); // set default sample range - + + int h_ex2 = 0; + bool bLang = AppConfig::Instance()._appOptions.transDecoderDlg; + + if (LangResource::Instance()->is_lang_en() == false){ + QString trans_lable(L_S(STR_PAGE_DLG, S_ID(IDS_DLG_DECODER_IF_TRANS), "Translate param names")); + QCheckBox *ck_trans = new QCheckBox(); + ck_trans->setChecked(bLang); + connect(ck_trans, SIGNAL(released()), this, SLOT(on_trans_pramas())); + ck_trans->setStyleSheet("margin-left:60px"); + form->addRow(ck_trans, new QLabel(trans_lable)); + h_ex2 = 30; + } + //tr form->addRow(_start_comboBox, new QLabel( L_S(STR_PAGE_DLG, S_ID(IDS_DLG_CURSOR_FOR_DECODE_START), "The cursor for decode start time"))); @@ -186,7 +202,7 @@ void DecoderOptionsDlg::load_options_view() // scroll QSize tsize = dlg->sizeHint(); int w = tsize.width(); - int other_height = 190; + int other_height = 190 + h_ex2; _contentHeight += 10; #ifdef Q_OS_DARWIN @@ -360,6 +376,11 @@ void DecoderOptionsDlg::create_decoder_form( decoder_form->setFormAlignment(Qt::AlignLeft); decoder_form->setLabelAlignment(Qt::AlignLeft); decoder_form->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); + + bool bLang = AppConfig::Instance()._appOptions.transDecoderDlg; + if (LangResource::Instance()->is_lang_en()){ + bLang = false; + } // Add the mandatory channels for(l = decoder->channels; l; l = l->next) { @@ -367,8 +388,14 @@ void DecoderOptionsDlg::create_decoder_form( DsComboBox *const combo = create_probe_selector(parent, dec, pdch); const char *desc_str = NULL; - if (pdch->idn != NULL){ - desc_str = LangResource::Instance()->get_lang_text(STR_PAGE_DECODER, pdch->idn, pdch->desc); + const char *lang_str = NULL; + + if (pdch->idn != NULL && LangResource::Instance()->is_lang_en() == false){ + lang_str = LangResource::Instance()->get_lang_text(STR_PAGE_DECODER, pdch->idn, pdch->desc); + } + + if (lang_str != NULL && bLang){ + desc_str = lang_str; } else{ desc_str = pdch->desc; @@ -391,8 +418,14 @@ void DecoderOptionsDlg::create_decoder_form( DsComboBox *const combo = create_probe_selector(parent, dec, pdch); const char *desc_str = NULL; - if (pdch->idn != NULL){ - desc_str = LangResource::Instance()->get_lang_text(STR_PAGE_DECODER, pdch->idn, pdch->desc); + const char *lang_str = NULL; + + if (pdch->idn != NULL && LangResource::Instance()->is_lang_en() == false){ + lang_str = LangResource::Instance()->get_lang_text(STR_PAGE_DECODER, pdch->idn, pdch->desc); + } + + if (lang_str != NULL && bLang){ + desc_str = lang_str; } else{ desc_str = pdch->desc; @@ -417,7 +450,8 @@ void DecoderOptionsDlg::create_decoder_form( auto group = new pv::widgets::DecoderGroupBox(_trace->decoder(), dec, decoder_form, - parent); + parent); + form->addRow(group); } @@ -473,7 +507,18 @@ void DecoderOptionsDlg::on_accept() } this->accept(); -} +} + +void DecoderOptionsDlg::on_trans_pramas() +{ + QCheckBox *ck_box = dynamic_cast(sender()); + assert(ck_box); + + AppConfig::Instance()._appOptions.transDecoderDlg = ck_box->isChecked(); + AppConfig::Instance().SaveApp(); + _is_reload_form = true; + this->close(); +} }//dialogs }//pv diff --git a/DSView/pv/dialogs/decoderoptionsdlg.h b/DSView/pv/dialogs/decoderoptionsdlg.h index ff0a77a4..0274c736 100644 --- a/DSView/pv/dialogs/decoderoptionsdlg.h +++ b/DSView/pv/dialogs/decoderoptionsdlg.h @@ -86,6 +86,10 @@ public: void load_options(view::DecodeTrace *trace); + inline bool is_reload_form(){ + return _is_reload_form; + } + private: void load_options_view(); @@ -105,6 +109,7 @@ private slots: void on_probe_selected(int); void on_region_set(int index); void on_accept(); + void on_trans_pramas(); private: std::vector _bindings; @@ -116,6 +121,7 @@ private: int _contentHeight; std::vector _probe_selectors; + bool _is_reload_form; }; }//dialogs diff --git a/DSView/pv/prop/binding/decoderoptions.cpp b/DSView/pv/prop/binding/decoderoptions.cpp index ccbff9ee..2cf1d27c 100644 --- a/DSView/pv/prop/binding/decoderoptions.cpp +++ b/DSView/pv/prop/binding/decoderoptions.cpp @@ -32,6 +32,7 @@ #include "../int.h" #include "../string.h" #include "../../ui/langresource.h" +#include "../../config/appconfig.h" using namespace boost; using namespace std; @@ -50,14 +51,26 @@ DecoderOptions::DecoderOptions(pv::data::DecoderStack* decoder_stack, data::deco const srd_decoder *const dec = _decoder->decoder(); assert(dec); + bool bLang = AppConfig::Instance()._appOptions.transDecoderDlg; + + if (LangResource::Instance()->is_lang_en()){ + bLang = false; + } + for (GSList *l = dec->options; l; l = l->next) { const srd_decoder_option *const opt = (srd_decoder_option*)l->data; const char *desc_str = NULL; - if (opt->idn != NULL){ - desc_str = LangResource::Instance()->get_lang_text(STR_PAGE_DECODER, opt->idn, opt->desc); + const char *lang_str = NULL; + + if (opt->idn != NULL && LangResource::Instance()->is_lang_en() == false){ + lang_str = LangResource::Instance()->get_lang_text(STR_PAGE_DECODER, opt->idn, opt->desc); + } + + if (lang_str != NULL && bLang){ + desc_str = lang_str; } else{ desc_str = opt->desc; diff --git a/DSView/pv/ui/langresource.h b/DSView/pv/ui/langresource.h index dde228a5..d835617d 100644 --- a/DSView/pv/ui/langresource.h +++ b/DSView/pv/ui/langresource.h @@ -86,6 +86,10 @@ public: bool is_new_decoder(const char *decoder_id); void reload_dynamic(); void release_dynamic(); + + inline bool is_lang_en(){ + return _cur_lang == 31; + } private: const char *get_lang_key(int lang); diff --git a/DSView/pv/view/decodetrace.cpp b/DSView/pv/view/decodetrace.cpp index 8b68ed7d..3d3aa376 100644 --- a/DSView/pv/view/decodetrace.cpp +++ b/DSView/pv/view/decodetrace.cpp @@ -670,24 +670,34 @@ void* DecodeTrace::get_key_handel() bool DecodeTrace::create_popup(bool isnew) { int ret = false; //setting have changed flag - QWidget *top = AppControl::Instance()->GetTopWindow(); - dialogs::DecoderOptionsDlg dlg(top); - dlg.set_cursor_range(_decode_cursor1, _decode_cursor2); - dlg.load_options(this); - if (QDialog::Accepted == dlg.exec()) + while (true) { - for(auto dec : _decoder_stack->stack()) + QWidget *top = AppControl::Instance()->GetTopWindow(); + dialogs::DecoderOptionsDlg dlg(top); + dlg.set_cursor_range(_decode_cursor1, _decode_cursor2); + dlg.load_options(this); + + int dlg_ret = dlg.exec(); + + if (QDialog::Accepted == dlg_ret) { - if (dec->commit() || _decoder_stack->options_changed()) { - _decoder_stack->set_options_changed(true); - _decode_start = dec->decode_start(); - _decode_end = dec->decode_end(); - ret = true; + for(auto dec : _decoder_stack->stack()) + { + if (dec->commit() || _decoder_stack->options_changed()) { + _decoder_stack->set_options_changed(true); + _decode_start = dec->decode_start(); + _decode_end = dec->decode_end(); + ret = true; + } } + + dlg.get_cursor_range(_decode_cursor1, _decode_cursor2); } - dlg.get_cursor_range(_decode_cursor1, _decode_cursor2); + if (QDialog::Accepted == dlg_ret || dlg.is_reload_form() == false){ + break; + } } return ret; diff --git a/lang/cn/dlg.json b/lang/cn/dlg.json index 10d5e5be..d4923e0e 100644 --- a/lang/cn/dlg.json +++ b/lang/cn/dlg.json @@ -662,5 +662,9 @@ { "id": "IDS_DLG_PATH_NAME", "text": "路径" + }, + { + "id": "IDS_DLG_DECODER_IF_TRANS", + "text": "翻译参数名称" } ] \ No newline at end of file diff --git a/lang/en/dlg.json b/lang/en/dlg.json index 6f856f52..77ad8124 100644 --- a/lang/en/dlg.json +++ b/lang/en/dlg.json @@ -662,5 +662,9 @@ { "id": "IDS_DLG_PATH_NAME", "text": "path" + }, + { + "id": "IDS_DLG_DECODER_IF_TRANS", + "text": "Translate param names" } ] \ No newline at end of file