New Global Settings Feature - Window watermarking.... Use global settings window to control or force on/off when making a window.
This commit is contained in:
parent
8bd030f1a1
commit
c24d8b6b87
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
version = __version__ = "4.61.0.158 Unreleased"
|
version = __version__ = "4.61.0.159 Unreleased"
|
||||||
|
|
||||||
_change_log = """
|
_change_log = """
|
||||||
Changelog since 4.60.0 released to PyPI on 8-May-2022
|
Changelog since 4.60.0 released to PyPI on 8-May-2022
|
||||||
|
@ -383,6 +383,8 @@ _change_log = """
|
||||||
Added the _optional_window_data function that is used to help with local PySimpleGUI testing of release candidates. Not meant to be used by end-users.
|
Added the _optional_window_data function that is used to help with local PySimpleGUI testing of release candidates. Not meant to be used by end-users.
|
||||||
4.61.0.158
|
4.61.0.158
|
||||||
Checked checkbox activeforeground to be the same as the text so mouseover doesn't change color
|
Checked checkbox activeforeground to be the same as the text so mouseover doesn't change color
|
||||||
|
4.61.0.159
|
||||||
|
New Global Settings feature - Window watermarking. Can be forced on temporarily by settings watermark=True in your Window creation
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
||||||
|
@ -10019,6 +10021,8 @@ class Window:
|
||||||
_rerouted_stderr_stack = [] # type: List[Tuple[Window, Element]]
|
_rerouted_stderr_stack = [] # type: List[Tuple[Window, Element]]
|
||||||
_original_stdout = None
|
_original_stdout = None
|
||||||
_original_stderr = None
|
_original_stderr = None
|
||||||
|
_watermark = None
|
||||||
|
_watermark_temp_forced = False
|
||||||
def __init__(self, title, layout=None, default_element_size=None,
|
def __init__(self, title, layout=None, default_element_size=None,
|
||||||
default_button_element_size=(None, None),
|
default_button_element_size=(None, None),
|
||||||
auto_size_text=None, auto_size_buttons=None, location=(None, None), relative_location=(None, None), size=(None, None),
|
auto_size_text=None, auto_size_buttons=None, location=(None, None), relative_location=(None, None), size=(None, None),
|
||||||
|
@ -10033,7 +10037,7 @@ class Window:
|
||||||
finalize=False, element_justification='left', ttk_theme=None, use_ttk_buttons=None, modal=False, enable_close_attempted_event=False, enable_window_config_events=False,
|
finalize=False, element_justification='left', ttk_theme=None, use_ttk_buttons=None, modal=False, enable_close_attempted_event=False, enable_window_config_events=False,
|
||||||
titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None, titlebar_icon=None,
|
titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None, titlebar_icon=None,
|
||||||
use_custom_titlebar=None, scaling=None,
|
use_custom_titlebar=None, scaling=None,
|
||||||
sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None,
|
sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, watermark=None,
|
||||||
metadata=None):
|
metadata=None):
|
||||||
"""
|
"""
|
||||||
:param title: The title that will be displayed in the Titlebar and on the Taskbar
|
:param title: The title that will be displayed in the Titlebar and on the Taskbar
|
||||||
|
@ -10156,6 +10160,8 @@ class Window:
|
||||||
:type sbar_frame_color: (str)
|
:type sbar_frame_color: (str)
|
||||||
:param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID
|
:param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID
|
||||||
:type sbar_relief: (str)
|
:type sbar_relief: (str)
|
||||||
|
:param watermark: If True, then turns on watermarking temporarily for ALL windows created from this point forward. See global settings doc for more info
|
||||||
|
:type watermark: bool
|
||||||
:param metadata: User metadata that can be set to ANYTHING
|
:param metadata: User metadata that can be set to ANYTHING
|
||||||
:type metadata: (Any)
|
:type metadata: (Any)
|
||||||
"""
|
"""
|
||||||
|
@ -10294,6 +10300,14 @@ class Window:
|
||||||
self.Margins = (0, 0)
|
self.Margins = (0, 0)
|
||||||
self.NoTitleBar = True
|
self.NoTitleBar = True
|
||||||
|
|
||||||
|
if watermark is True:
|
||||||
|
Window._watermark_temp_forced = True
|
||||||
|
_global_settings_get_watermark_info()
|
||||||
|
elif watermark is False:
|
||||||
|
Window._watermark = None
|
||||||
|
Window._watermark_temp_forced = False
|
||||||
|
|
||||||
|
|
||||||
self.ttk_part_overrides = TTKPartOverrides(sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief)
|
self.ttk_part_overrides = TTKPartOverrides(sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief)
|
||||||
|
|
||||||
if no_titlebar is True:
|
if no_titlebar is True:
|
||||||
|
@ -10453,8 +10467,10 @@ class Window:
|
||||||
'This item will be stripped from your layout')
|
'This item will be stripped from your layout')
|
||||||
continue
|
continue
|
||||||
self.add_row(*row)
|
self.add_row(*row)
|
||||||
if _optional_window_data(self) is not None:
|
# if _optional_window_data(self) is not None:
|
||||||
self.add_row(_optional_window_data(self))
|
# self.add_row(_optional_window_data(self))
|
||||||
|
if Window._watermark is not None:
|
||||||
|
self.add_row(Window._watermark(self))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -25472,6 +25488,20 @@ def _global_settings_get_ttk_scrollbar_info():
|
||||||
DEFAULT_TTK_THEME = pysimplegui_user_settings.get('-ttk theme-', DEFAULT_TTK_THEME)
|
DEFAULT_TTK_THEME = pysimplegui_user_settings.get('-ttk theme-', DEFAULT_TTK_THEME)
|
||||||
|
|
||||||
|
|
||||||
|
def _global_settings_get_watermark_info():
|
||||||
|
if not pysimplegui_user_settings.get('-watermark-', False) and not Window._watermark_temp_forced:
|
||||||
|
Window._watermark = None
|
||||||
|
return
|
||||||
|
forced = Window._watermark_temp_forced
|
||||||
|
prefix_text = pysimplegui_user_settings.get('-watermark text-', '')
|
||||||
|
ver_text = ' ' + version if pysimplegui_user_settings.get('-watermark ver-', False if not forced else True) or forced else ''
|
||||||
|
framework_ver_text = ' ' + framework_version if pysimplegui_user_settings.get('-watermark framework ver-', False if not forced else True) or forced else ''
|
||||||
|
watermark_font = pysimplegui_user_settings.get('-watermark font-', '_ 9 Bold')
|
||||||
|
background_color = pysimplegui_user_settings.get('-watermark bg color-', 'window.BackgroundColor')
|
||||||
|
|
||||||
|
Window._watermark = lambda window: Text(prefix_text + ver_text + framework_ver_text, font=watermark_font, background_color= window.BackgroundColor)
|
||||||
|
|
||||||
|
|
||||||
def main_global_get_screen_snapshot_symcode():
|
def main_global_get_screen_snapshot_symcode():
|
||||||
pysimplegui_user_settings = UserSettings(filename=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME, path=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH)
|
pysimplegui_user_settings = UserSettings(filename=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME, path=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH)
|
||||||
|
|
||||||
|
@ -25608,8 +25638,18 @@ def main_global_pysimplegui_settings():
|
||||||
theme_tab = Tab('Theme',
|
theme_tab = Tab('Theme',
|
||||||
[[T('Leave blank for "official" PySimpleGUI default theme: {}'.format(OFFICIAL_PYSIMPLEGUI_THEME))],
|
[[T('Leave blank for "official" PySimpleGUI default theme: {}'.format(OFFICIAL_PYSIMPLEGUI_THEME))],
|
||||||
[T('Default Theme For All Programs:'),
|
[T('Default Theme For All Programs:'),
|
||||||
Combo([''] + theme_list(), settings.get('-theme-', None), readonly=True, k='-THEME-', tooltip=tooltip_theme), Checkbox('Always use custom Titlebar', default=pysimplegui_user_settings.get('-custom titlebar-',False), k='-CUSTOM TITLEBAR-')]],
|
Combo([''] + theme_list(), settings.get('-theme-', None), readonly=True, k='-THEME-', tooltip=tooltip_theme), Checkbox('Always use custom Titlebar', default=pysimplegui_user_settings.get('-custom titlebar-',False), k='-CUSTOM TITLEBAR-')],
|
||||||
font='_ 16', expand_x=True)
|
[Frame('Window Watermarking',
|
||||||
|
[[Checkbox('Enable Window Watermarking', pysimplegui_user_settings.get('-watermark-', False), k='-WATERMARK-')],
|
||||||
|
[T('Prefix Text String:'), Input(pysimplegui_user_settings.get('-watermark text-', ''), k='-WATERMARK TEXT-')],
|
||||||
|
[Checkbox('PySimpleGUI Version', pysimplegui_user_settings.get('-watermark ver-', False), k='-WATERMARK VER-')],
|
||||||
|
[Checkbox('Framework Version',pysimplegui_user_settings.get('-watermark framework ver-', False), k='-WATERMARK FRAMEWORK VER-')],
|
||||||
|
[T('Font:'), Input(pysimplegui_user_settings.get('-watermark font-', '_ 9 bold'), k='-WATERMARK FONT-')],
|
||||||
|
# [T('Background Color:'), Input(pysimplegui_user_settings.get('-watermark bg color-', 'window.BackgroundColor'), k='-WATERMARK BG COLOR-')],
|
||||||
|
],
|
||||||
|
font='_ 16', expand_x=True)]])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------------- Security Tab -------------------------
|
# ------------------------- Security Tab -------------------------
|
||||||
security_tab = Tab('Security',
|
security_tab = Tab('Security',
|
||||||
|
@ -25641,6 +25681,12 @@ def main_global_pysimplegui_settings():
|
||||||
pysimplegui_user_settings.set('-python command-', values['-PYTHON COMMAND-'])
|
pysimplegui_user_settings.set('-python command-', values['-PYTHON COMMAND-'])
|
||||||
pysimplegui_user_settings.set('-custom titlebar-', values['-CUSTOM TITLEBAR-'])
|
pysimplegui_user_settings.set('-custom titlebar-', values['-CUSTOM TITLEBAR-'])
|
||||||
pysimplegui_user_settings.set('-theme-', new_theme)
|
pysimplegui_user_settings.set('-theme-', new_theme)
|
||||||
|
pysimplegui_user_settings.set('-watermark-', values['-WATERMARK-'])
|
||||||
|
pysimplegui_user_settings.set('-watermark text-', values['-WATERMARK TEXT-'])
|
||||||
|
pysimplegui_user_settings.set('-watermark ver-', values['-WATERMARK VER-'])
|
||||||
|
pysimplegui_user_settings.set('-watermark framework ver-', values['-WATERMARK FRAMEWORK VER-'])
|
||||||
|
pysimplegui_user_settings.set('-watermark font-', values['-WATERMARK FONT-'])
|
||||||
|
# pysimplegui_user_settings.set('-watermark bg color-', values['-WATERMARK BG COLOR-'])
|
||||||
|
|
||||||
# TTK SETTINGS
|
# TTK SETTINGS
|
||||||
pysimplegui_user_settings.set('-ttk theme-', values['-TTK THEME-'])
|
pysimplegui_user_settings.set('-ttk theme-', values['-TTK THEME-'])
|
||||||
|
@ -25671,6 +25717,7 @@ def main_global_pysimplegui_settings():
|
||||||
theme(new_theme)
|
theme(new_theme)
|
||||||
|
|
||||||
_global_settings_get_ttk_scrollbar_info()
|
_global_settings_get_ttk_scrollbar_info()
|
||||||
|
_global_settings_get_watermark_info()
|
||||||
|
|
||||||
window.close()
|
window.close()
|
||||||
return True
|
return True
|
||||||
|
@ -26329,6 +26376,9 @@ theme(theme_global())
|
||||||
# ------------------------ Read the ttk scrollbar info ------------------------
|
# ------------------------ Read the ttk scrollbar info ------------------------
|
||||||
_global_settings_get_ttk_scrollbar_info()
|
_global_settings_get_ttk_scrollbar_info()
|
||||||
|
|
||||||
|
# ------------------------ Read the window watermark info ------------------------
|
||||||
|
_global_settings_get_watermark_info()
|
||||||
|
|
||||||
# See if running on Trinket. If Trinket, then use custom titlebars since Trinket doesn't supply any
|
# See if running on Trinket. If Trinket, then use custom titlebars since Trinket doesn't supply any
|
||||||
if running_trinket():
|
if running_trinket():
|
||||||
USE_CUSTOM_TITLEBAR = True
|
USE_CUSTOM_TITLEBAR = True
|
||||||
|
@ -26364,4 +26414,4 @@ if __name__ == '__main__':
|
||||||
exit(0)
|
exit(0)
|
||||||
main()
|
main()
|
||||||
exit(0)
|
exit(0)
|
||||||
#0d0ea93fb64af026d84d2013aa9668fa13acac5b5c3d26ea2b2210e0a6e41099998caabd813b486f52a22cf3bccc2b436ccb5bc40cd7f20304fe2445708fefaeb36f6438c79adf18db1c0a1ea942010adb37c97a5671f68ed639991d2df6396a2d76c81e8c91fdd42d54c61548253f9e34f991f0f4dcae66bd06eb370f2985d0ee8b7cf7768776bae229e860c019357a4fc8aaa956c93ab7b9d2b871e01a30f8485c04a35bb8a86798ba8f47d33f7afb8c2008a7687200feacb10835a9259620215d7ae19e87a45bcc7cc5c2ceda2419a137deeeb321cb227cfa5d3b5deca3fb2c06aeb98a0379cf61a4a52240129b091724cfc9c0693045a59d9707c0554f797eb6cf921849fd72bf2ff11c2e8ecf347c8b5bb89210a8b099d82ba614ad18b986f35ebea96a921bc9d667fa9c71e0e166451b9d7a45fe8fec665f7dd261354188bc0cc820dfd479da7aaf151934c72918b1dcec66ba8fee0790b495623f32f489a2c3430824186b7910cd91cc398202399ff9787d7cd1f5ad9bf58fbfe0ff79914f09c34a462a1d9d01ad17dc58d16e97a513130228fb3b8cc33eca70ae1b8aa69c1b1ae8b85f8bf2f0c412a40fdc94c5ec4469bc4a650141c50cc3ab3cf356dfc08b9062fd5bdac2e9d24240a3545549c1a9e3e17da862d5d1a85dea10556fecf62b1229cdfcfc10486435b41b519ca8a8ce3bbdbb52b7154fc34184539b73
|
#12fbca39ac400901c64a05c219145aca0904491fcb8decd81a8a4532f85730408eddcd9cedbeed4931de6fe46a7510f0381b4d38563405db543c53db01e1bc3eee1270aeb12c473729130d2b1e4630da8ae060b0fae190b93c792e91d122ce455b1919b5baa96eaa6c719dd893490fb0520e9ea4cbd0db32f947df2da66af38b03131f8a718c2a810171bbd37c5d29157c24579f859645690c5ca3056888d5d263341c94e28c8b2f956aad0f4dc737a20bc94bbb5ad332b4586c763a4cfeca8ae8ba0f3c4c5d90f1d4a9ef19b22a854844a015e84aecbe769ab66dbf68503c1d00b8205909a8d9126a9ffc79439fd2f0efb27610f3f3ccfd9824407a35f47a301bbe461a24040f23b7e9c1a632d3ef91e3c61646b74037d72ab93477a573acdeb6b88f55b56bb7d4a74cca8cbd77018db330b2476e07e5dec88faec29e4ec49440059b030275fe91ca27754a58593b1517c908f66576b98ee4bd8eb26badb89338372f2d679372deb022582d2eac8d55b85f3afdf6e332e140215bf9e708bd7d279b2d45e53dcc2928505e3d0deb9745b08375c1a05ecf59ffefdd061837e0791b2c95ecf101d8df72baf447f03a0bacdb30331def1f78984682586551f9905d3409733901b6dbc9541290e2ac61edcce39bdfe917c328dd407dbaf051dd1e4e32d60c57b0461524f5d206ddae91959c226ce5f777c8a8f7d6d71f61f1aab91b
|
Loading…
Reference in New Issue