Draw tools shortcuts (#21)

* Add shortcuts for shapes

* Fix problem with draw or select shapes when a shape is selected
This commit is contained in:
Jesús Espino 2016-04-24 22:04:34 +02:00 committed by Andrey Antukh
parent 9e96bbce99
commit c7801a793c
5 changed files with 39 additions and 25 deletions

View file

@ -113,9 +113,9 @@
(reify (reify
rs/UpdateEvent rs/UpdateEvent
(-apply-update [_ state] (-apply-update [_ state]
(if shape (if (or (nil? shape) (= (get-in state [:workspace :drawing]) shape))
(assoc-in state [:workspace :drawing] shape) (update-in state [:workspace] dissoc :drawing)
(update-in state [:workspace] dissoc :drawing))))) (assoc-in state [:workspace :drawing] shape)))))
;; --- Activate Workspace Flag ;; --- Activate Workspace Flag

View file

@ -91,11 +91,12 @@
zoom (or (:zoom workspace) 1)] zoom (or (:zoom workspace) 1)]
(letfn [(on-mouse-down [event] (letfn [(on-mouse-down [event]
(dom/stop-propagation event) (dom/stop-propagation event)
(when-not (empty? (:selected workspace))
(rs/emit! (uds/deselect-all)))
(if-let [shape (:drawing workspace)] (if-let [shape (:drawing workspace)]
(uuc/acquire-action! "ui.shape.draw") (uuc/acquire-action! "ui.shape.draw")
(uuc/acquire-action! "ui.selrect"))) (do
(when-not (empty? (:selected workspace))
(rs/emit! (uds/deselect-all)))
(uuc/acquire-action! "ui.selrect"))))
(on-mouse-up [event] (on-mouse-up [event]
(dom/stop-propagation event) (dom/stop-propagation event)
(uuc/release-action! "ui.shape" (uuc/release-action! "ui.shape"

View file

@ -12,6 +12,7 @@
[uxbox.data.lightbox :as udl] [uxbox.data.lightbox :as udl]
[uxbox.data.workspace :as dw] [uxbox.data.workspace :as dw]
[uxbox.data.shapes :as uds] [uxbox.data.shapes :as uds]
[uxbox.ui.workspace.sidebar.drawtools :as wsd]
[uxbox.data.history :as udh]) [uxbox.data.history :as udh])
(:import goog.events.EventType (:import goog.events.EventType
goog.events.KeyCodes goog.events.KeyCodes
@ -33,6 +34,10 @@
:ctrl+c #(rs/emit! (dw/copy-to-clipboard)) :ctrl+c #(rs/emit! (dw/copy-to-clipboard))
:ctrl+v #(rs/emit! (dw/paste-from-clipboard)) :ctrl+v #(rs/emit! (dw/paste-from-clipboard))
:ctrl+z #(rs/emit! (udh/backwards-to-previous-version)) :ctrl+z #(rs/emit! (udh/backwards-to-previous-version))
:ctrl+b #(rs/emit! (dw/select-for-drawing wsd/+draw-tool-rect+))
:ctrl+e #(rs/emit! (dw/select-for-drawing wsd/+draw-tool-circle+))
:ctrl+l #(rs/emit! (dw/select-for-drawing wsd/+draw-tool-line+))
:ctrl+t #(rs/emit! (dw/select-for-drawing wsd/+draw-tool-text+))
:ctrl+shift+z #(rs/emit! (udh/forward-to-next-version)) :ctrl+shift+z #(rs/emit! (udh/forward-to-next-version))
:ctrl+shift+v #(udl/open! :clipboard) :ctrl+shift+v #(udl/open! :clipboard)
:esc #(rs/emit! (uds/deselect-all)) :esc #(rs/emit! (uds/deselect-all))

View file

@ -37,34 +37,46 @@
;; Draw Tools ;; Draw Tools
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:const +draw-tool-rect+
{:type :rect
:name "Rect"
:stroke "#000000"})
(def ^:const +draw-tool-circle+
{:type :circle
:name "Circle"})
(def ^:const +draw-tool-line+
{:type :line
:name "Line"
:stroke-type :solid
:stroke "#000000"})
(def ^:const +draw-tool-text+
{:type :text
:name "Text"
:content "Hello world"})
(def ^:const +draw-tools+ (def ^:const +draw-tools+
{:rect {:rect
{:icon i/box {:icon i/box
:help (tr "ds.help.rect") :help (tr "ds.help.rect")
:shape {:type :rect :shape +draw-tool-rect+
:name "Rect"
:stroke "#000000"}
:priority 1} :priority 1}
:circle :circle
{:icon i/circle {:icon i/circle
:help (tr "ds.help.circle") :help (tr "ds.help.circle")
:shape {:type :circle :shape +draw-tool-circle+
:name "Circle"}
:priority 2} :priority 2}
:line :line
{:icon i/line {:icon i/line
:help (tr "ds.help.line") :help (tr "ds.help.line")
:shape {:type :line :shape +draw-tool-line+
:name "Line"
:stroke-type :solid
:stroke "#000000"}
:priority 3} :priority 3}
:text :text
{:icon i/text {:icon i/text
:help (tr "ds.help.text") :help (tr "ds.help.text")
:shape {:type :text :shape +draw-tool-text+
:name "Text"
:content "Hello world"}
:priority 4}}) :priority 4}})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -72,10 +84,8 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- select-for-draw (defn- select-for-draw
[icon] [shape]
(if (= (:drawing @wb/workspace-l) icon) (rs/emit! (dw/select-for-drawing shape)))
(rs/emit! (dw/select-for-drawing nil))
(rs/emit! (dw/select-for-drawing icon))))
(defn draw-tools-render (defn draw-tools-render
[open-toolboxes] [open-toolboxes]

View file

@ -39,9 +39,7 @@
(defn- select-icon (defn- select-icon
[icon] [icon]
(if (= (:drawing @wb/workspace-l) icon) (rs/emit! (dw/select-for-drawing icon)))
(rs/emit! (dw/select-for-drawing nil))
(rs/emit! (dw/select-for-drawing icon))))
(defn- change-icon-coll (defn- change-icon-coll
[local event] [local event]