
    AHjv1                        d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZmZ d dlmZ erd d	lmZ  G d
 de      Zy)    )annotations)Fraction)TYPE_CHECKINGIterable)resolve)Scalar)NULL_OFFSETRegionSizeSpacing)ArrangeResultLayoutWidgetPlacement)	visualize)Widgetc                  :    e Zd ZdZdZddZ	 d	 	 	 	 	 	 	 	 	 ddZy)	
GridLayoutz#Used to layout Widgets into a grid.gridc                ^    d | _         d| _        	 d| _        d| _        	 d| _        	 d| _        y )NF)min_column_widthstretch_heightregularexpandshrinkauto_minimum)selfs    L/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/layouts/grid.py__init__zGridLayout.__init__   s;    ,0$)B"!D!C"'H    c                  F |j                  |        |j                  }|j                  xsN j                  r,|j                  j                  st        j                  d      gnt        j                  d      g}|j                  xs t        j                  d      g}|j                  }|j                  }	t        d|j                        }
| j                  }|nj                  }t        d||z   ||z   z        }
t        |
t        |            }
| j                   r,t        |      |
z  r|
dkD  r|
dz  }
t        |      |
z  r|
dkD  r|j"                  }|j$                  j&                  F|j(                  \  }}d}|dk(  rd }ndz  d}t+        |	||	|      }dd}	 	 	 	 	 	 	 	 	 	 dd	}dd
}i }i }|
}t-         ||            j.                  }d}dx}}|D ]  }|j                  }|j0                  xs d}|j2                  xs d}	 |\  }} |||||      } |j5                         j7                  |       r!| D ]  }!||!|k(  f||!<    |||dz
  |dz
  f||<   n |       }Y |       }  |||
      } |||r|n|dz         }dFfd}"dFfd}#t9        |      D ]  \  }}$|$j:                  sd}%t=        t        |            D ]m  }||f}!	 ||!   \  }&}'|&j                  j0                  dk7  r*t        |% |"|&|&j?                  F      |&j                  j@                  j                  z               }%o t        jD                  |%      ||<    d }(| jF                  r| jH                  rdg|
z  }(t=        |
      D ]  })t=        t        |            D ]  }*|jK                  |)|*f      x}+	 |+d   }&t        tM        |&|&jO                               jQ                  |&j                        |&j                  j@                  j                  z   |(|)         |(|)<     tS        |j                  |	F| jT                  | jH                  |(      },t9        |      D ]  \  }}$|$j:                  sd}-t=        t        |            D ]  }||f}!	 ||!   \  }&}'|&j                  j2                  dk7  r*|,|   d   }.|&j                  j@                  jV                  \  }/}0 |#|&|&jY                  F|.|/z
        |0z         }1t        |-|1      }- t        jD                  |-      ||<    tS        |j                  |F      }2g }3tZ        }4|3j\                  }5t        |,      dz
  }6t        |2      dz
  }7|j_                         D ]  \  }&\  }}}}|,|   d   }8||7kD  r |3S |2|   d   }9|,t        |6||z            \  }:};|2t        |7||z            \  }<}=ta        |;|:z   |8z
  |=|<z   |9z
        }>|&jc                  |>Fte        |>j                        te        |>j                        d|      \  }?}@}A| jf                  r2t        |      dkD  r$@|>j                  k  rte        |>j                        }@ti        |8|9tk        |?Aj                  z         tk        @|Aj                  z               jm                  |>      jI                  |A      |z   }B|&j                  }C|Cjo                  d      rCjp                  jS                  |>F      ntr        }DCjo                  d      xr |jt                  dk(  }E |5 |4BD|AnAjw                  |      |&E              |3S # tB        $ r Y w xY w# tB        $ r Y w xY w)N1frauto   )r   r   none)   r%   )r#   r#   c              3  H   K   d}	 t        |       D ]  }||f 
 |dz  }w)z|Iterate over table coordinates ad infinitum.

            Args:
                column_count: Number of columns
            r   r#   range)column_countrowcolumns      r   cell_coordsz'GridLayout.arrange.<locals>.cell_coordsO   s<      C#L1 (F!3-'(q s    "c           	     x    t        | | |z         D ch c]  }t        |||z         D ]  }||f  c}}S c c}}w )a  Get coords occupied by a cell.

            Args:
                column_start: Start column.
                row_start: Start_row.
                columns: Number of columns.
                rows: Number of rows.

            Returns:
                Set of coords.
            r'   )column_start	row_startcolumnsrowsr+   r*   s         r   widget_coordsz)GridLayout.arrange.<locals>.widget_coords[   sU      $L,2HI I,<=    s   6c                    t        |       dd }t        |      |k  r |j                  |        t        |      |k  r |d| S )a  Repeat an iterable of scalars as many times as required to return
            a list of `count` values.

            Args:
                scalars: Iterable of values.
                count: Number of values to return.

            Returns:
                A list of values.
            N)listlenextend)scalarscountlimited_valuess      r   repeat_scalarsz*GridLayout.arrange.<locals>.repeat_scalarso   sI     "']1-Nn%-%%g. n%-!&5))r   r   Tc                4   | j                   }|j                  9t        |t        |j                  j	                  t        |                        }|j                  9t        |t        |j                  j	                  t        |                        }|S )zApply min and max widths to dimension.

            Args:
                widget: A Widget.
                width: A width.

            Returns:
                New width.
            )styles	min_widthmaxintr   r   	max_widthmin)widgetwidthr<   sizeviewports      r   apply_width_limitsz.GridLayout.arrange.<locals>.apply_width_limits   s     ]]F+((00x%QR +((00x%QR Lr   c                4   | j                   }|j                  9t        |t        |j                  j	                  t        |                        }|j                  9t        |t        |j                  j	                  t        |                        }|S )zApply min and max height to a dimension.

            Args:
                widget: A widget.
                height: A height.

            Returns:
                New height
            )r<   
