Pokemon-Terminal/scripter.py

130 lines
4.5 KiB
Python
Raw Normal View History

2017-04-29 05:57:47 +00:00
# Used for creating, running and analyzing applescript and bash scripts.
2017-04-28 22:26:00 +00:00
import os
2017-06-07 23:15:08 +00:00
import sys
cwd = os.path.dirname(os.path.realpath(__file__))
def __terminal_script(pokemon):
# Create the content for script that will change the terminal background image.
content = "tell application \"iTerm\"\n"
content += "\ttell current session of current window\n"
content += "\t\tset background image to \"" + pokemon.get_path() + "\"\n"
content += "\tend tell\n"
content += "end tell"
return content
def __wallpaper_script(pokemon):
# Create the content for the script that will change the wallpaper.
content = "tell application \"System Events\"\n"
content += "\ttell current desktop\n"
content += "\t\tset picture to \"" + pokemon.get_path() + "\"\n"
content += "\tend tell\n"
content += "end tell"
return content
2017-06-07 23:15:08 +00:00
def __iterm2_create_terminal_script(pokemon):
# Create and save the script for changing the terminal background image.
content = __terminal_script(pokemon)
file = open(cwd + "/./Scripts/background.scpt", "wb")
file.write(bytes(content, 'UTF-8'))
file.close()
2017-06-08 02:30:27 +00:00
def __darwin_create_wallpaper_script(pokemon):
# Create and save the script for changing the wallpaper.
content = __wallpaper_script(pokemon)
file = open(cwd + "/./Scripts/wallpaper.scpt", "wb")
file.write(bytes(content, 'UTF-8'))
file.close()
2017-06-07 23:15:08 +00:00
def __darwin_create_terminal_bash():
# Create and save the run.sh that will execute the AppleScript if the correct run.sh doesn't already exist.
content = "#!/bin/bash\n" + "osascript " + cwd + "/./Scripts/background.scpt"
if open(cwd + "/./Scripts/run.sh", 'r').read() == content:
return
file = open(cwd + "/./Scripts/run.sh", 'wb')
file.write(bytes(content, 'UTF-8'))
file.close()
2017-06-08 02:52:10 +00:00
# Create and save the run.sh that will execute the AppleScript if the correct run.sh
# doesn't already exist.
2017-06-08 02:30:27 +00:00
def __darwin_create_wallpaper_bash():
content = "#!/bin/bash\n" + "osascript " + cwd + "/./Scripts/wallpaper.scpt"
if open(cwd + "/./Scripts/run.sh", 'r').read() == content:
return
file = open(cwd + "/./Scripts/run.sh", 'wb')
file.write(bytes(content, 'UTF-8'))
file.close()
def change_terminal(pokemon):
2017-06-07 23:15:08 +00:00
if sys.platform == "darwin":
2017-06-08 02:52:10 +00:00
# Create, save and run the bash script to change the terminal background.
2017-06-07 23:15:08 +00:00
__iterm2_create_terminal_script(pokemon)
__darwin_create_terminal_bash()
os.system(cwd + "/./Scripts/run.sh")
if sys.platform == "linux":
os.system(__linux_create_terminal(pokemon))
def __linux_create_terminal(pokemon):
if os.environ.get("TERMINOLOGY") == '1':
2017-06-08 02:52:10 +00:00
return "tybg \"" + pokemon.get_path() + "\""
2017-06-07 23:15:08 +00:00
else:
2017-06-08 02:52:10 +00:00
print("Terminal emulator not supported")
2017-06-07 23:15:08 +00:00
exit(1)
def change_wallpaper(pokemon):
2017-06-08 02:30:27 +00:00
if sys.platform == "darwin":
# Create, save and run the bash script to change the wallpaper.
__darwin_create_wallpaper_script(pokemon)
__darwin_create_wallpaper_bash()
os.system(cwd + "/./Scripts/run.sh")
if sys.platform == "linux":
os.system(__linux_create_wallpapper_script(pokemon))
2017-06-08 02:30:27 +00:00
def __linux_create_wallpapper_script(pokemon):
2017-06-08 02:52:10 +00:00
# If its gnome... aka GDMSESSION=gnome-xorg, etc.
if os.environ.get("GDMSESSION").find("gnome") >= 0:
return "gsettings set org.gnome.desktop.background picture-uri " + \
"\"file://"+ pokemon.get_path()+"\""
2017-06-08 02:30:27 +00:00
#elif condition of KDE...
else:
2017-06-08 02:52:10 +00:00
print("Window manager not supported ")
2017-06-08 02:30:27 +00:00
exit(1)
2017-06-08 02:52:10 +00:00
# Print the current Pokemon that is being used as the terminal background.
def determine_terminal_pokemon(db):
__determine_pokemon(db, "background.scpt")
2017-06-08 02:52:10 +00:00
# Print the current Pokemon that is being used the wallpaper.
def determine_wallpaper_pokemon(db):
__determine_pokemon(db, "wallpaper.scpt")
2017-06-08 02:52:10 +00:00
# Helper method to get the current Pokemon that is in the specified script.
def __determine_pokemon(db, script_name):
path = cwd + "/Scripts/" + script_name
try:
content = open(path, "r+").readlines()
except FileNotFoundError:
print("Missing File: ", path)
return
try:
split = content[2].split('/')
image_name = split[-1] # The content after the final slash.
image_name = image_name[:-6] # Remove the .png and quotation at the end.
except IndexError:
print("Corrupt file:", path)
return
pokemon = db.get_pokemon(image_name)
print(pokemon.get_id(), pokemon.get_name().capitalize())