+ weak_ptr<SignalBase> weak_sig(sig);
+ connect(checkbox, &QCheckBox::toggled,
+ [weak_sig](bool state) {
+ auto sig = weak_sig.lock();
+ assert(sig);
+ sig->set_enabled(state);
+ });
+
+ if ((++col >= 8 || &sig == &sigs.back())) {
+ // Show buttons if there's more than one row
+ if (sigs.size() > 8) {
+ QPushButton *row_enable_button = new QPushButton(tr("All"), this);
+ grid->addWidget(row_enable_button, row, 8);
+ connect(row_enable_button, &QPushButton::clicked,
+ [this_row]() {
+ for (QCheckBox *box : this_row)
+ box->setChecked(true);
+ });
+
+ QPushButton *row_disable_button = new QPushButton(tr("None"), this);
+ connect(row_disable_button, &QPushButton::clicked,
+ [this_row]() {
+ for (QCheckBox *box : this_row)
+ box->setChecked(false);
+ });
+ grid->addWidget(row_disable_button, row, 9);
+ }
+
+ this_row.clear();