Implement word wrap
This commit is contained in:
parent
8fb9d823d7
commit
5ce34b93c4
3 changed files with 38 additions and 8 deletions
|
|
@ -5,6 +5,7 @@ use crate::Message;
|
||||||
|
|
||||||
// Makes key binding definitions simpler
|
// Makes key binding definitions simpler
|
||||||
const CTRL: Modifiers = Modifiers::CTRL;
|
const CTRL: Modifiers = Modifiers::CTRL;
|
||||||
|
const ALT: Modifiers = Modifiers::ALT;
|
||||||
const SHIFT: Modifiers = Modifiers::SHIFT;
|
const SHIFT: Modifiers = Modifiers::SHIFT;
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
||||||
|
|
@ -38,6 +39,7 @@ impl KeyBind {
|
||||||
bind!(CTRL, O, OpenFileDialog);
|
bind!(CTRL, O, OpenFileDialog);
|
||||||
bind!(CTRL, S, Save);
|
bind!(CTRL, S, Save);
|
||||||
bind!(CTRL, Q, Quit);
|
bind!(CTRL, Q, Quit);
|
||||||
|
bind!(ALT, Z, ToggleWrap);
|
||||||
|
|
||||||
keybinds
|
keybinds
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ pub enum Message {
|
||||||
TabActivate(segmented_button::Entity),
|
TabActivate(segmented_button::Entity),
|
||||||
TabClose(segmented_button::Entity),
|
TabClose(segmented_button::Entity),
|
||||||
Todo,
|
Todo,
|
||||||
Wrap(bool),
|
ToggleWrap,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl App {
|
impl App {
|
||||||
|
|
@ -539,8 +539,8 @@ impl cosmic::Application for App {
|
||||||
Message::Todo => {
|
Message::Todo => {
|
||||||
log::warn!("TODO");
|
log::warn!("TODO");
|
||||||
}
|
}
|
||||||
Message::Wrap(wrap) => {
|
Message::ToggleWrap => {
|
||||||
self.config.wrap = wrap;
|
self.config.wrap = !self.config.wrap;
|
||||||
//TODO: provide iterator over data
|
//TODO: provide iterator over data
|
||||||
let entities: Vec<_> = self.tab_model.iter().collect();
|
let entities: Vec<_> = self.tab_model.iter().collect();
|
||||||
for entity in entities {
|
for entity in entities {
|
||||||
|
|
|
||||||
38
src/menu.rs
38
src/menu.rs
|
|
@ -39,14 +39,19 @@ pub fn menu_bar<'a>(config: &Config) -> Element<'a, Message> {
|
||||||
let menu_folder =
|
let menu_folder =
|
||||||
|label| menu_button!(widget::text(label), horizontal_space(Length::Fill), ">");
|
|label| menu_button!(widget::text(label), horizontal_space(Length::Fill), ">");
|
||||||
|
|
||||||
let menu_item = |label, message| {
|
let find_key = |message: &Message| -> String {
|
||||||
let mut key = String::new();
|
let mut key = String::new();
|
||||||
for (config_key_bind, config_message) in config.keybinds.iter() {
|
for (config_key_bind, config_message) in config.keybinds.iter() {
|
||||||
if config_message == &message {
|
if config_message == message {
|
||||||
key = config_key_bind.to_string();
|
key = config_key_bind.to_string();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
key
|
||||||
|
};
|
||||||
|
|
||||||
|
let menu_item = |label, message| {
|
||||||
|
let key = find_key(&message);
|
||||||
MenuTree::new(
|
MenuTree::new(
|
||||||
menu_button!(
|
menu_button!(
|
||||||
widget::text(label),
|
widget::text(label),
|
||||||
|
|
@ -57,6 +62,29 @@ pub fn menu_bar<'a>(config: &Config) -> Element<'a, Message> {
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//TODO: support key lookup?
|
||||||
|
let menu_checkbox = |label, value, message| {
|
||||||
|
let check: Element<_> = if value {
|
||||||
|
widget::icon::from_name("object-select-symbolic")
|
||||||
|
.size(16)
|
||||||
|
.icon()
|
||||||
|
.into()
|
||||||
|
} else {
|
||||||
|
widget::Space::with_width(Length::Fixed(16.0)).into()
|
||||||
|
};
|
||||||
|
let key = find_key(&message);
|
||||||
|
MenuTree::new(
|
||||||
|
menu_button!(
|
||||||
|
check,
|
||||||
|
widget::Space::with_width(Length::Fixed(8.0)),
|
||||||
|
widget::text(label),
|
||||||
|
horizontal_space(Length::Fill),
|
||||||
|
widget::text(key)
|
||||||
|
)
|
||||||
|
.on_press(message),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
let menu_key = |label, key, message| {
|
let menu_key = |label, key, message| {
|
||||||
MenuTree::new(
|
MenuTree::new(
|
||||||
menu_button!(widget::text(label), horizontal_space(Length::Fill), key)
|
menu_button!(widget::text(label), horizontal_space(Length::Fill), key)
|
||||||
|
|
@ -124,9 +152,9 @@ pub fn menu_bar<'a>(config: &Config) -> Element<'a, Message> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
MenuTree::new(horizontal_rule(1)),
|
MenuTree::new(horizontal_rule(1)),
|
||||||
menu_item(fl!("word-wrap"), Message::Todo),
|
menu_checkbox(fl!("word-wrap"), config.wrap, Message::ToggleWrap),
|
||||||
menu_item(fl!("show-line-numbers"), Message::Todo),
|
menu_checkbox(fl!("show-line-numbers"), false, Message::Todo),
|
||||||
menu_item(fl!("highlight-current-line"), Message::Todo),
|
menu_checkbox(fl!("highlight-current-line"), false, Message::Todo),
|
||||||
menu_item(fl!("syntax-highlighting"), Message::Todo),
|
menu_item(fl!("syntax-highlighting"), Message::Todo),
|
||||||
MenuTree::new(horizontal_rule(1)),
|
MenuTree::new(horizontal_rule(1)),
|
||||||
menu_key(fl!("settings"), "Ctrl + ,", Message::Todo),
|
menu_key(fl!("settings"), "Ctrl + ,", Message::Todo),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue