Files
bDS2/lib/bds/ui/menu_bar.ex

41 lines
1.2 KiB
Elixir

defmodule BDS.UI.MenuBar do
@moduledoc false
alias BDS.UI.Workbench
def default_groups(opts \\ []) do
dev_mode? = Keyword.get(opts, :dev_mode?, false)
[
%{id: :app, items: [%{id: :about}, %{id: :settings}]},
%{id: :file, items: [%{id: :new_post}, %{id: :new_page}, %{id: :close_tab}]},
%{id: :edit, items: [%{id: :undo}, %{id: :redo}]},
%{id: :view, items: view_items(dev_mode?)},
%{id: :window, items: [%{id: :minimize}, %{id: :zoom}]},
%{id: :help, items: [%{id: :documentation}, %{id: :api_documentation}]}
]
end
def execute(state, :toggle_sidebar), do: Workbench.toggle_sidebar(state)
def execute(state, :toggle_panel), do: Workbench.toggle_panel(state)
def execute(state, :toggle_assistant_sidebar), do: Workbench.toggle_assistant_sidebar(state)
def execute(state, :close_tab) do
case state.active_tab do
{type, id} -> Workbench.close_tab(state, type, id)
nil -> state
end
end
def execute(state, _command_id), do: state
defp view_items(dev_mode?) do
base = [
%{id: :toggle_sidebar},
%{id: :toggle_panel},
%{id: :toggle_assistant_sidebar}
]
if dev_mode?, do: base ++ [%{id: :toggle_dev_tools}], else: base
end
end