Mini Shell
3
<�Zc�. � @ s� d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl m
Z
d dlmZ d dl
mZmZmZ d dlmZ e� Ze j� Zd gZG d
d � d e�ZdS )� N)�App)�ExitMainLoop)�ExceptionSignal�RenderScreenSignal�CloseScreenSignal)�RenderUnexpectedError)�UserInputAction)�ScreenStack�
ScreenData�ScreenStackEmptyException)�get_simpleline_logger�ScreenSchedulerc @ s� e Zd Zd)dd�Zdd� Zdd� Zedd � �Zejd
d � �Zedd� �Z d
d� Z
d*dd�Zdd� Zd+dd�Z
d,dd�Zd-dd�Zdd� Zd.dd�Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� ZdS )/r
Nc C s2 d| _ || _|r|| _nt� | _| j� d| _dS )a� Constructor where you can pass your own scheduler stack.
The ScreenStack will be used automatically if scheduler stack will be None.
:param event_loop: Event loop used for the scheduler.
:type event_loop: Class based on `simpleline.event_loop.AbstractEventLoop`.
:param scheduler_stack: Use custom scheduler stack if you need to.
:type scheduler_stack: `simpleline.screen_stack.ScreenStack` based class.
NF)�_quit_screen�_event_loop�
_screen_stackr �_register_handlers�_first_screen_scheduled)�selfZ
event_loopZscheduler_stack� r �&/usr/lib/python3.6/screen_scheduler.py�__init__, s
zScreenScheduler.__init__c C s dj dtj� jd g �S )N�
� �=)�joinr Zget_configuration�width)r r r r �_spacerA s zScreenScheduler._spacerc C s$ | j jt| j� | j jt| j� d S )N)r Zregister_signal_handlerr �_process_screen_callbackr �_close_screen_callback)r r r r r D s z"ScreenScheduler._register_handlersc C s | j S )zReturn quit UIScreen.)r )r r r r �quit_screenH s zScreenScheduler.quit_screenc C s
|| _ dS )a, Set the UIScreen based instance which will be showed before the Application will quit.
You can also use `simpleline.render.adv_widgets.YesNoDialog` or `UIScreen` based class
with the `answer` property. Without the `answer` property the application will always
close.
N)r )r r r r r r M s c C s
| j j� S )z�Is something for rendering in the scheduler stack?
:return: True if the rendering stack is empty
:rtype: bool
)r �empty)r r r r �nothing_to_renderW s z!ScreenScheduler.nothing_to_renderc C s
| j j� S )z1Get string representation of actual screen stack.)r �
dump_stack)r r r r r"