            (-> model
                (update :signal-events concat [signal-event])
                (update :next-signal-id inc))
+
+           [:toggle-signal id]
+           (let [all-actions-enabled? (->> (:action-events model)
+                                           (filter #(= (:signal-id %) id))
+                                           (every? :enabled?))]
+             (-update-action-events* model #(= (:signal-id %) id)
+                                     assoc :enabled? (not all-actions-enabled?)))
 
            [:toggle-action id]
            (-update-action-event model id update :enabled? not)

                 (when-not (nil? s)
                   (control model [:component s] dispatch)))))

           [:on-toggle-action id]
           (do
             (dispatch [:toggle-action id])

      (for [[signal-id signal] (reverse (:signal-events model))]
        ^{:key signal-id}
        [:div {:title "Signal"}
         [:div {:style    {:cursor "pointer"}
                :on-click #(dispatch [:on-toggle-signal signal-id])
                :title    "Click to enable/disable all actions dispatched from this signal"}
          "→ "
          (if (coll? signal)
            [:span [:strong (pr-str (first signal))] " " (clojure.string/join " " (rest signal))]
            [:strong (pr-str signal)])]

         (for [{:keys [id enabled? action]} (filter #(= (:signal-id %) signal-id)
                                                    (:action-events model))]
