1# -*- coding: utf-8 -*- 2# 3# Copyright (C) 2018 Jens Goepfert 4# 5 6import wx 7 8from photofilmstrip.lib.jobimpl.IVisualJobManager import IVisualJobManager 9from photofilmstrip.lib.jobimpl.JobManager import JobManager 10from photofilmstrip.lib.jobimpl.Job import Job 11 12_EVT_REGISTER_JOB_TYPE = wx.NewEventType() 13EVT_REGISTER_JOB = wx.PyEventBinder(_EVT_REGISTER_JOB_TYPE, 1) 14 15_EVT_REMOVE_JOB_TYPE = wx.NewEventType() 16EVT_REMOVE_JOB = wx.PyEventBinder(_EVT_REMOVE_JOB_TYPE, 1) 17 18 19class WxVisualJobManager(IVisualJobManager): 20 21 def __init__(self, win=None): 22 self.__id = wx.NewId() 23 if win is None: 24 win = self 25 assert isinstance(win, wx.EvtHandler) 26 self.__win = win 27 JobManager().AddVisual(self) 28 29 def GetId(self): 30 return self.__id 31 32 def RegisterJob(self, job): 33 evt = JobEvent(self.__win.GetId(), job, _EVT_REGISTER_JOB_TYPE) 34 wx.PostEvent(self.__win, evt) 35 36 def RemoveJob(self, job): 37 evt = JobEvent(self.__win.GetId(), job, _EVT_REMOVE_JOB_TYPE) 38 wx.PostEvent(self.__win, evt) 39 40 41class JobEvent(wx.PyEvent): 42 43 def __init__(self, ident, job, evtType): 44 wx.PyEvent.__init__(self, ident, evtType) 45 assert isinstance(job, Job) 46 self.__job = job 47 48 def GetJob(self): 49 return self.__job 50