-- -- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT -- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT -- EEEE GGGG GGGG TTTT -- EEEE GGGG TTTT -- EEEEEEE GGGG GGGGGGG TTTT -- EEEEEEE GGGG GGGGGGG TTTT -- EEEE GGGG GGGG TTTT -- EEEE GGGG GGGG TTTT -- EEEEEEEEEE GGGGGGGGGG TTTT -- EEEEEEEEEE GGGGGG TTTT -- -- by Egalware s.r.l. -- Window project software by Egalware s.r.l. 2023/05/02 require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- Imposto direttorio per librerie local sBaseDir = EgtGetSourceDir() EgtOutLog("BaseDir=" .. sBaseDir) EgtAddToPackagePath( sBaseDir .. '?.lua') EgtAddToPackagePath( sBaseDir .. 'WinLib\\' .. '?.lua') _G.package.loaded.WinConst = nil require( 'WinConst') _G.package.loaded.WinCreate = nil local WinCreate = require( 'WinCreate') _G.package.loaded.WinCalculate = nil local WinCalculate = require( 'WinCalculate') _G.package.loaded.WinManageProject = nil local WinManageProject = require( 'WinManageProject') -- WDG -- funzioni ---------------------------------------------------------------------------------- local function GetVariableList( sName) local List = {} local nIndex = 1 while WDG[sName .. nIndex] do table.insert(List, WDG['JOINT' .. nIndex]) nIndex = nIndex + 1 end return List end ---------------------------------------------------------------------------------- local function CleanVariableList( sName) local nIndex = 1 while WDG[sName .. nIndex] do WDG[sName .. nIndex] = nil nIndex = nIndex + 1 end end ---------------------------------------------------------------------------------- local function SetProfilePath() _G.sProfilePath = WDG.PROFILEPATH end _G.SetProfilePath = SetProfilePath ---------------------------------------------------------------------------------- local function WinCreate_ImportProfile() _G.sProfile = WDG.PROFILE if _G.sProfilePath then WinCreate.ImportProfile( _G.sProfilePath .. '\\' .. WDG.PROFILE .. '.nge') end end _G.WinCreate_ImportProfile = WinCreate_ImportProfile ---------------------------------------------------------------------------------- local function FindThresholds( nGrpId) local tThresholds = {} local tHash = {} -- scorro tutti i profili del telaio local nCurrId = EgtGetFirstInGroup( nGrpId) while nCurrId do -- verifico se di tipo bottom local nBottomType = EgtGetInfo( nCurrId, WIN_BOTTOM, 'i') or WIN_THRESHOLD_TYPES.NULL if nBottomType ~= WIN_THRESHOLD_TYPES.NULL then -- recupero il nome local vNames = EgtSplitString( EgtGetName( nCurrId), '_') local sName = vNames[#vNames] if not tHash[sName] then table.insert( tThresholds, { nType = nBottomType, sName = sName}) tHash[sName] = 1 end end nCurrId = EgtGetNext( nCurrId) end return tThresholds end local function GetProfileThresholdsList() local tThresholds = {} if _G.sProfile == WDG.PROFILE then -- se profilo corrente local nProfileGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_PROFILE) local nFrameGrp = EgtGetFirstNameInGroup( nProfileGrp, WIN_FRAME) tThresholds = FindThresholds( nFrameGrp) else -- importo temporaneamente il profilo local nLastId = EgtGetLastInGroup( GDB_ID.ROOT) local bOk = EgtInsertFile( _G.sProfilePath .. '\\' .. WDG.PROFILE .. '.nge') local nCurrId = EgtGetNext( nLastId or GDB_ID.NULL) or EgtGetFirstInGroup( GDB_ID.ROOT) while nCurrId do if EgtGetName( nCurrId) == WIN_FRAME then tThresholds = FindThresholds( nCurrId) end -- passo al successivo e cancello il corrente local nOldId = nCurrId nCurrId = EgtGetNext( nCurrId) EgtErase( nOldId) end end WDG.THRESHOLDSLIST = tThresholds end _G.GetProfileThresholdsList = GetProfileThresholdsList ---------------------------------------------------------------------------------- local function WinCreate_CreateFrame() local JointList = GetVariableList( 'JOINT') WDG.AREAID = WinCreate.CreateFrame( WDG.FRAMETYPE, JointList, WDG.WIDTH, WDG.HEIGHT, WDG.HEIGHT2) CleanVariableList('JOINT') end _G.WinCreate_CreateFrame = WinCreate_CreateFrame ---------------------------------------------------------------------------------- local function WinCreate_AddSash() local JointList = GetVariableList( 'JOINT') WDG.AREAID = WinCreate.AddSash( WDG.AREAID, {WDG.JOINTBL, WDG.JOINTBR, WDG.JOINTTR, WDG.JOINTTL, WDG.JOINTBL}, WDG.SASHTYPE, WDG.OPENINGTYPE) CleanVariableList( 'JOINT') end _G.WinCreate_AddSash = WinCreate_AddSash ---------------------------------------------------------------------------------- local function WinCreate_AddHardware() WinCreate.AddHardware( WDG.AREAID, WDG.FAVOURITE, WDG.HANDLE) end _G.WinCreate_AddHardware = WinCreate_AddHardware ---------------------------------------------------------------------------------- local function WinCreate_AddFill() WDG.AREAID = WinCreate.AddFill( WDG.AREAID, WDG.FILLTYPE) end _G.WinCreate_AddFill = WinCreate_AddFill ---------------------------------------------------------------------------------- local function WinCreate_AddBottomRail() WinCreate.AddBottomRail( WDG.AREAID, WDG.NBR) end _G.WinCreate_AddBottomRail = WinCreate_AddBottomRail ---------------------------------------------------------------------------------- local function WinCreate_AddThreshold() WinCreate.AddThreshold( WDG.AREAID, WDG.THRESHOLDPROFILE) end _G.WinCreate_AddThreshold = WinCreate_AddThreshold ---------------------------------------------------------------------------------- local function WinCreate_AddSplits() local AreaIndex = 1 while WDG['AREAID' .. AreaIndex] do WDG['AREAID' .. AreaIndex] = nil AreaIndex = AreaIndex + 1 end local PositionList = {} local PositionIndex = 1 while WDG['POSITION' .. PositionIndex] do table.insert( PositionList, WDG['POSITION' .. PositionIndex]) PositionIndex = PositionIndex + 1 end local AreaList = WinCreate.AddSplits(WDG.AREAID, WDG.SPLITORIENTATION, WDG.MEASURETYPE, PositionList, WDG.PROPORTION, WDG.SPLITTYPE) for AreaIndex = 1, #AreaList do WDG['AREAID' .. AreaIndex] = AreaList[ AreaIndex] end PositionIndex = 1 while WDG['POSITION' .. PositionIndex] do WDG['POSITION' .. PositionIndex] = nil PositionIndex = PositionIndex + 1 end end _G.WinCreate_AddSplits = WinCreate_AddSplits ---------------------------------------------------------------------------------- local function WinCalculate_SetCalcSolid() WinCalculate.SetCalcSolid( WDG.VALUE) end _G.WinCalculate_SetCalcSolid = WinCalculate_SetCalcSolid ---------------------------------------------------------------------------------- local function WinCalculate_SetSimplifiedSolid() WinCalculate.SetSimplifiedSolid( WDG.VALUE) end _G.WinCalculate_SetSimplifiedSolid = WinCalculate_SetSimplifiedSolid ---------------------------------------------------------------------------------- local function WinCalculate_CreatePartFromArea() WinCalculate.CreatePartFromArea( WDG.FRAMEID) end _G.WinCalculate_CreatePartFromArea = WinCalculate_CreatePartFromArea ---------------------------------------------------------------------------------- local function WinCalculate_AddHardware() WinCalculate.AddHardware( WDG.FRAMEID) end _G.WinCalculate_AddHardware = WinCalculate_AddHardware ---------------------------------------------------------------------------------- local function WinCreate_GetHardwareOptionPath() WDG.HWDOPTPATH = WinCalculate.AddHardwareForSash( WDG.AREAID, true) end _G.WinCreate_GetHardwareOptionPath = WinCreate_GetHardwareOptionPath ---------------------------------------------------------------------------------- local function WinCalculate_AddAccessories() WinCalculate.AddAccessories( WDG.FRAMEID, WDG.DRAW) end _G.WinCalculate_AddAccessories = WinCalculate_AddAccessories ---------------------------------------------------------------------------------- local function WinGetImage() -- sistemo la vista EgtSetView( SCE_VD.TOP, false) EgtZoom( SCE_ZM.ALL, false) -- salvo immagine EgtGetImage( SCE_SM.SH, EgtStdColor('WHITE'), EgtStdColor('WHITE'), 1920, 1080, WDG.FILE) end _G.WinGetImage = WinGetImage ---------------------------------------------------------------------------------- local function WinSetAuxGrpStatus() -- recupero il gruppo aux della ferramenta e accessori e assegno stato local nAuxGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, WIN_AUX) or GDB_ID.NULL EgtSetStatus( nAuxGrp, EgtIf( WDG.AUXSTATUS, GDB_ST.ON, GDB_ST.OFF)) end _G.WinSetAuxGrpStatus = WinSetAuxGrpStatus