U vi|@sddlZddlmZddlmZmZmZmZddlm Z mZddl m Z m Z m Z ddlmZedZeeZGd d d eZdS) N) timedelta)AnyOptionalSetTypeVar)abctyping)CompositeDisposable DisposableSingleAssignmentDisposable)PeriodicScheduler_TStatecseZdZdZedfdd Zdejee ee j dddZ dej ejee ee j d d d Zdejejee ee j d d d Zdej ejee ee j dddZZS) QtSchedulerz+A scheduler for a PyQt5/PySide2 event loop.)qtcorecst||_t|_dS)zCreate a new QtScheduler. Args: qtcore: The QtCore instance to use; typically you would get this by either import PyQt5.QtCore or import PySide2.QtCore N)super__init___qtcoreset_periodic_timers)selfr __class__Y/opt/alt/python38/lib/python3.8/site-packages/reactivex/scheduler/mainloop/qtscheduler.pyrs zQtScheduler.__init__N)actionstatereturncCs|jd||dS)a!Schedules an action to be executed. Args: action: Action to be executed. state: [Optional] state to be given to the action function. Returns: The disposable object used to cancel the scheduled action (best effort). gr)schedule_relative)rrrrrrschedule!s zQtScheduler.schedule)duetimerrrcsxtdt|d}tdddfdd }td|jj||ddfd d }t t |S) auSchedules an action to be executed after duetime. Args: duetime: Relative time after which to execute the action. action: Action to be executed. state: [Optional] state to be given to the action function. Returns: The disposable object used to cancel the scheduled action (best effort). r@@FNrcss_dSN)Z disposablerr is_disposedsadrrrr invoke_actionEsz4QtScheduler.schedule_relative..invoke_actionzrelative timeout: %smscsddS)NTrr)r&rrdisposeNsz.QtScheduler.schedule_relative..dispose) maxint to_secondsr logdebugrQTimerZ singleShotr r )rr!rrmsecsr(r)rr%rr0s zQtScheduler.schedule_relativecCs |||j}|j|||dS)aoSchedules an action to be executed at duetime. Args: duetime: Absolute time at which to execute the action. action: Action to be executed. state: [Optional] state to be given to the action function. Returns: The disposable object used to cancel the scheduled action (best effort). r) to_datetimenowr)rr!rrdeltarrrschedule_absoluteTszQtScheduler.schedule_absolute)periodrrrcstdt|d}t}ddfdd }td|j| j | |j ddfdd }t|t|S) aSchedules a periodic piece of work to be executed in the loop. Args: period: Period in seconds for running the work repeatedly. action: Action to be executed. state: [Optional] state to be given to the action function. Returns: The disposable object used to cancel the scheduled action (best effort). rr"Nr#cs dSr$rr)rrrrinterval}sz/QtScheduler.schedule_periodic..intervalzperiodic timeout: %smscs jdSr$)stoprremoveZ deleteLaterr)rtimerrrr)s z.QtScheduler.schedule_periodic..dispose)r*r+r,r r-r.rr/Z setSingleShottimeoutconnectZ setIntervalraddstartr r )rr5rrr0r'r6r)r)rrrr9rschedule_periodicis      zQtScheduler.schedule_periodic)N)N)N)N)__name__ __module__ __qualname____doc__rrrZScheduledActionrrrZDisposableBaser Z RelativeTimerZ AbsoluteTimer4ZScheduledPeriodicActionr> __classcell__rrrrrs:   ( r)loggingdatetimerrrrrrZ reactivexrZreactivex.disposabler r r Zperiodicschedulerr r getLoggerr?r-rrrrrs