From 66402a9c23e0975a8a3d8c2707b689b9cde98ccf Mon Sep 17 00:00:00 2001 From: lukeflo Date: Tue, 22 Oct 2024 21:52:36 +0200 Subject: rearrange code, file and folder structure --- src/bib/keywords.rs | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/bib/keywords.rs (limited to 'src/bib/keywords.rs') diff --git a/src/bib/keywords.rs b/src/bib/keywords.rs new file mode 100644 index 0000000..2668323 --- /dev/null +++ b/src/bib/keywords.rs @@ -0,0 +1,55 @@ +// bibiman - a TUI for managing BibLaTeX databases +// Copyright (C) 2024 lukeflo +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +///// + +use ratatui::widgets::{ListState, ScrollbarState}; + +#[derive(Debug)] +pub struct TagList { + pub tag_list_items: Vec, + pub tag_list_state: ListState, + pub tag_scroll_state: ScrollbarState, + pub selected_keywords: Vec, +} + +// Structure of the list items. +#[derive(Debug)] +pub struct TagListItem { + pub keyword: String, +} + +// Function to process inputed characters and convert them (to string, or more complex function) +impl TagListItem { + pub fn new(info: &str) -> Self { + Self { + keyword: info.to_string(), + } + } +} + +impl TagList { + pub fn new(keyword_list: Vec) -> Self { + let tag_list_items = keyword_list; + let tag_list_state = ListState::default(); // for preselection: .with_selected(Some(0)); + let tag_scroll_state = ScrollbarState::new(tag_list_items.len()); + Self { + tag_list_items, + tag_list_state, + tag_scroll_state, + selected_keywords: Vec::new(), + } + } +} -- cgit v1.2.3