41 lines
1.2 KiB
Elixir
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 |