Browse Source

Merge branch 'dev'

master v1.4.0
Duke 5 months ago
parent
commit
775581f942
  1. 71
      SilentDragon-1.3.1.wxs
  2. 87
      SilentDragonX-1.3.1.wxs
  3. 40
      application-sdx.qrc
  4. 14
      doc/relnotes/README.md
  5. 0
      res-drgx/hushdlogo.png
  6. BIN
      res-drgx/silentdragon_be.qm
  7. 2690
      res-drgx/silentdragon_be.ts
  8. BIN
      res-drgx/silentdragon_bg.qm
  9. 2560
      res-drgx/silentdragon_bg.ts
  10. BIN
      res-drgx/silentdragon_de.qm
  11. 2917
      res-drgx/silentdragon_de.ts
  12. BIN
      res-drgx/silentdragon_es.qm
  13. 2898
      res-drgx/silentdragon_es.ts
  14. BIN
      res-drgx/silentdragon_fi.qm
  15. 2911
      res-drgx/silentdragon_fi.ts
  16. BIN
      res-drgx/silentdragon_fil.qm
  17. 2751
      res-drgx/silentdragon_fil.ts
  18. BIN
      res-drgx/silentdragon_fr.qm
  19. 2945
      res-drgx/silentdragon_fr.ts
  20. BIN
      res-drgx/silentdragon_hr.qm
  21. 2754
      res-drgx/silentdragon_hr.ts
  22. BIN
      res-drgx/silentdragon_id.qm
  23. 2464
      res-drgx/silentdragon_id.ts
  24. BIN
      res-drgx/silentdragon_it.qm
  25. 2897
      res-drgx/silentdragon_it.ts
  26. BIN
      res-drgx/silentdragon_nl.qm
  27. 2686
      res-drgx/silentdragon_nl.ts
  28. BIN
      res-drgx/silentdragon_pl.qm
  29. 2689
      res-drgx/silentdragon_pl.ts
  30. BIN
      res-drgx/silentdragon_pt.qm
  31. 2885
      res-drgx/silentdragon_pt.ts
  32. BIN
      res-drgx/silentdragon_ro.qm
  33. 2752
      res-drgx/silentdragon_ro.ts
  34. BIN
      res-drgx/silentdragon_ru.qm
  35. 2691
      res-drgx/silentdragon_ru.ts
  36. BIN
      res-drgx/silentdragon_sr.qm
  37. 2754
      res-drgx/silentdragon_sr.ts
  38. BIN
      res-drgx/silentdragon_tr.qm
  39. 2902
      res-drgx/silentdragon_tr.ts
  40. BIN
      res-drgx/silentdragon_uk.qm
  41. 3152
      res-drgx/silentdragon_uk.ts
  42. BIN
      res-drgx/silentdragon_zh.qm
  43. 3037
      res-drgx/silentdragon_zh.ts
  44. BIN
      res-drgx/tropical-hush.png
  45. BIN
      res/silentdragon_be.qm
  46. 813
      res/silentdragon_be.ts
  47. 815
      res/silentdragon_bg.ts
  48. 815
      res/silentdragon_de.ts
  49. 815
      res/silentdragon_es.ts
  50. BIN
      res/silentdragon_fi.qm
  51. 815
      res/silentdragon_fi.ts
  52. BIN
      res/silentdragon_fil.qm
  53. 815
      res/silentdragon_fil.ts
  54. BIN
      res/silentdragon_fr.qm
  55. 815
      res/silentdragon_fr.ts
  56. 815
      res/silentdragon_hr.ts
  57. BIN
      res/silentdragon_it.qm
  58. 815
      res/silentdragon_it.ts
  59. BIN
      res/silentdragon_nl.qm
  60. 813
      res/silentdragon_nl.ts
  61. BIN
      res/silentdragon_pl.qm
  62. 813
      res/silentdragon_pl.ts
  63. BIN
      res/silentdragon_pt.qm
  64. 815
      res/silentdragon_pt.ts
  65. BIN
      res/silentdragon_ro.qm
  66. 815
      res/silentdragon_ro.ts
  67. BIN
      res/silentdragon_ru.qm
  68. 813
      res/silentdragon_ru.ts
  69. 815
      res/silentdragon_sr.ts
  70. BIN
      res/silentdragon_tr.qm
  71. 815
      res/silentdragon_tr.ts
  72. BIN
      res/silentdragon_uk.qm
  73. 815
      res/silentdragon_uk.ts
  74. BIN
      res/silentdragon_zh.qm
  75. 815
      res/silentdragon_zh.ts
  76. 1
      silentdragon.pro
  77. 39
      silentdragonx.pro
  78. 2
      src/addressbook.h
  79. 6
      src/balancestablemodel.h
  80. 4
      src/connection.cpp
  81. 237
      src/createhushconfdialog.ui
  82. 85
      src/getblock.ui
  83. 1
      src/main.cpp
  84. 82
      src/mainwindow.cpp
  85. 1
      src/mainwindow.h
  86. 26
      src/mainwindow.ui
  87. 6
      src/memoedit.h
  88. 1
      src/precompiled.h
  89. 19
      src/rpc.cpp
  90. 1
      src/rpc.h
  91. 1
      src/settings.cpp
  92. 283
      src/settings.ui
  93. 2
      src/validateaddress.h
  94. 2
      src/version.h
  95. 2
      src/viewalladdresses.h

71
SilentDragon-1.3.1.wxs

