Files
zoeae/src/handler.rs
T

83 lines
2.0 KiB
Rust
Raw Normal View History

2026-01-24 19:53:46 -06:00
use std::path::PathBuf;
use crate::io;
use crate::message::{FileAction, ViewAction};
use crate::{Message, state::State};
use iced::Task;
use iced::widget::text_editor;
pub fn edit(state: &mut State, action: text_editor::Action) -> Task<Message> {
2026-01-25 17:26:40 -06:00
state.apply_edit(action);
Task::none()
2026-01-24 19:53:46 -06:00
}
pub fn switch_tab(state: &mut State, index: usize) -> Task<Message> {
2026-01-25 17:26:40 -06:00
state.switch_tab(index);
Task::none()
2026-01-24 19:53:46 -06:00
}
pub fn link_clicked(url: String) -> Task<Message> {
2026-01-25 17:26:40 -06:00
println!("Opening link: {}", url);
Task::none()
2026-01-24 19:53:46 -06:00
}
pub fn file_action(state: &mut State, action: FileAction) -> Task<Message> {
2026-01-25 17:26:40 -06:00
match action {
FileAction::New => {
state.new_file();
Task::none()
2026-01-24 19:53:46 -06:00
}
2026-01-25 17:26:40 -06:00
FileAction::Close(index) => {
if state.close_file(index) {
iced::exit()
} else {
Task::none()
}
}
FileAction::Open => Task::perform(io::open_file(), Message::FileOpened),
FileAction::Save => {
let (current_path, content) = state.active_file_data();
let path = current_path.cloned();
Task::perform(io::save_file(path, content), Message::FileSaved)
}
FileAction::SaveAs => {
let (_, content) = state.active_file_data();
Task::perform(io::save_file(None, content), Message::FileSaved)
}
}
2026-01-24 19:53:46 -06:00
}
pub fn opened_file(state: &mut State, result: Result<(PathBuf, String), String>) -> Task<Message> {
2026-01-25 17:26:40 -06:00
match result {
Ok((path, content)) => {
state.open_file(path, content);
}
Err(_error) => {}
};
2026-01-25 17:26:40 -06:00
Task::none()
}
pub fn saved_file(state: &mut State, result: Result<PathBuf, String>) -> Task<Message> {
2026-01-25 17:26:40 -06:00
match result {
Ok(path) => {
state.set_active_file_path(path);
2026-02-21 05:05:19 -06:00
state.set_active_file_save_status(false);
2026-01-25 17:26:40 -06:00
}
Err(_error) => {}
};
2026-01-25 17:26:40 -06:00
Task::none()
}
2026-01-24 19:53:46 -06:00
pub fn view_action(state: &mut State, action: ViewAction) -> Task<Message> {
2026-01-25 17:26:40 -06:00
match action {
ViewAction::Increase => state.increase_font(),
ViewAction::Decrease => state.decrease_font(),
ViewAction::Reset => state.reset_font(),
ViewAction::TogglePreview => state.toggle_preview(),
}
2026-01-24 19:53:46 -06:00
2026-01-25 17:26:40 -06:00
Task::none()
2026-01-24 19:53:46 -06:00
}