Skip to content

Commit b20b641

Browse files
Camera app: improve button layout
1 parent 32603cd commit b20b641

File tree

2 files changed

+50
-43
lines changed

2 files changed

+50
-43
lines changed

internal_filesystem/apps/com.micropythonos.camera/assets/camera_app.py

Lines changed: 49 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class CameraApp(Activity):
1818
CONFIGFILE = "config.json"
1919
SCANQR_CONFIG = "config_scanqr_mode.json"
2020

21-
button_width = 60
22-
button_height = 45
21+
button_width = 75
22+
button_height = 50
2323

2424
status_label_text = "No camera found."
2525
status_label_text_searching = "Searching QR codes...\n\nHold still and try varying scan distance (10-25cm) and make the QR code big (4-12cm). Ensure proper lighting."
@@ -68,26 +68,18 @@ def onCreate(self):
6868
# Settings button
6969
settings_button = lv.button(self.main_screen)
7070
settings_button.set_size(self.button_width, self.button_height)
71-
settings_button.align(lv.ALIGN.TOP_RIGHT, 0, self.button_height + 5)
71+
settings_button.align_to(close_button, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
7272
settings_label = lv.label(settings_button)
7373
settings_label.set_text(lv.SYMBOL.SETTINGS)
7474
settings_label.center()
7575
settings_button.add_event_cb(lambda e: self.open_settings(),lv.EVENT.CLICKED,None)
76-
self.snap_button = lv.button(self.main_screen)
77-
self.snap_button.set_size(self.button_width, self.button_height)
78-
self.snap_button.align(lv.ALIGN.RIGHT_MID, 0, 0)
79-
self.snap_button.add_flag(lv.obj.FLAG.HIDDEN)
80-
self.snap_button.add_event_cb(self.snap_button_click,lv.EVENT.CLICKED,None)
81-
snap_label = lv.label(self.snap_button)
82-
snap_label.set_text(lv.SYMBOL.OK)
83-
snap_label.center()
84-
self.zoom_button = lv.button(self.main_screen)
85-
self.zoom_button.set_size(self.button_width, self.button_height)
86-
self.zoom_button.align(lv.ALIGN.RIGHT_MID, 0, self.button_height + 5)
87-
self.zoom_button.add_event_cb(self.zoom_button_click,lv.EVENT.CLICKED,None)
88-
zoom_label = lv.label(self.zoom_button)
89-
zoom_label.set_text("Z")
90-
zoom_label.center()
76+
#self.zoom_button = lv.button(self.main_screen)
77+
#self.zoom_button.set_size(self.button_width, self.button_height)
78+
#self.zoom_button.align(lv.ALIGN.RIGHT_MID, 0, self.button_height + 5)
79+
#self.zoom_button.add_event_cb(self.zoom_button_click,lv.EVENT.CLICKED,None)
80+
#zoom_label = lv.label(self.zoom_button)
81+
#zoom_label.set_text("Z")
82+
#zoom_label.center()
9183
self.qr_button = lv.button(self.main_screen)
9284
self.qr_button.set_size(self.button_width, self.button_height)
9385
self.qr_button.add_flag(lv.obj.FLAG.HIDDEN)
@@ -96,6 +88,17 @@ def onCreate(self):
9688
self.qr_label = lv.label(self.qr_button)
9789
self.qr_label.set_text(lv.SYMBOL.EYE_OPEN)
9890
self.qr_label.center()
91+
92+
self.snap_button = lv.button(self.main_screen)
93+
self.snap_button.set_size(self.button_width, self.button_height)
94+
self.snap_button.align_to(self.qr_button, lv.ALIGN.OUT_TOP_MID, 0, -10)
95+
self.snap_button.add_flag(lv.obj.FLAG.HIDDEN)
96+
self.snap_button.add_event_cb(self.snap_button_click,lv.EVENT.CLICKED,None)
97+
snap_label = lv.label(self.snap_button)
98+
snap_label.set_text(lv.SYMBOL.OK)
99+
snap_label.center()
100+
101+
99102
self.status_label_cont = lv.obj(self.main_screen)
100103
width = mpos.ui.pct_of_display_width(70)
101104
height = mpos.ui.pct_of_display_width(60)
@@ -318,36 +321,15 @@ def qr_button_click(self, e):
318321
else:
319322
self.stop_qr_decoding()
320323

321-
def zoom_button_click(self, e):
322-
print("zooming...")
323-
if self.use_webcam:
324-
print("zoom_button_click is not supported for webcam")
325-
return
326-
if self.cam:
327-
startX = self.prefs.get_int("startX", CameraSettingsActivity.startX_default)
328-
startY = self.prefs.get_int("startX", CameraSettingsActivity.startY_default)
329-
endX = self.prefs.get_int("startX", CameraSettingsActivity.endX_default)
330-
endY = self.prefs.get_int("startX", CameraSettingsActivity.endY_default)
331-
offsetX = self.prefs.get_int("startX", CameraSettingsActivity.offsetX_default)
332-
offsetY = self.prefs.get_int("startX", CameraSettingsActivity.offsetY_default)
333-
totalX = self.prefs.get_int("startX", CameraSettingsActivity.totalX_default)
334-
totalY = self.prefs.get_int("startX", CameraSettingsActivity.totalY_default)
335-
outputX = self.prefs.get_int("startX", CameraSettingsActivity.outputX_default)
336-
outputY = self.prefs.get_int("startX", CameraSettingsActivity.outputY_default)
337-
scale = self.prefs.get_bool("scale", CameraSettingsActivity.scale_default)
338-
binning = self.prefs.get_bool("binning", CameraSettingsActivity.binning_default)
339-
result = self.cam.set_res_raw(startX,startY,endX,endY,offsetX,offsetY,totalX,totalY,outputX,outputY,scale,binning)
340-
print(f"self.cam.set_res_raw returned {result}")
341-
342324
def open_settings(self):
343325
intent = Intent(activity_class=CameraSettingsActivity, extras={"prefs": self.prefs if not self.scanqr_mode else self.scanqr_prefs, "use_webcam": self.use_webcam, "scanqr_mode": self.scanqr_mode})
344326
self.startActivity(intent)
345327

346328
def try_capture(self, event):
347329
try:
348-
if self.use_webcam:
330+
if self.use_webcam and self.cam:
349331
self.current_cam_buffer = webcam.capture_frame(self.cam, "rgb565" if self.colormode else "grayscale")
350-
elif self.cam.frame_available():
332+
elif self.cam and self.cam.frame_available():
351333
self.current_cam_buffer = self.cam.capture()
352334
except Exception as e:
353335
print(f"Camera capture exception: {e}")
@@ -358,7 +340,7 @@ def try_capture(self, event):
358340
self.image.set_src(self.image_dsc)
359341
if self.scanqr_mode:
360342
self.qrdecode_one()
361-
if not self.use_webcam:
343+
if not self.use_webcam and self.cam:
362344
self.cam.free_buffer() # After QR decoding, free the old buffer, otherwise the camera doesn't provide a new one
363345

364346
def init_internal_cam(self, width, height):
@@ -572,3 +554,28 @@ def apply_camera_settings(self, prefs, cam, use_webcam):
572554
except Exception as e:
573555
print(f"Error applying camera settings: {e}")
574556

557+
558+
559+
560+
"""
561+
def zoom_button_click_unused(self, e):
562+
print("zooming...")
563+
if self.use_webcam:
564+
print("zoom_button_click is not supported for webcam")
565+
return
566+
if self.cam:
567+
startX = self.prefs.get_int("startX", CameraSettingsActivity.startX_default)
568+
startY = self.prefs.get_int("startX", CameraSettingsActivity.startY_default)
569+
endX = self.prefs.get_int("startX", CameraSettingsActivity.endX_default)
570+
endY = self.prefs.get_int("startX", CameraSettingsActivity.endY_default)
571+
offsetX = self.prefs.get_int("startX", CameraSettingsActivity.offsetX_default)
572+
offsetY = self.prefs.get_int("startX", CameraSettingsActivity.offsetY_default)
573+
totalX = self.prefs.get_int("startX", CameraSettingsActivity.totalX_default)
574+
totalY = self.prefs.get_int("startX", CameraSettingsActivity.totalY_default)
575+
outputX = self.prefs.get_int("startX", CameraSettingsActivity.outputX_default)
576+
outputY = self.prefs.get_int("startX", CameraSettingsActivity.outputY_default)
577+
scale = self.prefs.get_bool("scale", CameraSettingsActivity.scale_default)
578+
binning = self.prefs.get_bool("binning", CameraSettingsActivity.binning_default)
579+
result = self.cam.set_res_raw(startX,startY,endX,endY,offsetX,offsetY,totalX,totalY,outputX,outputY,scale,binning)
580+
print(f"self.cam.set_res_raw returned {result}")
581+
"""

internal_filesystem/apps/com.micropythonos.camera/assets/camera_settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ def create_basic_tab(self, tab, prefs):
276276
# Resolution dropdown
277277
print(f"self.scanqr_mode: {self.scanqr_mode}")
278278
current_resolution_width = prefs.get_string("resolution_width", self.DEFAULT_SCANQR_WIDTH if self.scanqr_mode else self.DEFAULT_WIDTH)
279-
current_resolution_height = prefs.get_string("resolution_width", self.DEFAULT_SCANQR_HEIGHT if self.scanqr_mode else self.DEFAULT_HEIGHT)
279+
current_resolution_height = prefs.get_string("resolution_height", self.DEFAULT_SCANQR_HEIGHT if self.scanqr_mode else self.DEFAULT_HEIGHT)
280280
dropdown_value = f"{current_resolution_width}x{current_resolution_height}"
281281
print(f"looking for {dropdown_value}")
282282
resolution_idx = 0

0 commit comments

Comments
 (0)