@@ -65,7 +65,7 @@ def onCreate(self):
6565 self .load_resolution_preference ()
6666 self .scanqr_mode = self .getIntent ().extras .get ("scanqr_mode" )
6767 self .main_screen = lv .obj ()
68- self .main_screen .set_style_pad_all (0 , 0 )
68+ self .main_screen .set_style_pad_all (1 , 0 )
6969 self .main_screen .set_style_border_width (0 , 0 )
7070 self .main_screen .set_size (lv .pct (100 ), lv .pct (100 ))
7171 self .main_screen .set_scrollbar_mode (lv .SCROLLBAR_MODE .OFF )
@@ -651,49 +651,60 @@ def onCreate(self):
651651 # Create main screen
652652 screen = lv .obj ()
653653 screen .set_size (lv .pct (100 ), lv .pct (100 ))
654- screen .set_style_pad_all (5 , 0 )
654+ screen .set_style_pad_all (1 , 0 )
655655
656656 # Create tabview
657657 tabview = lv .tabview (screen )
658658 tabview .set_tab_bar_size (mpos .ui .pct_of_display_height (10 ))
659- tabview .set_size (lv .pct (100 ), mpos .ui .pct_of_display_height (85 ))
659+ tabview .set_size (lv .pct (100 ), mpos .ui .pct_of_display_height (80 ))
660660
661661 # Create Basic tab (always)
662662 basic_tab = tabview .add_tab ("Basic" )
663663 self .create_basic_tab (basic_tab , prefs )
664664
665665 # Create Advanced and Expert tabs only for ESP32 camera
666- if not self .is_webcam :
666+ if not self .is_webcam or True : # for now, show all tabs
667667 advanced_tab = tabview .add_tab ("Advanced" )
668668 self .create_advanced_tab (advanced_tab , prefs )
669669
670670 expert_tab = tabview .add_tab ("Expert" )
671671 self .create_expert_tab (expert_tab , prefs )
672672
673+ raw_tab = tabview .add_tab ("Raw" )
674+ self .create_raw_tab (raw_tab , prefs )
675+
673676 # Save/Cancel buttons at bottom
674677 button_cont = lv .obj (screen )
675- button_cont .set_size (lv .pct (100 ), mpos .ui .pct_of_display_height (15 ))
678+ button_cont .set_size (lv .pct (100 ), mpos .ui .pct_of_display_height (20 ))
676679 button_cont .remove_flag (lv .obj .FLAG .SCROLLABLE )
677680 button_cont .align (lv .ALIGN .BOTTOM_MID , 0 , 0 )
678681 button_cont .set_style_border_width (0 , 0 )
679682 button_cont .set_style_bg_opa (0 , 0 )
680683
681684 save_button = lv .button (button_cont )
682- save_button .set_size (100 , mpos .ui .pct_of_display_height ( 14 ) )
683- save_button .align (lv .ALIGN .CENTER , - 60 , 0 )
685+ save_button .set_size (mpos .ui .pct_of_display_width ( 25 ), lv . SIZE_CONTENT )
686+ save_button .align (lv .ALIGN .BOTTOM_LEFT , 0 , 0 )
684687 save_button .add_event_cb (lambda e : self .save_and_close (), lv .EVENT .CLICKED , None )
685688 save_label = lv .label (save_button )
686689 save_label .set_text ("Save" )
687690 save_label .center ()
688691
689692 cancel_button = lv .button (button_cont )
690- cancel_button .set_size (100 , mpos .ui .pct_of_display_height ( 15 ) )
691- cancel_button .align (lv .ALIGN .CENTER , 60 , 0 )
693+ cancel_button .set_size (mpos .ui .pct_of_display_width ( 25 ), lv . SIZE_CONTENT )
694+ cancel_button .align (lv .ALIGN .BOTTOM_MID , 0 , 0 )
692695 cancel_button .add_event_cb (lambda e : self .finish (), lv .EVENT .CLICKED , None )
693696 cancel_label = lv .label (cancel_button )
694697 cancel_label .set_text ("Cancel" )
695698 cancel_label .center ()
696699
700+ erase_button = lv .button (button_cont )
701+ erase_button .set_size (mpos .ui .pct_of_display_width (25 ), lv .SIZE_CONTENT )
702+ erase_button .align (lv .ALIGN .BOTTOM_RIGHT , 0 , 0 )
703+ erase_button .add_event_cb (lambda e : self .erase_and_close (), lv .EVENT .CLICKED , None )
704+ erase_label = lv .label (erase_button )
705+ erase_label .set_text ("Erase" )
706+ erase_label .center ()
707+
697708 self .setContentView (screen )
698709
699710 def create_slider (self , parent , label_text , min_val , max_val , default_val , pref_key ):
@@ -771,7 +782,8 @@ def create_dropdown(self, parent, label_text, options, default_idx, pref_key):
771782 def create_basic_tab (self , tab , prefs ):
772783 """Create Basic settings tab."""
773784 tab .set_flex_flow (lv .FLEX_FLOW .COLUMN )
774- tab .set_scrollbar_mode (lv .SCROLLBAR_MODE .AUTO )
785+ #tab.set_scrollbar_mode(lv.SCROLLBAR_MODE.AUTO)
786+ tab .set_style_pad_all (1 , 0 )
775787
776788 # Resolution dropdown
777789 current_resolution = prefs .get_string ("resolution" , "320x240" )
@@ -781,8 +793,7 @@ def create_basic_tab(self, tab, prefs):
781793 resolution_idx = idx
782794 break
783795
784- dropdown , cont = self .create_dropdown (tab , "Resolution:" , self .resolutions ,
785- resolution_idx , "resolution" )
796+ dropdown , cont = self .create_dropdown (tab , "Resolution:" , self .resolutions , resolution_idx , "resolution" )
786797 self .ui_controls ["resolution" ] = dropdown
787798
788799 # Brightness
@@ -822,8 +833,9 @@ def create_basic_tab(self, tab, prefs):
822833
823834 def create_advanced_tab (self , tab , prefs ):
824835 """Create Advanced settings tab."""
825- tab .set_scrollbar_mode (lv .SCROLLBAR_MODE .AUTO )
836+ # tab.set_scrollbar_mode(lv.SCROLLBAR_MODE.AUTO)
826837 tab .set_flex_flow (lv .FLEX_FLOW .COLUMN )
838+ tab .set_style_pad_all (1 , 0 )
827839
828840 # Auto Exposure Control (master switch)
829841 exposure_ctrl = prefs .get_bool ("exposure_ctrl" , True )
@@ -854,7 +866,7 @@ def exposure_ctrl_changed(e):
854866
855867 # Auto Exposure Level
856868 ae_level = prefs .get_int ("ae_level" , 0 )
857- slider , label , cont = self .create_slider (tab , "AE Level" , - 2 , 2 , ae_level , "ae_level" )
869+ slider , label , cont = self .create_slider (tab , "Auto Exposure Level" , - 2 , 2 , ae_level , "ae_level" )
858870 self .ui_controls ["ae_level" ] = slider
859871
860872 # Night Mode (AEC2)
@@ -931,12 +943,13 @@ def whitebal_changed(e):
931943
932944 def create_expert_tab (self , tab , prefs ):
933945 """Create Expert settings tab."""
934- tab .set_scrollbar_mode (lv .SCROLLBAR_MODE .AUTO )
946+ # tab.set_scrollbar_mode(lv.SCROLLBAR_MODE.AUTO)
935947 tab .set_flex_flow (lv .FLEX_FLOW .COLUMN )
948+ tab .set_style_pad_all (1 , 0 )
936949
937- # Note: Sensor detection would require camera access
950+ # Note: Sensor detection isn't performed right now
938951 # For now, show sharpness/denoise with note
939- supports_sharpness = False # Conservative default
952+ supports_sharpness = True # Assume yes
940953
941954 # Sharpness
942955 sharpness = prefs .get_int ("sharpness" , 0 )
@@ -965,9 +978,10 @@ def create_expert_tab(self, tab, prefs):
965978 note .align (lv .ALIGN .TOP_RIGHT , 0 , 0 )
966979
967980 # JPEG Quality
968- quality = prefs .get_int ("quality" , 85 )
969- slider , label , cont = self .create_slider (tab , "JPEG Quality" , 0 , 100 , quality , "quality" )
970- self .ui_controls ["quality" ] = slider
981+ # Disabled because JPEG is not used right now
982+ #quality = prefs.get_int("quality", 85)
983+ #slider, label, cont = self.create_slider(tab, "JPEG Quality", 0, 100, quality, "quality")
984+ #self.ui_controls["quality"] = slider
971985
972986 # Color Bar
973987 colorbar = prefs .get_bool ("colorbar" , False )
@@ -999,6 +1013,17 @@ def create_expert_tab(self, tab, prefs):
9991013 checkbox , cont = self .create_checkbox (tab , "Lens Correction" , lenc , "lenc" )
10001014 self .ui_controls ["lenc" ] = checkbox
10011015
1016+ def create_raw_tab (self , tab , prefs ):
1017+ startX = prefs .get_bool ("startX" , 0 )
1018+ #startX, cont = self.create_checkbox(tab, "Lens Correction", lenc, "lenc")
1019+ startX , label , cont = self .create_slider (tab , "startX" , 0 , 2844 , startX , "startX" )
1020+ self .ui_controls ["statX" ] = startX
1021+
1022+ def erase_and_close (self ):
1023+ SharedPreferences ("com.micropythonos.camera" ).edit ().remove_all ().commit ()
1024+ self .setResult (True , {"settings_changed" : True })
1025+ self .finish ()
1026+
10021027 def save_and_close (self ):
10031028 """Save all settings to SharedPreferences and return result."""
10041029 prefs = SharedPreferences ("com.micropythonos.camera" )
0 commit comments