Merge pull request #4025 from PySimpleGUI/Dev-latest
More checks for COLOR_SYSTEM_DEFAULT, changed GreenTan theme to use b…
This commit is contained in:
commit
3834faffc3
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
version = __version__ = "4.35.0 Released 3-Mar-2021"
|
version = __version__ = "4.35.0.2 Unreleased\nUpdated debugger, Added checks for COLOR_SYSTEM_DEFAULT to several element update methods, changed GreenTan theme to use black instead of the COLOR_SYSTEM_DEFAULT setting"
|
||||||
|
|
||||||
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
||||||
|
|
||||||
|
@ -1446,9 +1446,9 @@ class Input(Element):
|
||||||
self.TKEntry['state'] = 'readonly' if self.UseReadonlyForDisable else 'disabled'
|
self.TKEntry['state'] = 'readonly' if self.UseReadonlyForDisable else 'disabled'
|
||||||
elif disabled is False:
|
elif disabled is False:
|
||||||
self.TKEntry['state'] = 'normal'
|
self.TKEntry['state'] = 'normal'
|
||||||
if background_color is not None:
|
if background_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKEntry.configure(background=background_color)
|
self.TKEntry.configure(background=background_color)
|
||||||
if text_color is not None:
|
if text_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKEntry.configure(fg=text_color)
|
self.TKEntry.configure(fg=text_color)
|
||||||
if value is not None:
|
if value is not None:
|
||||||
try:
|
try:
|
||||||
|
@ -2106,18 +2106,18 @@ class Radio(Element):
|
||||||
if text is not None:
|
if text is not None:
|
||||||
self.Text = str(text)
|
self.Text = str(text)
|
||||||
self.TKRadio.configure(text=self.Text)
|
self.TKRadio.configure(text=self.Text)
|
||||||
if background_color is not None:
|
if background_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKRadio.configure(background=background_color)
|
self.TKRadio.configure(background=background_color)
|
||||||
self.BackgroundColor = background_color
|
self.BackgroundColor = background_color
|
||||||
if text_color is not None:
|
if text_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKRadio.configure(fg=text_color)
|
self.TKRadio.configure(fg=text_color)
|
||||||
self.TextColor = text_color
|
self.TextColor = text_color
|
||||||
|
|
||||||
if circle_color is not None:
|
if circle_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.CircleBackgroundColor = circle_color
|
self.CircleBackgroundColor = circle_color
|
||||||
self.TKRadio.configure(selectcolor=self.CircleBackgroundColor) # The background of the radio button
|
self.TKRadio.configure(selectcolor=self.CircleBackgroundColor) # The background of the radio button
|
||||||
elif text_color or background_color:
|
elif text_color or background_color:
|
||||||
if self.TextColor is not None and self.BackgroundColor is not None and self.TextColor.startswith('#') and self.BackgroundColor.startswith('#'):
|
if self.TextColor not in (None, COLOR_SYSTEM_DEFAULT) and self.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT) and self.TextColor.startswith('#') and self.BackgroundColor.startswith('#'):
|
||||||
# ---- compute color of circle background ---
|
# ---- compute color of circle background ---
|
||||||
text_hsl = _hex_to_hsl(self.TextColor)
|
text_hsl = _hex_to_hsl(self.TextColor)
|
||||||
background_hsl = _hex_to_hsl(self.BackgroundColor if self.BackgroundColor else theme_background_color())
|
background_hsl = _hex_to_hsl(self.BackgroundColor if self.BackgroundColor else theme_background_color())
|
||||||
|
@ -2285,14 +2285,14 @@ class Checkbox(Element):
|
||||||
if text is not None:
|
if text is not None:
|
||||||
self.Text = str(text)
|
self.Text = str(text)
|
||||||
self.TKCheckbutton.configure(text=self.Text)
|
self.TKCheckbutton.configure(text=self.Text)
|
||||||
if background_color is not None:
|
if background_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKCheckbutton.configure(background=background_color)
|
self.TKCheckbutton.configure(background=background_color)
|
||||||
self.BackgroundColor = background_color
|
self.BackgroundColor = background_color
|
||||||
if text_color is not None:
|
if text_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKCheckbutton.configure(fg=text_color)
|
self.TKCheckbutton.configure(fg=text_color)
|
||||||
self.TextColor = text_color
|
self.TextColor = text_color
|
||||||
# Color the checkbox itself
|
# Color the checkbox itself
|
||||||
if checkbox_color is not None:
|
if checkbox_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.CheckboxBackgroundColor = checkbox_color
|
self.CheckboxBackgroundColor = checkbox_color
|
||||||
self.TKCheckbutton.configure(selectcolor=self.CheckboxBackgroundColor) # The background of the checkbox
|
self.TKCheckbutton.configure(selectcolor=self.CheckboxBackgroundColor) # The background of the checkbox
|
||||||
elif text_color or background_color:
|
elif text_color or background_color:
|
||||||
|
@ -2668,9 +2668,9 @@ class Multiline(Element):
|
||||||
elif disabled is False:
|
elif disabled is False:
|
||||||
self.TKText.configure(state='normal')
|
self.TKText.configure(state='normal')
|
||||||
self.Disabled = False
|
self.Disabled = False
|
||||||
if background_color is not None:
|
if background_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKText.configure(background=background_color)
|
self.TKText.configure(background=background_color)
|
||||||
if text_color is not None:
|
if text_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKText.configure(fg=text_color)
|
self.TKText.configure(fg=text_color)
|
||||||
if font is not None:
|
if font is not None:
|
||||||
self.TKText.configure(font=font)
|
self.TKText.configure(font=font)
|
||||||
|
@ -2918,9 +2918,9 @@ class Text(Element):
|
||||||
if value is not None:
|
if value is not None:
|
||||||
self.DisplayText = str(value)
|
self.DisplayText = str(value)
|
||||||
self.TKStringVar.set(str(value))
|
self.TKStringVar.set(str(value))
|
||||||
if background_color is not None:
|
if background_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKText.configure(background=background_color)
|
self.TKText.configure(background=background_color)
|
||||||
if text_color is not None:
|
if text_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKText.configure(fg=text_color)
|
self.TKText.configure(fg=text_color)
|
||||||
if font is not None:
|
if font is not None:
|
||||||
self.TKText.configure(font=font)
|
self.TKText.configure(font=font)
|
||||||
|
@ -3040,9 +3040,9 @@ class StatusBar(Element):
|
||||||
self.DisplayText = value
|
self.DisplayText = value
|
||||||
stringvar = self.TKStringVar
|
stringvar = self.TKStringVar
|
||||||
stringvar.set(value)
|
stringvar.set(value)
|
||||||
if background_color is not None:
|
if background_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKText.configure(background=background_color)
|
self.TKText.configure(background=background_color)
|
||||||
if text_color is not None:
|
if text_color not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
self.TKText.configure(fg=text_color)
|
self.TKText.configure(fg=text_color)
|
||||||
if font is not None:
|
if font is not None:
|
||||||
self.TKText.configure(font=font)
|
self.TKText.configure(font=font)
|
||||||
|
@ -14745,7 +14745,7 @@ LOOK_AND_FEEL_TABLE = {
|
||||||
"Material2": {"BACKGROUND": "#FAFAFA","TEXT": "#000000","INPUT": "#004EA1","TEXT_INPUT": "#FFFFFF","SCROLL": "#5EA7FF","BUTTON": ("#FFFFFF", "#0079D3"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 0,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,"ACCENT1": "#FF0266","ACCENT2": "#FF5C93","ACCENT3": "#C5003C",},
|
"Material2": {"BACKGROUND": "#FAFAFA","TEXT": "#000000","INPUT": "#004EA1","TEXT_INPUT": "#FFFFFF","SCROLL": "#5EA7FF","BUTTON": ("#FFFFFF", "#0079D3"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 0,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,"ACCENT1": "#FF0266","ACCENT2": "#FF5C93","ACCENT3": "#C5003C",},
|
||||||
"Reddit": {"BACKGROUND": "#ffffff","TEXT": "#1a1a1b","INPUT": "#dae0e6","TEXT_INPUT": "#222222","SCROLL": "#a5a4a4","BUTTON": ("#FFFFFF", "#0079d3"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,"ACCENT1": "#ff5414","ACCENT2": "#33a8ff","ACCENT3": "#dbf0ff",},
|
"Reddit": {"BACKGROUND": "#ffffff","TEXT": "#1a1a1b","INPUT": "#dae0e6","TEXT_INPUT": "#222222","SCROLL": "#a5a4a4","BUTTON": ("#FFFFFF", "#0079d3"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,"ACCENT1": "#ff5414","ACCENT2": "#33a8ff","ACCENT3": "#dbf0ff",},
|
||||||
"Topanga": {"BACKGROUND": "#282923","TEXT": "#E7DB74","INPUT": "#393a32","TEXT_INPUT": "#E7C855","SCROLL": "#E7C855","BUTTON": ("#E7C855", "#284B5A"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,"ACCENT1": "#c15226","ACCENT2": "#7a4d5f","ACCENT3": "#889743",},
|
"Topanga": {"BACKGROUND": "#282923","TEXT": "#E7DB74","INPUT": "#393a32","TEXT_INPUT": "#E7C855","SCROLL": "#E7C855","BUTTON": ("#E7C855", "#284B5A"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,"ACCENT1": "#c15226","ACCENT2": "#7a4d5f","ACCENT3": "#889743",},
|
||||||
"GreenTan": {"BACKGROUND": "#9FB8AD","TEXT": COLOR_SYSTEM_DEFAULT,"INPUT": "#F7F3EC","TEXT_INPUT": "#000000","SCROLL": "#F7F3EC","BUTTON": ("#FFFFFF", "#475841"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,},
|
"GreenTan": {"BACKGROUND": "#9FB8AD","TEXT": '#000000',"INPUT": "#F7F3EC","TEXT_INPUT": "#000000","SCROLL": "#F7F3EC","BUTTON": ("#FFFFFF", "#475841"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,},
|
||||||
"Dark": {"BACKGROUND": "#404040","TEXT": "#FFFFFF","INPUT": "#4D4D4D","TEXT_INPUT": "#FFFFFF","SCROLL": "#707070","BUTTON": ("#FFFFFF", "#004F00"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,},
|
"Dark": {"BACKGROUND": "#404040","TEXT": "#FFFFFF","INPUT": "#4D4D4D","TEXT_INPUT": "#FFFFFF","SCROLL": "#707070","BUTTON": ("#FFFFFF", "#004F00"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,},
|
||||||
"LightGreen": {"BACKGROUND": "#B7CECE","TEXT": "#000000","INPUT": "#FDFFF7","TEXT_INPUT": "#000000","SCROLL": "#FDFFF7","BUTTON": ("#FFFFFF", "#658268"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"ACCENT1": "#76506d","ACCENT2": "#5148f1","ACCENT3": "#0a1c84","PROGRESS_DEPTH": 0,},
|
"LightGreen": {"BACKGROUND": "#B7CECE","TEXT": "#000000","INPUT": "#FDFFF7","TEXT_INPUT": "#000000","SCROLL": "#FDFFF7","BUTTON": ("#FFFFFF", "#658268"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"ACCENT1": "#76506d","ACCENT2": "#5148f1","ACCENT3": "#0a1c84","PROGRESS_DEPTH": 0,},
|
||||||
"Dark2": {"BACKGROUND": "#404040","TEXT": "#FFFFFF","INPUT": "#FFFFFF","TEXT_INPUT": "#000000","SCROLL": "#707070","BUTTON": ("#FFFFFF", "#004F00"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,},
|
"Dark2": {"BACKGROUND": "#404040","TEXT": "#FFFFFF","INPUT": "#FFFFFF","TEXT_INPUT": "#000000","SCROLL": "#707070","BUTTON": ("#FFFFFF", "#004F00"),"PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE,"BORDER": 1,"SLIDER_DEPTH": 0,"PROGRESS_DEPTH": 0,},
|
||||||
|
@ -17931,6 +17931,7 @@ MAX_LINES_PER_RESULT_FLOATING = 4
|
||||||
MAX_LINES_PER_RESULT_MAIN = 3
|
MAX_LINES_PER_RESULT_MAIN = 3
|
||||||
|
|
||||||
POPOUT_WINDOW_FONT = 'Sans 8'
|
POPOUT_WINDOW_FONT = 'Sans 8'
|
||||||
|
DEBUGGER_VARIABLE_DETAILS_FONT = 'Courier 10'
|
||||||
|
|
||||||
|
|
||||||
class _Debugger():
|
class _Debugger():
|
||||||
|
@ -17956,7 +17957,7 @@ class _Debugger():
|
||||||
|
|
||||||
# Includes the DUAL PANE (now 2 tabs)! Don't forget REPL is there too!
|
# Includes the DUAL PANE (now 2 tabs)! Don't forget REPL is there too!
|
||||||
def _build_main_debugger_window(self, location=(None, None)):
|
def _build_main_debugger_window(self, location=(None, None)):
|
||||||
ChangeLookAndFeel(COLOR_SCHEME)
|
theme(COLOR_SCHEME)
|
||||||
|
|
||||||
def InVar(key1):
|
def InVar(key1):
|
||||||
row1 = [T(' '),
|
row1 = [T(' '),
|
||||||
|
@ -18010,7 +18011,7 @@ class _Debugger():
|
||||||
|
|
||||||
window.Element('_VAR1_').SetFocus()
|
window.Element('_VAR1_').SetFocus()
|
||||||
self.watcher_window = window
|
self.watcher_window = window
|
||||||
ChangeLookAndFeel('SystemDefault') # set look and feel to default before exiting
|
# ChangeLookAndFeel('SystemDefault') # set look and feel to default before exiting
|
||||||
return window
|
return window
|
||||||
|
|
||||||
# # ####### #
|
# # ####### #
|
||||||
|
@ -18058,7 +18059,7 @@ class _Debugger():
|
||||||
result = str(eval(str(var), myglobals, mylocals))
|
result = str(eval(str(var), myglobals, mylocals))
|
||||||
except:
|
except:
|
||||||
result = ''
|
result = ''
|
||||||
PopupScrolled(str(values['_VAR{}_'.format(event[4])]) + '\n' + result, title=var, non_blocking=True)
|
popup_scrolled(str(values['_VAR{}_'.format(event[4])]) + '\n' + result, title=var, non_blocking=True, font=DEBUGGER_VARIABLE_DETAILS_FONT)
|
||||||
# BUTTON - OBJ
|
# BUTTON - OBJ
|
||||||
elif event.endswith('_OBJ_'): # OBJECT BUTTON
|
elif event.endswith('_OBJ_'): # OBJECT BUTTON
|
||||||
var = values['_VAR{}_'.format(event[4])]
|
var = values['_VAR{}_'.format(event[4])]
|
||||||
|
@ -18070,7 +18071,7 @@ class _Debugger():
|
||||||
result = ObjToStringSingleObj(result)
|
result = ObjToStringSingleObj(result)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
result = '{}\nError showing object {}'.format(e, var)
|
result = '{}\nError showing object {}'.format(e, var)
|
||||||
PopupScrolled(str(var) + '\n' + str(result), title=var, non_blocking=True)
|
popup_scrolled(str(var) + '\n' + str(result), title=var, non_blocking=True, font=DEBUGGER_VARIABLE_DETAILS_FONT)
|
||||||
# ------------------------------- Process Watch Tab -------------------------------
|
# ------------------------------- Process Watch Tab -------------------------------
|
||||||
# BUTTON - Choose Locals to see
|
# BUTTON - Choose Locals to see
|
||||||
elif event == '_LOCALS_': # Show all locals BUTTON
|
elif event == '_LOCALS_': # Show all locals BUTTON
|
||||||
|
@ -18083,7 +18084,7 @@ class _Debugger():
|
||||||
self._display_all_vars(myglobals)
|
self._display_all_vars(myglobals)
|
||||||
# BUTTON - clear all
|
# BUTTON - clear all
|
||||||
elif event == 'Clear All Auto Watches':
|
elif event == 'Clear All Auto Watches':
|
||||||
if PopupYesNo('Do you really want to clear all Auto-Watches?', 'Really Clear??') == 'Yes':
|
if popup_yes_no('Do you really want to clear all Auto-Watches?', 'Really Clear??') == 'Yes':
|
||||||
self.local_choices = {}
|
self.local_choices = {}
|
||||||
self.custom_watch = ''
|
self.custom_watch = ''
|
||||||
# BUTTON - Popout
|
# BUTTON - Popout
|
||||||
|
@ -18237,7 +18238,7 @@ class _Debugger():
|
||||||
self.custom_watch = values['_CUSTOM_WATCH_']
|
self.custom_watch = values['_CUSTOM_WATCH_']
|
||||||
break
|
break
|
||||||
elif event == 'Clear All':
|
elif event == 'Clear All':
|
||||||
PopupQuickMessage('Cleared Auto Watches', auto_close=True, auto_close_duration=3, non_blocking=True,
|
popup_quick_message('Cleared Auto Watches', auto_close=True, auto_close_duration=3, non_blocking=True,
|
||||||
text_color='red', font='ANY 18')
|
text_color='red', font='ANY 18')
|
||||||
for key in sorted_dict:
|
for key in sorted_dict:
|
||||||
window.Element(key).Update(False)
|
window.Element(key).Update(False)
|
||||||
|
@ -18251,7 +18252,7 @@ class _Debugger():
|
||||||
|
|
||||||
# exited event loop
|
# exited event loop
|
||||||
window.Close()
|
window.Close()
|
||||||
ChangeLookAndFeel('SystemDefault')
|
# ChangeLookAndFeel('SystemDefault')
|
||||||
|
|
||||||
###### #######
|
###### #######
|
||||||
# # # # # # ##### # # #### ## ##### # # # ####
|
# # # # # # ##### # # #### ## ##### # # # ####
|
||||||
|
@ -18357,7 +18358,7 @@ class _Debugger():
|
||||||
if self.popout_choices[key] is True and key in self.locals:
|
if self.popout_choices[key] is True and key in self.locals:
|
||||||
if key is not None and self.popout_window is not None:
|
if key is not None and self.popout_window is not None:
|
||||||
self.popout_window.Element(key, silent_on_error=True).Update(self.locals.get(key))
|
self.popout_window.Element(key, silent_on_error=True).Update(self.locals.get(key))
|
||||||
event, values = self.popout_window.read(timeout=1)
|
event, values = self.popout_window.read(timeout=5)
|
||||||
if event in (None, '_EXIT_', 'Exit::RightClick'):
|
if event in (None, '_EXIT_', 'Exit::RightClick'):
|
||||||
self.popout_window.Close()
|
self.popout_window.Close()
|
||||||
self.popout_window = None
|
self.popout_window = None
|
||||||
|
|
Loading…
Reference in New Issue