summaryrefslogtreecommitdiffstats
path: root/src/canvas
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2020-05-02 21:50:35 -0400
committerClementTsang <cjhtsang@uwaterloo.ca>2020-05-02 21:50:35 -0400
commit8307b06c56934aa74985a0fee1271f1bc299b83f (patch)
tree39ab937261566fea71461b152a6350623a1dad9c /src/canvas
parente12c2f5212b7898b10f6c01024fa2cbe59c55bc6 (diff)
bug: fix bug with multiple tokens
Diffstat (limited to 'src/canvas')
-rw-r--r--src/canvas/canvas_colours.rs2
-rw-r--r--src/canvas/widgets/process_table.rs61
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(&regex_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