Merge pull request #108 from newtonick/qr_background_color

add up/down joystick for qr brightness
This commit is contained in:
SeedSigner
2021-10-18 00:12:22 -04:00
committed by GitHub
6 changed files with 77 additions and 16 deletions
+1
View File
@@ -5,6 +5,7 @@ persistent_settings = False
[display]
text_color = ORANGE
qr_background_color = FFFFFF
camera_rotation = 0
[wallet]
+55 -8
View File
@@ -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()
+3 -3
View File
@@ -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
+5 -2
View File
@@ -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()
+12 -3
View File
@@ -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):
+1
View File
@@ -5,6 +5,7 @@ persistent_settings = False
[display]
text_color = ORANGE
qr_background_color = FFFFFF
camera_rotation = 180
[wallet]