mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-10-06 15:38:25 +00:00
Merge pull request #108 from newtonick/qr_background_color
add up/down joystick for qr brightness
This commit is contained in:
@@ -5,6 +5,7 @@ persistent_settings = False
|
||||
|
||||
[display]
|
||||
text_color = ORANGE
|
||||
qr_background_color = FFFFFF
|
||||
camera_rotation = 0
|
||||
|
||||
[wallet]
|
||||
|
||||
@@ -66,6 +66,7 @@ class Controller(Singleton):
|
||||
# settings
|
||||
controller.DEBUG = controller.settings.debug
|
||||
controller.color = controller.settings.text_color
|
||||
controller.current_bg_qr_color = controller.settings.qr_background_color
|
||||
|
||||
# Views
|
||||
controller.menu_view = MenuView()
|
||||
@@ -530,16 +531,26 @@ class Controller(Singleton):
|
||||
e = EncodeQR(seed_phrase=seed.mnemonic_list, passphrase=seed.passphrase, derivation=derivation, network=self.settings.network, qr_type=qr_xpub_type, qr_density=self.settings.qr_density, wordlist=self.settings.wordlist)
|
||||
|
||||
while e.totalParts() > 1:
|
||||
image = e.nextPartImage(240,240,2)
|
||||
image = e.nextPartImage(240,240,2,background=self.current_bg_qr_color)
|
||||
View.DispShowImage(image)
|
||||
time.sleep(0.1)
|
||||
if self.buttons.check_for_low(B.KEY_RIGHT):
|
||||
break
|
||||
break
|
||||
elif self.buttons.check_for_low(B.KEY_UP):
|
||||
self.prev_qr_background_color()
|
||||
elif self.buttons.check_for_low(B.KEY_DOWN):
|
||||
self.next_qr_background_color()
|
||||
|
||||
if e.totalParts() == 1:
|
||||
image = e.nextPartImage(240,240,1)
|
||||
while e.totalParts() == 1:
|
||||
image = e.nextPartImage(240,240,1,background=self.current_bg_qr_color)
|
||||
View.DispShowImage(image)
|
||||
self.buttons.wait_for([B.KEY_RIGHT])
|
||||
input = self.buttons.wait_for([B.KEY_RIGHT,B.KEY_UP,B.KEY_DOWN])
|
||||
if input == B.KEY_RIGHT:
|
||||
break
|
||||
elif input == B.KEY_UP:
|
||||
self.prev_qr_background_color()
|
||||
elif input == B.KEY_DOWN:
|
||||
self.next_qr_background_color()
|
||||
|
||||
return Path.MAIN_MENU
|
||||
|
||||
@@ -671,10 +682,13 @@ class Controller(Singleton):
|
||||
self.buttons.wait_for([B.KEY_RIGHT])
|
||||
|
||||
validate_network = NETWORKS[self.settings.network]
|
||||
validate_network_text = self.settings.network
|
||||
if "main" in address_type:
|
||||
validate_network = NETWORKS["main"]
|
||||
validate_network_text = "main"
|
||||
elif "test" in address_type:
|
||||
validate_network = NETWORKS["test"]
|
||||
validate_network_text = "test"
|
||||
|
||||
r = 0
|
||||
if address_type in ("Bech32-main", "Bech32-test") and len(address) == 62:
|
||||
@@ -771,7 +785,7 @@ class Controller(Singleton):
|
||||
derivation = self.settings_tools_view.draw_derivation_keyboard_entry(existing_derivation=self.settings.custom_derivation)
|
||||
self.settings.custom_derivation = derivation # save for next time
|
||||
else:
|
||||
derivation = Settings.calc_derivation(validate_network, "single sig", script_type)
|
||||
derivation = Settings.calc_derivation(validate_network_text, "single sig", script_type)
|
||||
|
||||
if derivation == "" or derivation == None:
|
||||
self.menu_view.draw_modal(["Invalid Derivation", "try again"], "", "Right to Continue")
|
||||
@@ -954,11 +968,15 @@ class Controller(Singleton):
|
||||
self.menu_view.draw_modal(["Generating PSBT QR ..."])
|
||||
e = EncodeQR(psbt=trimmed_psbt, qr_type=self.settings.qr_psbt_type, qr_density=self.settings.qr_density, wordlist=self.settings.wordlist)
|
||||
while True:
|
||||
image = e.nextPartImage(240,240,1)
|
||||
image = e.nextPartImage(240,240,1,background=self.current_bg_qr_color)
|
||||
View.DispShowImage(image)
|
||||
time.sleep(0.05)
|
||||
if self.buttons.check_for_low(B.KEY_RIGHT):
|
||||
break
|
||||
break
|
||||
elif self.buttons.check_for_low(B.KEY_UP):
|
||||
self.prev_qr_background_color()
|
||||
elif self.buttons.check_for_low(B.KEY_DOWN):
|
||||
self.next_qr_background_color()
|
||||
|
||||
# Return to Main Menu
|
||||
return Path.MAIN_MENU
|
||||
@@ -1032,6 +1050,35 @@ class Controller(Singleton):
|
||||
|
||||
return Path.SETTINGS_SUB_MENU
|
||||
|
||||
### next_qr_background_colors()
|
||||
|
||||
def next_qr_background_color(self):
|
||||
if self.current_bg_qr_color == "FFFFFF":
|
||||
self.current_bg_qr_color = "DDDDDD"
|
||||
elif self.current_bg_qr_color == "DDDDDD":
|
||||
self.current_bg_qr_color = "BBBBBB"
|
||||
elif self.current_bg_qr_color == "BBBBBB":
|
||||
self.current_bg_qr_color = "999999"
|
||||
elif self.current_bg_qr_color == "999999":
|
||||
self.current_bg_qr_color = "FFFFFF"
|
||||
|
||||
self.settings.qr_background_color = self.current_bg_qr_color
|
||||
|
||||
### prev_qr_background_colors()
|
||||
|
||||
def prev_qr_background_color(self):
|
||||
if self.current_bg_qr_color == "999999":
|
||||
self.current_bg_qr_color = "BBBBBB"
|
||||
elif self.current_bg_qr_color == "BBBBBB":
|
||||
self.current_bg_qr_color = "DDDDDD"
|
||||
elif self.current_bg_qr_color == "DDDDDD":
|
||||
self.current_bg_qr_color = "FFFFFF"
|
||||
elif self.current_bg_qr_color == "FFFFFF":
|
||||
self.current_bg_qr_color = "999999"
|
||||
|
||||
self.settings.qr_background_color = self.current_bg_qr_color
|
||||
|
||||
### Show Donate Screen and QR
|
||||
|
||||
def show_camera_rotation_tool(self):
|
||||
r = self.settings_tools_view.display_camera_rotation()
|
||||
|
||||
@@ -11,15 +11,15 @@ class QR:
|
||||
qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=5, border=border )
|
||||
qr.add_data(data)
|
||||
qr.make(fit=True)
|
||||
return(qr.make_image(fill_color="black", back_color="white").resize((width,height)).convert('RGB'))
|
||||
return(qr.make_image(fill_color="black", back_color="white").resize((width,height)).convert('RGBA'))
|
||||
|
||||
def qrimage_io(self, data, width=240, height=240, border=3):
|
||||
def qrimage_io(self, data, width=240, height=240, border=3, background="FFFFFF"):
|
||||
if 1 <= border <= 10:
|
||||
border_str = str(border)
|
||||
else:
|
||||
border_str = "3"
|
||||
|
||||
cmd = 'qrencode -m '+border_str+' -s 3 -l L --foreground=000000 --background=FFFFFF -t PNG -o "/dev/shm/qrcode.png" "' + str(data) + '"'
|
||||
cmd = 'qrencode -m '+border_str+' -s 3 -l L --foreground=000000 --background='+background+' -t PNG -o "/dev/shm/qrcode.png" "' + str(data) + '"'
|
||||
rv = subprocess.call(cmd, shell=True)
|
||||
|
||||
# if qrencode fails, fall back to only encoder
|
||||
|
||||
@@ -79,9 +79,12 @@ class EncodeQR:
|
||||
def part2Image(self, part, width=240, height=240, border=3):
|
||||
return self.qr.qrimage_io(part, width, height, border)
|
||||
|
||||
def nextPartImage(self, width=240, height=240, border=3):
|
||||
def nextPartImage(self, width=240, height=240, border=3, background="FFFFFF"):
|
||||
part = self.nextPart()
|
||||
return self.qr.qrimage_io(part, width, height, border)
|
||||
if self.qr_type == QRType.SEEDSSQR:
|
||||
return self.qr.qrimage(part, width, height, border)
|
||||
else:
|
||||
return self.qr.qrimage_io(part, width, height, border, background=background)
|
||||
|
||||
def isComplete(self):
|
||||
return self.encoder.isComplete()
|
||||
|
||||
@@ -5,8 +5,6 @@ from .encode_qr_density import EncodeQRDensity
|
||||
import configparser
|
||||
from embit import bip39
|
||||
|
||||
|
||||
|
||||
class Settings(Singleton):
|
||||
|
||||
@classmethod
|
||||
@@ -29,7 +27,8 @@ class Settings(Singleton):
|
||||
},
|
||||
'display': {
|
||||
'text_color': "ORANGE",
|
||||
'camera_rotation': 0,
|
||||
'qr_background_color': "FFFFFF",
|
||||
'camera_rotation': 0
|
||||
},
|
||||
'wallet': {
|
||||
'network': "main",
|
||||
@@ -57,6 +56,7 @@ class Settings(Singleton):
|
||||
self.software = config["wallet"]["software"]
|
||||
self.qr_density = int(config["wallet"]["qr_density"])
|
||||
self.custom_derivation = config["wallet"]["custom_derivation"]
|
||||
self.qr_background_color = config["display"]["qr_background_color"]
|
||||
|
||||
### persistent settings handling
|
||||
|
||||
@@ -128,6 +128,15 @@ class Settings(Singleton):
|
||||
@property
|
||||
def text_color(self):
|
||||
return self._data["display"]["text_color"]
|
||||
|
||||
@property
|
||||
def qr_background_color(self):
|
||||
return self._data["display"]["qr_background_color"]
|
||||
|
||||
@qr_background_color.setter
|
||||
def qr_background_color(self, value):
|
||||
self._data["display"]["qr_background_color"] = value
|
||||
self.__writeConfig()
|
||||
|
||||
@property
|
||||
def camera_rotation(self):
|
||||
|
||||
@@ -5,6 +5,7 @@ persistent_settings = False
|
||||
|
||||
[display]
|
||||
text_color = ORANGE
|
||||
qr_background_color = FFFFFF
|
||||
camera_rotation = 180
|
||||
|
||||
[wallet]
|
||||
|
||||
Reference in New Issue
Block a user