Skip to content

Commit 9270c9a

Browse files
ImageView app: add delete button
1 parent ed860a3 commit 9270c9a

File tree

1 file changed

+37
-6
lines changed
  • internal_filesystem/apps/com.micropythonos.imageview/assets

1 file changed

+37
-6
lines changed

internal_filesystem/apps/com.micropythonos.imageview/assets/imageview.py

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def onCreate(self):
3434
self.label = lv.label(screen)
3535
self.label.set_text(f"Loading images from\n{self.imagedir}")
3636
self.label.align(lv.ALIGN.TOP_MID,0,0)
37+
self.label.set_width(lv.pct(80))
3738
self.prev_button = lv.button(screen)
3839
self.prev_button.align(lv.ALIGN.BOTTOM_LEFT,0,0)
3940
self.prev_button.add_event_cb(lambda e: self.show_prev_image_if_fullscreen(),lv.EVENT.FOCUSED,None)
@@ -50,6 +51,12 @@ def onCreate(self):
5051
#self.play_button.add_event_cb(lambda e: self.play(),lv.EVENT.CLICKED,None)
5152
#play_label = lv.label(self.play_button)
5253
#play_label.set_text(lv.SYMBOL.PLAY)
54+
self.delete_button = lv.button(screen)
55+
self.delete_button.align(lv.ALIGN.BOTTOM_MID,0,0)
56+
self.delete_button.add_event_cb(lambda e: self.delete_image(),lv.EVENT.CLICKED,None)
57+
delete_label = lv.label(self.delete_button)
58+
delete_label.set_text(lv.SYMBOL.TRASH)
59+
delete_label.set_style_text_font(lv.font_montserrat_16, 0)
5360
self.next_button = lv.button(screen)
5461
self.next_button.align(lv.ALIGN.BOTTOM_RIGHT,0,0)
5562
#self.next_button.add_event_cb(self.print_events, lv.EVENT.ALL, None)
@@ -79,10 +86,12 @@ def onResume(self, screen):
7986
self.images.append(fullname)
8087

8188
self.images.sort()
82-
# Begin with one image:
83-
self.show_next_image()
84-
self.stop_fullscreen()
85-
#self.image_timer = lv.timer_create(self.show_next_image, 1000, None)
89+
if len(self.images) == 0:
90+
self.no_image_mode()
91+
else:
92+
# Begin with one image:
93+
self.show_next_image()
94+
self.stop_fullscreen()
8695
except Exception as e:
8796
print(f"ImageView encountered exception for {self.imagedir}: {e}")
8897

@@ -93,9 +102,16 @@ def onStop(self, screen):
93102
print("ImageView: deleting image_timer")
94103
self.image_timer.delete()
95104

105+
def no_image_mode(self):
106+
self.label.set_text(f"No images found in {self.imagedir}...")
107+
mpos.ui.anim.smooth_hide(self.prev_button)
108+
mpos.ui.anim.smooth_hide(self.delete_button)
109+
mpos.ui.anim.smooth_hide(self.next_button)
110+
96111
def show_prev_image(self, event=None):
97112
print("showing previous image...")
98113
if len(self.images) < 1:
114+
self.no_image_mode()
99115
return
100116
if self.image_nr is None or self.image_nr == 0:
101117
self.image_nr = len(self.images) - 1
@@ -119,6 +135,7 @@ def stop_fullscreen(self):
119135
print("stopping fullscreen")
120136
mpos.ui.anim.smooth_show(self.label)
121137
mpos.ui.anim.smooth_show(self.prev_button)
138+
mpos.ui.anim.smooth_show(self.delete_button)
122139
#mpos.ui.anim.smooth_show(self.play_button)
123140
self.play_button.add_flag(lv.obj.FLAG.HIDDEN) # make it not accepting focus
124141
mpos.ui.anim.smooth_show(self.next_button)
@@ -127,6 +144,7 @@ def start_fullscreen(self):
127144
print("starting fullscreen")
128145
mpos.ui.anim.smooth_hide(self.label)
129146
mpos.ui.anim.smooth_hide(self.prev_button, hide=False)
147+
mpos.ui.anim.smooth_hide(self.delete_button, hide=False)
130148
#mpos.ui.anim.smooth_hide(self.play_button, hide=False)
131149
self.play_button.remove_flag(lv.obj.FLAG.HIDDEN) # make it accepting focus
132150
mpos.ui.anim.smooth_hide(self.next_button, hide=False)
@@ -170,6 +188,7 @@ def unfocus(self):
170188
def show_next_image(self, event=None):
171189
print("showing next image...")
172190
if len(self.images) < 1:
191+
self.no_image_mode()
173192
return
174193
if self.image_nr is None or self.image_nr >= len(self.images) - 1:
175194
self.image_nr = 0
@@ -179,6 +198,16 @@ def show_next_image(self, event=None):
179198
print(f"show_next_image showing {name}")
180199
self.show_image(name)
181200

201+
def delete_image(self, event=None):
202+
filename = self.images[self.image_nr]
203+
try:
204+
os.remove(filename)
205+
self.clear_image()
206+
self.label.set_text(f"Deleted\n{filename}")
207+
del self.images[self.image_nr]
208+
except Exception as e:
209+
print(f"Error deleting {filename}: {e}")
210+
182211
def extract_dimensions_and_format(self, filename):
183212
# Split the filename by '_'
184213
parts = filename.split('_')
@@ -191,6 +220,7 @@ def extract_dimensions_and_format(self, filename):
191220
return width, height, color_format.upper()
192221

193222
def show_image(self, name):
223+
self.current_image = name
194224
try:
195225
self.label.set_text(name)
196226
self.clear_image()
@@ -220,7 +250,7 @@ def show_image(self, name):
220250
if color_format == "GRAY":
221251
cf = lv.COLOR_FORMAT.L8
222252
stride = width
223-
else:
253+
elif color_format != "RGB565":
224254
print(f"WARNING: unknown color format {color_format}, assuming RGB565...")
225255
self.current_image_dsc = lv.image_dsc_t({
226256
"header": {
@@ -242,7 +272,7 @@ def scale_image(self):
242272
if self.fullscreen:
243273
pct = 100
244274
else:
245-
pct = 90
275+
pct = 70
246276
lvgl_w = mpos.ui.pct_of_display_width(pct)
247277
lvgl_h = mpos.ui.pct_of_display_height(pct)
248278
print(f"scaling to size: {lvgl_w}x{lvgl_h}")
@@ -265,6 +295,7 @@ def scale_image(self):
265295

266296
def clear_image(self):
267297
"""Clear current image or GIF source to free memory."""
298+
self.image.set_src(None)
268299
#if self.current_image_dsc:
269300
# self.current_image_dsc = None # Release reference to descriptor
270301
#self.image.set_src(None) # Clear image source

0 commit comments

Comments
 (0)