@@ -106,6 +106,9 @@ def init_visuals(
106106 self .pick_super_empty_dialog = FilePicker (
107107 on_result = self .pick_super_empty_result
108108 )
109+ self .pick_vendor_boot_dialog = FilePicker (
110+ on_result = self .pick_vendor_boot_result
111+ )
109112
110113 self .selected_image = Text ("Selected image: " )
111114 self .selected_recovery = Text ("Selected recovery: " )
@@ -118,6 +121,9 @@ def init_visuals(
118121 self .selected_super_empty = Checkbox (
119122 fill_color = colors .RED , value = None , disabled = True , tristate = True
120123 )
124+ self .selected_vendor_boot = Checkbox (
125+ fill_color = colors .RED , value = None , disabled = True , tristate = True
126+ )
121127
122128 # initialize and manage button state.
123129 self .confirm_button = confirm_button (self .on_confirm )
@@ -131,6 +137,7 @@ def init_visuals(
131137 self .pick_dtbo_dialog .on_result = self .enable_button_if_ready
132138 self .pick_vbmeta_dialog .on_result = self .enable_button_if_ready
133139 self .pick_super_empty_dialog .on_result = self .enable_button_if_ready
140+ self .pick_vendor_boot_dialog .on_result = self .enable_button_if_ready
134141 # back button
135142 self .back_button = ElevatedButton (
136143 "Back" ,
@@ -155,6 +162,7 @@ def build(self):
155162 self .pick_dtbo_dialog ,
156163 self .pick_vbmeta_dialog ,
157164 self .pick_super_empty_dialog ,
165+ self .pick_vendor_boot_dialog ,
158166 ]
159167 )
160168
@@ -462,6 +470,27 @@ def toggle_additional_image_selection(self):
462470 self .selected_super_empty ,
463471 ]
464472 ),
473+ ]
474+ )
475+ if "vendor_boot" in self .state .config .additional_steps :
476+ self .selected_vendor_boot .value = False
477+ additional_image_selection .extend (
478+ [
479+ Row (
480+ [
481+ FilledButton (
482+ "Pick `vendor_boot.img` image" ,
483+ icon = icons .UPLOAD_FILE ,
484+ on_click = lambda _ : self .pick_vendor_boot_dialog .pick_files (
485+ allow_multiple = False ,
486+ file_type = "custom" ,
487+ allowed_extensions = ["img" ],
488+ ),
489+ expand = True ,
490+ ),
491+ self .selected_vendor_boot ,
492+ ]
493+ ),
465494 Divider (),
466495 ]
467496 )
@@ -600,6 +629,26 @@ def pick_super_empty_result(self, e: FilePickerResultEvent):
600629 # update
601630 self .selected_super_empty .update ()
602631
632+ def pick_vendor_boot_result (self , e : FilePickerResultEvent ):
633+ path = ", " .join (map (lambda f : f .name , e .files )) if e .files else "Cancelled!"
634+ # update the textfield with the name of the file
635+ if e .files :
636+ # check if the super_empty works with the device and show the filename in different colors accordingly
637+ if path == "vendor_boot.img" :
638+ self .selected_vendor_boot .fill_color = colors .GREEN
639+ self .selected_vendor_boot .value = True
640+ self .state .vendor_boot_path = e .files [0 ].path
641+ logger .info (
642+ f"Selected vendor_boot.img from { self .state .vendor_boot_path } "
643+ )
644+ else :
645+ self .selected_vendor_boot .fill_color = colors .RED
646+ self .selected_vendor_boot .value = False
647+ else :
648+ logger .info ("No image selected." )
649+ # update
650+ self .selected_vendor_boot .update ()
651+
603652 def enable_button_if_ready (self , e ):
604653 """Enable the confirm button if both files have been selected."""
605654 if (".zip" in self .selected_image .value ) and (
@@ -642,6 +691,8 @@ def enable_button_if_ready(self, e):
642691 or "vbmeta" not in self .state .config .additional_steps ,
643692 self .selected_super_empty .value
644693 or "super_empty" not in self .state .config .additional_steps ,
694+ self .selected_vendor_boot .value
695+ or "vendor_boot" not in self .state .config .additional_steps ,
645696 ]
646697 ):
647698 logger .error (
@@ -693,4 +744,3 @@ def enable_button_if_ready(self, e):
693744 self .right_view .update ()
694745 else :
695746 self .confirm_button .disabled = True
696- # self.continue_eitherway_button.disabled = True
0 commit comments