Skip to content

Commit 5ec2136

Browse files
committed
theme explicit option,
better icon draft better options processing
1 parent 05028ba commit 5ec2136

File tree

6 files changed

+70
-49
lines changed

6 files changed

+70
-49
lines changed

.github/workflows/run.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ jobs:
259259
with:
260260
tag_name: ${{ steps.version.outputs.version }}
261261
name: Dude ${{ steps.version.outputs.version }}
262-
draft: false
262+
draft: true
263263
prerelease: true
264264
files: |
265265
dude.${{ steps.version.outputs.version }}.linux.portable.zip

src/dude.py

+64-43
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585

8686
###########################################################################################################################################
8787

88-
CFG_KEY_DARK_THEME='dark_theme'
88+
CFG_THEME='theme'
8989
CFG_KEY_FULL_CRC='show_full_crc'
9090
CFG_KEY_SHOW_TOOLTIPS_INFO='show_tooltips_info'
9191
CFG_KEY_SHOW_TOOLTIPS_HELP='show_tooltips_help'
@@ -128,10 +128,10 @@
128128

129129
CFG_KEY_SHOW_PREVIEW = 'preview_shown'
130130

131-
CFG_lang = 'lang'
131+
CFG_LANG = 'lang'
132132

133133
cfg_defaults={
134-
CFG_KEY_DARK_THEME:False,
134+
CFG_THEME:'Vista Light' if windows else 'Clam Light',
135135
CFG_KEY_FULL_CRC:False,
136136
CFG_KEY_SHOW_TOOLTIPS_INFO:True,
137137
CFG_KEY_SHOW_TOOLTIPS_HELP:True,
@@ -163,7 +163,7 @@
163163
CFG_KEY_MARK_RE_0:False,
164164
CFG_KEY_MARK_RE_1:False,
165165
CFG_KEY_SHOW_PREVIEW:False,
166-
CFG_lang:'English'
166+
CFG_LANG:'English'
167167
}
168168

169169
NAME={DELETE:'Delete',SOFTLINK:'Softlink',HARDLINK:'Hardlink',WIN_LNK:'.lnk file'}
@@ -578,7 +578,7 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N
578578
self.cfg_get_bool=self.cfg.get_bool
579579
self.cfg_get=self.cfg.get
580580

581-
langs.set( self.cfg_get(CFG_lang) )
581+
langs.set( self.cfg_get(CFG_LANG) )
582582

583583
self.exclude_frames=[]
584584

@@ -615,7 +615,21 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N
615615
self_main.withdraw()
616616

617617
####################################
618-
black_theme=self.cfg_get_bool(CFG_KEY_DARK_THEME)
618+
self.themes_combos={}
619+
{'Clam Light':('clam',0),'Clam Dark':('clam',1),'Classic Light':('classic',0),'Classic Dark':('classic',1),'Vista Light':('vista',0),'Vista Dark':('vista',0)}
620+
621+
themes_names= [ 'Clam', 'Alt', 'Default', 'Classic']
622+
if windows:
623+
themes_names = ['Vista'] + themes_names
624+
625+
for name in themes_names:
626+
for darkness,darknesscode in (('',0),('Dark',1)):
627+
full_name = name + ' ' + darkness
628+
self.themes_combos[full_name]=name.lower(),darknesscode
629+
630+
self.default_theme='vista' if windows else 'clam'
631+
632+
theme_name,black_theme=self.themes_combos.get(self.cfg_get(CFG_THEME),(self.default_theme,0))
619633

620634
if black_theme:
621635
bg_sel='gray30'
@@ -752,20 +766,19 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N
752766
####################################################################
753767
style = Style()
754768

755-
#('aqua', 'step', 'clam', 'alt', 'default', 'classic')
756-
757-
if env_theme:=os_environ.get('DUDE_THEME'):
758-
print(f'{env_theme=}')
759-
parent_theme=env_theme
760-
else:
761-
parent_theme = 'vista' if windows else 'clam'
769+
parent_them = theme_name
762770

763771
try:
764-
style.theme_create( "dummy", parent=parent_theme )
772+
style.theme_create( "dummy", parent=theme_name )
765773
except Exception as e:
766774
print(e)
767-
print('Try one of: aqua,step,clam,alt,default,classic')
768-
sys_exit(1)
775+
776+
try:
777+
style.theme_create( "dummy", parent=self.default_theme )
778+
except Exception as e2:
779+
print(e2)
780+
781+
sys_exit(1)
769782

770783
bg_color = self.bg_color = style.lookup('TFrame', 'background')
771784
preview.configure(bg=bg_color)
@@ -776,16 +789,14 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N
776789

777790
style_configure = style.configure
778791

