To create fully-feature dialog user interfaces in JW Lua, use the FCCustomWindow or FCCustomLuaWindow classes. (FCCustomLuaWindow is a subclass of FCCustomWindow that adds Lua callback functionality.)
The dialogs are device independent and uses points as measurement (top-left as the origin). Dialog margins and Ok/Cancel button placement conform to the UI design guidelines for the platform the script runs on.
The following script adds all available types of controls to a dialog.
Windows output:
Mac output:
local str = finale.FCString() str.LuaString = "JW Lua Control Demo" local dialog = finale.FCCustomWindow() dialog:SetTitle(str) str.LuaString = "Text" -- Static text local static = dialog:CreateStatic(0, 0) static:SetText(str) -- Edit box dialog:CreateEdit(0, 16) -- Up/Down control dialog:CreateUpDown(70, 16) -- Push button local button = dialog:CreateButton(0, 50) button:SetText(str) -- List box local listbox = dialog:CreateListBox(0, 80) listbox:AddString(str) listbox:AddString(str) listbox:AddString(str) listbox:AddString(str) -- Popup local popup = dialog:CreatePopup(0, 260) popup:AddString(str) popup:AddString(str) popup:AddString(str) -- Slider local slider = dialog:CreateSlider(0, 290) slider:SetMinValue(1) slider:SetMaxValue(10) -- Checkbox local checkbox = dialog:CreateCheckbox(0, 330) checkbox:SetText(str) -- Vertical line dialog:CreateVerticalLine(170, 0, 340) -- Tree local tree = dialog:CreateTree(190, 0) local masternode = tree:AddNode(nil, true, str) tree:AddNode(masternode, false, str) tree:AddNode(masternode, false, str) tree:AddNode(masternode, false, str) -- Data list local datalist = dialog:CreateDataList(190, 190) datalist.UseCheckboxes = datalist:AddColumn(str, 90) datalist:AddColumn(str, 90) local row = datalist:CreateRow() row:GetItemAt(0).LuaString = "Data 1" row:GetItemAt(1).LuaString = "Data 2" -- Horizontal Line dialog:CreateHorizontalLine(0, 350, 390) -- Ok button dialog:CreateOkButton() -- Cancel button dialog:CreateCancelButton() -- Display dialog box: if dialog:ExecuteModal(nil) == 1 then -- Ok button was pressed end