Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions QtPMbrowser/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ qt_add_executable(QtPMbrowser WIN32 MACOSX_BUNDLE
DlgExportMetadata.h DlgExportMetadata.cpp
main.cpp
pmbrowserwindow.cpp pmbrowserwindow.h
"PMparametersModel.cpp" "PMparametersModel.h"
renderarea.cpp renderarea.h

DlgPreferences.cpp
Expand Down
40 changes: 11 additions & 29 deletions QtPMbrowser/DlgSelectParameters.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2020 - 2024 Christian R. Halaszovich
Copyright 2020 - 2025 Christian R. Halaszovich

This file is part of PMbrowser.

Expand All @@ -26,37 +26,19 @@ DlgSelectParameters::DlgSelectParameters(QWidget *parent)
ui = new Ui::DlgSelectParameters();
ui->setupUi(this);

setScrollArea(ui->scrollAreaRoot, v_root, hkLib::parametersRoot);
setScrollArea(ui->scrollAreaGrp, v_grp, hkLib::parametersGroup);
setScrollArea(ui->scrollAreaSer, v_ser, hkLib::parametersSeries);
setScrollArea(ui->scrollAreaSwp, v_swp, hkLib::parametersSweep);
setScrollArea(ui->scrollAreaTr, v_tr, hkLib::parametersTrace);
setScrollArea(ui->scrollAreaAmp, v_amp, hkLib::parametersAmpplifierState);
setScrollArea(ui->scrollAreaStim, v_stim_stim, hkLib::parametersStimulation);
setScrollArea(ui->scrollAreaStimChannel, v_stim_ch, hkLib::parametersChannel);
setScrollArea(ui->scrollAreaStimSegment, v_stim_seg, hkLib::parametersStimSegment);
ui->tableViewRoot->setModel(&m_root);
ui->tableViewGrp->setModel(&m_grp);
ui->tableViewSer->setModel(&m_ser);
ui->tableViewSwp->setModel(&m_swp);
ui->tableViewTrace->setModel(&m_tr);
ui->tableViewAmp->setModel(&m_amp);
ui->tableViewStim->setModel(&m_stim_stim);
ui->tableViewChannel->setModel(&m_stim_ch);
ui->tableViewSegment->setModel(&m_stim_seg);

}

DlgSelectParameters::~DlgSelectParameters()
{
delete ui;
}

void DlgSelectParameters::accept()
{
storeParams();
QDialog::accept();
}

void DlgSelectParameters::storeParams()
{
readSelections(v_root, hkLib::parametersRoot);
readSelections(v_grp, hkLib::parametersGroup);
readSelections(v_ser, hkLib::parametersSeries);
readSelections(v_swp, hkLib::parametersSweep);
readSelections(v_tr, hkLib::parametersTrace);
readSelections(v_amp, hkLib::parametersAmpplifierState);
readSelections(v_stim_stim, hkLib::parametersStimulation);
readSelections(v_stim_ch, hkLib::parametersChannel);
readSelections(v_stim_seg, hkLib::parametersStimSegment);
}
76 changes: 11 additions & 65 deletions QtPMbrowser/DlgSelectParameters.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2020 - 2024 Christian R. Halaszovich
Copyright 2020 - 2025 Christian R. Halaszovich

This file is part of PMbrowser.

Expand Down Expand Up @@ -27,83 +27,29 @@
#include <QScrollArea>
#include <vector>
#include "PMparameters.h"
#include "PMparametersModel.h"

namespace Ui { class DlgSelectParameters; }

class DlgSelectParameters : public QDialog
{
Q_OBJECT

struct chk_row {
QCheckBox do_export, do_print;
QLabel label;
};

public:
DlgSelectParameters(QWidget *parent = Q_NULLPTR);
~DlgSelectParameters();
void accept() override;
void storeParams();

private:
static constexpr int chkbox_width = 40;
template<std::size_t Nrows> QGridLayout* createGrid(std::vector<chk_row>& v,
const std::array<hkLib::PMparameter, Nrows>& ar)
{
auto grid = new QGridLayout;
//v.resize(Nrows);
for (int i = 0; i < int(ar.size()); ++i) {
auto& row = v.at(i);
auto* chk1 = &row.do_export;
chk1->setChecked(ar[i].exportIBW);
chk1->setMinimumWidth(chkbox_width);
chk1->setMaximumWidth(chkbox_width);
auto* chk2 = &row.do_print;
chk2->setChecked(ar[i].print);
chk2->setMinimumWidth(chkbox_width);
chk2->setMaximumWidth(chkbox_width);
auto* lb = &row.label;
lb->setText(ar[i].name);
grid->addWidget(chk1, i, 0);// , Qt::AlignLeft | Qt::AlignVCenter);
grid->addWidget(chk2, i, 1);// , Qt::AlignLeft | Qt::AlignVCenter);
grid->addWidget(lb, i, 2);// , Qt::AlignLeft | Qt::AlignVCenter);
}
grid->addItem(new QSpacerItem(0, 0), static_cast<int>(ar.size()), 0, 1, 3);
grid->setRowStretch(static_cast<int>(ar.size()), 1);
grid->setColumnStretch(0, 0);
grid->setColumnStretch(1, 0);
grid->setColumnStretch(2, 1);
grid->setHorizontalSpacing(1);
return grid;
}

template<std::size_t Nrows> void setScrollArea(QScrollArea* area,
std::vector<chk_row>& v,
const std::array<hkLib::PMparameter, Nrows>& ar) {
auto w = new QWidget;
w->setLayout(createGrid(v, ar));
w->setBackgroundRole(QPalette::Base);
area->setWidget(w);
}

template<std::size_t Nrows> void readSelections(const std::vector<chk_row>& v,
std::array<hkLib::PMparameter, Nrows>& ar)
{
for (std::size_t i = 0; i < ar.size(); ++i) {
ar.at(i).exportIBW = v.at(i).do_export.isChecked();
ar.at(i).print = v.at(i).do_print.isChecked();
}
}

std::vector<chk_row> v_root{ hkLib::parametersRoot.size() },
v_grp{ hkLib::parametersGroup.size() },
v_ser{ hkLib::parametersSeries.size() },
v_swp{ hkLib::parametersSweep.size() },
v_tr{ hkLib::parametersTrace.size() },
v_amp{ hkLib::parametersAmpplifierState.size() },
v_stim_stim{ hkLib::parametersStimulation.size() },
v_stim_ch{ hkLib::parametersChannel.size() },
v_stim_seg{ hkLib::parametersStimSegment.size() };
PMparametersModel m_root{ hkLib::parametersRoot },
m_grp{ hkLib::parametersGroup },
m_ser{ hkLib::parametersSeries },
m_swp{ hkLib::parametersSweep },
m_tr{ hkLib::parametersTrace },
m_amp{ hkLib::parametersAmpplifierState },
m_stim_stim{ hkLib::parametersStimulation },
m_stim_ch{ hkLib::parametersChannel },
m_stim_seg{ hkLib::parametersStimSegment };

Ui::DlgSelectParameters *ui;
};
Loading
Loading