Menu

Application skeleton

Here is a basic app skeleton with menus, actions, toolbars etc.

-- VCLua Demo Application
-- ***************************************
-- VCLua 0.4.3 application
-- Lua version 5.2.x required
-- Copyright (C) 2014 Hi-Project Ltd.
-- ***************************************

_VCLUA_NAME = "VCLua Demo Application"
_VCLUA_VERSION = "1.0"
_VCLUA_APPID = "demo"

package.cpath=package.cpath..";lib/?.dll;lib/?.so"

require "vcl"

mainForm = VCL.Form("mainform")
mainForm._  = { icon="lua.ico", 
                position="podesktopcenter", 
                height=600, 
                width=800, 
                onclosequery="AppCloseQuery",
                caption=_VCLUA_NAME.." v".._VCLUA_VERSION}

mainForm.windowstate = "wsMaximized"

------------------------------------------------------------------------------------------------
-- MainMenu functions 
------------------------------------------------------------------------------------------------
function AppNew()
    EnableEvents()
end

function AppClose()
    DisableEvents()
end

function AppExit()
    mainForm:Close()
end

function AppCloseQuery(Sender)
    local ret = false
    if VCL.MessageDlg("Are you sure?","mtConfirmation",{"mbYes","mbCancel"})=="mrYes" then
        ret = true
    end
    return ret
end

function AppAbout()
    VCL.ShowMessage("About!")
end

function AppHelp()
    VCL.ShowMessage("Help!")
end
----------------------------------------------------------------------------------------------
-- Images
-- images should be in ./images folder
--------------------------------------------------------------------------------------------------
local mainImages = VCL.ImageList()
local images = {
-- help
    "images/about.png", 
    "images/help.png", 
-- file 
    "images/new.png", 
    "images/close.png",
    "images/exit.png",
}
mainImages:LoadFromTable(images)
--------------------------------------------------------------------------------------------------
-- Actions
--------------------------------------------------------------------------------------------------
local mainActions = VCL.ActionList()
mainActions.Images = mainImages
mainActions:LoadFromTable({
    -- file
    {name="fileNewAction",   onexecute="AppNew",     caption="New",     shortcut="Ctrl+N",  imageIndex=2,   hint="New file", },
    {name="fileCloseAction", onexecute="AppClose",   caption="&Close", shortcut="Ctrl+W",   imageIndex=3,   hint="Close file", },
    {name="fileExitAction",  onexecute="AppExit",    caption="&Exit",   shortcut="Alt+F4",  imageIndex = 4, hint="Exit", },     
    -- help events
    {name="aboutAction",     onexecute="AppAbout", caption="About ".._VCLUA_NAME.."...", imageindex=0, },
    {name="helpAction",      onexecute="AppHelp",  caption="Help",  shortcut="F1",      imageindex=1, },    
})

function DisableEvents()
    mainActions:Get("fileCloseAction").enabled = false
end

function EnableEvents()
    mainActions:Get("fileCloseAction").enabled = true
end

DisableEvents() 

--------------------------------------------------------------------------------------------------
-- MainMenu
--------------------------------------------------------------------------------------------------
local mainMenu = VCL.MainMenu("mmmainmenu")
mainMenu.Images = mainImages
mainMenu.showhint=true
mainMenu:LoadFromTable({
    {name="mmfile", caption="&File",   
        submenu={
            {name="smnew",      action=mainActions:Get("fileNewAction")},       
            {name="smclose",    action=mainActions:Get("fileCloseAction")},
            {caption="-",},                 
            {name="smexit",     action=mainActions:Get("fileExitAction")},  
        }
    },  
    {name="mmhelp", caption="&Help", RightJustify=true, 
        submenu =  {
            {name="mhabout",    action=mainActions:Get("aboutAction")},
            {caption="-",},
            {name="mhhelp",     action=mainActions:Get("helpAction")},
        }
    }
})

--------------------------------------------------------------------------------------------------
-- ToolBar
--------------------------------------------------------------------------------------------------
local mainToolbar = VCL.ToolBar("maintoolbar")
mainToolbar._ = { showhint=true, borderwidth =0, edgeborders = "[ebLeft,ebTop,ebRight,ebBottom]", edgeinner = "esRaised", edgeouter = "esLowered", autosize = true, buttonwidth = 24, buttonheight = 24, align = alTop, flat = true }
mainToolbar.Images = mainImages
mainToolbar:LoadFromTable({
    {action=mainActions:Get("fileNewAction")},
    {style="tbsDivider"},   
    {action=mainActions:Get("fileCloseAction")},
    {style="tbsSeparator"},
})

--------------------------------------------------------------------------------------------------
-- StatusBar
--------------------------------------------------------------------------------------------------
local mainStatusBar = VCL.StatusBar()
mainStatusBar._ = {align="alBottom", height=100} 
for i=1,3 do mainStatusBar:Add(50+100*i/2,"") end

--------------------------------------------------------------------------------------------------
-- Main
--------------------------------------------------------------------------------------------------
mainForm:ShowModal()    
mainForm:Free()
Posted by Janos Bali 2014-04-07 Labels: application menu toolbar actions

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.