15 typedef std::shared_ptr<EcGuiSdo> Ptr;
21 void set_expert_user();
22 void restart_ec_gui_sdo(EcIface::Ptr client,SRD_SDO sdo_map);
25 void OnMouseClicked(QTreeWidgetItem* item,
int column);
26 void OnItemExapanded(QTreeWidgetItem* item);
27 void SdoSearchChanged();
28 void onSaveSdoReleased();
29 void onRescanSdoReleased();
30 void onRestoreSdoReleased();
31 void onLoadSdoReleased();
32 void onSaveFileSdoReleased();
33 void onOpenFileSdoReleased();
34 void onYesToAllSdoReleased();
35 void onNoToAllSdoReleased();
38 bool eventFilter( QObject* o, QEvent* e );
42 QTreeWidget *_sdo_tree_wid;
43 QTreeWidgetItem *_sdo_item;
44 QLineEdit *_sdo_search;
45 QDialogButtonBox *_sdo_manager,*_sdo_flash_manager;
47 std::map<uint32_t,std::map<std::string,QTreeWidgetItem *>> _sdo_item_map;
49 std::string _old_sdo_value;
51 QString _sdo_search_req;
52 Qt::CheckState _esc_id_state=Qt::Unchecked;
56 bool check_client_setup();
58 void flash_cmd(
int value);
61 void cmd_feedback(
bool try_cmd,
bool cmd_ok,QString cmd_name);
71 _sdo_wizard_tree =
new QTreeWidget();
72 _sdo_wizard_tree->setColumnCount(2);
73 _sdo_wizard_tree->setHeaderLabels({
"SDO Name",
"SDO Value"});
74 _sdo_wizard_tree->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
75 _sdo_wizard_tree->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
76 _sdo_wizard_tree->setMinimumSize(600,600);
78 auto sdo_sel_manager =
new QDialogButtonBox(QDialogButtonBox::YesToAll| QDialogButtonBox::NoToAll);
79 sdo_sel_manager->setLayoutDirection(Qt::RightToLeft);
80 auto yes_all_btn = sdo_sel_manager->button(QDialogButtonBox::YesToAll);
81 connect(yes_all_btn, &QPushButton::released,
this, &EcGuiSdoWizard::onYesToAllSdoReleased);
82 auto no_all_btn = sdo_sel_manager->button(QDialogButtonBox::NoToAll);
83 connect(no_all_btn, &QPushButton::released,
this, &EcGuiSdoWizard::onNoToAllSdoReleased);
85 QWizardPage *sdo_wizard_page =
new QWizardPage();
86 sdo_wizard_page->setTitle(
"Calibration Wizard");
87 QVBoxLayout *layout =
new QVBoxLayout;
88 layout->addWidget(_sdo_wizard_tree);
89 layout->addWidget(sdo_sel_manager);
91 QHBoxLayout *layout_page =
new QHBoxLayout;
92 QLabel *calib_image=
new QLabel;
93 QPixmap calib_logo_pic;
94 calib_logo_pic.load(
":/icon/calibration.png");
95 calib_image->setPixmap(calib_logo_pic);
96 layout_page->addWidget(calib_image);
97 layout_page->addLayout(layout);
98 sdo_wizard_page->setLayout(layout_page);
99 _sdo_wizard.addPage(sdo_wizard_page);
100 _sdo_wizard.setFixedSize(layout_page->geometry().width(),layout_page->geometry().height());
103 WR_SDO run_sdo_wizard(){
104 _write_new_sdo.clear();
106 if(_sdo_wizard.exec()){
110 return _write_new_sdo;
117 void onYesToAllSdoReleased(){
118 _sdo_check_state=Qt::Checked;
122 void onNoToAllSdoReleased(){
123 _sdo_check_state=Qt::Unchecked;
127 QTreeWidget *_sdo_wizard_tree;
129 Qt::CheckState _sdo_check_state=Qt::Unchecked;
130 WR_SDO _write_new_sdo;
133 QFileDialog dialog(
this);
134 dialog.setFileMode(QFileDialog::AnyFile);
135 dialog.setNameFilter(tr(
".csv (*.csv)"));
136 QStringList fileNames;
138 fileNames = dialog.selectedFiles();
140 if(!fileNames.empty()){
141 QFile *sdo_file=
new QFile(fileNames[0]);
142 if(sdo_file->open(QFile::ReadOnly)){
143 QTextStream in(sdo_file);
145 QStringList split_line = in.readLine().split(
"\t");
146 add_content(split_line);
155 void add_content(QStringList &list){
158 QTreeWidgetItem * sdo_wizard_item =
new QTreeWidgetItem();
159 for(
auto &value:list){
160 sdo_wizard_item->setText(i,value);
161 sdo_wizard_item->setFlags(sdo_wizard_item->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
162 sdo_wizard_item->setCheckState(0,Qt::Unchecked);
165 _sdo_wizard_tree->addTopLevelItem(sdo_wizard_item);
170 for(
int i=0;i<_sdo_wizard_tree->topLevelItemCount();i++){
171 auto topLevel =_sdo_wizard_tree->topLevelItem(i);
172 topLevel->setCheckState(0,_sdo_check_state);
175 void fill_write_sdo(){
176 for(
int i=0;i<_sdo_wizard_tree->topLevelItemCount();i++){
177 auto topLevel =_sdo_wizard_tree->topLevelItem(i);
178 if(topLevel->checkState(0)==Qt::Checked){
179 std::string sdo_name = topLevel->text(0).toStdString();
180 std::string sdo_value = topLevel->text(1).toStdString();
181 _write_new_sdo.push_back(std::make_tuple(sdo_name,sdo_value));