
    iq                     x    d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ ddlmZ  G d	 d
      Zy)    N)DictListAny)Console)Table)Prompt)box   )start_messagec                       e Zd Zd Zdeeeeef   f   ddfdZdeeef   ddfdZde	eeef      ddfd	Z
dd
ededefdZddZy)TVShowManagerc                 |    t               | _        g | _        d| _        d| _        | j                  | _        g | _        y)z?
        Initialize TVShowManager with default values.
        r   
   N)r   consoletv_showsslice_start	slice_endstepcolumn_infoselfs    [/home/nidran/Documenti/script/streaming-community/StreamingCommunity/utils/console/table.py__init__zTVShowManager.__init__   s6     y.0NN	    r   returnNc                     || _         y)z
        Add column information.
    
        Parameters:
            - column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
        N)r   )r   r   s     r   
add_columnzTVShowManager.add_column    s     'r   tv_showc                 @    |r| j                   j                  |       yy)z
        Add a TV show to the list of TV shows.

        Parameters:
            - tv_show (Dict[str, Any]): Dictionary containing TV show details.
        N)r   append)r   r   s     r   add_tv_showzTVShowManager.add_tv_show)   s     MM  ) r   
data_slicec           
         |st        j                  d       y| j                  st        j                  d       yt        t        j
                  dddd      }| j                  j                         D ]P  \  }}|j                  d	d
      }|j                  dd      }|j                  dd      }|j                  ||||       R t        |      D ]f  \  }}	|	s	| j                  j                         D cg c]  }t        |	j                  |d             }
}|dz  dk(  rdnd} |j                  |
d|i h | j                  j                  |       yc c}w )z
        Display TV show data in a tabular format.

        Parameters:
            - data_slice (List[Dict[str, Any]]): List of dictionaries containing TV show details to display.
        zNothing to display.  z)Error: Column information not configured.Tcyanblue)r   r
   )r	   show_headerheader_styleborder_stylepaddingcolorwhitewidthNjustifycenter)styler.   r-       r
   dimr0   )loggingerrorr   r   r	   ROUNDEDitemsgetr   	enumeratekeysstradd_rowr   print)r   r"   tablecol_name	col_styler+   r-   r.   idxentryrow_datar0   s               r   display_datazTVShowManager.display_data3   sP    MM/0MMEF 
 $(#3#3#9#9#; 
	HiMM'73EMM'40EmmIx8G	  
	 $J/ 	6JCIMIYIYI^I^I`aXC		(B 78aa!$qA4x5u5		6 	5!	 bs   6"Eforce_int_inputmax_int_inputc                    | j                   s*t        j                  d       t        j                  d       | j
                  st        j                  d       yt        | j                         }d}	 t                | j                   | j                  | j                   }|sJ|dkD  rEd| _        t        | j                  |      | _	        | j                   | j                  | j                   }| j                  |      }|dk(  rt        j                  d       | j                  |k  r| j                  j                  d       |sd}t        j                   |      }nHdgt#        |dz         D 	cg c]  }	t%        |	       c}	z   d	d
gz   }
d}t        j                   ||
d      }|}|j'                         dv r	 |S |dk(  rU| xj                  | j                  z  c_        | xj                  | j                  z  c_	        | j                  |kD  r|| _	        n	 |S | j                  j                  d       |sd}t        j                   |      }nHdgt#        |dz         D 	cg c]  }	t%        |	       c}	z   d	d
gz   }
d}t        j                   ||
d      }|}|j'                         dv r	 |S |dk(  rd| _        | j                  | _	        n	 |S [c c}	w c c}	w )aF  
        Run the TV show manager application.

        Parameters:
            - force_int_input(bool): If True, only accept integer inputs from 0 to max_int_input
            - max_int_input (int): range of row to show
        
        Returns:
            str: Last command executed before breaking out of the loop.
        z%Error: No data available for display.r   zError: Columns not configured.r1   r$   r
   zG
[green]Press [red]Enter [green]for next page, [red]'q' [green]to quit.z
[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, [yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the endqquitz[cyan]Insert media [red]indexF)choicesshow_choices)rH   rI   zZ
[green]You've reached the end. [red]Enter [green]for first page, [red]'q' [green]to quit.)r   r4   r5   sysexitr   lenr   r   r   minr   rD   r   r=   r   askranger;   lower)r   rE   rF   total_itemslast_commandcurrent_sliceresult_func
prompt_msgkeyirJ   s              r   runzTVShowManager.runa   s    }}MMABHHQKMM:;$--(O !MM$*:*:4>>JM [1_#$ !$TYY!< $d.>.>t~~ N++M:Kc! ~~+""#mn& #pJ **Z0C  "deMA<M6N%Oc!f%OOSVX^R__G!@J **ZuUC"99;-/B A BY$$		1$NNdii/N~~3)44 - ""  $A  B& #pJ **Z0C  "deMA<M6N%Oc!f%OOSVX^R__G!@J **ZuUC"99;-/  BY'(D$%)YYDNA 0 &P2 &Ps   +KKc                 B    g | _         d| _        | j                  | _        y)z*
        Clear all TV shows data.
        r   N)r   r   r   r   r   s    r   clearzTVShowManager.clear   s     r   )Fr   )r   N)__name__
__module____qualname__r   r   r;   r   r   r!   r   rD   boolintrZ   r\    r   r   r   r      s    	'd3S#X+>&? 'D '*4S> *d *,"tDcN'; ," ,"\V4 V VC Vp#r   r   )rL   r4   typingr   r   r   rich.consoler   
rich.tabler   rich.promptr   richr	   messager   r   rb   r   r   <module>ri      s2      " " !    #k# k#r   