1
0
Fork 0
mirror of https://github.com/deepfakes/faceswap synced 2025-06-09 04:36:50 -04:00
faceswap/lib/gui/_config.py
torzdf 9c588045aa
GUI Updates (#940)
* lib.gui: Update icons
* tools.cli: Add video filetype flag to mask input
* lib.gui.popup_configure: Refresh GUI on config save
* lib.gui._config: Add Icon size and load last session options
* lib.gui.control_helper - Add control modification tracking
* lib.gui - Add Projects and Last Session
- Main root title handled by projects
- Add Hotkeys
- Create projects module
- split fsw and fst filetypes
- Add last_session saving

* lib.project
- Documentation
- Ask confirm on closing unsaved project
-Fixups

* Track model folder changes
- Shuffle some globals
- Activate System Verbosity for GUI

* lib.gui.utils - Documentation and clean up
- lib.gui.custom_widgets - Create and document

* Add GUI config option to disable auto loading model stats
2019-11-22 19:20:23 +00:00

98 lines
4.4 KiB
Python

#!/usr/bin/env python3
""" Default configurations for models """
import logging
import sys
import os
from tkinter import font
from lib.config import FaceswapConfig
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
class Config(FaceswapConfig):
""" Config File for GUI """
# pylint: disable=too-many-statements
def set_defaults(self):
""" Set the default values for config """
logger.debug("Setting defaults")
self.set_globals()
def set_globals(self):
"""
Set the global options for GUI
"""
logger.debug("Setting global config")
section = "global"
self.add_section(title=section,
info="Faceswap GUI Options.\nConfigure the appearance and behaviour of "
"the GUI")
self.add_item(
section=section, title="fullscreen", datatype=bool, default=False, group="startup",
info="Start Faceswap maximized.")
self.add_item(
section=section, title="tab", datatype=str, default="extract", group="startup",
choices=get_commands(),
info="Start Faceswap in this tab.")
self.add_item(
section=section, title="options_panel_width", datatype=int, default=30,
min_max=(10, 90), rounding=1, group="layout",
info="How wide the lefthand option panel is as a percentage of GUI width at startup.")
self.add_item(
section=section, title="console_panel_height", datatype=int, default=20,
min_max=(10, 90), rounding=1, group="layout",
info="How tall the bottom console panel is as a percentage of GUI height at startup.")
self.add_item(
section=section, title="icon_size", datatype=int, default=14,
min_max=(10, 20), rounding=1, group="layout",
info="Pixel size for icons. NB: Size is scaled by DPI.")
self.add_item(
section=section, title="font", datatype=str,
choices=get_clean_fonts(),
default="default", group="font", info="Global font")
self.add_item(
section=section, title="font_size", datatype=int, default=9,
min_max=(6, 12), rounding=1, group="font",
info="Global font size.")
self.add_item(
section=section, title="autosave_last_session", datatype=str, default="prompt",
choices=["never", "prompt", "always"], group="startup", gui_radio=True,
info="Automatically save the current settings on close and reload on startup"
"\n\tnever - Don't autosave session"
"\n\tprompt - Prompt to reload last session on launch"
"\n\talways - Always load last session on launch")
self.add_item(
section=section, title="timeout", datatype=int, default=120,
min_max=(10, 600), rounding=10, group="behaviour",
info="Training can take some time to save and shutdown. Set the timeout in seconds "
"before giving up and force quitting.")
self.add_item(
section=section, title="auto_load_model_stats", datatype=bool, default=True,
group="behaviour",
info="Auto load model statistics into the Analysis tab when selecting a model "
"in Train or Convert tabs.")
def get_commands():
""" Return commands formatted for GUI """
root_path = os.path.abspath(os.path.dirname(sys.argv[0]))
command_path = os.path.join(root_path, "scripts")
tools_path = os.path.join(root_path, "tools")
commands = [os.path.splitext(item)[0] for item in os.listdir(command_path)
if os.path.splitext(item)[1] == ".py"
and os.path.splitext(item)[0] not in ("gui", "fsmedia")
and not os.path.splitext(item)[0].startswith("_")]
tools = [os.path.splitext(item)[0] for item in os.listdir(tools_path)
if os.path.splitext(item)[1] == ".py"
and os.path.splitext(item)[0] not in ("gui", "cli")
and not os.path.splitext(item)[0].startswith("_")]
return commands + tools
def get_clean_fonts():
""" Return the font list with any @prefixed or non-Unicode characters stripped
and default prefixed """
cleaned_fonts = sorted([fnt for fnt in font.families()
if not fnt.startswith("@") and not any([ord(c) > 127 for c in fnt])])
return ["default"] + cleaned_fonts