@ -0,0 +1,71 @@
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='SilentDragon' Id='a2e4bc6c-5911-4a07-a05c-d2fec0a44a7f' UpgradeCode='a41d7a93-a6cb-41fb-89d2-706a8c22bc99'
Language='1033' Codepage='1252' Version='1.3.1' Manufacturer='HUSH'>
<Package Id='*' Keywords='Installer' Description="HUSH SilentDragon Installer"
Comments='' Manufacturer='HUSH'
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Media Id='1' Cabinet='SilentDragon.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="HUSH SilentDragon 1.3.1 Installation [1]" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='HUSH' Name='HUSH'>
<Directory Id='INSTALLDIR' Name='SilentDragon'>
<Component Id='MainExecutable' Guid='56443570-635d-48e4-8448-8ffd0d7c415a'>
<File Id='SilentDragonEXE' Name='silentdragon.exe' DiskId='1' Source='silentdragon.exe' KeyPath='yes'>
<Shortcut Id="startmenuSilentDragon" Directory="ProgramMenuDir" Name="SilentDragon" WorkingDirectory='INSTALLDIR' Icon="silentdragon.exe" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopSilentDragon" Directory="DesktopFolder" Name="SilentDragon" WorkingDirectory='INSTALLDIR' Icon="silentdragon.exe" IconIndex="0" Advertise="yes" />
</File>
</Component>
<Component Id="asmap" Guid="190ad39b-44fa-4b22-94ee-d42aca7acc7b">
<File Id="asmap.dat" DiskId='1' Source="asmap.dat" KeyPath="yes"/>
</Component>
<Component Id="hush-cli" Guid="e19e8fd8-aeb9-4dad-99bd-70da0a0aa92c2">
<File Id="hush-cli.exe" DiskId='1' Source="hush-cli.exe" KeyPath="yes"/>
</Component>
<Component Id="hush-tx" Guid="f96b2a39-4734-4a8d-abc3-895006052e97">
<File Id="hush-tx.exe" DiskId='1' Source="hush-tx.exe" KeyPath="yes"/>
</Component>
<Component Id="hushd" Guid="fa66588f-8788-4b29-b6d6-c4a903e49d79">
<File Id="hushd.exe" DiskId='1' Source="hushd.exe" KeyPath="yes"/>
</Component>
<Component Id="sapling-output" Guid="1ecc1590-ddf3-4f6d-94c5-6bf091aef77a">
<File Id="sapling-output.params" DiskId='1' Source="sapling-output.params" KeyPath="yes"/>
</Component>
<Component Id="sapling-spend" Guid="828d3827-5f2b-47c6-8717-8a664054a2af">
<File Id="sapling-spend.params" DiskId='1' Source="sapling-spend.params" KeyPath="yes"/>
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="SilentDragon">
<Component Id="ProgramMenuDir" Guid="7ac6af1f-1377-4158-915f-c410cc5cd2a9">
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
</Component>
</Directory>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
<Feature Id='Complete' Level='1'>
<ComponentRef Id='MainExecutable' />
<ComponentRef Id='ProgramMenuDir' />
<ComponentRef Id='asmap' />
<ComponentRef Id='hush-cli' />
<ComponentRef Id='hush-tx' />
<ComponentRef Id='hushd' />
<ComponentRef Id='sapling-output' />
<ComponentRef Id='sapling-spend' />
</Feature>
<Icon Id="silentdragon.exe" SourceFile="silentdragon.ico" />
</Product>
</Wix>

87
SilentDragonX-1.3.1.wxs

@ -0,0 +1,87 @@
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='SilentDragonX' Id='c2083d6a-4511-4c37-b23c-6699badb781f' UpgradeCode='0877ea1a-0662-48a2-8512-b5868f0a40a6'
Language='1033' Codepage='1252' Version='1.3.1' Manufacturer='HUSH'>
<Package Id='*' Keywords='Installer' Description="HUSH SilentDragonX Installer"
Comments='' Manufacturer='HUSH'
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Media Id='1' Cabinet='SilentDragonX.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="HUSH SilentDragonX 1.3.1 Installation [1]" />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='HUSH' Name='HUSH'>
<Directory Id='INSTALLDIR' Name='SilentDragonX'>
<Component Id='MainExecutable' Guid='e96fa770-8ac4-4e69-85b0-1d5b97d658f1'>
<File Id='SilentDragonXEXE' Name='silentdragonx.exe' DiskId='1' Source='silentdragonx.exe' KeyPath='yes'>
<Shortcut Id="startmenuSilentDragonX" Directory="ProgramMenuDir" Name="SilentDragonX" WorkingDirectory='INSTALLDIR' Icon="silentdragonx.exe" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopSilentDragonX" Directory="DesktopFolder" Name="SilentDragonX" WorkingDirectory='INSTALLDIR' Icon="silentdragonx.exe" IconIndex="0" Advertise="yes" />
</File>
</Component>
<Component Id="asmap" Guid="1e7a811c-6076-4046-b592-3aebf31961c4">
<File Id="asmap.dat" DiskId='1' Source="asmap.dat" KeyPath="yes"/>
</Component>
<Component Id="dragonx-cli" Guid="5b648615-b957-470e-9ec0-777b8896e913">
<File Id="dragonx-cli.bat" DiskId='1' Source="dragonx-cli.bat" KeyPath="yes"/>
</Component>
<Component Id="dragonxd" Guid="779810d3-b092-4349-940b-03ba73ec556d">
<File Id="dragonxd.bat" DiskId='1' Source="dragonxd.bat" KeyPath="yes"/>
</Component>
<Component Id="hush-cli" Guid="305d8117-5685-4d06-b0be-a7cd176f8111">
<File Id="hush-cli.exe" DiskId='1' Source="hush-cli.exe" KeyPath="yes"/>
</Component>
<Component Id="hushd" Guid="5024eceb-fba3-48d8-9ab5-e61ae5c1964d">
<File Id="hushd.exe" DiskId='1' Source="hushd.exe" KeyPath="yes"/>
</Component>
<Component Id="hush-smart-chain" Guid="c66ffa5c-02ae-42e0-bbca-8cc71a4e92e9">
<File Id="hush-smart-chain.bat" DiskId='1' Source="hush-smart-chain.bat" KeyPath="yes"/>
</Component>
<Component Id="hush-tx" Guid="7baac56a-8bf4-4bb2-b97d-a59da5c0edd6">
<File Id="hush-tx.exe" DiskId='1' Source="hush-tx.exe" KeyPath="yes"/>
</Component>
<Component Id="readme" Guid="5edea091-83d0-4f1c-a84f-298e4e8e61e9">
<File Id="README.txt" DiskId='1' Source="README.txt" KeyPath="yes"/>
</Component>
<Component Id="sapling-output" Guid="dddc6a47-8a26-49ec-b5a8-e38a06e11000">
<File Id="sapling-output.params" DiskId='1' Source="sapling-output.params" KeyPath="yes"/>
</Component>
<Component Id="sapling-spend" Guid="42edd54d-b480-4aaa-a976-ec305127dbbb">
<File Id="sapling-spend.params" DiskId='1' Source="sapling-spend.params" KeyPath="yes"/>
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="SilentDragonX">
<Component Id="ProgramMenuDir" Guid="2ac41712-9a5d-48d6-9ca9-fe31bad57153">
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
</Component>
</Directory>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
<Feature Id='Complete' Level='1'>
<ComponentRef Id='MainExecutable' />
<ComponentRef Id='ProgramMenuDir' />
<ComponentRef Id='asmap' />
<ComponentRef Id='dragonx-cli' />
<ComponentRef Id='dragonxd' />
<ComponentRef Id='hush-cli' />
<ComponentRef Id='hushd' />
<ComponentRef Id='hush-smart-chain' />
<ComponentRef Id='hush-tx' />
<ComponentRef Id='readme' />
<ComponentRef Id='sapling-output' />
<ComponentRef Id='sapling-spend' />
</Feature>
<Icon Id="silentdragonx.exe" SourceFile="silentdragonx.ico" />
</Product>
</Wix>

