URI: 
       Added some functions for paste mode. - icy_draw - icy_draw is the successor to mystic draw. fork / mirror
  HTML git clone https://git.drkhsh.at/icy_draw.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit a4a60fc8169dbf39aa229e060b6e6102df0af14a
   DIR parent a97ca1027d0fc07277930f9a37377e8d0abba2e9
  HTML Author: Mike Krüger <mkrueger@posteo.de>
       Date:   Thu,  7 Sep 2023 00:06:59 +0200
       
       Added some functions for paste mode.
       
       Diffstat:
         M src/model/tools/paste_tool.rs       |      22 ++++++++++++++++++++--
         M src/ui/messages.rs                  |      26 ++++++++++++++++++++++++++
       
       2 files changed, 46 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/src/model/tools/paste_tool.rs b/src/model/tools/paste_tool.rs
       @@ -65,6 +65,7 @@ impl Tool for PasteTool {
                ui: &mut egui::Ui,
                editor: &AnsiEditor,
            ) -> Option<Message> {
       +        let mut result = None;
                if let Some(layer) = editor.buffer_view.lock().get_edit_state().get_cur_layer() {
                    self.closed = !layer.role.is_paste();
                }
       @@ -72,12 +73,29 @@ impl Tool for PasteTool {
                if self.closed {
                    return Some(Message::SelectTool(self.last_tool));
                }
       -        ui.label("Show fancy paste ui");
       +
       +        ui.vertical(|ui| {
       +            if ui.button("Stamp - S").clicked() || ui.input(|i| i.key_pressed(Key::S)) {
       +                result = Some(Message::StampLayerDown);
       +            }
       +            if ui.button("Rotate - R").clicked() {
       +                result = Some(Message::RotateLayer);
       +            }
       +            if ui.button("FlipX - X").clicked() || ui.input(|i| i.key_pressed(Key::X)) {
       +                result = Some(Message::FlipX);
       +            }
       +            if ui.button("FlipY - Y").clicked() || ui.input(|i| i.key_pressed(Key::Y)) {
       +                result = Some(Message::FlipY);
       +            }
       +            if ui.button("Transparent - T").clicked() || ui.input(|i| i.key_pressed(Key::T)) {
       +                result = Some(Message::MakeLayerTransparent);
       +            }
       +        });
        
                if ctx.input(|i| i.key_pressed(Key::Escape)) {
                    return Some(Message::RemoveFloatingLayer);
                }
       -        None
       +        result
            }
        
            fn handle_drag_begin(&mut self, editor: &mut AnsiEditor) -> Event {
   DIR diff --git a/src/ui/messages.rs b/src/ui/messages.rs
       @@ -96,6 +96,10 @@ pub enum Message {
            PickAttributeUnderCaret,
            SwitchToDefaultColor,
            ToggleColor,
       +
       +    StampLayerDown,
       +    RotateLayer,
       +    MakeLayerTransparent,
        }
        
        pub const CTRL_SHIFT: egui::Modifiers = egui::Modifiers {
       @@ -602,6 +606,28 @@ impl MainWindow {
                            to_message(lock.get_edit_state_mut().scroll_area_right())
                        });
                    }
       +
       +            Message::StampLayerDown => {
       +                self.run_editor_command(0, |_, editor, _| {
       +                    let mut lock = editor.buffer_view.lock();
       +                    to_message(lock.get_edit_state_mut().stamp_layer_down())
       +                });
       +            }
       +
       +            Message::RotateLayer => {
       +                self.run_editor_command(0, |_, editor, _| {
       +                    let mut lock = editor.buffer_view.lock();
       +                    to_message(lock.get_edit_state_mut().rotate_layer())
       +                });
       +            }
       +
       +            Message::MakeLayerTransparent => {
       +                self.run_editor_command(0, |_, editor, _| {
       +                    let mut lock = editor.buffer_view.lock();
       +                    to_message(lock.get_edit_state_mut().make_layer_transparent())
       +                });
       +            }
       +
                    Message::SetReferenceImage => {
                        let dialog = rfd::FileDialog::new();
                        let res = dialog.pick_file();