update libcosmic

This commit is contained in:
Vukašin Vojinović 2024-12-02 23:36:27 +01:00 committed by Jeremy Soller
parent 9ae988db67
commit 86bcadb9e7
3 changed files with 716 additions and 368 deletions

969
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@ use cosmic::widget::menu::action::MenuAction;
use cosmic::widget::menu::key_bind::KeyBind; use cosmic::widget::menu::key_bind::KeyBind;
use cosmic::widget::segmented_button::Entity; use cosmic::widget::segmented_button::Entity;
use cosmic::{ use cosmic::{
app::{message, Core, Settings, Task}, app::{context_drawer, message, Core, Settings, Task},
cosmic_config::{self, CosmicConfigEntry}, cosmic_config::{self, CosmicConfigEntry},
cosmic_theme, executor, cosmic_theme, executor,
font::Font, font::Font,
@ -406,18 +406,6 @@ pub enum ContextPage {
Settings, Settings,
} }
impl ContextPage {
fn title(&self) -> String {
match self {
Self::About => String::new(),
Self::DocumentStatistics => fl!("document-statistics"),
Self::GitManagement => fl!("git-management"),
Self::ProjectSearch => fl!("project-search"),
Self::Settings => fl!("settings"),
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)] #[derive(Clone, Debug, Eq, PartialEq)]
enum DialogPage { enum DialogPage {
PromptSaveClose(segmented_button::Entity), PromptSaveClose(segmented_button::Entity),
@ -1512,7 +1500,8 @@ impl Application for App {
.on_press(Message::TabCloseForce(*entity)); .on_press(Message::TabCloseForce(*entity));
let cancel_button = let cancel_button =
widget::button::text(fl!("cancel")).on_press(Message::DialogCancel); widget::button::text(fl!("cancel")).on_press(Message::DialogCancel);
let dialog = widget::dialog(fl!("prompt-save-changes-title")) let dialog = widget::dialog()
.title(fl!("prompt-save-changes-title"))
.body(fl!("prompt-unsaved-changes")) .body(fl!("prompt-unsaved-changes"))
.icon(icon::from_name("dialog-warning-symbolic").size(64)) .icon(icon::from_name("dialog-warning-symbolic").size(64))
.primary_action(save_button) .primary_action(save_button)
@ -1554,7 +1543,8 @@ impl Application for App {
widget::button::destructive(fl!("discard")).on_press(Message::QuitForce); widget::button::destructive(fl!("discard")).on_press(Message::QuitForce);
let cancel_button = let cancel_button =
widget::button::text(fl!("cancel")).on_press(Message::DialogCancel); widget::button::text(fl!("cancel")).on_press(Message::DialogCancel);
let dialog = widget::dialog(fl!("prompt-save-changes-title")) let dialog = widget::dialog()
.title(fl!("prompt-save-changes-title"))
.body(fl!("prompt-unsaved-changes")) .body(fl!("prompt-unsaved-changes"))
.icon(icon::from_name("dialog-warning-symbolic").size(64)) .icon(icon::from_name("dialog-warning-symbolic").size(64))
.control(column) .control(column)
@ -2496,7 +2486,6 @@ impl Application for App {
self.context_page = context_page; self.context_page = context_page;
self.core.window.show_context = true; self.core.window.show_context = true;
} }
self.set_context_title(context_page.title());
// Execute commands for specific pages // Execute commands for specific pages
if self.core.window.show_context && self.context_page == ContextPage::GitManagement if self.core.window.show_context && self.context_page == ContextPage::GitManagement
@ -2607,17 +2596,36 @@ impl Application for App {
Task::none() Task::none()
} }
fn context_drawer(&self) -> Option<Element<Message>> { fn context_drawer(&self) -> Option<context_drawer::ContextDrawer<Message>> {
if !self.core.window.show_context { if !self.core.window.show_context {
return None; return None;
} }
Some(match self.context_page { Some(match self.context_page {
ContextPage::About => self.about(), ContextPage::About => context_drawer::context_drawer(
ContextPage::DocumentStatistics => self.document_statistics(), self.about(),
ContextPage::GitManagement => self.git_management(), Message::ToggleContextPage(ContextPage::About),
ContextPage::ProjectSearch => self.project_search(), ),
ContextPage::Settings => self.settings(), ContextPage::DocumentStatistics => context_drawer::context_drawer(
self.document_statistics(),
Message::ToggleContextPage(ContextPage::DocumentStatistics),
)
.title(fl!("document-statistics")),
ContextPage::GitManagement => context_drawer::context_drawer(
self.git_management(),
Message::ToggleContextPage(ContextPage::GitManagement),
)
.title(fl!("git-management")),
ContextPage::ProjectSearch => context_drawer::context_drawer(
self.project_search(),
Message::ToggleContextPage(ContextPage::ProjectSearch),
)
.title(fl!("project-search")),
ContextPage::Settings => context_drawer::context_drawer(
self.settings(),
Message::ToggleContextPage(ContextPage::Settings),
)
.title(fl!("settings")),
}) })
} }

View file

@ -76,6 +76,7 @@ pub fn menu_bar<'a>(
let menu_tab_width = |tab_width: u16| { let menu_tab_width = |tab_width: u16| {
MenuItem::CheckBox( MenuItem::CheckBox(
fl!("tab-width", tab_width = tab_width), fl!("tab-width", tab_width = tab_width),
None,
config.tab_width == tab_width, config.tab_width == tab_width,
Action::TabWidth(tab_width), Action::TabWidth(tab_width),
) )
@ -95,6 +96,7 @@ pub fn menu_bar<'a>(
for (i, path) in config_state.recent_files.iter().enumerate() { for (i, path) in config_state.recent_files.iter().enumerate() {
recent_files.push(MenuItem::Button( recent_files.push(MenuItem::Button(
format_path(path), format_path(path),
None,
Action::OpenRecentFile(i), Action::OpenRecentFile(i),
)); ));
} }
@ -103,6 +105,7 @@ pub fn menu_bar<'a>(
for (i, path) in config_state.recent_projects.iter().enumerate() { for (i, path) in config_state.recent_projects.iter().enumerate() {
recent_projects.push(MenuItem::Button( recent_projects.push(MenuItem::Button(
format_path(path), format_path(path),
None,
Action::OpenRecentProject(i), Action::OpenRecentProject(i),
)); ));
} }
@ -111,6 +114,7 @@ pub fn menu_bar<'a>(
for (project_i, (name, _path)) in projects.iter().enumerate() { for (project_i, (name, _path)) in projects.iter().enumerate() {
close_projects.push(MenuItem::Button( close_projects.push(MenuItem::Button(
name.clone(), name.clone(),
None,
Action::CloseProject(project_i), Action::CloseProject(project_i),
)); ));
} }
@ -121,32 +125,37 @@ pub fn menu_bar<'a>(
menu_items( menu_items(
key_binds, key_binds,
vec![ vec![
MenuItem::Button(fl!("new-file"), Action::NewFile), MenuItem::Button(fl!("new-file"), None, Action::NewFile),
MenuItem::Button(fl!("new-window"), Action::NewWindow), MenuItem::Button(fl!("new-window"), None, Action::NewWindow),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("open-file"), Action::OpenFileDialog), MenuItem::Button(fl!("open-file"), None, Action::OpenFileDialog),
MenuItem::Folder(fl!("open-recent-file"), recent_files), MenuItem::Folder(fl!("open-recent-file"), recent_files),
MenuItem::Button(fl!("close-file"), Action::CloseFile), MenuItem::Button(fl!("close-file"), None, Action::CloseFile),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("menu-open-project"), Action::OpenProjectDialog), MenuItem::Button(fl!("menu-open-project"), None, Action::OpenProjectDialog),
MenuItem::Folder(fl!("open-recent-project"), recent_projects), MenuItem::Folder(fl!("open-recent-project"), recent_projects),
MenuItem::Folder(fl!("close-project"), close_projects), MenuItem::Folder(fl!("close-project"), close_projects),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("save"), Action::Save), MenuItem::Button(fl!("save"), None, Action::Save),
MenuItem::Button(fl!("save-as"), Action::SaveAsDialog), MenuItem::Button(fl!("save-as"), None, Action::SaveAsDialog),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("revert-all-changes"), Action::Todo), MenuItem::Button(fl!("revert-all-changes"), None, Action::Todo),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button( MenuItem::Button(
fl!("menu-document-statistics"), fl!("menu-document-statistics"),
None,
Action::ToggleDocumentStatistics, Action::ToggleDocumentStatistics,
), ),
//TODO MenuItem::Button(fl!("document-type"), Action::Todo), //TODO MenuItem::Button(fl!("document-type"), Action::Todo),
//TODO MenuItem::Button(fl!("encoding"), Action::Todo), //TODO MenuItem::Button(fl!("encoding"), Action::Todo),
MenuItem::Button(fl!("menu-git-management"), Action::ToggleGitManagement), MenuItem::Button(
fl!("menu-git-management"),
None,
Action::ToggleGitManagement,
),
//TODO MenuItem::Button(fl!("print"), Action::Todo), //TODO MenuItem::Button(fl!("print"), Action::Todo),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("quit"), Action::Quit), MenuItem::Button(fl!("quit"), None, Action::Quit),
], ],
), ),
), ),
@ -155,19 +164,19 @@ pub fn menu_bar<'a>(
menu_items( menu_items(
key_binds, key_binds,
vec![ vec![
MenuItem::Button(fl!("undo"), Action::Undo), MenuItem::Button(fl!("undo"), None, Action::Undo),
MenuItem::Button(fl!("redo"), Action::Redo), MenuItem::Button(fl!("redo"), None, Action::Redo),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("cut"), Action::Cut), MenuItem::Button(fl!("cut"), None, Action::Cut),
MenuItem::Button(fl!("copy"), Action::Copy), MenuItem::Button(fl!("copy"), None, Action::Copy),
MenuItem::Button(fl!("paste"), Action::Paste), MenuItem::Button(fl!("paste"), None, Action::Paste),
MenuItem::Button(fl!("select-all"), Action::SelectAll), MenuItem::Button(fl!("select-all"), None, Action::SelectAll),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("find"), Action::Find), MenuItem::Button(fl!("find"), None, Action::Find),
MenuItem::Button(fl!("replace"), Action::FindAndReplace), MenuItem::Button(fl!("replace"), None, Action::FindAndReplace),
MenuItem::Button(fl!("find-in-project"), Action::ToggleProjectSearch), MenuItem::Button(fl!("find-in-project"), None, Action::ToggleProjectSearch),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("spell-check"), Action::Todo), MenuItem::Button(fl!("spell-check"), None, Action::Todo),
], ],
), ),
), ),
@ -181,6 +190,7 @@ pub fn menu_bar<'a>(
vec![ vec![
MenuItem::CheckBox( MenuItem::CheckBox(
fl!("automatic-indentation"), fl!("automatic-indentation"),
None,
config.auto_indent, config.auto_indent,
Action::ToggleAutoIndent, Action::ToggleAutoIndent,
), ),
@ -199,24 +209,31 @@ pub fn menu_bar<'a>(
], ],
), ),
MenuItem::Divider, MenuItem::Divider,
MenuItem::CheckBox(fl!("word-wrap"), config.word_wrap, Action::ToggleWordWrap), MenuItem::CheckBox(
fl!("word-wrap"),
None,
config.word_wrap,
Action::ToggleWordWrap,
),
MenuItem::CheckBox( MenuItem::CheckBox(
fl!("show-line-numbers"), fl!("show-line-numbers"),
None,
config.line_numbers, config.line_numbers,
Action::ToggleLineNumbers, Action::ToggleLineNumbers,
), ),
MenuItem::CheckBox( MenuItem::CheckBox(
fl!("highlight-current-line"), fl!("highlight-current-line"),
None,
config.highlight_current_line, config.highlight_current_line,
Action::ToggleHighlightCurrentLine, Action::ToggleHighlightCurrentLine,
), ),
//TODO: MenuItem::CheckBox(fl!("syntax-highlighting"), Action::Todo), //TODO: MenuItem::CheckBox(fl!("syntax-highlighting"), Action::Todo),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("menu-settings"), Action::ToggleSettingsPage), MenuItem::Button(fl!("menu-settings"), None, Action::ToggleSettingsPage),
//TODO MenuItem::Divider, //TODO MenuItem::Divider,
//TODO MenuItem::Button(fl!("menu-keyboard-shortcuts"), Action::Todo), //TODO MenuItem::Button(fl!("menu-keyboard-shortcuts"), Action::Todo),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("menu-about"), Action::About), MenuItem::Button(fl!("menu-about"), None, Action::About),
], ],
), ),
), ),