40
application-sdx.qrc

@ -24,7 +24,7 @@
<file alias="lock_closed.png">res-drgx/lock_closed.png</file>
</qresource>
<qresource prefix="/img">
<file alias="hushdlogo.png">res/hushdlogo.png</file>
<file alias="hushdlogo.png">res-drgx/hushdlogo.png</file>
<file alias="logobig.gif">res-drgx/logobig.gif</file>
<file alias="silentdragon-animated.gif">res-drgx/silentdragon-animated.gif</file>
<file alias="silentdragon-animated-dark.gif">res-drgx/silentdragon-animated-dark.gif</file>
@ -32,25 +32,25 @@
<file alias="silentdragon-animated-startup-dark.gif">res-drgx/silentdragon-animated-startup-dark.gif</file>
</qresource>
<qresource prefix="/translations">
<file alias="silentdragon_be.qm">res-drgx/silentdragon_be.qm</file>
<file alias="silentdragon_bg.qm">res-drgx/silentdragon_bg.qm</file>
<file alias="silentdragon_de.qm">res-drgx/silentdragon_de.qm</file>
<file alias="silentdragon_es.qm">res-drgx/silentdragon_es.qm</file>
<file alias="silentdragon_fi.qm">res-drgx/silentdragon_fi.qm</file>
<file alias="silentdragon_fil.qm">res-drgx/silentdragon_fil.qm</file>
<file alias="silentdragon_fr.qm">res-drgx/silentdragon_fr.qm</file>
<file alias="silentdragon_hr.qm">res-drgx/silentdragon_hr.qm</file>
<file alias="silentdragon_it.qm">res-drgx/silentdragon_it.qm</file>
<file alias="silentdragon_id.qm">res-drgx/silentdragon_id.qm</file>
<file alias="silentdragon_nl.qm">res-drgx/silentdragon_nl.qm</file>
<file alias="silentdragon_pl.qm">res-drgx/silentdragon_pl.qm</file>
<file alias="silentdragon_pt.qm">res-drgx/silentdragon_pt.qm</file>
<file alias="silentdragon_ro.qm">res-drgx/silentdragon_ro.qm</file>
<file alias="silentdragon_ru.qm">res-drgx/silentdragon_ru.qm</file>
<file alias="silentdragon_sr.qm">res-drgx/silentdragon_sr.qm</file>
<file alias="silentdragon_tr.qm">res-drgx/silentdragon_tr.qm</file>
<file alias="silentdragon_uk.qm">res-drgx/silentdragon_uk.qm</file>
<file alias="silentdragon_zh.qm">res-drgx/silentdragon_zh.qm</file>
<file alias="silentdragon_be.qm">res/silentdragon_be.qm</file>
<file alias="silentdragon_bg.qm">res/silentdragon_bg.qm</file>
<file alias="silentdragon_de.qm">res/silentdragon_de.qm</file>
<file alias="silentdragon_es.qm">res/silentdragon_es.qm</file>
<file alias="silentdragon_fi.qm">res/silentdragon_fi.qm</file>
<file alias="silentdragon_fil.qm">res/silentdragon_fil.qm</file>
<file alias="silentdragon_fr.qm">res/silentdragon_fr.qm</file>
<file alias="silentdragon_hr.qm">res/silentdragon_hr.qm</file>
<file alias="silentdragon_it.qm">res/silentdragon_it.qm</file>
<file alias="silentdragon_id.qm">res/silentdragon_id.qm</file>
<file alias="silentdragon_nl.qm">res/silentdragon_nl.qm</file>
<file alias="silentdragon_pl.qm">res/silentdragon_pl.qm</file>
<file alias="silentdragon_pt.qm">res/silentdragon_pt.qm</file>
<file alias="silentdragon_ro.qm">res/silentdragon_ro.qm</file>
<file alias="silentdragon_ru.qm">res/silentdragon_ru.qm</file>
<file alias="silentdragon_sr.qm">res/silentdragon_sr.qm</file>
<file alias="silentdragon_tr.qm">res/silentdragon_tr.qm</file>
<file alias="silentdragon_uk.qm">res/silentdragon_uk.qm</file>
<file alias="silentdragon_zh.qm">res/silentdragon_zh.qm</file>
</qresource>
<qresource prefix="/css">
<file alias="blue.css">res/css/blue.css</file>

