diff --git a/companion/src/images/icon.png b/companion/src/images/icon.png index 2936917c7..e861fdf58 100644 Binary files a/companion/src/images/icon.png and b/companion/src/images/icon.png differ diff --git a/companion/src/images/iconmac.icns b/companion/src/images/iconmac.icns index 579b285c1..ad988cc82 100644 Binary files a/companion/src/images/iconmac.icns and b/companion/src/images/iconmac.icns differ diff --git a/companion/src/images/linuxicons/128x128/companion.png b/companion/src/images/linuxicons/128x128/companion.png index 9b4ad31a2..1d3037a2d 100644 Binary files a/companion/src/images/linuxicons/128x128/companion.png and b/companion/src/images/linuxicons/128x128/companion.png differ diff --git a/companion/src/images/linuxicons/16x16/companion.png b/companion/src/images/linuxicons/16x16/companion.png index 7fa027e14..073043167 100644 Binary files a/companion/src/images/linuxicons/16x16/companion.png and b/companion/src/images/linuxicons/16x16/companion.png differ diff --git a/companion/src/images/linuxicons/22x22/companion.png b/companion/src/images/linuxicons/22x22/companion.png index b71e62d6a..a21dd2415 100644 Binary files a/companion/src/images/linuxicons/22x22/companion.png and b/companion/src/images/linuxicons/22x22/companion.png differ diff --git a/companion/src/images/linuxicons/24x24/companion.png b/companion/src/images/linuxicons/24x24/companion.png index 0ae5ffe17..8a54b82c3 100644 Binary files a/companion/src/images/linuxicons/24x24/companion.png and b/companion/src/images/linuxicons/24x24/companion.png differ diff --git a/companion/src/images/linuxicons/256x256/companion.png b/companion/src/images/linuxicons/256x256/companion.png index 1ed7a9ae9..1b1f2910a 100644 Binary files a/companion/src/images/linuxicons/256x256/companion.png and b/companion/src/images/linuxicons/256x256/companion.png differ diff --git a/companion/src/images/linuxicons/32x32/companion.png b/companion/src/images/linuxicons/32x32/companion.png index 0b7375c0c..c6751746a 100644 Binary files a/companion/src/images/linuxicons/32x32/companion.png and b/companion/src/images/linuxicons/32x32/companion.png differ diff --git a/companion/src/images/linuxicons/48x48/companion.png b/companion/src/images/linuxicons/48x48/companion.png index d591f97d2..bd3f93f51 100644 Binary files a/companion/src/images/linuxicons/48x48/companion.png and b/companion/src/images/linuxicons/48x48/companion.png differ diff --git a/companion/src/images/linuxicons/512x512/companion.png b/companion/src/images/linuxicons/512x512/companion.png index 6938b2c42..db85a3020 100644 Binary files a/companion/src/images/linuxicons/512x512/companion.png and b/companion/src/images/linuxicons/512x512/companion.png differ diff --git a/companion/src/images/linuxicons/scalable/companion.svg b/companion/src/images/linuxicons/scalable/companion.svg index 95f040b15..988cd0d12 100644 --- a/companion/src/images/linuxicons/scalable/companion.svg +++ b/companion/src/images/linuxicons/scalable/companion.svg @@ -1,7 +1,5 @@ image/svg+xml + + -O -P -E -N - \ No newline at end of file + units="px" + inkscape:window-width="1267" + inkscape:window-height="885" + inkscape:window-x="343" + inkscape:window-y="72" + inkscape:window-maximized="0" /> + + + + image/svg+xml + + + + + + + + + diff --git a/companion/src/images/winicons/edgetx.ico b/companion/src/images/winicons/edgetx.ico new file mode 100644 index 000000000..1c46038a7 Binary files /dev/null and b/companion/src/images/winicons/edgetx.ico differ diff --git a/companion/src/images/winicons/edgetx_128.ico b/companion/src/images/winicons/edgetx_128.ico new file mode 100644 index 000000000..77f31387f Binary files /dev/null and b/companion/src/images/winicons/edgetx_128.ico differ diff --git a/companion/src/images/winicons/edgetx_16.ico b/companion/src/images/winicons/edgetx_16.ico new file mode 100644 index 000000000..072d278ba Binary files /dev/null and b/companion/src/images/winicons/edgetx_16.ico differ diff --git a/companion/src/images/winicons/edgetx_20.ico b/companion/src/images/winicons/edgetx_20.ico new file mode 100644 index 000000000..ce701af78 Binary files /dev/null and b/companion/src/images/winicons/edgetx_20.ico differ diff --git a/companion/src/images/winicons/edgetx_24.ico b/companion/src/images/winicons/edgetx_24.ico new file mode 100644 index 000000000..042245fdf Binary files /dev/null and b/companion/src/images/winicons/edgetx_24.ico differ diff --git a/companion/src/images/winicons/edgetx_256.ico b/companion/src/images/winicons/edgetx_256.ico new file mode 100644 index 000000000..3fe0f9e71 Binary files /dev/null and b/companion/src/images/winicons/edgetx_256.ico differ diff --git a/companion/src/images/winicons/edgetx_30.ico b/companion/src/images/winicons/edgetx_30.ico new file mode 100644 index 000000000..a341f512a Binary files /dev/null and b/companion/src/images/winicons/edgetx_30.ico differ diff --git a/companion/src/images/winicons/edgetx_32.ico b/companion/src/images/winicons/edgetx_32.ico new file mode 100644 index 000000000..14153bf0d Binary files /dev/null and b/companion/src/images/winicons/edgetx_32.ico differ diff --git a/companion/src/images/winicons/edgetx_36.ico b/companion/src/images/winicons/edgetx_36.ico new file mode 100644 index 000000000..d2098ef9d Binary files /dev/null and b/companion/src/images/winicons/edgetx_36.ico differ diff --git a/companion/src/images/winicons/edgetx_40.ico b/companion/src/images/winicons/edgetx_40.ico new file mode 100644 index 000000000..8988d38b9 Binary files /dev/null and b/companion/src/images/winicons/edgetx_40.ico differ diff --git a/companion/src/images/winicons/edgetx_48.ico b/companion/src/images/winicons/edgetx_48.ico new file mode 100644 index 000000000..091923aa3 Binary files /dev/null and b/companion/src/images/winicons/edgetx_48.ico differ diff --git a/companion/src/images/winicons/edgetx_60.ico b/companion/src/images/winicons/edgetx_60.ico new file mode 100644 index 000000000..894b94d01 Binary files /dev/null and b/companion/src/images/winicons/edgetx_60.ico differ diff --git a/companion/src/images/winicons/edgetx_64.ico b/companion/src/images/winicons/edgetx_64.ico new file mode 100644 index 000000000..90e43c1e1 Binary files /dev/null and b/companion/src/images/winicons/edgetx_64.ico differ diff --git a/companion/src/images/winicons/edgetx_72.ico b/companion/src/images/winicons/edgetx_72.ico new file mode 100644 index 000000000..31aa2941b Binary files /dev/null and b/companion/src/images/winicons/edgetx_72.ico differ diff --git a/companion/src/images/winicons/edgetx_80.ico b/companion/src/images/winicons/edgetx_80.ico new file mode 100644 index 000000000..593f95e45 Binary files /dev/null and b/companion/src/images/winicons/edgetx_80.ico differ diff --git a/companion/src/images/winicons/edgetx_96.ico b/companion/src/images/winicons/edgetx_96.ico new file mode 100644 index 000000000..339baf7e7 Binary files /dev/null and b/companion/src/images/winicons/edgetx_96.ico differ diff --git a/companion/src/images/winicons/icon.rc b/companion/src/images/winicons/icon.rc index 298347189..9d3ae5a60 100644 --- a/companion/src/images/winicons/icon.rc +++ b/companion/src/images/winicons/icon.rc @@ -1 +1 @@ -IDI_ICON1 ICON DISCARDABLE "opentx.ico" +IDI_ICON1 ICON DISCARDABLE "edgetx.ico" diff --git a/companion/src/images/winicons/opentx.ico b/companion/src/images/winicons/opentx.ico deleted file mode 100644 index 903ad9098..000000000 Binary files a/companion/src/images/winicons/opentx.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_128.ico b/companion/src/images/winicons/opentx_128.ico deleted file mode 100644 index ca4eb0950..000000000 Binary files a/companion/src/images/winicons/opentx_128.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_16.ico b/companion/src/images/winicons/opentx_16.ico deleted file mode 100644 index 9b138b9d1..000000000 Binary files a/companion/src/images/winicons/opentx_16.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_20.ico b/companion/src/images/winicons/opentx_20.ico deleted file mode 100644 index bb4a484ad..000000000 Binary files a/companion/src/images/winicons/opentx_20.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_24.ico b/companion/src/images/winicons/opentx_24.ico deleted file mode 100644 index d90107c1b..000000000 Binary files a/companion/src/images/winicons/opentx_24.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_256.ico b/companion/src/images/winicons/opentx_256.ico deleted file mode 100644 index 40aabf00e..000000000 Binary files a/companion/src/images/winicons/opentx_256.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_30.ico b/companion/src/images/winicons/opentx_30.ico deleted file mode 100644 index 8e2965dfd..000000000 Binary files a/companion/src/images/winicons/opentx_30.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_32.ico b/companion/src/images/winicons/opentx_32.ico deleted file mode 100644 index c9768b74b..000000000 Binary files a/companion/src/images/winicons/opentx_32.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_36.ico b/companion/src/images/winicons/opentx_36.ico deleted file mode 100644 index bdad904ee..000000000 Binary files a/companion/src/images/winicons/opentx_36.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_40.ico b/companion/src/images/winicons/opentx_40.ico deleted file mode 100644 index 4b2fd415a..000000000 Binary files a/companion/src/images/winicons/opentx_40.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_48.ico b/companion/src/images/winicons/opentx_48.ico deleted file mode 100644 index d282bb528..000000000 Binary files a/companion/src/images/winicons/opentx_48.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_60.ico b/companion/src/images/winicons/opentx_60.ico deleted file mode 100644 index 3a1d16313..000000000 Binary files a/companion/src/images/winicons/opentx_60.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_64.ico b/companion/src/images/winicons/opentx_64.ico deleted file mode 100644 index 58161533e..000000000 Binary files a/companion/src/images/winicons/opentx_64.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_72.ico b/companion/src/images/winicons/opentx_72.ico deleted file mode 100644 index 195efbe11..000000000 Binary files a/companion/src/images/winicons/opentx_72.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_80.ico b/companion/src/images/winicons/opentx_80.ico deleted file mode 100644 index 459064f92..000000000 Binary files a/companion/src/images/winicons/opentx_80.ico and /dev/null differ diff --git a/companion/src/images/winicons/opentx_96.ico b/companion/src/images/winicons/opentx_96.ico deleted file mode 100644 index ac784e5e3..000000000 Binary files a/companion/src/images/winicons/opentx_96.ico and /dev/null differ diff --git a/tools/companion-gen-icons.py b/tools/companion-gen-icons.py new file mode 100755 index 000000000..f13632609 --- /dev/null +++ b/tools/companion-gen-icons.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 + +# certifi==2021.5.30 +# charset-normalizer==2.0.4 +# idna==3.2 +# Pillow==8.3.1 +# requests==2.26.0 +# urllib3==1.26.6 + +import requests +import os +import shutil +import subprocess +import platform +import tarfile +import pathlib +from PIL import Image + +# if False, then sips will be used instead of ImageMagick +useMagick = True + +LOGO_FILENAME = "edgetx-logo.png" + +PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +TOOLS_DIR = os.path.dirname(__file__) +IMAGES_DIR = os.path.join(PROJECT_ROOT, "companion", "src", "images") +WIN_ICONS_DIR = os.path.join(PROJECT_ROOT, "companion", "src", "images", "winicons") +LINUX_ICONS_DIR = os.path.join(PROJECT_ROOT, "companion", "src", "images", "linuxicons") +MAC_ICONS_DIR = os.path.join(PROJECT_ROOT, "companion", "src", "images", "macicons") +START_DIR = os.getcwd() +ABS_LOGO_FILENAME = os.path.abspath(os.path.join(TOOLS_DIR,LOGO_FILENAME)) + +def cleanup(): + os.chdir(TOOLS_DIR) + os.remove(ABS_LOGO_FILENAME) + + # Remove temporary mac icons folder + if os.path.exists(MAC_ICONS_DIR): + shutil.rmtree(MAC_ICONS_DIR) + + if os.path.exists("icns.tar.gz"): + os.remove("icns.tar.gz") + + if os.path.exists("icnsify"): + os.remove("icnsify") + + os.chdir(START_DIR) + quit() + + +def downloadFile(url: str, outFile: str): + try: + r = requests.get(url, allow_redirects=True) + except requests.exceptions.RequestException as e: # This is the correct syntax + print("Unable to download!") + raise SystemExit(e) + open(outFile, 'wb').write(r.content) + + +# Startup checks +if not os.path.exists(IMAGES_DIR) or not os.path.exists(WIN_ICONS_DIR) or not os.path.exists(LINUX_ICONS_DIR): + print("Couldn't find a required directory!") + print("Images => " + IMAGES_DIR) + print("Windows => " + WIN_ICONS_DIR) + print("Linux => " + LINUX_ICONS_DIR) + quit() + +# Download and save logo if we don't have it already +if not os.path.exists(LOGO_FILENAME): + print("Downloading logo...") + downloadFile('https://raw.githubusercontent.com/EdgeTX/edgetx.github.io/master/images/edgetx-v2.png', LOGO_FILENAME) + +print("Generate 96x96 icon.png... ") +os.chdir(IMAGES_DIR) +icon_png = os.path.join(IMAGES_DIR,'icon.png') +if os.path.exists(icon_png): + os.remove(icon_png) +img = Image.open(ABS_LOGO_FILENAME).resize((96, 96)) +img.save(icon_png) + +print("Generate Linux Icons... ", end="") +os.chdir(LINUX_ICONS_DIR) + +linux_resolutions = [16, 22, 24, 32, 48, 128, 256, 512] +for size in linux_resolutions: + new_image_folder = os.path.join(LINUX_ICONS_DIR, str(size) + 'x' + str(size)) + companion_png = os.path.join(new_image_folder, 'companion.png') + if os.path.exists(companion_png): + os.remove(companion_png) + elif not os.path.exists(new_image_folder): + os.mkdir(new_image_folder) + + print(str(size) + " ", end="") + img = Image.open(ABS_LOGO_FILENAME).resize((size, size)) + img.save(companion_png) + +print("\nGenerate Windows Icons... ", end="") +os.chdir(WIN_ICONS_DIR) +windows_resolutions = [16, 20, 24, 30, 32, 36, 40, 48, 60, 64, 72, 80, 96, 128, 256] +for size in windows_resolutions: + if os.path.exists('edgetx_' + str(size) + '.ico'): + os.remove('edgetx_' + str(size) + '.ico') + img = Image.open(ABS_LOGO_FILENAME).resize((size, size)) + print(str(size) + " ", end="") + img.save('edgetx_' + str(size) + '.ico') + +print("\nWindows All in One...") +# Since Pillow only supports [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)] +# setting any other size will use the nearest valid setting instead, don't bother with the full list +# icon_sizes = [(16,16), (20,20), (24,24), (30,30), (32, 32), (36,36), (40,40), (48, 48), (60,60), (64,64), (72,72), (80,80), (96,96), (128,128), (256,256)] +icon_sizes = [(16, 16), (24, 24), (32, 32), (48, 48), + (64, 64), (128, 128), (256, 256)] + +img = Image.open(ABS_LOGO_FILENAME) +if os.path.exists('edgetx.ico'): + os.remove('edgetx.ico') +img.save('edgetx.ico', sizes=icon_sizes) + +alternative_icns_tools = '''\ +icns (Go) @ https://github.com/JackMordaunt/icns +make-icns (NodeJS) @ https://www.npmjs.com/package/make-icns +libicns @ https://icns.sourceforge.io\ +''' + +print("Generate Mac icon set...") +if platform.system() == "Linux": + icns_linux_gz = os.path.join(TOOLS_DIR, "icns.tar.gz") + print("Downloading icns (Go) for Linux amd64...") + downloadFile('https://github.com/JackMordaunt/icns/releases/download/v2.1.2/icns_2.1.2_Linux_x86_64.tar.gz', + icns_linux_gz) + + print("Extract icnsify...") + tar = tarfile.open(icns_linux_gz, "r:gz") + for member in tar.getmembers(): + if "icnsify" in member.name: + tar.extract(member, TOOLS_DIR) + tar.close() + + if not os.path.exists(os.path.join(TOOLS_DIR, "icnsify")): + print("Something went wrong setting up icns! Some alternatives are") + print(alternative_icns_tools) + else: + print("Creating MacOS icon set...") + subprocess.call( + [ + os.path.join(TOOLS_DIR, "icnsify"), + "-i", + ABS_LOGO_FILENAME, + "-o", + os.path.join(IMAGES_DIR, "iconmac.icns") + ] + ) + + cleanup() +elif platform.system == "Windows": + print("Windows is not supported yet. Some options are:") + print(alternative_icns_tools) + cleanup() +elif platform.system == "Darwin": + if useMagick: + if shutil.which("magick") is None or shutil.which("iconutil") is None: + print("Required tool ImageMagick or Mac built in iconutil missing") + print("useMagick flag at top of file can be disabled to use sips instead,") + print("but it apparently has poorer image quality than ImageMagick.") + print() + print("Alternatives for icon generation are:") + print(alternative_icns_tools) + cleanup() + + # Following was based on MIT licensed work from retifrav + # https://github.com/retifrav/python-scripts/blob/master/generate-iconset/generate-iconset.py + + ext = pathlib.Path(ABS_LOGO_FILENAME).suffix + + class IconParameters(): + width = 0 + scale = 1 + + def __init__(self, width, scale): + self.width = width + self.scale = scale + + def getIconName(self): + if self.scale != 1: + return f"icon_{self.width}x{self.width}{ext}" + else: + return f"icon_{self.width//2}x{self.width//2}@2x{ext}" + + ListOfIconParameters = [ + IconParameters(16, 1), + IconParameters(16, 2), + IconParameters(32, 1), + IconParameters(32, 2), + IconParameters(64, 1), + IconParameters(64, 2), + IconParameters(128, 1), + IconParameters(128, 2), + IconParameters(256, 1), + IconParameters(256, 2), + IconParameters(512, 1), + IconParameters(512, 2), + IconParameters(1024, 1), + IconParameters(1024, 2) + ] + + # generate iconset + for ip in ListOfIconParameters: + if useMagick: + subprocess.call( + [ + "magick", + "convert", + ABS_LOGO_FILENAME, + "-resize", + str(ip.width), + MAC_ICONS_DIR / ip.getIconName() + ] + ) + else: + subprocess.call( + [ + "sips", + "-z", + str(ip.width), + str(ip.width), + ABS_LOGO_FILENAME, + "--out", + MAC_ICONS_DIR / ip.getIconName() + ] + ) + + # convert iconset to icns file + subprocess.call( + [ + "iconutil", + "-c", + "icns", + MAC_ICONS_DIR, + "-o", + IMAGES_DIR / "iconmac.icns" + ] + ) + + cleanup()