@@ -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