@@ -12,11 +12,12 @@ use termion::{event::Key, event::Key::*};
1212use tui:: {
1313 buffer:: Buffer ,
1414 layout:: Rect ,
15- style :: Color ,
16- style:: { Modifier , Style } ,
15+ layout :: { Constraint , Direction , Layout } ,
16+ style:: { Color , Modifier , Style } ,
1717 widgets:: Block ,
1818 widgets:: Borders ,
1919 widgets:: Text ,
20+ widgets:: { Paragraph , Widget } ,
2021} ;
2122use tui_react:: { List , ListProps } ;
2223use unicode_segmentation:: UnicodeSegmentation ;
@@ -111,17 +112,6 @@ impl MarkPane {
111112 marked. len( ) ,
112113 format. display( marked. iter( ) . map( |( _k, v) | v. size) . sum:: <u64 >( ) )
113114 ) ;
114- let block = Block :: default ( )
115- . title ( & title)
116- . border_style ( * border_style)
117- . borders ( Borders :: ALL ) ;
118- let entry_in_view = match self . selected {
119- Some ( s) => Some ( s) ,
120- None => {
121- self . list . offset = 0 ;
122- Some ( marked. len ( ) . saturating_sub ( 1 ) )
123- }
124- } ;
125115 let selected = self . selected ;
126116 let entries = marked
127117 . values ( )
@@ -180,10 +170,60 @@ impl MarkPane {
180170 vec ! [ path, spacer, bytes]
181171 } ) ;
182172
173+ let entry_in_view = match self . selected {
174+ Some ( s) => Some ( s) ,
175+ None => {
176+ self . list . offset = 0 ;
177+ Some ( marked. len ( ) . saturating_sub ( 1 ) )
178+ }
179+ } ;
180+ let mut block = Block :: default ( )
181+ . title ( & title)
182+ . border_style ( * border_style)
183+ . borders ( Borders :: ALL ) ;
184+
185+ let inner_area = block. inner ( area) ;
186+ block. draw ( area, buf) ;
187+
188+ let ( help_line_area, list_area) = {
189+ let regions = Layout :: default ( )
190+ . direction ( Direction :: Vertical )
191+ . constraints ( [ Constraint :: Length ( 1 ) , Constraint :: Max ( 256 ) ] . as_ref ( ) )
192+ . split ( inner_area) ;
193+ ( regions[ 0 ] , regions[ 1 ] )
194+ } ;
195+
196+ let default_style = Style {
197+ fg : Color :: Black ,
198+ bg : Color :: White ,
199+ modifier : Modifier :: BOLD ,
200+ ..Default :: default ( )
201+ } ;
202+ Paragraph :: new (
203+ [
204+ Text :: Styled (
205+ " Ctrl + Shift + r" . into ( ) ,
206+ Style {
207+ fg : Color :: Red ,
208+ ..default_style
209+ } ,
210+ ) ,
211+ Text :: Styled (
212+ " permanently deletes list without prompt" . into ( ) ,
213+ default_style,
214+ ) ,
215+ ]
216+ . iter ( ) ,
217+ )
218+ . style ( Style {
219+ bg : Color :: White ,
220+ ..Style :: default ( )
221+ } )
222+ . draw ( help_line_area, buf) ;
183223 let props = ListProps {
184- block : Some ( block ) ,
224+ block : None ,
185225 entry_in_view,
186226 } ;
187- self . list . render ( props, entries, area , buf)
227+ self . list . render ( props, entries, list_area , buf)
188228 }
189229}
0 commit comments