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:
parent
5b04ef5d98
commit
b15dfe953d
12 changed files with 40 additions and 52 deletions
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)"}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Add table
Reference in a new issue