global http_server\r
scheduler = None\r
current_slideshow = None\r
-CACHEDIR = r'''C:\Windows\Temp\ppt-cache'''\r
interface_root = None\r
CONFIG_FILE = r'''..\ppt-control.ini'''\r
LOGFILE = r'''..\ppt-control.log'''\r
black = 0\r
if current_slideshow:\r
try:\r
- path = CACHEDIR + "\\" + current_slideshow.name()\r
+ path = config.prefs["Main"]["cache"] + "\\" + current_slideshow.name()\r
except Exception as e:\r
path = os.path.join(os.path.dirname(os.path.realpath(__file__)), r'''\static\black.jpg''') + '/'\r
logger.warning("Failed to get current slideshow name: ", e)\r
\r
def run_http():\r
global http_server\r
- http_server = server.HTTPServer(("", 80), Handler)\r
+ http_server = server.HTTPServer((config.prefs["HTTP"]["interface"], config.prefs.getint("HTTP", "port")), Handler)\r
http_server.serve_forever()\r
\r
STATE_DEFAULT = {"connected": 0, "current": 0, "total": 0, "visible": 0, "name": ""}\r
notify_state()\r
else:\r
logger.error("Received unnsupported event: {}", data)\r
- message = ""\r
finally:\r
USERS.remove(websocket)\r
\r
ws_queue = asyncio.Queue()\r
global loop\r
loop = asyncio.get_event_loop()\r
- start_server = websockets.serve(ws_handler, "0.0.0.0", 5678, ping_interval=None)\r
+ start_server = websockets.serve(ws_handler, config.prefs["WebSocket"]["interface"], config.prefs.getint("WebSocket", "port"), ping_interval=None)\r
asyncio.get_event_loop().run_until_complete(start_server)\r
asyncio.get_event_loop().run_forever()\r
\r
logger.info("Started websocket server")\r
\r
class Slideshow:\r
- def __init__(self, instance):\r
+ def __init__(self, instance, blackwhite):\r
self.instance = instance\r
if self.instance is None:\r
raise ValueError("PPT instance cannot be None")\r
raise ValueError("PPT instance has no active presentation")\r
self.presentation = self.instance.ActivePresentation\r
\r
+ self.blackwhite = blackwhite\r
+\r
self.export_current_next()\r
\r
def unload(self):\r
def black(self):\r
try:\r
self.refresh()\r
- self.view.State = 3\r
+ if self.blackwhite == "both" and self.view.State == 4:\r
+ self.view.state = 1\r
+ else:\r
+ self.view.State = 3\r
self.export_current_next()\r
except (ValueError, pywintypes.com_error):\r
self.unload()\r
def white(self):\r
try:\r
self.refresh()\r
- self.view.State = 4\r
+ if self.blackwhite == "both" and self.view.State == 3:\r
+ self.view.state = 1\r
+ else:\r
+ self.view.State = 4\r
self.export_current_next()\r
except (ValueError, pywintypes.com_error):\r
self.unload()\r
self.export(self.current_slide() + 2)\r
\r
def export(self, slide):\r
- destination = CACHEDIR + "\\" + self.name() + "\\" + str(slide) + ".jpg"\r
+ destination = config.prefs["Main"]["cache"] + "\\" + self.name() + "\\" + str(slide) + ".jpg"\r
os.makedirs(os.path.dirname(destination), exist_ok=True)\r
if not os.path.exists(destination) or time.time() - os.path.getmtime(destination) > config.prefs.getint("Main", "cache_timeout"):\r
if slide <= self.total_slides():\r
attempts = 0\r
while attempts < 3:\r
try:\r
- self.presentation.Slides(slide).Export(destination, "JPG")\r
+ self.presentation.Slides(slide).Export(destination, config.prefs["Main"]["cache_format"])\r
break\r
except:\r
pass\r
try:\r
instance = get_ppt_instance()\r
global current_slideshow\r
- current_slideshow = Slideshow(instance)\r
+ current_slideshow = Slideshow(instance, config.prefs["Main"]["blackwhite"])\r
STATE["connected"] = 1\r
STATE["current"] = current_slideshow.current_slide()\r
STATE["total"] = current_slideshow.total_slides()\r
\r
#logging.getLogger("asyncio").setLevel(logging.ERROR)\r
#logging.getLogger("asyncio.coroutines").setLevel(logging.ERROR)\r
- #logging.getLogger("websockets.server").setLevel(logging.ERROR)\r
+ logging.getLogger("websockets.server").setLevel(logging.ERROR)\r
#logging.getLogger("websockets.protocol").setLevel(logging.ERROR)\r
\r
\r