feat: first take at UI app
This commit is contained in:
41
lib/bds/ui/menu_bar.ex
Normal file
41
lib/bds/ui/menu_bar.ex
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
Reference in New Issue
Block a user