diff options
author | ClementTsang <cjhtsang@uwaterloo.ca> | 2020-05-02 21:50:35 -0400 |
---|---|---|
committer | ClementTsang <cjhtsang@uwaterloo.ca> | 2020-05-02 21:50:35 -0400 |
commit | 8307b06c56934aa74985a0fee1271f1bc299b83f (patch) | |
tree | 39ab937261566fea71461b152a6350623a1dad9c /src/canvas | |
parent | e12c2f5212b7898b10f6c01024fa2cbe59c55bc6 (diff) |
bug: fix bug with multiple tokens
Diffstat (limited to 'src/canvas')
-rw-r--r-- | src/canvas/canvas_colours.rs | 2 | ||||
-rw-r--r-- | src/canvas/widgets/process_table.rs | 61 |
2 files changed, 42 insertions, 21 deletions
diff --git a/src/canvas/canvas_colours.rs b/src/canvas/canvas_colours.rs index 1e1fe236..6be85866 100644 --- a/src/canvas/canvas_colours.rs +++ b/src/canvas/canvas_colours.rs @@ -26,6 +26,7 @@ pub struct CanvasColours { pub graph_style: Style, // Full, Medium, Low pub battery_bar_styles: Vec<Style>, + pub invalid_query_style: Style, } impl Default for CanvasColours { @@ -60,6 +61,7 @@ impl Default for CanvasColours { Style::default().fg(Color::Green), Style::default().fg(Color::Green), ], + invalid_query_style: tui::style::Style::default().fg(tui::style::Color::Red), } } } diff --git a/src/canvas/widgets/process_table.rs b/src/canvas/widgets/process_table.rs index 63fb45c3..a495dbdb 100644 --- a/src/canvas/widgets/process_table.rs +++ b/src/canvas/widgets/process_table.rs @@ -44,7 +44,7 @@ impl ProcessTableWidget for Painter { widget_id: u64, ) { if let Some(process_widget_state) = app_state.proc_state.widget_states.get(&widget_id) { - let search_height = if draw_border { 3 } else { 2 }; + let search_height = if draw_border { 4 } else { 3 }; if process_widget_state.is_search_enabled() { let processes_chunk = Layout::default() .direction(Direction::Vertical) @@ -335,9 +335,6 @@ impl ProcessTableWidget for Painter { let search_title = "> "; let num_chars_for_text = search_title.len(); - - let mut search_text = vec![Text::styled(search_title, self.colours.table_header_style)]; - let cursor_position = proc_widget_state.get_cursor_position(); let current_cursor_position = proc_widget_state.get_char_cursor_position(); let is_search_enabled = proc_widget_state.is_search_enabled(); @@ -356,6 +353,14 @@ impl ProcessTableWidget for Painter { app_state.is_force_redraw, ); + let mut search_text = vec![Text::styled( + search_title, + if is_on_widget { + self.colours.table_header_style + } else { + self.colours.text_style + }, + )]; let query = proc_widget_state.get_current_search_query().as_str(); let grapheme_indices = UnicodeSegmentation::grapheme_indices(query, true); let query_with_cursor: Vec<Text<'_>> = build_query( @@ -368,6 +373,8 @@ impl ProcessTableWidget for Painter { self.colours.text_style, ); + // TODO: [QUERY] Make text/border go red if error? + // Text options shamelessly stolen from VS Code. let case_style = if !proc_widget_state.process_search_state.is_ignoring_case { self.colours.currently_selected_text_style @@ -393,31 +400,43 @@ impl ProcessTableWidget for Painter { self.colours.text_style }; - let mut option_text = vec![]; - let case_text = format!("Case({})", if self.is_mac_os { "F1" } else { "Alt+C" },); - let whole_text = format!("Whole({})", if self.is_mac_os { "F2" } else { "Alt+W" },); - let regex_text = format!("Regex({})", if self.is_mac_os { "F3" } else { "Alt+R" },); - - let option_row = vec![ + let option_text = vec![ Text::raw("\n"), - Text::styled(&case_text, case_style), + Text::styled( + format!("Case({})", if self.is_mac_os { "F1" } else { "Alt+C" }), + case_style, + ), Text::raw(" "), - Text::styled(&whole_text, whole_word_style), + Text::styled( + format!("Whole({})", if self.is_mac_os { "F2" } else { "Alt+W" }), + whole_word_style, + ), Text::raw(" "), - Text::styled(®ex_text, regex_style), + Text::styled( + format!("Regex({})", if self.is_mac_os { "F3" } else { "Alt+R" }), + regex_style, + ), ]; - option_text.extend(option_row); search_text.extend(query_with_cursor); + search_text.push(Text::styled( + format!( + "\n{}", + if let Some(err) = &proc_widget_state + .process_search_state + .search_state + .error_message + { + err.as_str() + } else { + "" + } + ), + self.colours.invalid_query_style, + )); search_text.extend(option_text); - let current_border_style = if proc_widget_state - .process_search_state - .search_state - .is_invalid_search - { - *INVALID_REGEX_STYLE - } else if is_on_processes { + let current_border_style = if is_on_processes { self.colours.highlighted_border_style } else { self.colours.border_style |