From b15dfe953d81263a7fd63780dcd621345226fdac Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 12 Feb 2016 18:40:13 +0200 Subject: [PATCH] Remove toolbox concept and implement all toolbox state as flags. --- src/uxbox/data/workspace.cljs | 17 ++--------- src/uxbox/ui/workspace/canvas/ruler.cljs | 2 +- src/uxbox/ui/workspace/colorpalette.cljs | 4 +-- src/uxbox/ui/workspace/grid.cljs | 2 +- src/uxbox/ui/workspace/header.cljs | 29 ++++++++++++------- src/uxbox/ui/workspace/pagesmngr.cljs | 2 +- src/uxbox/ui/workspace/recent_colors.cljs | 2 +- src/uxbox/ui/workspace/shortcuts.cljs | 10 +++---- src/uxbox/ui/workspace/sidebar.cljs | 18 ++++-------- src/uxbox/ui/workspace/sidebar/drawtools.cljs | 2 +- src/uxbox/ui/workspace/sidebar/icons.cljs | 2 +- src/uxbox/ui/workspace/sidebar/layers.cljs | 2 +- 12 files changed, 40 insertions(+), 52 deletions(-) diff --git a/src/uxbox/data/workspace.cljs b/src/uxbox/data/workspace.cljs index ab88c29230..e089a91c04 100644 --- a/src/uxbox/data/workspace.cljs +++ b/src/uxbox/data/workspace.cljs @@ -64,14 +64,13 @@ rs/UpdateEvent (-apply-update [_ state] (let [s {:project projectid - :toolboxes #{:layers} - :flags #{} + :flags #{:layers} :drawing nil :selected #{} :page pageid}] (assoc state :workspace s))))) -(defn toggle-tool +(defn toggle-flag "Toggle the enabled flag of the specified tool." [key] (reify @@ -82,18 +81,6 @@ (assoc-in state [:workspace :flags] (disj flags key)) (assoc-in state [:workspace :flags] (conj flags key))))))) -(defn toggle-toolbox - "Toggle the visibility flag of the specified toolbox." - [toolname] - (reify - rs/UpdateEvent - (-apply-update [_ state] - (let [toolboxes (get-in state [:workspace :toolboxes])] - (assoc-in state [:workspace :toolboxes] - (if (contains? toolboxes toolname) - (disj toolboxes toolname) - (conj toolboxes toolname))))))) - (defn select-for-drawing "Mark a shape selected for drawing in the canvas." [shape] diff --git a/src/uxbox/ui/workspace/canvas/ruler.cljs b/src/uxbox/ui/workspace/canvas/ruler.cljs index 2356bebf40..26194d6e3f 100644 --- a/src/uxbox/ui/workspace/canvas/ruler.cljs +++ b/src/uxbox/ui/workspace/canvas/ruler.cljs @@ -142,7 +142,7 @@ (defn- ruler-render [own] (let [flags (rum/react wb/flags-l)] - (when (contains? flags :workspace/ruler) + (when (contains? flags :ruler) (overlay)))) (def ^:static ruler diff --git a/src/uxbox/ui/workspace/colorpalette.cljs b/src/uxbox/ui/workspace/colorpalette.cljs index 480d6817ad..ba48e710ac 100644 --- a/src/uxbox/ui/workspace/colorpalette.cljs +++ b/src/uxbox/ui/workspace/colorpalette.cljs @@ -52,8 +52,8 @@ (get collections-by-id collid) (first collections)) select-collection #(select-collection local %) - close #(rs/emit! (dw/toggle-tool :workspace/colorpalette))] - (when (contains? flags :workspace/colorpalette) + close #(rs/emit! (dw/toggle-flag :colorpalette))] + (when (contains? flags :colorpalette) (html [:div.color-palette [:div.color-palette-actions diff --git a/src/uxbox/ui/workspace/grid.cljs b/src/uxbox/ui/workspace/grid.cljs index 913bb6ec30..1a395d97e8 100644 --- a/src/uxbox/ui/workspace/grid.cljs +++ b/src/uxbox/ui/workspace/grid.cljs @@ -57,7 +57,7 @@ step-size (/ 10 zoom) flags (rum/react wb/flags-l) page (rum/react wb/page-l) - enabled? (contains? flags :workspace/grid) + enabled? (contains? flags :grid) vertical-ticks (range (- 0 wb/document-start-y) (- (:width page) wb/document-start-y) step-size) diff --git a/src/uxbox/ui/workspace/header.cljs b/src/uxbox/ui/workspace/header.cljs index ce27cf7c88..13e9e98a6e 100644 --- a/src/uxbox/ui/workspace/header.cljs +++ b/src/uxbox/ui/workspace/header.cljs @@ -25,24 +25,31 @@ [own] (let [page (rum/react wb/page-l) flags (rum/react wb/flags-l) - toggle #(rs/emit! (dw/toggle-tool %))] + toggle #(rs/emit! (dw/toggle-flag %))] (html [:header#workspace-bar.workspace-bar [:div.main-icon (nav/link (r/route-for :dashboard/projects) i/logo-icon)] [:div.project-tree-btn - {:on-click (partial toggle :workspace/pagesmngr)} + {:on-click (partial toggle :pagesmngr)} i/project-tree [:span (:name page)]] [:div.workspace-options [:ul.options-btn - [:li.tooltip.tooltip-bottom {:alt "Shapes (Ctrl + Shift + S)"} + [:li.tooltip.tooltip-bottom + {:alt "Shapes (Ctrl + Shift + F)" + :class (when (contains? flags :drawtools) "current") + :on-click (partial toggle :drawtools)} i/shapes] - [:li.tooltip.tooltip-bottom {:alt "Elements (Ctrl + Shift + E)"} - i/puzzle] - [:li.tooltip.tooltip-bottom {:alt "Icons (Ctrl + Shift + I)"} + [:li.tooltip.tooltip-bottom + {:alt "Icons (Ctrl + Shift + I)" + :class (when (contains? flags :icons) "current") + :on-click (partial toggle :icons)} i/icon-set] - [:li.tooltip.tooltip-bottom {:alt "Layers (Ctrl + Shift + L)"} + [:li.tooltip.tooltip-bottom + {:alt "Elements (Ctrl + Shift + L)" + :class (when (contains? flags :layers) "current") + :on-click (partial toggle :layers)} i/layers]] [:ul.options-btn [:li.tooltip.tooltip-bottom {:alt "Undo (Ctrl + Z)"} @@ -63,13 +70,13 @@ [:ul.options-btn [:li.tooltip.tooltip-bottom {:alt "Ruler (Ctrl + R)" - :class (when (contains? flags :workspace/ruler) "selected") - :on-click (partial toggle :workspace/ruler)} + :class (when (contains? flags :ruler) "selected") + :on-click (partial toggle :ruler)} i/ruler] [:li.tooltip.tooltip-bottom {:alt "Grid (Ctrl + G)" - :class (when (contains? flags :workspace/grid) "selected") - :on-click (partial toggle :workspace/grid)} + :class (when (contains? flags :grid) "selected") + :on-click (partial toggle :grid)} i/grid] [:li.tooltip.tooltip-bottom {:alt "Align (Ctrl + A)"} diff --git a/src/uxbox/ui/workspace/pagesmngr.cljs b/src/uxbox/ui/workspace/pagesmngr.cljs index d2ad4f829f..4e0e859c8c 100644 --- a/src/uxbox/ui/workspace/pagesmngr.cljs +++ b/src/uxbox/ui/workspace/pagesmngr.cljs @@ -119,7 +119,7 @@ project (rum/react wb/project-l)] (html [:div#project-bar.project-bar - (when-not (contains? flags :workspace/pagesmngr) + (when-not (contains? flags :pagesmngr) {:class "toggle"}) (if (:edit @local) (page-form local) diff --git a/src/uxbox/ui/workspace/recent_colors.cljs b/src/uxbox/ui/workspace/recent_colors.cljs index 909b6a925e..55cf0bda34 100644 --- a/src/uxbox/ui/workspace/recent_colors.cljs +++ b/src/uxbox/ui/workspace/recent_colors.cljs @@ -16,7 +16,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (def ^:private ^:static toggle-colorpalette - #(rs/emit! (dw/toggle-tool :workspace/colorpalette))) + #(rs/emit! (dw/toggle-flag :colorpalette))) (defn- count-color [state shape prop] diff --git a/src/uxbox/ui/workspace/shortcuts.cljs b/src/uxbox/ui/workspace/shortcuts.cljs index 2c4e9da98d..52d0c87c3b 100644 --- a/src/uxbox/ui/workspace/shortcuts.cljs +++ b/src/uxbox/ui/workspace/shortcuts.cljs @@ -14,11 +14,11 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defonce ^:static +shortcuts+ - {:ctrl+g #(rs/emit! (dw/toggle-tool :workspace/grid)) - :ctrl+shift+f #(rs/emit! (dw/toggle-toolbox :draw)) - :ctrl+shift+i #(rs/emit! (dw/toggle-toolbox :icons)) - :ctrl+shift+l #(rs/emit! (dw/toggle-toolbox :layers)) - :ctrl+r #(rs/emit! (dw/toggle-tool :workspace/ruler)) + {:ctrl+g #(rs/emit! (dw/toggle-flag :grid)) + :ctrl+shift+f #(rs/emit! (dw/toggle-flag :drawtools)) + :ctrl+shift+i #(rs/emit! (dw/toggle-flag :icons)) + :ctrl+shift+l #(rs/emit! (dw/toggle-flag :layers)) + :ctrl+r #(rs/emit! (dw/toggle-flag :ruler)) :esc #(rs/emit! (dw/deselect-all)) :backspace #(rs/emit! (dw/delete-selected)) :delete #(rs/emit! (dw/delete-selected)) diff --git a/src/uxbox/ui/workspace/sidebar.cljs b/src/uxbox/ui/workspace/sidebar.cljs index c1536fbe4c..329ffd6aaa 100644 --- a/src/uxbox/ui/workspace/sidebar.cljs +++ b/src/uxbox/ui/workspace/sidebar.cljs @@ -17,16 +17,14 @@ (defn right-sidebar-render [own] - (let [toolboxes (rum/react wb/toolboxes-l)] + (let [flags (rum/react wb/flags-l)] (html [:aside#settings-bar.settings-bar [:div.settings-bar-inside - (when (contains? toolboxes :draw) + (when (contains? flags :drawtools) (draw-toolbox)) - (when (contains? toolboxes :icons) - (icons-toolbox)) - (when (contains? toolboxes :layers) - (layers-toolbox))]]))) + (when (contains? flags :icons) + (icons-toolbox))]]))) (def right-sidebar (mx/component @@ -40,15 +38,11 @@ (defn left-sidebar-render [own] - (let [toolboxes (rum/react wb/toolboxes-l)] + (let [flags (rum/react wb/flags-l)] (html [:aside#settings-bar.settings-bar.settings-bar-left [:div.settings-bar-inside - (when (contains? toolboxes :draw) - (draw-toolbox)) - (when (contains? toolboxes :icons) - (icons-toolbox)) - (when (contains? toolboxes :layers) + (when (contains? flags :layers) (layers-toolbox))]]))) (def left-sidebar diff --git a/src/uxbox/ui/workspace/sidebar/drawtools.cljs b/src/uxbox/ui/workspace/sidebar/drawtools.cljs index c4f15ff450..d02b8b0a63 100644 --- a/src/uxbox/ui/workspace/sidebar/drawtools.cljs +++ b/src/uxbox/ui/workspace/sidebar/drawtools.cljs @@ -67,7 +67,7 @@ [open-toolboxes] (let [workspace (rum/react wb/workspace-l) drawing (rum/react drawing-shape) - close #(rs/emit! (dw/toggle-toolbox :draw)) + close #(rs/emit! (dw/toggle-flag :drawtools)) tools (->> (into [] +draw-tools+) (sort-by (comp :priority second)))] (html diff --git a/src/uxbox/ui/workspace/sidebar/icons.cljs b/src/uxbox/ui/workspace/sidebar/icons.cljs index 6450b7491a..8f54c96bfc 100644 --- a/src/uxbox/ui/workspace/sidebar/icons.cljs +++ b/src/uxbox/ui/workspace/sidebar/icons.cljs @@ -59,7 +59,7 @@ drawing (rum/react drawing-shape) collid (:collid @local) icons (get-in library/+icon-collections-by-id+ [collid :icons]) - on-close #(rs/emit! (dw/toggle-toolbox :icons)) + on-close #(rs/emit! (dw/toggle-flag :icons)) on-select #(select-icon %) on-change #(change-icon-coll local %)] (html diff --git a/src/uxbox/ui/workspace/sidebar/layers.cljs b/src/uxbox/ui/workspace/sidebar/layers.cljs index e75b93b8b8..ce565a77e8 100644 --- a/src/uxbox/ui/workspace/sidebar/layers.cljs +++ b/src/uxbox/ui/workspace/sidebar/layers.cljs @@ -283,7 +283,7 @@ selected (:selected workspace) shapes-by-id (rum/react wb/shapes-by-id-l) page (rum/react (focus-page (:page workspace))) - close #(rs/emit! (dw/toggle-toolbox :layers)) + close #(rs/emit! (dw/toggle-flag :layers)) ;; copy #(rs/emit! (dw/copy-selected)) group #(rs/emit! (dw/group-selected)) delete #(rs/emit! (dw/delete-selected))