0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-13 16:21:57 -05:00

Remove toolbox concept and implement all toolbox state as flags.

This commit is contained in:
Andrey Antukh 2016-02-12 18:40:13 +02:00
parent 5b04ef5d98
commit b15dfe953d
12 changed files with 40 additions and 52 deletions

View file

@ -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]

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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)"}

View file

@ -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)

View file

@ -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]

View file

@ -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))

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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))