Themes can contain custom fonts

main
Bob Mottram 2020-11-15 09:55:49 +00:00
parent f8706d4bbc
commit f12b52165a
1 changed files with 37 additions and 23 deletions

View File

@ -27,7 +27,8 @@ def getThemesList(baseDir: str) -> []:
themes = [] themes = []
for subdir, dirs, files in os.walk(baseDir + '/theme'): for subdir, dirs, files in os.walk(baseDir + '/theme'):
for themeName in dirs: for themeName in dirs:
if '~' not in themeName and themeName != 'icons': if '~' not in themeName and \
themeName != 'icons' and themeName != 'fonts':
themes.append(themeName.title()) themes.append(themeName.title())
break break
print('Themes available: ' + str(themes)) print('Themes available: ' + str(themes))
@ -411,34 +412,46 @@ def setThemeHighVis(baseDir: str):
setThemeFromDict(baseDir, name, themeParams, bgParams) setThemeFromDict(baseDir, name, themeParams, bgParams)
def setThemeFonts(baseDir: str, themeName: str) -> None:
"""Adds custom theme fonts
"""
themeNameLower = themeName.lower()
fontsDir = baseDir + '/fonts'
themeFontsDir = \
baseDir + '/theme/' + themeNameLower + '/fonts'
if not os.path.isdir(themeFontsDir):
return
for subdir, dirs, files in os.walk(themeFontsDir):
for filename in files:
if filename.endswith('.woff2') or \
filename.endswith('.woff') or \
filename.endswith('.ttf') or \
filename.endswith('.otf'):
destFilename = fontsDir + '/' + filename
if os.path.isfile(destFilename):
# font already exists in the destination location
continue
copyfile(themeFontsDir + '/' + filename,
destFilename)
break
def setThemeImages(baseDir: str, name: str) -> None: def setThemeImages(baseDir: str, name: str) -> None:
"""Changes the profile background image """Changes the profile background image
and banner to the defaults and banner to the defaults
""" """
themeNameLower = name.lower() themeNameLower = name.lower()
if themeNameLower == 'default': profileImageFilename = \
profileImageFilename = \ baseDir + '/theme/' + themeNameLower + '/image.png'
baseDir + '/theme/default/image.png' bannerFilename = \
bannerFilename = \ baseDir + '/theme/' + themeNameLower + '/banner.png'
baseDir + '/theme/default/banner.png' searchBannerFilename = \
searchBannerFilename = \ baseDir + '/theme/' + themeNameLower + '/search_banner.png'
baseDir + '/theme/default/search_banner.png' leftColImageFilename = \
leftColImageFilename = \ baseDir + '/theme/' + themeNameLower + '/left_col_image.png'
baseDir + '/theme/default/left_col_image.png' rightColImageFilename = \
rightColImageFilename = \ baseDir + '/theme/' + themeNameLower + '/right_col_image.png'
baseDir + '/theme/default/right_col_image.png'
else:
profileImageFilename = \
baseDir + '/theme/' + themeNameLower + '/image.png'
bannerFilename = \
baseDir + '/theme/' + themeNameLower + '/banner.png'
searchBannerFilename = \
baseDir + '/theme/' + themeNameLower + '/search_banner.png'
leftColImageFilename = \
baseDir + '/theme/' + themeNameLower + '/left_col_image.png'
rightColImageFilename = \
baseDir + '/theme/' + themeNameLower + '/right_col_image.png'
backgroundNames = ('login', 'shares', 'delete', 'follow', backgroundNames = ('login', 'shares', 'delete', 'follow',
'options', 'block', 'search', 'calendar') 'options', 'block', 'search', 'calendar')
@ -572,6 +585,7 @@ def setTheme(baseDir: str, name: str, domain: str) -> bool:
# change the banner and profile image # change the banner and profile image
# to the default for the theme # to the default for the theme
setThemeImages(baseDir, name) setThemeImages(baseDir, name)
setThemeFonts(baseDir, name)
result = True result = True
if not result: if not result: