92 lines
3.9 KiB
Rust
92 lines
3.9 KiB
Rust
|
|
//! The floating search-syntax reference.
|
||
|
|
|
||
|
|
use super::*;
|
||
|
|
|
||
|
|
impl SearchTab {
|
||
|
|
pub(super) fn help_window_ui(&mut self, ctx: &egui::Context) {
|
||
|
|
let mut open = self.help_open;
|
||
|
|
egui::Window::new("Query syntax")
|
||
|
|
.open(&mut open)
|
||
|
|
.resizable(false)
|
||
|
|
.default_width(540.0)
|
||
|
|
.show(ctx, |ui| {
|
||
|
|
ui.label(
|
||
|
|
"Everything that is not a filter is matched as one phrase, in order. \
|
||
|
|
Filters combine freely with the search text.",
|
||
|
|
);
|
||
|
|
ui.add_space(6.0);
|
||
|
|
egui::Grid::new("query-syntax-table")
|
||
|
|
.num_columns(2)
|
||
|
|
.spacing([18.0, 5.0])
|
||
|
|
.striped(true)
|
||
|
|
.show(ui, |ui| {
|
||
|
|
let row = |ui: &mut egui::Ui, syntax: &str, meaning: &str| {
|
||
|
|
ui.monospace(syntax);
|
||
|
|
ui.label(meaning);
|
||
|
|
ui.end_row();
|
||
|
|
};
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"budget report",
|
||
|
|
"names, contents, and paths containing \"budget report\"",
|
||
|
|
);
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"\"exact phrase\"",
|
||
|
|
"quotes keep spaces, stars, and filter-like words literal",
|
||
|
|
);
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"bud*report",
|
||
|
|
"* matches any run of characters (within a line); \
|
||
|
|
also works in name: values",
|
||
|
|
);
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"regex:\"(foo|bar)\\d+\"",
|
||
|
|
"regular expression, matched against names, contents, \
|
||
|
|
and paths",
|
||
|
|
);
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"type:Document",
|
||
|
|
"file class: Audio, Image, Video, Document, Text, \
|
||
|
|
Archive, Spreadsheet, Presentation, Folder",
|
||
|
|
);
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"modified:>=2024-01-01",
|
||
|
|
"modification date (yyyy-mm-dd); also <, <=, > and =",
|
||
|
|
);
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"path:/home/me/docs",
|
||
|
|
"only results in that folder and its subfolders; \
|
||
|
|
quote paths containing spaces",
|
||
|
|
);
|
||
|
|
row(ui, "mime:application/pdf", "exact MIME type");
|
||
|
|
row(
|
||
|
|
ui,
|
||
|
|
"name:report",
|
||
|
|
"filename contains, applied as an unranked filter",
|
||
|
|
);
|
||
|
|
});
|
||
|
|
ui.add_space(6.0);
|
||
|
|
ui.label("Example:");
|
||
|
|
ui.monospace("type:Document modified:>=2024-01-01 quarterly budget");
|
||
|
|
ui.add_space(6.0);
|
||
|
|
ui.label(hint(
|
||
|
|
"Ranking: exact filename matches, then filename substrings, then \
|
||
|
|
full-text matches (ordered by occurrences), then fuzzy matches \
|
||
|
|
when enabled, and finally matches on the rest of the file path.",
|
||
|
|
));
|
||
|
|
ui.label(hint(
|
||
|
|
"The complete reference, including ranking details and the \
|
||
|
|
fuzzy edit budget, is the \"Query syntax\" section of \
|
||
|
|
README.md in the QuickSearch folder.",
|
||
|
|
));
|
||
|
|
});
|
||
|
|
self.help_open = open;
|
||
|
|
}
|
||
|
|
}
|