@@ -50,6 +50,7 @@ GlobalConnectDialog::GlobalConnectDialog(odb::dbBlock* block, QWidget* parent)
5050 add_(new QPushButton(this )),
5151 clear_(new QPushButton(this )),
5252 run_(new QPushButton(this )),
53+ run_force_(new QPushButton(this )),
5354 rules_({}),
5455 inst_pattern_(new QLineEdit(this )),
5556 pin_pattern_(new QLineEdit(this )),
@@ -64,6 +65,7 @@ GlobalConnectDialog::GlobalConnectDialog(odb::dbBlock* block, QWidget* parent)
6465 QHBoxLayout* button_layout = new QHBoxLayout;
6566 button_layout->addWidget (clear_);
6667 button_layout->addWidget (run_);
68+ button_layout->addWidget (run_force_);
6769 layout->addLayout (button_layout);
6870 layout->addWidget (connections_);
6971
@@ -75,18 +77,27 @@ GlobalConnectDialog::GlobalConnectDialog(odb::dbBlock* block, QWidget* parent)
7577 add_->setDefault (false );
7678 add_->setEnabled (false );
7779
78- run_->setIcon (QIcon (" :/play .png" ));
80+ run_->setIcon (QIcon (" :/resume .png" ));
7981 run_->setToolTip (tr (" Run" ));
8082 run_->setAutoDefault (false );
8183 run_->setDefault (false );
8284
85+ run_force_->setIcon (QIcon (" :/play.png" ));
86+ run_force_->setToolTip (tr (" Run with forced connections" ));
87+ run_force_->setAutoDefault (false );
88+ run_force_->setDefault (false );
89+
8390 clear_->setIcon (QIcon (" :/delete.png" ));
8491 clear_->setToolTip (tr (" Clear" ));
8592 clear_->setAutoDefault (false );
8693 clear_->setDefault (false );
8794
8895 connect (add_, &QPushButton::pressed, this , &GlobalConnectDialog::makeRule);
8996 connect (run_, &QPushButton::pressed, this , &GlobalConnectDialog::runRules);
97+ connect (run_force_,
98+ &QPushButton::pressed,
99+ this ,
100+ &GlobalConnectDialog::runRulesWithForce);
90101 connect (
91102 clear_, &QPushButton::pressed, this , &GlobalConnectDialog::clearRules);
92103
@@ -157,7 +168,12 @@ GlobalConnectDialog::GlobalConnectDialog(odb::dbBlock* block, QWidget* parent)
157168
158169void GlobalConnectDialog::runRules ()
159170{
160- runRule (nullptr );
171+ runRule (nullptr , false );
172+ }
173+
174+ void GlobalConnectDialog::runRulesWithForce ()
175+ {
176+ runRule (nullptr , true );
161177}
162178
163179void GlobalConnectDialog::clearRules ()
@@ -242,7 +258,8 @@ void GlobalConnectDialog::addRule(odb::dbGlobalConnect* gc)
242258 widgets.run ->setToolTip (tr (" Run" ));
243259 widgets.run ->setAutoDefault (false );
244260 widgets.run ->setDefault (false );
245- connect (widgets.run , &QPushButton::pressed, [this , gc]() { runRule (gc); });
261+ connect (
262+ widgets.run , &QPushButton::pressed, [this , gc]() { runRule (gc, false ); });
246263 layout_->addWidget (
247264 widgets.run , row_idx, toValue (GlobalConnectField::kRun ), Qt::AlignCenter);
248265
@@ -311,15 +328,15 @@ void GlobalConnectDialog::announceConnections(int connections)
311328 QString::fromStdString (fmt::format (" Connected {} pin(s)" , connections)));
312329}
313330
314- void GlobalConnectDialog::runRule (odb::dbGlobalConnect* gc)
331+ void GlobalConnectDialog::runRule (odb::dbGlobalConnect* gc, bool force )
315332{
316333 QApplication::setOverrideCursor (Qt::WaitCursor);
317334 QApplication::processEvents ();
318335 int connections = 0 ;
319336 if (gc == nullptr ) {
320- connections = block_->globalConnect ();
337+ connections = block_->globalConnect (force, true );
321338 } else {
322- connections = block_->globalConnect (gc);
339+ connections = block_->globalConnect (gc, force, true );
323340 }
324341 QApplication::restoreOverrideCursor ();
325342 emit connectionsMade (connections);
0 commit comments