14
doc/relnotes/README.md

@ -10,6 +10,20 @@ and no longer on Github, since they banned Duke Leto and
also because they censor many people around the world and work with
evil organizations.
# SilentDragon 1.4.0 "Zany Zooid"
```
95 files changed, 8438 insertions(+), 60854 deletions(-)
```
* Ability to view block info for any height #103
* Support a proxy running on something other than 127.0.0.1 #127
* Bug fix for Windows file path when exporting #128
* Bug fix for `listtransactions` to display more than 10 mining reward txs in Transactions tab #126
* Now compiles on Ubuntu 20.04 thanks to jahway #125
* Translation fixes thanks to onryo #120
* Single set of translations for SD and SDX #122
# SilentDragon 1.3.1 "Omnicompetent Okapi"
```

0
res-drgx/tropical-hush-square.png → res-drgx/hushdlogo.png

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

BIN
res-drgx/silentdragon_be.qm

Binary file not shown.

2690
res-drgx/silentdragon_be.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_bg.qm

Binary file not shown.

2560
res-drgx/silentdragon_bg.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_de.qm

Binary file not shown.

2917
res-drgx/silentdragon_de.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_es.qm

Binary file not shown.

2898
res-drgx/silentdragon_es.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_fi.qm

Binary file not shown.

2911
res-drgx/silentdragon_fi.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_fil.qm

Binary file not shown.

2751
res-drgx/silentdragon_fil.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_fr.qm

Binary file not shown.

2945
res-drgx/silentdragon_fr.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_hr.qm

Binary file not shown.

2754
res-drgx/silentdragon_hr.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_id.qm

Binary file not shown.

2464
res-drgx/silentdragon_id.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_it.qm

Binary file not shown.

2897
res-drgx/silentdragon_it.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_nl.qm

Binary file not shown.

2686
res-drgx/silentdragon_nl.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_pl.qm

Binary file not shown.

2689
res-drgx/silentdragon_pl.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_pt.qm

Binary file not shown.

2885
res-drgx/silentdragon_pt.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_ro.qm

Binary file not shown.

2752
res-drgx/silentdragon_ro.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_ru.qm

Binary file not shown.

2691
res-drgx/silentdragon_ru.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_sr.qm

Binary file not shown.

2754
res-drgx/silentdragon_sr.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_tr.qm

Binary file not shown.

2902
res-drgx/silentdragon_tr.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_uk.qm

Binary file not shown.

3152
res-drgx/silentdragon_uk.ts

File diff suppressed because it is too large

BIN
res-drgx/silentdragon_zh.qm

Binary file not shown.

3037
res-drgx/silentdragon_zh.ts

File diff suppressed because it is too large

BIN
res-drgx/tropical-hush.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

BIN
res/silentdragon_be.qm

Binary file not shown.

813
res/silentdragon_be.ts

File diff suppressed because it is too large

815
res/silentdragon_bg.ts

File diff suppressed because it is too large

815
res/silentdragon_de.ts

File diff suppressed because it is too large

815
res/silentdragon_es.ts

File diff suppressed because it is too large

BIN
res/silentdragon_fi.qm

Binary file not shown.

815
res/silentdragon_fi.ts

File diff suppressed because it is too large

BIN
res/silentdragon_fil.qm

Binary file not shown.

815
res/silentdragon_fil.ts

File diff suppressed because it is too large

BIN
res/silentdragon_fr.qm

Binary file not shown.

815
res/silentdragon_fr.ts

File diff suppressed because it is too large

815
res/silentdragon_hr.ts

File diff suppressed because it is too large

BIN
res/silentdragon_it.qm

Binary file not shown.

815
res/silentdragon_it.ts

File diff suppressed because it is too large

BIN
res/silentdragon_nl.qm

Binary file not shown.

813
res/silentdragon_nl.ts

File diff suppressed because it is too large

BIN
res/silentdragon_pl.qm

Binary file not shown.

813
res/silentdragon_pl.ts

File diff suppressed because it is too large

BIN
res/silentdragon_pt.qm

Binary file not shown.

815
res/silentdragon_pt.ts

File diff suppressed because it is too large

BIN
res/silentdragon_ro.qm

Binary file not shown.

815
res/silentdragon_ro.ts

File diff suppressed because it is too large

BIN
res/silentdragon_ru.qm

Binary file not shown.

813
res/silentdragon_ru.ts

File diff suppressed because it is too large

815
res/silentdragon_sr.ts

File diff suppressed because it is too large

BIN
res/silentdragon_tr.qm

Binary file not shown.

815
res/silentdragon_tr.ts

File diff suppressed because it is too large

BIN
res/silentdragon_uk.qm

Binary file not shown.

815
res/silentdragon_uk.ts

File diff suppressed because it is too large

BIN
res/silentdragon_zh.qm

Binary file not shown.

815
res/silentdragon_zh.ts

File diff suppressed because it is too large

1
silentdragon.pro

@ -89,6 +89,7 @@ HEADERS += \
src/viewalladdresses.h
FORMS += \
src/getblock.ui \
src/mainwindow.ui \
src/qrcode.ui \
src/rescandialog.ui \

39
silentdragonx.pro

@ -88,6 +88,7 @@ HEADERS += \
src/viewalladdresses.h
FORMS += \
src/getblock.ui \
src/mainwindow.ui \
src/qrcode.ui \
src/rescandialog.ui \
@ -109,25 +110,25 @@ FORMS += \
src/requestdialog.ui
TRANSLATIONS = res-drgx/silentdragon_be.ts \
res-drgx/silentdragon_bg.ts \
res-drgx/silentdragon_de.ts \
res-drgx/silentdragon_es.ts \
res-drgx/silentdragon_fi.ts \
res-drgx/silentdragon_fil.ts \
res-drgx/silentdragon_fr.ts \
res-drgx/silentdragon_hr.ts \
res-drgx/silentdragon_id.ts \
res-drgx/silentdragon_it.ts \
res-drgx/silentdragon_nl.ts \
res-drgx/silentdragon_pl.ts \
res-drgx/silentdragon_pt.ts \
res-drgx/silentdragon_ro.ts \
res-drgx/silentdragon_ru.ts \
res-drgx/silentdragon_sr.ts \
res-drgx/silentdragon_tr.ts \
res-drgx/silentdragon_uk.ts \
res-drgx/silentdragon_zh.ts
TRANSLATIONS = res/silentdragon_be.ts \
res/silentdragon_bg.ts \
res/silentdragon_de.ts \
res/silentdragon_es.ts \
res/silentdragon_fi.ts \
res/silentdragon_fil.ts \
res/silentdragon_fr.ts \
res/silentdragon_hr.ts \
res/silentdragon_id.ts \
res/silentdragon_it.ts \
res/silentdragon_nl.ts \
res/silentdragon_pl.ts \
res/silentdragon_pt.ts \
res/silentdragon_ro.ts \
res/silentdragon_ru.ts \
res/silentdragon_sr.ts \
res/silentdragon_tr.ts \
res/silentdragon_uk.ts \
res/silentdragon_zh.ts
include(singleapplication/singleapplication.pri)
DEFINES += QAPPLICATION_CLASS=QApplication _FORTIFY_SOURCE=2

2
src/addressbook.h

@ -9,6 +9,8 @@ class MainWindow;
class AddressBookModel : public QAbstractTableModel {
Q_OBJECT
public:
AddressBookModel(QTableView* parent);
~AddressBookModel();

6
src/balancestablemodel.h

@ -13,8 +13,10 @@ struct UnspentOutput {
bool spendable;
};
class BalancesTableModel : public QAbstractTableModel
{
class BalancesTableModel : public QAbstractTableModel {
Q_OBJECT
public:
BalancesTableModel(QObject* parent);
~BalancesTableModel();

4
src/connection.cpp

@ -211,11 +211,13 @@ void ConnectionLoader::createHushConf() {
// Show the dialog
QString datadir = "";
bool useTor = false;
QString torProxy = "127.0.0.1";
QString torPort = "9050";
if (d.exec() == QDialog::Accepted) {
datadir = ui.lblDirName->text();
useTor = ui.chkUseTor->isChecked();
torProxy = ui.torProxy->text();
torPort = ui.torPort->text();
}
@ -266,7 +268,7 @@ void ConnectionLoader::createHushConf() {
out << "datadir=" % datadir % "\n";
}
if (useTor) {
out << "proxy=127.0.0.1:" << torPort << "\n";
out << "proxy="<< torProxy << ":" << torPort << "\n";
}
file.close();

237
src/createhushconfdialog.ui

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>508</width>
<height>352</height>
<height>369</height>
</rect>
</property>
<property name="windowTitle">
@ -95,93 +95,154 @@
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QCheckBox" name="chkCustomDatadir">
<property name="text">
<string>Use custom datadir</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Please choose a directory to store your wallet.dat and blockchain</string>
</property>
</widget>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btnPickDir">
<property name="text">
<string>Choose directory</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblDirName">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="chkUseTor">
<property name="text">
<string>Connect over Tor</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Please note that you'll need to already have a Tor service configured</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_tor_port">
<property name="text">
<string>Tor Port</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="torPort">
<property name="text">
<string notr="true">9050</string>
</property>
</widget>
</item>
</layout>
<widget class="QCheckBox" name="chkCustomDatadir">
<property name="geometry">
<rect>
<x>8</x>
<y>8</y>
<width>148</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Use custom datadir</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>8</x>
<y>36</y>
<width>395</width>
<height>18</height>
</rect>
</property>
<property name="text">
<string>Please choose a directory to store your wallet.dat and blockchain</string>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>8</x>
<y>102</y>
<width>16</width>
<height>18</height>
</rect>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
<widget class="QCheckBox" name="chkUseTor">
<property name="geometry">
<rect>
<x>8</x>
<y>126</y>
<width>133</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Connect over Tor</string>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>8</x>
<y>154</y>
<width>415</width>
<height>18</height>
</rect>
</property>
<property name="text">
<string>Please note that you'll need to already have a Tor service configured</string>
</property>
</widget>
<widget class="QLabel" name="label_tor_port">
<property name="geometry">
<rect>
<x>178</x>
<y>178</y>
<width>49</width>
<height>18</height>
</rect>
</property>
<property name="text">
<string>Tor Port</string>
</property>
</widget>
<widget class="QLineEdit" name="torPort">
<property name="geometry">
<rect>
<x>230</x>
<y>178</y>
<width>59</width>
<height>32</height>
</rect>
</property>
<property name="text">
<string notr="true">9050</string>
</property>
</widget>
<widget class="QLineEdit" name="torProxy">
<property name="geometry">
<rect>
<x>62</x>
<y>180</y>
<width>111</width>
<height>32</height>
</rect>
</property>
<property name="text">
<string notr="true">127.0.0.1</string>
</property>
</widget>
<widget class="QLabel" name="label_tor_proxy">
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>49</width>
<height>18</height>
</rect>
</property>
<property name="text">
<string>Proxy IP</string>
</property>
</widget>
<widget class="QWidget" name="">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btnPickDir">
<property name="text">
<string>Choose directory</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblDirName">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>

85
src/getblock.ui

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GetBlock</class>
<widget class="QDialog" name="GetBlock">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Get Block Info</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QLabel" name="lblHeight">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Block Height:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QTableView" name="tblProps">
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>GetBlock</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>GetBlock</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

1
src/main.cpp

@ -6,6 +6,7 @@
#include "rpc.h"
#include "settings.h"
#include "version.h"
#include <QCommandLineParser>
bool isdragonx = 0;

82
src/mainwindow.cpp

@ -14,6 +14,7 @@
#include "ui_viewalladdresses.h"
#include "ui_validateaddress.h"
#include "ui_rescandialog.h"
#include "ui_getblock.h"
#include "rpc.h"
#include "balancestablemodel.h"
#include "settings.h"
@ -22,6 +23,7 @@
#include "connection.h"
#include "requestdialog.h"
#include <QLCDNumber>
#include <QThread>
#include "sd.h"
extern bool isdragonx;
@ -94,6 +96,9 @@ MainWindow::MainWindow(QWidget *parent) :
// Validate Address
QObject::connect(ui->actionValidate_Address, &QAction::triggered, this, &MainWindow::validateAddress);
// Get Block
QObject::connect(ui->actionGet_Block, &QAction::triggered, this, &MainWindow::getBlock);
// Address Book
QObject::connect(ui->action_Address_Book, &QAction::triggered, this, &MainWindow::addressBook);
@ -699,8 +704,9 @@ void MainWindow::setupSettingsModal() {
if (!isUsingTor && settings.chkTor->isChecked()) {
// If "use tor" was previously unchecked and now checked
QString torProxy= settings.torProxy->text();
QString torPort = settings.torPort->text();
QString proxyConfig = "proxy=127.0.0.1:" % torPort;
QString proxyConfig = "proxy="%torProxy%":"%torPort;
Settings::addToHushConf(hushConfLocation, proxyConfig);
rpc->getConnection()->config->proxy = proxyConfig;
@ -895,7 +901,59 @@ void MainWindow::validateAddress() {
d.exec();
});
}
// Get block info
void MainWindow::getBlock() {
// Make sure everything is up and running
if (!getRPC() || !getRPC()->getConnection())
return;
// First thing is ask the user for a block height
bool ok;
int i = QInputDialog::getInt(this, tr("Get Block Info"),
tr("Enter Block Height:"), 1, 1, 2147483647, 1, &ok);
if (!ok)
return;
auto blockheight = QString::number(i);
getRPC()->getBlock(blockheight, [=] (QJsonValue props) {
QDialog d(this);
Ui_GetBlock gb;
gb.setupUi(&d);
Settings::saveRestore(&d);
Settings::saveRestoreTableHeader(gb.tblProps, &d, "getblockprops");
gb.tblProps->horizontalHeader()->setStretchLastSection(true);
gb.lblHeight->setText(blockheight);
QList<QPair<QString, QString>> propsList;
for (QString property_name: props.toObject().keys()) {
QString property_value;
DEBUG("property = " << props.toObject()[property_name] );
if (props.toObject()[property_name].isString()) {
property_value = props.toObject()[property_name].toString();
} else if (props.toObject()[property_name].isDouble()) {
property_value = QString::number( props.toObject()[property_name].toDouble(), 'f', 0);
} else if (props.toObject()[property_name].isBool()) {
property_value = props.toObject()[property_name].toBool() ? "true" : "false" ;
}
propsList.append(
QPair<QString, QString>( property_name,
property_value )
);
}
ValidateAddressesModel model(gb.tblProps, propsList);
gb.tblProps->setModel(&model);
d.exec();
});
}
void MainWindow::doImport(QList<QString>* keys) {
@ -1070,10 +1128,16 @@ void MainWindow::importPrivKey() {
*/
void MainWindow::exportTransactions() {
// First, get the export file name
QString exportName = "hush-transactions-" + QDateTime::currentDateTime().toString("yyyyMMdd") + ".csv";
QString exportName;
if(isdragonx){
exportName = "drgx-transactions-" + QDateTime::currentDateTime().toString("yyyyMMdd") + ".csv";
}else{
exportName = "hush-transactions-" + QDateTime::currentDateTime().toString("yyyyMMdd") + ".csv";
}
QUrl csvName = QFileDialog::getSaveFileUrl(this,
tr("Export transactions"), exportName, "CSV file (*.csv)");
QDir docsDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));
QUrl pName = QUrl::fromLocalFile(docsDir.filePath(exportName));
QUrl csvName = QFileDialog::getSaveFileUrl(this, tr("Export transactions"), pName, "CSV file (*.csv)");
if (csvName.isEmpty())
return;
@ -1093,7 +1157,12 @@ void MainWindow::backupWalletDat() {
return;
QDir hushdir(rpc->getConnection()->config->hushDir);
QString backupDefaultName = "hush-wallet-backup-" + QDateTime::currentDateTime().toString("yyyyMMdd") + ".dat";
QString backupDefaultName;
if(isdragonx){
backupDefaultName = "drgx-wallet-backup-" + QDateTime::currentDateTime().toString("yyyyMMdd") + ".dat";
}else{
backupDefaultName = "hush-wallet-backup-" + QDateTime::currentDateTime().toString("yyyyMMdd") + ".dat";
}
if (Settings::getInstance()->isTestnet()) {
hushdir.cd("testnet3");
@ -1107,7 +1176,8 @@ void MainWindow::backupWalletDat() {
return;
}
QUrl backupName = QFileDialog::getSaveFileUrl(this, tr("Backup wallet.dat"), backupDefaultName, "Data file (*.dat)");
QUrl pName = QUrl::fromLocalFile(hushdir.filePath(backupDefaultName));
QUrl backupName = QFileDialog::getSaveFileUrl(this, tr("Backup wallet.dat"), pName, "Data file (*.dat)");
if (backupName.isEmpty())
return;

1
src/mainwindow.h

@ -52,6 +52,7 @@ public:
void payHushURI(QString uri = "", QString myAddr = "");
void validateAddress();
void getBlock();
void updateLabels();
void updateTAddrCombo(bool checked);

26
src/mainwindow.ui

@ -121,6 +121,7 @@
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
@ -133,6 +134,7 @@
<widget class="QLabel" name="balTotal">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
@ -158,6 +160,7 @@
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
@ -170,6 +173,7 @@
<widget class="QLabel" name="balUSDTotal">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
@ -384,8 +388,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1409</width>
<height>865</height>
<width>1447</width>
<height>860</height>
</rect>
</property>
<layout class="QVBoxLayout" name="sendToLayout">
@ -1210,7 +1214,6 @@
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QLabel" name="clientnamespacer">
<property name="text">
@ -1245,7 +1248,6 @@
</property>
</widget>
</item>
<item row="16" column="2">
<widget class="QLabel" name="longestchain">
<property name="text">
@ -1273,7 +1275,6 @@
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="numconnections">
<property name="text">
@ -1281,8 +1282,6 @@
</property>
</widget>
</item>
<item row="18" column="0">
<widget class="QLabel" name="chaintxcountlabel">
<property name="sizePolicy">
@ -1296,7 +1295,6 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
@ -1391,7 +1389,6 @@
</property>
</widget>
</item>
<item row="12" column="2">
<widget class="QLabel" name="rpcport">
<property name="text">
@ -1446,7 +1443,6 @@
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QLabel" name="p2pportspacer">
<property name="text">
@ -1488,7 +1484,6 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_12">
<property name="sizePolicy">
@ -1549,7 +1544,6 @@
</property>
</widget>
</item>
<item row="18" column="1">
<widget class="QLabel" name="chaintxcountspacer">
<property name="text">
@ -1614,7 +1608,7 @@
<x>0</x>
<y>0</y>
<width>1487</width>
<height>24</height>
<height>30</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@ -1646,6 +1640,7 @@
<property name="title">
<string>&amp;Apps</string>
</property>
<addaction name="actionGet_Block"/>
<addaction name="actionValidate_Address"/>
<addaction name="separator"/>
</widget>
@ -1751,6 +1746,11 @@
<string>Validate Address</string>
</property>
</action>
<action name="actionGet_Block">
<property name="text">
<string>Get Block Info</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>

6
src/memoedit.h

@ -5,8 +5,10 @@
#include "precompiled.h"
class MemoEdit : public QPlainTextEdit
{
class MemoEdit : public QPlainTextEdit {
Q_OBJECT
public:
MemoEdit(QWidget* parent);

1
src/precompiled.h

@ -62,7 +62,6 @@
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QtWebSockets/QtWebSockets>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>

19
src/rpc.cpp

@ -6,6 +6,7 @@
#include "settings.h"
#include "senttxstore.h"
#include "version.h"
#include <QThread>
#include "sd.h"
extern bool isdragonx;
@ -373,6 +374,10 @@ void RPC::validateAddress(QString address, const std::function<void(QJsonValue)>
conn->doRPCWithDefaultErrorHandling(makePayload(method, address), cb);
}
void RPC::getBlock(QString height, const std::function<void(QJsonValue)>& cb) {
conn->doRPCWithDefaultErrorHandling(makePayload("getblock", height), cb);
}
void RPC::getBalance(const std::function<void(QJsonValue)>& cb) {
QJsonObject payload = {
{"jsonrpc", "1.0"},
@ -395,8 +400,14 @@ void RPC::listBanned(const std::function<void(QJsonValue)>& cb) {
}
void RPC::getTransactions(const std::function<void(QJsonValue)>& cb) {
QString method = "listtransactions";
conn->doRPCWithDefaultErrorHandling(makePayload(method), cb);
QJsonObject payload = {
{"jsonrpc", "1.0"},
{"id", "42"},
{"method", "listtransactions"},
{"params", QJsonArray { "*", 99999 }}
};
conn->doRPCWithDefaultErrorHandling(payload, cb);
}
void RPC::mergeToAddress(QJsonArray &params, const std::function<void(QJsonValue)>& cb,
@ -757,9 +768,9 @@ void RPC::getInfoThenRefresh(bool force) {
int version = reply["version"].toInt();
int p2pport = reply["p2pport"].toInt();
int rpcport = reply["rpcport"].toInt();
int notarized = reply["notarized"].toInt();
int protocolversion = reply["protocolversion"].toInt();
int lag = curBlock - notarized;
// int notarized = reply["notarized"].toInt();
// int lag = curBlock - notarized;
// TODO: store all future halvings
int blocks_until_halving= 2020000 - curBlock;
char halving_days[8];

1
src/rpc.h

@ -110,6 +110,7 @@ public:
void importZPrivKey(QString addr, bool rescan, const std::function<void(QJsonValue)>& cb);
void importTPrivKey(QString addr, bool rescan, const std::function<void(QJsonValue)>& cb);
void validateAddress(QString address, const std::function<void(QJsonValue)>& cb);
void getBlock(QString height, const std::function<void(QJsonValue)>& cb);
void shutdownHushd();
void noConnection();

1
src/settings.cpp

@ -3,6 +3,7 @@
#include "mainwindow.h"
#include "settings.h"
#include "sd.h"
#include <QUrlQuery>
extern bool isdragonx;

283
src/settings.ui

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>623</width>
<height>653</height>
<height>622</height>
</rect>
</property>
<property name="minimumSize">
@ -145,228 +145,165 @@
<string>Options</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<item row="0" column="0" colspan="3">
<widget class="QCheckBox" name="chkSaveTxs">
<property name="text">
<string>Remember shielded transactions</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QCheckBox" name="chkAutoShield">
<item row="1" column="0" colspan="5">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Shield change from t-Addresses to your sapling address</string>
<string>Shielded transactions are saved locally and shown in the transactions tab. If you uncheck this, shielded transactions will not appear in the transactions tab.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="1" column="5">
<widget class="QPushButton" name="btnClearSaved">
<property name="text">
<string>Clear History</string>
</property>
</widget>
</item>
<item row="12" column="0" colspan="2">
<widget class="QLabel" name="label_10">
<item row="2" column="0" colspan="3">
<widget class="QCheckBox" name="chkCustomFees">
<property name="text">
<string>Connect to the internet to fetch prices</string>
<string>Allow custom fees</string>
</property>
</widget>
</item>
<item row="14" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
<item row="3" column="0" colspan="6">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Allow overriding the default fees when sending transactions. Enabling this option may compromise your privacy since fees are transparent. </string>
</property>
</spacer>
</item>
<item row="15" column="1">
<widget class="QComboBox" name="comboBoxTheme">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="wordWrap">
<bool>true</bool>
</property>
<item>
<property name="text">
<string notr="true">default</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">blue</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">light</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">dark</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">midnight</string>
</property>
</item>
<item>
<property name="text">
<string>dragonx</string>
</property>
</item>
</widget>
</item>
<item row="18" column="1">
<widget class="QComboBox" name="comboBoxLanguage">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item row="4" column="0" colspan="5">
<widget class="QCheckBox" name="chkAutoShield">
<property name="text">
<string>Shield change from t-Addresses to your sapling address</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<widget class="QLabel" name="lblTor">
<item row="5" column="0" colspan="6">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Connect to the Tor network via SOCKS proxy, which runs on 127.0.0.1:9050 by default or 127.0.0.1:9150 for Tor Browser. Please note that you'll have to install and run the Tor service externally.</string>
<string>Normally, change from t-Addresses goes to another t-Address. Checking this option will send the change to your shielded sapling address instead. Check this option to increase your privacy.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_tor_port">
<property name="text">
<string>Tor Port</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="torPort">
<property name="text">
<string notr="true">9050</string>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="15" column="0">
<widget class="QLabel" name="label_20">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item row="6" column="0" colspan="3">
<widget class="QCheckBox" name="chkTor">
<property name="text">
<string>Theme</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<string>Connect via Tor</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="label_6">
<item row="7" column="0" colspan="6">
<widget class="QLabel" name="lblTor">
<property name="text">
<string>Allow overriding the default fees when sending transactions. Enabling this option may compromise your privacy since fees are transparent. </string>
<string>Connect to the Tor network via SOCKS proxy, which runs on 127.0.0.1:9050 by default or 127.0.0.1:9150 for Tor Browser. Please note that you'll have to install and run the Tor service externally.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="10" column="0" colspan="2">
<widget class="QCheckBox" name="chkCheckUpdates">
<item row="8" column="0">
<widget class="QLabel" name="label_tor_proxy">
<property name="text">
<string>Check git.hush.is for updates at startup</string>
<string>Proxy IP</string>
</property>
</widget>
</item>
<item row="12" column="0" colspan="2">
<widget class="QCheckBox" name="chkFetchPrices">
<item row="8" column="1" colspan="2">
<widget class="QLineEdit" name="torProxy">
<property name="text">
<string>Fetch prices</string>
<string notr="true">127.0.0.1</string>
</property>
</widget>
</item>
<item row="11" column="0" colspan="2">
<widget class="QLabel" name="label_8">
<item row="8" column="3">
<widget class="QLabel" name="label_tor_port">
<property name="text">
<string>Connect to git.hush.is on startup to check for updates</string>
<string>Tor Port</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="chkCustomFees">
<item row="8" column="4">
<widget class="QLineEdit" name="torPort">
<property name="text">
<string>Allow custom fees</string>
<string notr="true">9050</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="label_5">
<item row="9" column="0" colspan="6">
<widget class="QCheckBox" name="chkCheckUpdates">
<property name="text">
<string>Shielded transactions are saved locally and shown in the transactions tab. If you uncheck this, shielded transactions will not appear in the transactions tab.</string>
<string>Connect to git.hush.is on startup to check for updates</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</widget>
</item>
<item row="10" column="0" colspan="6">
<widget class="QCheckBox" name="chkFetchPrices">
<property name="text">
<string>Connect to the internet to fetch prices</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="label_201">
<item row="11" column="2">
<widget class="QComboBox" name="comboBoxTheme">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Local Currency</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="chkTor">
<property name="text">
<string>Connect via Tor</string>
</property>
<item>
<property name="text">
<string notr="true">default</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">blue</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">light</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">dark</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">midnight</string>
</property>
</item>
<item>
<property name="text">
<string>dragonx</string>
</property>
</item>
</widget>
</item>
<item row="18" column="0">
<widget class="QLabel" name="langlabel">
<item row="12" column="0" colspan="2">
<widget class="QLabel" name="label_201">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
@ -374,14 +311,14 @@
</sizepolicy>
</property>
<property name="text">
<string>Language</string>
<string>Local Currency</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="16" column="1">
<item row="12" column="2">
<widget class="QComboBox" name="comboBoxCurrency">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -606,13 +543,45 @@
</item>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QLabel" name="label_7">
<item row="13" column="0" colspan="2">
<widget class="QLabel" name="langlabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Normally, change from t-Addresses goes to another t-Address. Checking this option will send the change to your shielded sapling address instead. Check this option to increase your privacy.</string>
<string>Language</string>
</property>
<property name="wordWrap">
<bool>true</bool>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="13" column="2">
<widget class="QComboBox" name="comboBoxLanguage">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="11" column="0" colspan="2">
<widget class="QLabel" name="label_20">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Theme</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>

2
src/validateaddress.h

@ -7,6 +7,8 @@
class ValidateAddressesModel : public QAbstractTableModel {
Q_OBJECT
public:
ValidateAddressesModel(QTableView* parent, QList<QPair<QString, QString>> props);
~ValidateAddressesModel() = default;

2
src/version.h

@ -1 +1 @@
#define APP_VERSION "1.3.1"
#define APP_VERSION "1.4.0"

2
src/viewalladdresses.h

@ -8,6 +8,8 @@
class ViewAllAddressesModel : public QAbstractTableModel {
Q_OBJECT
public:
ViewAllAddressesModel(QTableView* parent, QList<QString> taddrs, RPC* rpc);
~ViewAllAddressesModel() = default;

Loading…
Cancel
Save