779-
if not env_theme:
780-
style_map('no_focus.Treeview', background=[('focus',bg_focus),('selected',bg_sel),('',self.bg_content)])
781-
style_map('Treeview', background=[('focus',bg_focus),('selected',bg_sel),('',self.bg_content)] )
782-
style_map('semi_focus.Treeview', background=[('focus',bg_focus),('selected',bg_focus_off),('',self.bg_content)])
783-
#works but not for every theme
784-
style_configure("Treeview", fieldbackground=self.bg_content)
785-
786-
style_map("TCheckbutton",indicatorbackground=[("disabled",self.bg_color),('','white')],indicatorforeground=[("disabled",'darkgray'),('','black')],foreground=[('disabled',"gray"),('',"black")])
787-
style_map("TEntry", foreground=[("disabled",'darkgray'),('','black')],fieldbackground=[("disabled",self.bg_color),('','white')])
792+
style_map('no_focus.Treeview', background=[('focus',bg_focus),('selected',bg_sel),('',self.bg_content)])
793+
style_map('Treeview', background=[('focus',bg_focus),('selected',bg_sel),('',self.bg_content)] )
794+
style_map('semi_focus.Treeview', background=[('focus',bg_focus),('selected',bg_focus_off),('',self.bg_content)])
795+
#works but not for every theme
796+
style_configure("Treeview", fieldbackground=self.bg_content)
788797

798+
style_map("TCheckbutton",indicatorbackground=[("disabled",self.bg_color),('','white')],indicatorforeground=[("disabled",'darkgray'),('','black')],foreground=[('disabled',"gray"),('',"black")])
799+
style_map("TEntry", foreground=[("disabled",'darkgray'),('','black')],fieldbackground=[("disabled",self.bg_color),('','white')])
789800

790801
style_map("TButton", fg=[('disabled',"gray"),('',"black")] )
791802

@@ -1764,7 +1775,7 @@ def get_settings_dialog(self):
17641775

17651776
self.settings_dialog=GenericDialog(self.main,self.main_icon_tuple,self.bg_color,STR('Settings'),pre_show=self.pre_show_settings,post_close=self.post_close)
17661777

1767-
self.dark_theme = BooleanVar()
1778+
self.theme = StringVar()
17681779
self.show_full_crc = BooleanVar()
17691780
self.show_tooltips_info = BooleanVar()
17701781
self.show_tooltips_help = BooleanVar()
@@ -1790,7 +1801,6 @@ def get_settings_dialog(self):
17901801
self.folders_open_wrapper_params = StringVar()
17911802

