Skip to content

Commit 6cdbc83

Browse files
committed
gui: add external signer path to options dialog
1 parent 22b8452 commit 6cdbc83

File tree

4 files changed

+48
-0
lines changed

4 files changed

+48
-0
lines changed

src/qt/forms/optionsdialog.ui

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,36 @@
229229
</layout>
230230
</widget>
231231
</item>
232+
<item>
233+
<widget class="QGroupBox" name="groupBoxHww">
234+
<property name="title">
235+
<string>External Signer (e.g. hardware wallet)</string>
236+
</property>
237+
<layout class="QVBoxLayout" name="verticalLayoutHww">
238+
<item>
239+
<layout class="QHBoxLayout" name="horizontalLayoutHww">
240+
<item>
241+
<widget class="QLabel" name="externalSignerPathLabel">
242+
<property name="text">
243+
<string>&amp;External signer script path</string>
244+
</property>
245+
<property name="buddy">
246+
<cstring>externalSignerPath</cstring>
247+
</property>
248+
</widget>
249+
</item>
250+
<item>
251+
<widget class="QLineEdit" name="externalSignerPath">
252+
<property name="toolTip">
253+
<string>Full path to a Bitcoin Core compatible script (e.g. C:\Downloads\hwi.exe or /Users/you/Downloads/hwi.py). Beware: malware can steal your coins!</string>
254+
</property>
255+
</widget>
256+
</item>
257+
</layout>
258+
</item>
259+
</layout>
260+
</widget>
261+
</item>
232262
<item>
233263
<spacer name="verticalSpacer_Wallet">
234264
<property name="orientation">

src/qt/optionsdialog.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ void OptionsDialog::setModel(OptionsModel *_model)
199199
connect(ui->prune, &QCheckBox::clicked, this, &OptionsDialog::togglePruneWarning);
200200
connect(ui->pruneSize, qOverload<int>(&QSpinBox::valueChanged), this, &OptionsDialog::showRestartWarning);
201201
connect(ui->databaseCache, qOverload<int>(&QSpinBox::valueChanged), this, &OptionsDialog::showRestartWarning);
202+
connect(ui->externalSignerPath, &QLineEdit::textChanged, [this]{ showRestartWarning(); });
202203
connect(ui->threadsScriptVerif, qOverload<int>(&QSpinBox::valueChanged), this, &OptionsDialog::showRestartWarning);
203204
/* Wallet */
204205
connect(ui->spendZeroConfChange, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning);
@@ -233,6 +234,7 @@ void OptionsDialog::setMapper()
233234
/* Wallet */
234235
mapper->addMapping(ui->spendZeroConfChange, OptionsModel::SpendZeroConfChange);
235236
mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures);
237+
mapper->addMapping(ui->externalSignerPath, OptionsModel::ExternalSignerPath);
236238

237239
/* Network */
238240
mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP);

src/qt/optionsmodel.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@ void OptionsModel::Init(bool resetSettings)
117117
settings.setValue("bSpendZeroConfChange", true);
118118
if (!gArgs.SoftSetBoolArg("-spendzeroconfchange", settings.value("bSpendZeroConfChange").toBool()))
119119
addOverriddenOption("-spendzeroconfchange");
120+
121+
if (!settings.contains("external_signer_path"))
122+
settings.setValue("external_signer_path", "");
123+
124+
if (!gArgs.SoftSetArg("-signer", settings.value("external_signer_path").toString().toStdString())) {
125+
addOverriddenOption("-signer");
126+
}
120127
#endif
121128

122129
// Network
@@ -326,6 +333,8 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
326333
#ifdef ENABLE_WALLET
327334
case SpendZeroConfChange:
328335
return settings.value("bSpendZeroConfChange");
336+
case ExternalSignerPath:
337+
return settings.value("external_signer_path");
329338
#endif
330339
case DisplayUnit:
331340
return nDisplayUnit;
@@ -445,6 +454,12 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
445454
setRestartRequired(true);
446455
}
447456
break;
457+
case ExternalSignerPath:
458+
if (settings.value("external_signer_path") != value.toString()) {
459+
settings.setValue("external_signer_path", value.toString());
460+
setRestartRequired(true);
461+
}
462+
break;
448463
#endif
449464
case DisplayUnit:
450465
setDisplayUnit(value);

src/qt/optionsmodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class OptionsModel : public QAbstractListModel
6565
Prune, // bool
6666
PruneSize, // int
6767
DatabaseCache, // int
68+
ExternalSignerPath, // QString
6869
SpendZeroConfChange, // bool
6970
Listen, // bool
7071
OptionIDRowCount,

0 commit comments

Comments
 (0)