🎉 Select all elements tool and shortcut

This commit is contained in:
Andrés Moya 2020-11-30 13:12:34 +01:00 committed by Andrey Antukh
parent 53297ec9d9
commit df95bd7010
4 changed files with 32 additions and 3 deletions

View file

@ -2422,6 +2422,14 @@
"es" : "Ocultar reglas" "es" : "Ocultar reglas"
} }
}, },
"workspace.header.menu.select-all" : {
"translations" : {
"en" : "Select all",
"fr" : "",
"ru" : "",
"es" : "Seleccionar todo"
}
},
"workspace.header.menu.show-assets" : { "workspace.header.menu.show-assets" : {
"used-in" : [ "src/app/main/ui/workspace/header.cljs:210" ], "used-in" : [ "src/app/main/ui/workspace/header.cljs:210" ],
"translations" : { "translations" : {

View file

@ -1596,6 +1596,7 @@
;; Selection ;; Selection
(def select-shape dws/select-shape) (def select-shape dws/select-shape)
(def select-all dws/select-all)
(def deselect-all dws/deselect-all) (def deselect-all dws/deselect-all)
(def select-shapes dwc/select-shapes) (def select-shapes dwc/select-shapes)
(def duplicate-selected dws/duplicate-selected) (def duplicate-selected dws/duplicate-selected)
@ -1630,7 +1631,7 @@
{"ctrl+i" #(st/emit! (toggle-layout-flags :assets)) {"ctrl+i" #(st/emit! (toggle-layout-flags :assets))
"ctrl+l" #(st/emit! (toggle-layout-flags :sitemap :layers)) "ctrl+l" #(st/emit! (toggle-layout-flags :sitemap :layers))
"ctrl+shift+r" #(st/emit! (toggle-layout-flags :rules)) "ctrl+shift+r" #(st/emit! (toggle-layout-flags :rules))
"ctrl+a" #(st/emit! (toggle-layout-flags :dynamic-alignment)) "ctrl+a" #(st/emit! (select-all))
"ctrl+p" #(st/emit! (toggle-layout-flags :colorpalette)) "ctrl+p" #(st/emit! (toggle-layout-flags :colorpalette))
"ctrl+'" #(st/emit! (toggle-layout-flags :display-grid)) "ctrl+'" #(st/emit! (toggle-layout-flags :display-grid))
"ctrl+shift+'" #(st/emit! (toggle-layout-flags :snap-grid)) "ctrl+shift+'" #(st/emit! (toggle-layout-flags :snap-grid))

View file

@ -118,6 +118,23 @@
objects (dwc/lookup-page-objects state page-id)] objects (dwc/lookup-page-objects state page-id)]
(rx/of (dwc/expand-all-parents ids objects)))))) (rx/of (dwc/expand-all-parents ids objects))))))
(defn select-all
[]
(ptk/reify ::select-all
ptk/WatchEvent
(watch [_ state stream]
(let [page-id (:current-page-id state)
objects (dwc/lookup-page-objects state page-id)
is-not-blocked (fn [shape-id] (not (get-in state [:workspace-data
:pages-index page-id
:objects shape-id
:blocked] false)))]
(rx/of (->> (cph/select-toplevel-shapes objects)
(map :id)
(filter is-not-blocked)
(into lks/empty-linked-set)
(select-shapes)))))))
(defn deselect-all (defn deselect-all
"Clear all possible state of drawing, edition "Clear all possible state of drawing, edition
or any similar action taken by the user. or any similar action taken by the user.

View file

@ -208,12 +208,15 @@
(tr "workspace.header.menu.show-assets"))] (tr "workspace.header.menu.show-assets"))]
[:span.shortcut "Ctrl+i"]] [:span.shortcut "Ctrl+i"]]
[:li {:on-click #(st/emit! (dw/select-all))}
[:span (tr "workspace.header.menu.select-all")]
[:span.shortcut "Ctrl+a"]]
[:li {:on-click #(st/emit! (dw/toggle-layout-flags :dynamic-alignment))} [:li {:on-click #(st/emit! (dw/toggle-layout-flags :dynamic-alignment))}
[:span [:span
(if (contains? layout :dynamic-alignment) (if (contains? layout :dynamic-alignment)
(tr "workspace.header.menu.disable-dynamic-alignment") (tr "workspace.header.menu.disable-dynamic-alignment")
(tr "workspace.header.menu.enable-dynamic-alignment"))] (tr "workspace.header.menu.enable-dynamic-alignment"))]]
[:span.shortcut "Ctrl+a"]]
(if (:is-shared file) (if (:is-shared file)
[:li {:on-click on-remove-shared} [:li {:on-click on-remove-shared}