17921803
self.settings = [
1793-
(self.dark_theme,CFG_KEY_DARK_THEME),
17941804
(self.show_full_crc,CFG_KEY_FULL_CRC),
17951805
(self.show_tooltips_info,CFG_KEY_SHOW_TOOLTIPS_INFO),
17961806
(self.show_tooltips_help,CFG_KEY_SHOW_TOOLTIPS_HELP),
@@ -1807,6 +1817,7 @@ def get_settings_dialog(self):
18071817
(self.allow_delete_non_duplicates,CFG_ALLOW_DELETE_NON_DUPLICATES)
18081818
]
18091819
self.settings_str = [
1820+
(self.theme,CFG_THEME),
18101821
(self.show_mode,CFG_KEY_SHOW_MODE),
18111822
(self.file_open_wrapper,CFG_KEY_WRAPPER_FILE),
18121823
(self.folders_open_wrapper,CFG_KEY_WRAPPER_FOLDERS),
@@ -1819,17 +1830,20 @@ def get_settings_dialog(self):
18191830
lang_frame.grid(row=row, column=0, sticky='news',padx=4,pady=4) ; row+=1
18201831

18211832
Label(lang_frame,text=STR('Language:'),anchor='w').grid(row=0, column=0, sticky='wens',padx=8,pady=4)
1822-
18231833
self.lang_var = StringVar()
18241834
self.lang_cb = Combobox(lang_frame,values=list(langs.lang_dict.keys()),textvariable=self.lang_var,state='readonly',width=16)
18251835
self.lang_cb.grid(row=0, column=1, sticky='news',padx=4,pady=4)
18261836

1827-
Checkbutton(lang_frame, text = STR('Dark Theme'), variable=self.dark_theme,command=self.dark_mode_change).grid(row=0,column=3,sticky='nsew',padx=20,pady=2)
1837+
1838+
Label(lang_frame,text=STR('Theme:'),anchor='w').grid(row=0, column=2, sticky='wens',padx=8,pady=4)
1839+
self.theme_var = StringVar()
1840+
1841+
self.theme_cb = Combobox(lang_frame,values=list(self.themes_combos.keys()),textvariable=self.theme_var,state='readonly',width=16)
1842+
self.theme_cb.grid(row=0, column=3, sticky='news',padx=4,pady=4)
1843+
18281844
lang_frame.grid_columnconfigure( 2, weight=1)
18291845
lang_frame.grid_columnconfigure( 4, weight=1)
18301846

1831-
self.lang_cb.bind('<<ComboboxSelected>>', self.lang_change)
1832-
18331847
label_frame=LabelFrame(self.settings_dialog.area_main, text=STR("Results display mode"),borderwidth=2,bg=self.bg_color)
18341848
label_frame.grid(row=row,column=0,sticky='wens',padx=3,pady=3) ; row+=1
18351849

@@ -1913,19 +1927,12 @@ def get_settings_dialog(self):
19131927

19141928
self.settings_dialog.area_main.grid_rowconfigure(row, weight=1); row+=1
19151929

1916-
self.lang_var.set(self.cfg_get(CFG_lang))
1917-
19181930
self.settings_dialog_created = True
19191931

1920-
return self.settings_dialog
1921-
1922-
def lang_change(self,event):
1923-
new_val=self.lang_var.get()
1924-
self.cfg.set(CFG_lang,new_val)
1925-
self.get_info_dialog_on_settings().show(STR('Language Changed'),STR('Application restart required\nfor changes to take effect',new_val) + '\n\n' + STR('Translations are made using AI\nIf any corrections are necessary,\nplease contact the author.',new_val) )
1932+
self.lang_var.set(self.cfg_get(CFG_LANG))
1933+
self.theme_var.set(self.cfg_get(CFG_THEME))
19261934

1927-
def dark_mode_change(self):
1928-
self.get_info_dialog_on_settings().show(STR('Color Theme Changed'),STR('Application restart required\nfor changes to take effect'))
1935+
return self.settings_dialog
19291936

19301937
info_dialog_on_main_created = False
19311938
@restore_status_line
@@ -4542,9 +4549,20 @@ def settings_ok(self):
45424549
update0=False
45434550
update1=False
45444551
update2=False
4552+
update3=False
4553+
4554+
if self.cfg_get(CFG_LANG)!=self.lang_var.get():
4555+
new_val = self.lang_var.get()
4556+
self.cfg.set(CFG_LANG,new_val)
4557+
self.get_info_dialog_on_settings().show(STR('Language Changed'),STR('Application restart required\nfor changes to take effect',new_val) + '\n\n' + STR('Translations are made using AI\nIf any corrections are necessary,\nplease contact the author.',new_val) )
45454558

4546-
if self.cfg_get_bool(CFG_KEY_DARK_THEME)!=self.dark_theme.get():
4547-
self.cfg.set_bool(CFG_KEY_DARK_THEME,self.dark_theme.get())
4559+
update3=True
4560+
4561+
if self.cfg_get(CFG_THEME)!=self.theme_var.get():
4562+
self.cfg.set(CFG_THEME,self.theme_var.get())
4563+
4564+
if not update3:
4565+
self.get_info_dialog_on_settings().show(STR('Theme Changed'),STR('Application restart required\nfor changes to take effect'))
45484566

45494567
if self.cfg_get_bool(CFG_KEY_FULL_CRC)!=self.show_full_crc.get():
45504568
self.cfg.set_bool(CFG_KEY_FULL_CRC,self.show_full_crc.get())
@@ -4622,6 +4640,9 @@ def settings_ok(self):
46224640
else:
46234641
self.tree_folder_update_none()
46244642

4643+
if update3:
4644+
CFG_THEME
4645+
46254646
def settings_reset(self):
46264647
_ = {var.set(cfg_defaults[key]) for var,key in self.settings}
46274648
_ = {var.set(cfg_defaults[key]) for var,key in self.settings_str}

src/icon.ico

116 KB
Binary file not shown.

src/icons/dude.png

11.6 KB
Loading

src/icons/dude_small.png

178 Bytes
Loading

src/text.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -795,13 +795,13 @@ class LANGUAGES:
795795
'it': 'Tema scuro',
796796
'fr': 'Thème sombre',
797797
},
798-
'Color Theme Changed': {
799-
'pl': 'Motyw został zmieniony',
800-
'es': 'El tema de color ha cambiado',
798+
'Theme Changed': {
799+
'pl': 'został zmieniony',
800+
'es': 'El tema ha cambiado',
801801
'ru': 'Тема изменена',
802802
'de': 'Farbschema geändert',
803-
'it': 'Il tema dei colori è stato cambiato',
804-
'fr': 'Le thème des couleurs a été modifié',
803+
'it': 'Il tema è stato cambiato',
804+
'fr': 'Le thème a été modifié',
805805
},
806806
'Language Changed': {
807807
'pl': 'Język został zmieniony',

0 commit comments

Comments
 (0)