Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions crates/rnote-ui/data/ui/shortcuts.ui
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,27 @@
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Import File</property>
<property name="accelerator">&lt;ctrl&gt;&lt;shift&gt;i</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Bold</property>
<property name="accelerator">&lt;ctrl&gt;b</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Italic</property>
<property name="accelerator">&lt;ctrl&gt;i</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes">Underline</property>
<property name="accelerator">&lt;ctrl&gt;u</property>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes">Drawing</property>
Expand Down
68 changes: 65 additions & 3 deletions crates/rnote-ui/src/appwindow/actions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ use rnote_compose::penevent::ShortcutKey;
use rnote_engine::engine::StrokeContent;
use rnote_engine::ext::GraphenePointExt;
use rnote_engine::strokes::resize::{ImageSizeOption, Resize};
use rnote_engine::strokes::textstroke::TextAttribute;
use rnote_engine::{Camera, Engine};
use std::path::PathBuf;
use std::time::Instant;
Expand Down Expand Up @@ -107,6 +108,12 @@ impl RnAppWindow {
self.add_action(&action_export_doc_pages);
let action_export_selection = gio::SimpleAction::new("export-selection", None);
self.add_action(&action_export_selection);
let action_text_bold = gio::SimpleAction::new("text-bold", None);
self.add_action(&action_text_bold);
let action_text_italic = gio::SimpleAction::new("text-italic", None);
self.add_action(&action_text_italic);
let action_text_underline = gio::SimpleAction::new("text-underline", None);
self.add_action(&action_text_underline);
let action_clipboard_copy = gio::SimpleAction::new("clipboard-copy", None);
self.add_action(&action_clipboard_copy);
let action_clipboard_cut = gio::SimpleAction::new("clipboard-cut", None);
Expand Down Expand Up @@ -463,7 +470,56 @@ impl RnAppWindow {
appwindow.handle_widget_flags(widget_flags, &canvas);
}
));
// Text Bold
action_text_bold.connect_activate(clone!(
#[weak(rename_to=appwindow)]
self,
move |_, _| {
let Some(canvas) = appwindow.active_tab_canvas() else {
return;
};
let widget_flags =
canvas
.engine_mut()
.text_selection_toggle_attribute(TextAttribute::FontWeight(
piet::FontWeight::BOLD.to_raw(),
));
appwindow.handle_widget_flags(widget_flags, &canvas)
}
));

// Text Italic
action_text_italic.connect_activate(clone!(
#[weak(rename_to=appwindow)]
self,
move |_, _| {
let Some(canvas) = appwindow.active_tab_canvas() else {
return;
};
let widget_flags =
canvas
.engine_mut()
.text_selection_toggle_attribute(TextAttribute::Style(
rnote_engine::strokes::textstroke::FontStyle::Italic,
));
appwindow.handle_widget_flags(widget_flags, &canvas);
}
));

// Text Underline
action_text_underline.connect_activate(clone!(
#[weak(rename_to=appwindow)]
self,
move |_, _| {
let Some(canvas) = appwindow.active_tab_canvas() else {
return;
};
let widget_flags = canvas
.engine_mut()
.text_selection_toggle_attribute(TextAttribute::Underline(true));
appwindow.handle_widget_flags(widget_flags, &canvas);
}
));
// Clear doc
action_clear_doc.connect_activate(clone!(
#[weak(rename_to=appwindow)]
Expand Down Expand Up @@ -1006,7 +1062,7 @@ impl RnAppWindow {
app.set_accels_for_action("win.save-doc-as", &["<Ctrl><Shift>s"]);
app.set_accels_for_action("win.new-tab", &["<Ctrl>t"]);
app.set_accels_for_action("win.snap-positions", &["<Ctrl><Shift>p"]);
app.set_accels_for_action("win.clear-doc", &["<Ctrl>l"]);
app.set_accels_for_action("win.clear-doc", &["<Ctrl><Shift>l"]);
app.set_accels_for_action("win.print-doc", &["<Ctrl>p"]);
app.set_accels_for_action("win.add-page-to-doc", &["<Ctrl><Shift>a"]);
app.set_accels_for_action("win.remove-page-from-doc", &["<Ctrl><Shift>r"]);
Expand All @@ -1016,19 +1072,25 @@ impl RnAppWindow {
);
app.set_accels_for_action("win.zoom-reset", &["<Ctrl>0", "<Ctrl>KP_0"]);
app.set_accels_for_action("win.zoom-out", &["<Ctrl>minus", "<Ctrl>KP_Subtract"]);
app.set_accels_for_action("win.import-file", &["<Ctrl>i"]);
app.set_accels_for_action("win.import-file", &["<Ctrl><Shift>i"]);
app.set_accels_for_action("win.undo", &["<Ctrl>z"]);
app.set_accels_for_action("win.redo", &["<Ctrl><Shift>z"]);
app.set_accels_for_action("win.clipboard-copy", &["<Ctrl>c"]);
app.set_accels_for_action("win.clipboard-cut", &["<Ctrl>x"]);
app.set_accels_for_action("win.clipboard-paste", &["<Ctrl>v"]);
app.set_accels_for_action("win.text-bold", &["<Ctrl>b"]);
app.set_accels_for_action("win.text-italic", &["<Ctrl>i"]);
app.set_accels_for_action("win.text-underline", &["<Ctrl>u"]);
app.set_accels_for_action("win.text-align-start", &["<Ctrl>l"]);
app.set_accels_for_action("win.text-align-center", &["<Ctrl>e"]);
app.set_accels_for_action("win.text-align-end", &["<Ctrl>r"]);
app.set_accels_for_action("win.text-align-fill", &["<Ctrl>j"]);
app.set_accels_for_action("win.pen-style::brush", &["<Ctrl>1", "<Ctrl>KP_1"]);
app.set_accels_for_action("win.pen-style::shaper", &["<Ctrl>2", "<Ctrl>KP_2"]);
app.set_accels_for_action("win.pen-style::typewriter", &["<Ctrl>3", "<Ctrl>KP_3"]);
app.set_accels_for_action("win.pen-style::eraser", &["<Ctrl>4", "<Ctrl>KP_4"]);
app.set_accels_for_action("win.pen-style::selector", &["<Ctrl>5", "<Ctrl>KP_5"]);
app.set_accels_for_action("win.pen-style::tools", &["<Ctrl>6", "<Ctrl>KP_6"]);

// shortcuts for devel build
if config::PROFILE.to_lowercase().as_str() == "devel" {
app.set_accels_for_action("win.visual-debug", &["<Ctrl><Shift>v"]);
Expand Down