-- Copyright 2011-16 Paul Kulchenko, ZeroBrane LLC
|
-- authors: Lomtik Software (J. Winwood & John Labenski)
|
-- Luxinia Dev (Eike Decker & Christoph Kubisch)
|
---------------------------------------------------------
|
|
local ide = ide
|
local frame = ide.frame
|
local menuBar = frame.menuBar
|
local uimgr = frame.uimgr
|
|
local viewMenu = ide:MakeMenu {
|
{ ID_VIEWFILETREE, TR("Project/&FileTree Window")..KSC(ID_VIEWFILETREE), TR("View the project/filetree window"), wx.wxITEM_CHECK },
|
{ ID_VIEWOUTPUT, TR("&Output/Console Window")..KSC(ID_VIEWOUTPUT), TR("View the output/console window"), wx.wxITEM_CHECK },
|
{ ID_VIEWWATCHWINDOW, TR("&Watch Window")..KSC(ID_VIEWWATCHWINDOW), TR("View the watch window"), wx.wxITEM_CHECK },
|
{ ID_VIEWCALLSTACK, TR("&Stack Window")..KSC(ID_VIEWCALLSTACK), TR("View the stack window"), wx.wxITEM_CHECK },
|
{ ID_VIEWOUTLINE, TR("Outline Window")..KSC(ID_VIEWOUTLINE), TR("View the outline window"), wx.wxITEM_CHECK },
|
{ ID_VIEWMARKERS, TR("Markers Window")..KSC(ID_VIEWMARKERS), TR("View the markers window"), wx.wxITEM_CHECK },
|
{ },
|
{ ID_VIEWTOOLBAR, TR("&Tool Bar")..KSC(ID_VIEWTOOLBAR), TR("Show/Hide the toolbar"), wx.wxITEM_CHECK },
|
{ ID_VIEWSTATUSBAR, TR("&Status Bar")..KSC(ID_VIEWSTATUSBAR), TR("Show/Hide the status bar"), wx.wxITEM_CHECK },
|
{ },
|
{ ID_VIEWDEFAULTLAYOUT, TR("&Default Layout")..KSC(ID_VIEWDEFAULTLAYOUT), TR("Reset to default layout") },
|
{ ID_VIEWFULLSCREEN, TR("Full &Screen")..KSC(ID_VIEWFULLSCREEN), TR("Switch to or from full screen mode") },
|
}
|
|
do -- Add zoom submenu
|
local zoomMenu = ide:MakeMenu {
|
{ID_ZOOMRESET, TR("Zoom to 100%")..KSC(ID_ZOOMRESET)},
|
{ID_ZOOMIN, TR("Zoom In")..KSC(ID_ZOOMIN)},
|
{ID_ZOOMOUT, TR("Zoom Out")..KSC(ID_ZOOMOUT)},
|
}
|
|
frame:Connect(ID_ZOOMRESET, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function()local editor = ide:GetEditorWithFocus()
|
if editor then editor:SetZoom(0) end end)
|
frame:Connect(ID_ZOOMIN, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function() local editor = ide:GetEditorWithFocus()
|
if editor then editor:SetZoom(editor:GetZoom()+1) end end)
|
frame:Connect(ID_ZOOMOUT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function() local editor = ide:GetEditorWithFocus()
|
if editor then editor:SetZoom(editor:GetZoom()-1) end end)
|
|
-- only enable if there is an editor
|
local iseditor = function (event) event:Enable(ide:GetEditorWithFocus() ~= nil) end
|
for _, id in ipairs({ID_ZOOMRESET, ID_ZOOMIN, ID_ZOOMOUT}) do
|
frame:Connect(id, wx.wxEVT_UPDATE_UI, iseditor)
|
end
|
|
viewMenu:Append(ID_ZOOM, TR("Zoom"), zoomMenu)
|
end
|
|
menuBar:Append(viewMenu, TR("&View"))
|
|
local panels = {
|
[ID_VIEWOUTPUT] = "bottomnotebook",
|
[ID_VIEWFILETREE] = "projpanel",
|
[ID_VIEWWATCHWINDOW] = "watchpanel",
|
[ID_VIEWCALLSTACK] = "stackpanel",
|
[ID_VIEWOUTLINE] = "outlinepanel",
|
[ID_VIEWMARKERS] = "markerspanel",
|
[ID_VIEWTOOLBAR] = "toolbar",
|
}
|
|
local function togglePanel(event)
|
local panel = panels[event:GetId()]
|
local pane = uimgr:GetPane(panel)
|
local shown = not pane:IsShown()
|
if not shown then pane:BestSize(pane.window:GetSize()) end
|
pane:Show(shown)
|
uimgr:Update()
|
|
return shown
|
end
|
|
local function checkPanel(event)
|
local pane = uimgr:GetPane(panels[event:GetId()])
|
event:Enable(pane:IsOk()) -- disable if doesn't exist
|
menuBar:Check(event:GetId(), pane:IsOk() and pane:IsShown())
|
end
|
|
frame:Connect(ID_VIEWDEFAULTLAYOUT, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function (event)
|
uimgr:LoadPerspective(uimgr.defaultPerspective, true)
|
end)
|
|
frame:Connect(ID_VIEWMINIMIZE, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function (event) ide.frame:Iconize(true) end)
|
|
frame:Connect(ID_VIEWFULLSCREEN, wx.wxEVT_COMMAND_MENU_SELECTED, function ()
|
ide:ShowFullScreen(not frame:IsFullScreen())
|
end)
|
frame:Connect(ID_VIEWFULLSCREEN, wx.wxEVT_UPDATE_UI,
|
function (event) event:Enable(ide:GetEditor() ~= nil) end)
|
|
frame:Connect(ID_VIEWOUTPUT, wx.wxEVT_COMMAND_MENU_SELECTED, togglePanel)
|
frame:Connect(ID_VIEWFILETREE, wx.wxEVT_COMMAND_MENU_SELECTED, togglePanel)
|
frame:Connect(ID_VIEWTOOLBAR, wx.wxEVT_COMMAND_MENU_SELECTED, togglePanel)
|
frame:Connect(ID_VIEWOUTLINE, wx.wxEVT_COMMAND_MENU_SELECTED, togglePanel)
|
frame:Connect(ID_VIEWMARKERS, wx.wxEVT_COMMAND_MENU_SELECTED, togglePanel)
|
frame:Connect(ID_VIEWWATCHWINDOW, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function (event) if togglePanel(event) then ide:GetDebugger():RefreshPanels() end end)
|
frame:Connect(ID_VIEWCALLSTACK, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function (event) if togglePanel(event) then ide:GetDebugger():RefreshPanels() end end)
|
|
frame:Connect(ID_VIEWSTATUSBAR, wx.wxEVT_COMMAND_MENU_SELECTED,
|
function (event)
|
frame:GetStatusBar():Show(menuBar:IsChecked(event:GetId()))
|
uimgr:Update()
|
end)
|
frame:Connect(ID_VIEWSTATUSBAR, wx.wxEVT_UPDATE_UI,
|
function (event) menuBar:Check(event:GetId(), frame:GetStatusBar():IsShown()) end)
|
|
for id in pairs(panels) do frame:Connect(id, wx.wxEVT_UPDATE_UI, checkPanel) end
|