57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
###############################################################################
|
|
from logging import getLogger
|
|
from cPickle import dumps, loads
|
|
|
|
from xbmcgui import Window
|
|
###############################################################################
|
|
log = getLogger("PLEX."+__name__)
|
|
WINDOW = Window(10000)
|
|
###############################################################################
|
|
|
|
|
|
def pickl_window(property, value=None, clear=False):
|
|
"""
|
|
Get or set window property - thread safe! For use with Pickle
|
|
Property and value must be string
|
|
"""
|
|
if clear:
|
|
WINDOW.clearProperty(property)
|
|
elif value is not None:
|
|
WINDOW.setProperty(property, value)
|
|
else:
|
|
return WINDOW.getProperty(property)
|
|
|
|
|
|
def pickle_me(obj, window_var='plex_result'):
|
|
"""
|
|
Pickles the obj to the window variable. Use to transfer Python
|
|
objects between different PKC python instances (e.g. if default.py is
|
|
called and you'd want to use the service.py instance)
|
|
|
|
obj can be pretty much any Python object. However, classes and
|
|
functions won't work. See the Pickle documentation
|
|
"""
|
|
log.debug('Start pickling: %s' % obj)
|
|
pickl_window(window_var, value=dumps(obj))
|
|
log.debug('Successfully pickled')
|
|
|
|
|
|
def unpickle_me(window_var='plex_result'):
|
|
"""
|
|
Unpickles a Python object from the window variable window_var.
|
|
Will then clear the window variable!
|
|
"""
|
|
result = pickl_window(window_var)
|
|
pickl_window(window_var, clear=True)
|
|
log.debug('Start unpickling')
|
|
obj = loads(result)
|
|
log.debug('Successfully unpickled: %s' % obj)
|
|
return obj
|
|
|
|
|
|
class Playback_Successful(object):
|
|
"""
|
|
Used to communicate with another PKC Python instance
|
|
"""
|
|
listitem = None
|