min_heightr>   r?   r   r   
max_heightrA   )rB   heightr<   rD   rE   s      r   apply_height_limitsz/GridLayout.arrange.<locals>.apply_height_limits   s     ]]F  ,))11$(6BRST   ,))11$(6BRST Mr   g        )r   r   minimums)constrain_widthgreedyoffsetpositionabsolute)r)   r?   returnzIterable[tuple[int, int]])
r.   r?   r/   r?   r0   r?   r1   r?   rR   zset[tuple[int, int]])r7   zIterable[Scalar]r8   r?   rR   zlist[Scalar])rB   r   rC   r?   rR   r?   )rB   r   rJ   r?   rR   r?   )<
pre_layoutr<   	grid_rowsrJ   is_auto_heightr   parsegrid_columnsgrid_gutter_horizontalgrid_gutter_verticalr>   grid_size_columnsr   rC   rA   r5   r   grid_size_rowsappviewport_sizekeyliner   iter__next__column_spanrow_spankeys
isdisjoint	enumerateis_autor(   get_content_widthgutterKeyErrorfrom_numberr   r   getr   renderget_minimal_widthr   r   totalsget_content_heightr   appenditemsr   _get_box_modelr   r   r
   r?   	crop_sizehas_rulerO   r	   rP   grow_maximum)Gr   parentchildrenrD   rN   r<   row_scalarscolumn_scalarsgutter_horizontalgutter_verticaltable_size_columnsr   container_widthtable_size_rowskeyline_style_keyline_colorrO   gutter_spacingr,   r2   r:   cell_mapcell_size_mapr)   
next_coord
cell_coordr+   r*   childchild_stylesra   rb   coordscoordrF   rK   scalarrC   rB   _column_minimumscolumn_index	row_index	cell_infor0   rJ   column_widthgutter_widthgutter_heightwidget_heightr1   
placements_WidgetPlacementadd_placement
max_columnmax_rowxyx2
cell_widthy2cell_height	cell_size	box_width
box_heightmarginregionwidget_stylesplacement_offsetrQ   rE   sG      `                                                                  @r   arrangezGridLayout.arrange!   s>    	$&& 
FMM$@$@ \\% !,,v&' 	
  ,,Ee1D0E"99 55 F$<$<=00'"jjO!$ #44$'88:"
 "%%7X!G||(m&88=ORS=S&!+& (m&88=ORS=S !//::++(.%~F"!NFNDF$!!	N
			*-	8;	CF	!	(	*  @BAC)+l34==

 	&E <<L&227aK#,,1H (&vsKJ==?--f5!' G+0%:2E*FG #a 1	,M%( !+J#J-	&0 (8JK$Oq
	.	0 (7 	CNFF~~ [!12 C#SME$,UO	 "==449$ #!. & & 8 8x H"(--"6"6"<"<!=!" *0););E)Bv&)	C, -1 c$66O %&8 9 !&s;'7!8 I%-\\<2K%LL	!" "+18;%ffmmo>PP & %mm22889 ,L995 JJ;;;;$	
 %[1 	>KC~~#C$78 <F#SME<$,UO	 "==11Q6$'.vq'96<mm6J6J6Q6Q3m(;""55 $ ( ,| ;
 ,,) "%V]!;)<, $*#5#5f#=C 3	>6 {DKK1BD(S,.
*"))\A%
d)a-<I<O<O<Q 4	8F8VS+x"AW}f e S	!A$SVk5I%JKNB
"3wh#?@OBZ"_q0+2BQ2FGI,2,A,A)))* $ -B -)Iz6 ""s8}q'8!1!11!))*:*:!;J q#i&,,67Z&--=W9X 9%F #MMM !))(3 $$,,YA   &&z2Tv*7T   $ *1 #00@
Q4	l K $ f $ s$   \>]>	]
]	]]N)rR   None)T)
rv   r   rw   zlist[Widget]rD   r   rN   boolrR   r   )__name__
__module____qualname____doc__namer   r    r   r   r   r      sJ    -D
I RV~~(4~<@~JN~	~r   r   N)
__future__r   	fractionsr   typingr   r   textual._resolver   textual.css.scalarr   textual.geometryr	   r
   r   r   textual.layoutr   r   r   textual.visualr   textual.widgetr   r   r   r   r   <module>r      s7    "  * $ % ? ? A A $%O Or   