; --------------------------------------------------------------------------------------------; Copyright (c) Fantaisie Software. All rights reserved.; Dual licensed under the GPL and Fantaisie Software licenses.; See LICENSE and LICENSE-FANTAISIE in the project root for license information.; --------------------------------------------------------------------------------------------Procedure DisableOptionGadgets()If Options_IsProjectModeUseMainFile = #False ; do disable any of these optionsElseUseMainFile = GetGadgetState(#GADGET_Option_UseMainFile)DisableGadget(#GADGET_Option_MainFile, 1-UseMainFile)DisableGadget(#GADGET_Option_SelectMainFile, 1-UseMainFile)EndIfFor Gadget = #GADGET_Option_UseCompiler To #GADGET_Option_ConstantLineDisableGadget(Gadget, UseMainFile)Next GadgetIf UseMainFile = 0CompilerIf Not #SpiderBasicUseIcon = GetGadgetState(#GADGET_Option_UseIcon)DisableGadget(#GADGET_Option_IconName, 1-UseIcon)DisableGadget(#GADGET_Option_SelectIcon, 1-UseIcon)CompilerEndIfDisableGadget(#GADGET_Option_SelectCompiler, 1-GetGadgetState(#GADGET_Option_UseCompiler))DisableGadget(#GADGET_Option_CompileCount, 1-GetGadgetState(#GADGET_Option_UseCompileCount))DisableGadget(#GADGET_Option_BuildCount, 1-GetGadgetState(#GADGET_Option_UseBuildCount))EndIfCompilerIf Not #SpiderBasicCustomDebugger = GetGadgetState(#GADGET_Option_SelectDebugger)DisableGadget(#GADGET_Option_DebuggerMode, 1-CustomDebugger)If (CustomDebugger And GetGadgetState(#GADGET_Option_DebuggerMode) = 2) Or (CustomDebugger = 0 And DebuggerMode = 3)DisableGadget(#GADGET_Option_SelectWarning, 1)DisableGadget(#GADGET_Option_WarningMode, 1)ElseDisableGadget(#GADGET_Option_SelectWarning, 0)DisableGadget(#GADGET_Option_WarningMode, 1-GetGadgetState(#GADGET_Option_SelectWarning))EndIfCompilerEndIf; disable / enable the resource optionsCompilerIf #CompileWindows And Not #SpiderBasicDisableGadget(#GADGET_Option_IncludeVersion, UseMainFile)UseVersion = GetGadgetState(#GADGET_Option_IncludeVersion)For i = 0 To 23DisableGadget(#GADGET_Option_VersionValue0+i, (1-UseVersion)|UseMainFile)Next iDisableGadget(#GADGET_Option_ResourceList, UseMainFile)DisableGadget(#GADGET_Option_ResourceAdd, UseMainFile)DisableGadget(#GADGET_Option_ResourceRemove, UseMainFile)DisableGadget(#GADGET_Option_ResourceClear, UseMainFile)DisableGadget(#GADGET_Option_ResourceFile, UseMainFile)DisableGadget(#GADGET_Option_ResourceSelectFile, UseMainFile)CompilerEndIf; always disable unsupported options on linux / macCompilerIf #CompileLinux And Not #SpiderBasic ; Icon is supported only on windowsDisableGadget(#GADGET_Option_UseIcon, 1)DisableGadget(#GADGET_Option_IconName, 1)DisableGadget(#GADGET_Option_SelectIcon, 1)DisableGadget(#GADGET_Option_DPIAware, 1)CompilerEndIfCompilerIf #CompileLinux | #CompileMac And Not #SpiderBasic ; this stuff is Windows onlyDisableGadget(#GADGET_Option_EnableXP, 1)DisableGadget(#GADGET_Option_EnableAdmin, 1)DisableGadget(#GADGET_Option_EnableUser, 1)DisableGadget(#GADGET_Option_DllProtection, 1)DisableGadget(#GADGET_Option_SharedUCRT, 1)CompilerEndIfCompilerIf Not #CompileLinux And Not #SpiderBasic ; this stuff is Linux onlyDisableGadget(#GADGET_Option_EnableWayland, 1)CompilerEndIfEndProcedure; get the list of enabled tools as it is stored in the structure/ide options; (in uppercase, spaces replaced by '_', separated by comma);Procedure.s CompilerWindow_EnabledToolsList()Result$ = ""For i = 0 To CountGadgetItems(#GADGET_Option_ToolsList)-1If GetGadgetItemState(#GADGET_Option_ToolsList, i) & #PB_ListIcon_CheckedResult$ + ReplaceString(UCase(Trim(GetGadgetItemText(#GADGET_Option_ToolsList, i, 0))), " ", "_") + ","EndIfNext iIf Len(Result$) > 0ProcedureReturn Left(Result,ドル Len(Result$)-1) ; cut last ","ElseProcedureReturn ""EndIfEndProcedureProcedure SetTargetOptions(*Target.CompileTarget)SetGadgetText(#GADGET_Option_MainFile, *Target\MainFile$)If Options_IsProjectModeSetGadgetText(#GADGET_Option_OutputFile, *Target\OutputFile$)ElseSetGadgetState(#GADGET_Option_UseMainFile, *Target\UseMainFile)EndIfSetGadgetState(#GADGET_Option_UseCompiler, *Target\CustomCompiler)If *Target\CustomCompiler = #FalseSetGadgetState(#GADGET_Option_SelectCompiler, 0) ; that's the default compilerElse; find a matching compiler*Compiler.Compiler = FindCompiler(*Target\CompilerVersion$)If *Compiler = 0MessageRequester(#ProductName,ドル Language("Compiler","CompilerNotFound")+":"+#NewLine+*Target\CompilerVersion,ドル #FLAG_Warning)SetGadgetState(#GADGET_Option_SelectCompiler, 0)ElseIf *Compiler = @DefaultCompilerSetGadgetState(#GADGET_Option_SelectCompiler, 0)Else; one of them must match, as FindCompiler() returned somethinglast = CountGadgetItems(#GADGET_Option_SelectCompiler)For index = 1 To lastIf GetGadgetItemData(#GADGET_Option_SelectCompiler, index) = *CompilerSetGadgetState(#GADGET_Option_SelectCompiler, index)BreakEndIfNext indexEndIfEndIfSetGadgetText(#GADGET_Option_SubSystem, *Target\SubSystem$)SetGadgetState(#GADGET_Option_Debugger , *Target\Debugger)SetGadgetState(#GADGET_Option_Optimizer, *Target\Optimizer)SetGadgetState(#GADGET_Option_DPIAware , *Target\DPIAware)CompilerIf #SpiderBasicSetGadgetText(#GADGET_Option_SelectWindowTheme, *Target\WindowTheme$)SetGadgetText(#GADGET_Option_SelectGadgetTheme, *Target\GadgetTheme$)SetGadgetText(#GADGET_Option_WebServerAddress, *Target\WebServerAddress$)CompilerElseSetGadgetText(#GADGET_Option_IconName, *Target\IconName$)SetGadgetState(#GADGET_Option_UseIcon , *Target\UseIcon)SetGadgetText(#GADGET_Option_CommandLine, *Target\CommandLine$)SetGadgetText(#GADGET_Option_Linker, *Target\LinkerOptions$)SetGadgetText(#GADGET_Option_CurrentDir, *Target\CurrentDirectory$)SetGadgetState(#GADGET_Option_ExecutableFormat, *Target\ExecutableFormat)SetGadgetState(#GADGET_Option_CPU , *Target\CPU)SetGadgetState(#GADGET_Option_Purifier , *Target\EnablePurifier)SetGadgetState(#GADGET_Option_EnableASM , *Target\EnableASM)SetGadgetState(#GADGET_Option_EnableThread , *Target\EnableThread)SetGadgetState(#GADGET_Option_EnableXP , *Target\EnableXP)SetGadgetState(#GADGET_Option_EnableWayland, *Target\EnableWayland)SetGadgetState(#GADGET_Option_EnableAdmin , *Target\EnableAdmin)SetGadgetState(#GADGET_Option_EnableUser , *Target\EnableUser)SetGadgetState(#GADGET_Option_DllProtection, *Target\DllProtection)SetGadgetState(#GADGET_Option_SharedUCRT , *Target\SharedUCRT)SetGadgetState(#GADGET_Option_EnableOnError, *Target\EnableOnError)SetGadgetState(#GADGET_Option_SelectDebugger, *Target\CustomDebugger)If *Target\DebuggerType > 0 And *Target\DebuggerType < 4SetGadgetState(#GADGET_Option_DebuggerMode, *Target\DebuggerType-1)ElseSetGadgetState(#GADGET_Option_DebuggerMode, 0)EndIfSetGadgetState(#GADGET_Option_SelectWarning, *Target\CustomWarning)If *Target\WarningMode >= 0 And *Target\WarningMode < 3SetGadgetState(#GADGET_Option_WarningMode, *Target\WarningMode)ElseSetGadgetState(#GADGET_Option_WarningMode, 1)EndIfSetGadgetState(#GADGET_Option_TemporaryExe, *Target\TemporaryExePlace)CompilerEndIfSetGadgetState(#GADGET_Option_UseCompileCount, *Target\UseCompileCount)SetGadgetState(#GADGET_Option_UseBuildCount, *Target\UseBuildCount)SetGadgetState(#GADGET_Option_UseCreateExe, *Target\UseCreateExe)SetGadgetText(#GADGET_Option_CompileCount, Str(*Target\CompileCount))SetGadgetText(#GADGET_Option_BuildCount, Str(*Target\BuildCount))ClearGadgetItems(#GADGET_Option_ConstantList)SetGadgetText(#GADGET_Option_ConstantLine, "")For i = 0 To *Target\NbConstants-1AddGadgetItem(#GADGET_Option_ConstantList, i, *Target\Constant$[i])If *Target\ConstantEnabled[i]SetGadgetItemState(#GADGET_Option_ConstantList, i, #PB_ListIcon_Checked)EndIfNext iClearGadgetItems(#GADGET_Option_ToolsList)ForEach ToolsList()If ToolsList()\SourceSpecificTool$ = ToolsList()\MenuItemName$+Chr(10)+Language("AddTools","Trigger"+Str(ToolsList()\Trigger))If ToolsList()\DeactivateToolTool$ + Chr(10) + Language("Misc", "Disabled")ElseTool$ + Chr(10) + Language("Misc", "Enabled")EndIfAddGadgetItem(#GADGET_Option_ToolsList, -1, Tool$); check if the tool is enabled; the list is in uppercase, no spaces (spaces inside names replaced by '_'); separated by comma;If FindString(","+*Target\EnabledTools$+",", ","+ReplaceString(UCase(Trim(ToolsList()\MenuItemName$)), " ", "_")+",", 1) <> 0SetGadgetItemState(#GADGET_Option_ToolsList, CountGadgetItems(#GADGET_Option_ToolsList)-1, #PB_ListIcon_Checked)EndIfEndIfNext ToolsList()CompilerIf #CompileWindows And Not #SpiderBasicFor i = 0 To 23If i >= 15 And i <= 17 And *Target\VersionField$[i] = "" ; comboboxesSetGadgetState(#GADGET_Option_VersionValue0+i, 0) ; set comboboxes to defaultElseSetGadgetText(#GADGET_Option_VersionValue0+i, *Target\VersionField$[i])EndIfNext iSetGadgetState(#GADGET_Option_IncludeVersion, *Target\VersionInfo)ClearGadgetItems(#GADGET_Option_ResourceList)SetGadgetText(#GADGET_Option_ResourceFile, "")For i = 0 To *Target\NbResourceFiles-1AddGadgetItem(#GADGET_Option_ResourceList, -1, *Target\ResourceFiles$[i])Next iCompilerEndIfDisableOptionGadgets()EndProcedure; returns #true if changes were made;Procedure TargetOptionsChanged(*Target.CompileTarget)Changed = 0If Options_IsProjectModeIf *Target\OutputFile$ <> GetGadgetText(#GADGET_Option_OutputFile): Changed = 1: EndIfElseIf *Target\UseMainFile <> GetGadgetState(#GADGET_Option_UseMainFile): Changed = 1: EndIfEndIfIf *Target\CustomCompiler <> GetGadgetState(#GADGET_Option_UseCompiler): Changed = 1: EndIfIf *Target\CustomCompiler And MatchCompilerVersion(*Target\CompilerVersion,ドル GetGadgetText(#GADGET_Option_SelectCompiler), #MATCH_Version|#MATCH_Beta|#MATCH_Processor) = 0Changed = 1EndIfIf *Target\Debugger <> GetGadgetState(#GADGET_Option_Debugger): Changed = 1: EndIfIf *Target\Optimizer <> GetGadgetState(#GADGET_Option_Optimizer): Changed = 1: EndIfIf *Target\DPIAware <> GetGadgetState(#GADGET_Option_DPIAware): Changed = 1: EndIfCompilerIf #SpiderBasicIf *Target\WindowTheme$ <> GetGadgetText(#GADGET_Option_SelectWindowTheme): Changed = 1: EndIfIf *Target\GadgetTheme$ <> GetGadgetText(#GADGET_Option_SelectGadgetTheme): Changed = 1: EndIfIf *Target\WebServerAddress$ <> GetGadgetText(#GADGET_Option_WebServerAddress): Changed = 1: EndIfCompilerElseIf *Target\EnableASM <> GetGadgetState(#GADGET_Option_EnableASM): Changed = 1: EndIfIf *Target\EnablePurifier <> GetGadgetState(#GADGET_Option_Purifier): Changed = 1: EndIfIf *Target\EnableThread <> GetGadgetState(#GADGET_Option_EnableThread): Changed = 1: EndIfIf *Target\EnableXP <> GetGadgetState(#GADGET_Option_EnableXP): Changed = 1: EndIfIf *Target\EnableWayland <> GetGadgetState(#GADGET_Option_EnableWayland): Changed = 1: EndIfIf *Target\EnableAdmin <> GetGadgetState(#GADGET_Option_EnableAdmin): Changed = 1: EndIfIf *Target\EnableUser <> GetGadgetState(#GADGET_Option_EnableUser): Changed = 1: EndIfIf *Target\DllProtection <> GetGadgetState(#GADGET_Option_DllProtection): Changed = 1: EndIfIf *Target\SharedUCRT <> GetGadgetState(#GADGET_Option_SharedUCRT): Changed = 1: EndIfIf *Target\EnableOnError <> GetGadgetState(#GADGET_Option_EnableOnError): Changed = 1: EndIfIf *Target\CPU <> GetGadgetState(#GADGET_Option_CPU): Changed = 1: EndIfIf *Target\ExecutableFormat <> GetGadgetState(#GADGET_Option_ExecutableFormat): Changed = 1: EndIfIf *Target\CommandLine$ <> GetGadgetText(#GADGET_Option_CommandLine): Changed = 1: EndIfIf *Target\LinkerOptions$ <> GetGadgetText(#GADGET_Option_Linker): Changed = 1: EndIfIf *Target\CurrentDirectory$ <> GetGadgetText(#GADGET_Option_CurrentDir): Changed = 1: EndIfIf *Target\CustomDebugger <> GetGadgetState(#GADGET_Option_SelectDebugger): Changed = 1: EndIfIf *Target\CustomWarning <> GetGadgetState(#GADGET_Option_SelectWarning): Changed = 1: EndIfIf *Target\DebuggerType-1 <> GetGadgetState(#GADGET_Option_DebuggerMode) And GetGadgetState(#GADGET_Option_SelectDebugger): Changed = 1: EndIfIf *Target\WarningMode <> GetGadgetState(#GADGET_Option_WarningMode) And GetGadgetState(#GADGET_Option_SelectWarning): Changed = 1: EndIfIf *Target\TemporaryExePlace <> GetGadgetState(#GADGET_Option_TemporaryExe): Changed = 1: EndIfIf *Target\UseIcon <> GetGadgetState(#GADGET_Option_UseIcon): Changed = 1: EndIfIf *Target\IconName$ <> GetGadgetText(#GADGET_Option_IconName): Changed = 1: EndIfCompilerEndIfIf *Target\SubSystem$ <> GetGadgetText(#GADGET_Option_SubSystem): Changed = 1: EndIfIf *Target\MainFile$ <> GetGadgetText(#GADGET_Option_MainFile): Changed = 1: EndIfIf *Target\CompileCount <> Val(GetGadgetText(#GADGET_Option_CompileCount)): Changed = 1: EndIfIf *Target\BuildCount <> Val(GetGadgetText(#GADGET_Option_BuildCount)): Changed = 1: EndIfIf *Target\UseCompileCount <> GetGadgetState(#GADGET_Option_UseCompileCount): Changed = 1: EndIfIf *Target\UseBuildCount <> GetGadgetState(#GADGET_Option_UseBuildCount): Changed = 1: EndIfIf *Target\UseCreateExe <> GetGadgetState(#GADGET_Option_UseCreateExe): Changed = 1: EndIfIf *Target\EnabledTools$ <> CompilerWindow_EnabledToolsList(): Changed = 1: EndIfCount = CountGadgetItems(#GADGET_Option_ConstantList)If *Target\NbConstants <> CountChanged = 1ElseFor i = 0 To Count-1If *Target\Constant$[i] <> GetGadgetItemText(#GADGET_Option_ConstantList, i, 0)Changed = 1BreakEndIfIf (GetGadgetItemState(#GADGET_Option_ConstantList, i) & #PB_ListIcon_Checked And *Target\ConstantEnabled[i] = 0) Or (GetGadgetItemState(#GADGET_Option_ConstantList, i) & #PB_ListIcon_Checked = 0 And *Target\ConstantEnabled[i])Changed = 1BreakEndIfNext iEndIfCompilerIf #CompileWindows And Not #SpiderBasicIf *Target\VersionInfo <> GetGadgetState(#GADGET_Option_IncludeVersion): Changed = 1: EndIfFor i = 0 To 14If *Target\VersionField$[i] <> GetGadgetText(#GADGET_Option_VersionValue0+i): Changed = 1: EndIfNext i; these fields are made empty when the defaults are set:For i = 15 To 17If *Target\VersionField$[i] <> "" Or GetGadgetState(#GADGET_Option_VersionValue0+i) <> 0If *Target\VersionField$[i] <> GetGadgetText(#GADGET_Option_VersionValue0+i): Changed = 1: EndIfEndIfNext iFor i = 18 To 23If *Target\VersionField$[i] <> GetGadgetText(#GADGET_Option_VersionValue0+i): Changed = 1: EndIfNext iIf *Target\NbResourceFiles <> CountGadgetItems(#GADGET_Option_ResourceList): Changed = 1: EndIfIf *Target\NbResourceFiles > 0For i = 0 To *Target\NbResourceFiles-1If *Target\ResourceFiles$[i] <> GetGadgetItemText(#GADGET_Option_ResourceList, i, 0)Changed = 1BreakEndIfNext iEndIfCompilerEndIfProcedureReturn ChangedEndProcedureProcedure GetTargetOptions(*Target.CompileTarget)If Options_IsProjectMode = 0*Target\UseMainFile = GetGadgetState(#GADGET_Option_UseMainFile)EndIf*Target\CustomCompiler = GetGadgetState(#GADGET_Option_UseCompiler)If *Target\CustomCompiler*Target\CompilerVersion$ = GetGadgetText(#GADGET_Option_SelectCompiler)EndIf*Target\Debugger = GetGadgetState(#GADGET_Option_Debugger)*Target\Optimizer = GetGadgetState(#GADGET_Option_Optimizer)*Target\DPIAware = GetGadgetState(#GADGET_Option_DPIAware)CompilerIf #SpiderBasic*Target\WebServerAddress$ = GetGadgetText(#GADGET_Option_WebServerAddress)*Target\WindowTheme$ = GetGadgetText(#GADGET_Option_SelectWindowTheme)*Target\GadgetTheme$ = GetGadgetText(#GADGET_Option_SelectGadgetTheme)CompilerElse*Target\EnableASM = GetGadgetState(#GADGET_Option_EnableASM)*Target\EnablePurifier = GetGadgetState(#GADGET_Option_Purifier)*Target\EnableThread = GetGadgetState(#GADGET_Option_EnableThread)*Target\EnableXP = GetGadgetState(#GADGET_Option_EnableXP)*Target\EnableWayland = GetGadgetState(#GADGET_Option_EnableWayland)*Target\EnableAdmin = GetGadgetState(#GADGET_Option_EnableAdmin)*Target\EnableUser = GetGadgetState(#GADGET_Option_EnableUser)*Target\DllProtection = GetGadgetState(#GADGET_Option_DllProtection)*Target\SharedUCRT = GetGadgetState(#GADGET_Option_SharedUCRT)*Target\EnableOnError = GetGadgetState(#GADGET_Option_EnableOnError)*Target\CPU = GetGadgetState(#GADGET_Option_CPU)*Target\TemporaryExePlace= GetGadgetState(#GADGET_Option_TemporaryExe)*Target\CustomDebugger = GetGadgetState(#GADGET_Option_SelectDebugger)*Target\DebuggerType = GetGadgetState(#GADGET_Option_DebuggerMode)+1*Target\CustomWarning = GetGadgetState(#GADGET_Option_SelectWarning)*Target\WarningMode = GetGadgetState(#GADGET_Option_WarningMode)*Target\UseIcon = GetGadgetState(#GADGET_Option_UseIcon)If *Target\UseIcon*Target\IconName$ = Trim(GetGadgetText(#GADGET_Option_IconName))EndIfCompilerEndIf*Target\UseCompileCount = GetGadgetState(#GADGET_Option_UseCompileCount)*Target\UseBuildCount = GetGadgetState(#GADGET_Option_UseBuildCount)*Target\UseCreateExe = GetGadgetState(#GADGET_Option_UseCreateExe)If Options_IsProjectMode*Target\MainFile$ = Trim(GetGadgetText(#GADGET_Option_MainFile))*Target\OutputFile$ = Trim(GetGadgetText(#GADGET_Option_OutputFile))*Target\FileName$ = ResolveRelativePath(GetPathPart(ProjectFile$), *Target\MainFile$)ElseIf *Target\UseMainFile*Target\MainFile$ = Trim(GetGadgetText(#GADGET_Option_MainFile))EndIfCompilerIf Not #SpiderBasic*Target\ExecutableFormat = GetGadgetState(#GADGET_Option_ExecutableFormat)*Target\CommandLine$ = GetGadgetText(#GADGET_Option_CommandLine)*Target\LinkerOptions$ = Trim(GetGadgetText(#GADGET_Option_Linker))*Target\CurrentDirectory$ = Trim(GetGadgetText(#GADGET_Option_CurrentDir))CompilerEndIf*Target\SubSystem$ = GetGadgetText(#GADGET_Option_SubSystem)*Target\CompileCount = Val(GetGadgetText(#GADGET_Option_CompileCount))*Target\BuildCount = Val(GetGadgetText(#GADGET_Option_BuildCount))*Target\EnabledTools$ = CompilerWindow_EnabledToolsList()*Target\NbConstants = CountGadgetItems(#GADGET_Option_ConstantList)If *Target\NbConstants > #MAX_Constants*Target\NbConstants = #MAX_ConstantsEndIfFor i = 0 To *Target\NbConstants-1*Target\Constant$[i] = GetGadgetItemText(#GADGET_Option_ConstantList, i, 0)If GetGadgetItemState(#GADGET_Option_ConstantList, i) & #PB_ListIcon_Checked*Target\ConstantEnabled[i] = #TrueElse*Target\ConstantEnabled[i] = #FalseEndIfNext iCompilerIf #CompileWindows And Not #SpiderBasic*Target\VersionInfo = GetGadgetState(#GADGET_Option_IncludeVersion)For i = 0 To 23*Target\VersionField$[i] = GetGadgetText(#GADGET_Option_VersionValue0+i)Next i; make fields empty when the default values are selected ( so they do not appear in the file info block all the time)If GetGadgetState(#GADGET_Option_VersionValue0+15) = 0*Target\VersionField$[15] = ""EndIfIf GetGadgetState(#GADGET_Option_VersionValue0+16) = 0*Target\VersionField$[16] = ""EndIfIf GetGadgetState(#GADGET_Option_VersionValue0+17) = 0*Target\VersionField$[17] = ""EndIf*Target\NbResourceFiles = CountGadgetItems(#GADGET_Option_ResourceList)If *Target\NbResourceFiles > #MAX_ResourceFiles*Target\NbResourceFiles = #MAX_ResourceFilesEndIfFor i = 0 To *Target\NbResourceFiles-1*Target\ResourceFiles$[i] = Trim(GetGadgetItemText(#GADGET_Option_ResourceList, i, 0))Next iCompilerEndIfProcedureReturn ChangedEndProcedureProcedure UpdateTargetGadgets()State = GetGadgetState(#GADGET_Option_TargetList)If State = -1DisableGadget(#GADGET_Option_EditTarget, 1)DisableGadget(#GADGET_Option_CopyTarget, 1)DisableGadget(#GADGET_Option_RemoveTarget, 1)DisableGadget(#GADGET_Option_TargetUp, 1)DisableGadget(#GADGET_Option_TargetDown, 1)DisableGadget(#GADGET_Option_DefaultTarget, 1)DisableGadget(#GADGET_Option_TargetEnabled, 1)SetGadgetState(#GADGET_Option_DefaultTarget, 0)SetGadgetState(#GADGET_Option_TargetEnabled, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_EditTarget, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_CopyTarget, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_RemoveTarget, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetUp, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetDown, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetEnabledMenu, 1)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 0)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_TargetEnabledMenu, 0)ElseSelectElement(ProjectOptionTargets(), State)Count = ListSize(ProjectOptionTargets())DisableGadget(#GADGET_Option_EditTarget, 0)DisableGadget(#GADGET_Option_CopyTarget, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_EditTarget, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_CopyTarget, 0)If Count = 1DisableGadget(#GADGET_Option_RemoveTarget, 1) ; must keep at least one target (and at least one default)DisableGadget(#GADGET_Option_DefaultTarget, 1)SetGadgetState(#GADGET_Option_DefaultTarget, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_RemoveTarget, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 1)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 1)ElseDisableGadget(#GADGET_Option_RemoveTarget, 0)DisableGadget(#GADGET_Option_DefaultTarget, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_RemoveTarget, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 0)If ProjectOptionTargets()\IsDefaultSetGadgetState(#GADGET_Option_DefaultTarget, 1)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 1)ElseSetGadgetState(#GADGET_Option_DefaultTarget, 0)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_DefaultTargetMenu, 0)EndIfEndIfIf State = 0DisableGadget(#GADGET_Option_TargetUp, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetUp, 1)ElseDisableGadget(#GADGET_Option_TargetUp, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetUp, 0)EndIfIf State = Count-1DisableGadget(#GADGET_Option_TargetDown, 1)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetDown, 1)ElseDisableGadget(#GADGET_Option_TargetDown, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetDown, 0)EndIfDisableGadget(#GADGET_Option_TargetEnabled, 0)DisableMenuItem(#POPUPMENU_Options, #GADGET_Option_TargetEnabledMenu, 0)If ProjectOptionTargets()\IsEnabledSetGadgetState(#GADGET_Option_TargetEnabled, 1)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_TargetEnabledMenu, 1)ElseSetGadgetState(#GADGET_Option_TargetEnabled, 0)SetMenuItemState(#POPUPMENU_Options, #GADGET_Option_TargetEnabledMenu, 0)EndIfEndIfEndProcedureProcedure ProjectTargetImage(*Target.CompileTarget)If *Target\IsDefaultProcedureReturn ImageID(#IMAGE_Option_DefaultTarget)ElseIf *Target\IsEnabledProcedureReturn ImageID(#IMAGE_Option_NormalTarget)ElseProcedureReturn ImageID(#IMAGE_Option_DisabledTarget)EndIfEndProcedureProcedure OpenOptionWindow(ForceProjectOptions, *InitialTarget.CompileTarget = 0)If IsWindow(#WINDOW_Option) = 0; Use a slightly different dialog for project options;If *ActiveSource = *ProjectInfo Or *ActiveSource\ProjectFile Or (IsProject And ForceProjectOptions)Options_IsProjectMode = #TrueOptionWindowDialog = OpenDialog(?Dialog_ProjectCompilerOptions, WindowID(#WINDOW_Main), @ProjectOptionWindowPosition)ElseOptions_IsProjectMode = #FalseOptionWindowDialog = OpenDialog(?Dialog_CompilerOptions, WindowID(#WINDOW_Main), @OptionWindowPosition)EndIfIf OptionWindowDialogEnsureWindowOnDesktop(#WINDOW_Option)EnableGadgetDrop(#GADGET_Option_MainFile, #PB_Drop_Files, #PB_Drag_Copy)CompilerIf #SpiderBasicIf Options_IsProjectModeHideGadget(#GADGET_Option_OutputFileLabel, #True)HideGadget(#GADGET_Option_OutputFile, #True)HideGadget(#GADGET_Option_SelectOutputFile, #True)EndIf; Scan the available window themes;If ExamineDirectory(0, PureBasicPath$+"libraries/javascript/themes", "")While NextDirectoryEntry(0)If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory And Left(DirectoryEntryName(0), 1) <> "." ; ignore ".", ".." and all hidden directoriesAddGadgetItem(#GADGET_Option_SelectWindowTheme, -1, DirectoryEntryName(0))EndIfWendFinishDirectory(0)EndIf; Scan the available gadget themes;If ExamineDirectory(0, PureBasicPath$+"libraries/javascript/dojo/themes", "")While NextDirectoryEntry(0)If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory And Left(DirectoryEntryName(0), 1) <> "." ; ignore ".", ".." and all hidden directoriesAddGadgetItem(#GADGET_Option_SelectGadgetTheme, -1, DirectoryEntryName(0))EndIfWendFinishDirectory(0)EndIfCompilerElseEnableGadgetDrop(#GADGET_Option_IconName, #PB_Drop_Files, #PB_Drag_Copy)EnableGadgetDrop(#GADGET_Option_Linker, #PB_Drop_Files, #PB_Drag_Copy)EnableGadgetDrop(#GADGET_Option_CurrentDir, #PB_Drop_Files, #PB_Drag_Copy)CompilerEndIfAddGadgetItem(#GADGET_Option_SelectCompiler, -1, DefaultCompiler\VersionString$)ForEach Compilers()If Compilers()\ValidatedAddGadgetItem(#GADGET_Option_SelectCompiler, -1, Compilers()\VersionString$)SetGadgetItemData(#GADGET_Option_SelectCompiler, CountGadgetItems(#GADGET_Option_SelectCompiler)-1, @Compilers())EndIfNext Compilers()CompilerIf #CompileWindows And Not #SpiderBasicRestore Resource_StringsFor i = 15 To 17Read.l CountFor s = 1 To CountRead.s Value$AddGadgetItem(#GADGET_Option_VersionValue0+i, -1, Value$)Next sNext iEnableGadgetDrop(#GADGET_Option_ResourceList, #PB_Drop_Files, #PB_Drag_Copy)EnableGadgetDrop(#GADGET_Option_ResourceFile, #PB_Drop_Files, #PB_Drag_Copy)CompilerEndIfIf Options_IsProjectModeOptions_CurrentBasePath$ = GetPathPart(ProjectFile$)EnableGadgetDrop(#GADGET_Option_OutputFile, #PB_Drop_Files, #PB_Drag_Copy)SetGadgetAttribute(#GADGET_Option_AddTarget, #PB_Button_Image, ImageID(#IMAGE_Option_AddTarget))SetGadgetAttribute(#GADGET_Option_EditTarget, #PB_Button_Image, ImageID(#IMAGE_Option_EditTarget))SetGadgetAttribute(#GADGET_Option_CopyTarget, #PB_Button_Image, ImageID(#IMAGE_Option_CopyTarget))SetGadgetAttribute(#GADGET_Option_RemoveTarget, #PB_Button_Image, ImageID(#IMAGE_Option_RemoveTarget))SetGadgetAttribute(#GADGET_Option_TargetUp, #PB_Button_Image, ImageID(#IMAGE_Option_TargetUp))SetGadgetAttribute(#GADGET_Option_TargetDown, #PB_Button_Image, ImageID(#IMAGE_Option_TargetDown))GadgetToolTip(#GADGET_Option_AddTarget, Language("Compiler","AddTarget"))GadgetToolTip(#GADGET_Option_EditTarget, Language("Compiler","RenameTarget"))GadgetToolTip(#GADGET_Option_CopyTarget, Language("Compiler","CopyTarget"))GadgetToolTip(#GADGET_Option_RemoveTarget, Language("Compiler","RemoveTarget"))GadgetToolTip(#GADGET_Option_TargetUp, Language("Compiler","TargetUp"))GadgetToolTip(#GADGET_Option_TargetDown, Language("Compiler","TargetDown"))If EnableAccessibility; Give all these controls labels to screen readers, using a hack with SetGadgetText() on ButtonImageGadgets that adds an accessibility label.SetGadgetText(#GADGET_Option_AddTarget, Language("Compiler","AddTarget"))SetGadgetText(#GADGET_Option_EditTarget, Language("Compiler","RenameTarget"))SetGadgetText(#GADGET_Option_CopyTarget, Language("Compiler","CopyTarget"))SetGadgetText(#GADGET_Option_RemoveTarget, Language("Compiler","RemoveTarget"))SetGadgetText(#GADGET_Option_TargetUp, Language("Compiler","TargetUp"))SetGadgetText(#GADGET_Option_TargetDown, Language("Compiler","TargetDown"))EndIf; resize with the actual button images and fold stateOptionWindowDialog\GuiUpdate(); Create the popupmenu;If EnableMenuIcons*Popup = CreatePopupImageMenu(#POPUPMENU_Options)Else*Popup = CreatePopupMenu(#POPUPMENU_Options)EndIf; Re-use the gadget ids for the menu for simplicity (same as for the shortcuts)If *PopupMenuItem(#GADGET_Option_AddTarget, Language("Compiler","AddTarget"), ImageID(#IMAGE_Option_AddTarget))MenuItem(#GADGET_Option_CopyTarget, Language("Compiler","CopyTarget"), ImageID(#IMAGE_Option_CopyTarget))MenuItem(#GADGET_Option_EditTarget, Language("Compiler","RenameTarget"), ImageID(#IMAGE_Option_EditTarget))MenuBar()MenuItem(#GADGET_Option_RemoveTarget, Language("Compiler","RemoveTarget"), ImageID(#IMAGE_Option_RemoveTarget))MenuBar()MenuItem(#GADGET_Option_TargetUp, Language("Compiler","TargetUp"), ImageID(#IMAGE_Option_TargetUp))MenuItem(#GADGET_Option_TargetDown, Language("Compiler","TargetDown"), ImageID(#IMAGE_Option_TargetDown))MenuBar()MenuItem(#GADGET_Option_DefaultTargetMenu, Language("Compiler","DefaultTarget"))MenuItem(#GADGET_Option_TargetEnabledMenu, Language("Compiler","EnableTarget"))EndIfClearList(ProjectOptionTargets())CurrentIndex = -1*Options_CurrentTarget = 0If *InitialTarget = 0*InitialTarget = *DefaultTargetEndIfForEach ProjectTargets()AddElement(ProjectOptionTargets())ProjectOptionTargets() = ProjectTargets() ; copy the entire settingsIf @ProjectTargets() = *InitialTargetCurrentIndex = ListIndex(ProjectTargets())*Options_CurrentTarget = @ProjectOptionTargets()EndIfIf @ProjectTargets() = *DefaultTargetProjectOptionTargets()\IsDefault = #TrueElseProjectOptionTargets()\IsDefault = #FalseEndIfAddGadgetItem(#GADGET_Option_TargetList, -1, ProjectOptionTargets()\Name,ドル ProjectTargetImage(@ProjectOptionTargets()))Next ProjectTargets()If CurrentIndex <> -1SetGadgetState(#GADGET_Option_TargetList, CurrentIndex)EndIfSetTargetOptions(*InitialTarget)UpdateTargetGadgets()ElseIf *ActiveSource\Filename$ ; already savedOptions_CurrentBasePath$ = GetPathPart(*ActiveSource\Filename$)ElseOptions_CurrentBasePath$ = "" ; use full paths thenEndIf; just set the active source optionsSetTargetOptions(*ActiveSource)EndIfCompilerIf #CompileWindowsSendMessage_(GadgetID(#GADGET_Option_ConstantList), #LVM_SETCOLUMNWIDTH, 0, #LVSCW_AUTOSIZE_USEHEADER)If Options_IsProjectModeSendMessage_(GadgetID(#GADGET_Option_TargetList), #LVM_SETCOLUMNWIDTH, 0, #LVSCW_AUTOSIZE_USEHEADER)EndIfCompilerEndIf; While this dialog is open, disable the menu entry to avoid inconsistencyDisableMenuItem(#MENU, #MENU_Debugger, #True)HideWindow(#WINDOW_Option, 0)EndIfElseSetWindowForeground(#WINDOW_Option)EndIfEndProcedureProcedure OptionWindowEvents(EventID)If EventID = #PB_Event_Menu ; Little wrapper to map the shortcut events (identified as menu)EventID = #PB_Event_Gadget ; to normal gadget events...GadgetID = EventMenu()ElseGadgetID = EventGadget()EndIfSelect EventIDCase #PB_Event_CloseWindowQuit = 1Case #PB_Event_GadgetDropSelect GadgetIDCase #GADGET_Option_MainFileFile$ = StringField(EventDropFiles(), 1, Chr(10)) ; ignore all but the first entrySetGadgetText(#GADGET_Option_MainFile, CreateRelativePath(Options_CurrentBasePath,ドル File$))Case #GADGET_Option_OutputFileFile$ = StringField(EventDropFiles(), 1, Chr(10)) ; ignore all but the first entrySetGadgetText(#GADGET_Option_MainFile, CreateRelativePath(Options_CurrentBasePath,ドル File$))CompilerIf Not #SpiderBasicCase #GADGET_Option_IconNameFile$ = StringField(EventDropFiles(), 1, Chr(10))SetGadgetText(#GADGET_Option_IconName, CreateRelativePath(Options_CurrentBasePath,ドル File$))Case #GADGET_Option_LinkerFile$ = StringField(EventDropFiles(), 1, Chr(10))SetGadgetText(#GADGET_Option_Linker, CreateRelativePath(Options_CurrentBasePath,ドル File$))Case #GADGET_Option_CurrentDirPath$ = StringField(EventDropFiles(), 1, Chr(10))If FileSize(Path$) <> -2 ; probably a file thenPath$ = GetPathPart(Path$)EndIfSetGadgetText(#GADGET_Option_CurrentDir, CreateRelativePath(Options_CurrentBasePath,ドル Path$))CompilerIf #CompileWindowsCase #GADGET_Option_ResourceListFiles$ = EventDropFiles() ; look at all files here...Count = CountString(Files,ドル Chr(10))+1For i = 1 To CountFile$ = StringField(Files,ドル i, Chr(10))If FileSize(File$) <> -2 ; no directories!AddGadgetItem(#GADGET_Option_ResourceList, -1, CreateRelativePath(Options_CurrentBasePath,ドル File$))EndIfNext iCase #GADGET_Option_ResourceFileFile$ = StringField(EventDropFiles(), 1, Chr(10))SetGadgetText(#GADGET_Option_ResourceFile, CreateRelativePath(Options_CurrentBasePath,ドル File$))CompilerEndIfCompilerEndIfEndSelectCase #PB_Event_GadgetSelect GadgetIDCase #GADGET_Option_OkIf Options_IsProjectMode = 0; Make sure the modified flag is set if any changes were done.;If TargetOptionsChanged(*ActiveSource)UpdateSourceStatus(1) ; set the changed flagEndIf; update the highlighting if EnableASM changes;OldEnableASM = *ActiveSource\EnableASMGetTargetOptions(*ActiveSource)If OldEnableASM <> *ActiveSource\EnableASMUpdateHighlighting()EndIfSetDebuggerMenuStates() ; update the debugger menu state, as we can enable/disable it in the compiler optionsQuit = 1Else; get the latest changesIf *Options_CurrentTargetGetTargetOptions(*Options_CurrentTarget)EndIf; check for missing MainFile$ names in the list and warn/abort if soQuit = 1ForEach ProjectOptionTargets()If Trim(ProjectOptionTargets()\MainFile$) = ""; make the target in question the current one*Options_CurrentTarget = @ProjectOptionTargets()SetTargetOptions(*Options_CurrentTarget)SetGadgetState(#GADGET_Option_TargetList, ListIndex(ProjectOptionTargets()))UpdateTargetGadgets()If MessageRequester(Language("Compiler","OptionsTitle"), LanguagePattern("Compiler","NoInputFile", "%target%", ProjectOptionTargets()\Name$)+#NewLine+Language("Compiler","SaveAnyway"), #PB_MessageRequester_YesNo|#FLAG_Warning) = #PB_MessageRequester_NoQuit = 0BreakEndIfEndIfNext ProjectOptionTargets(); copy the changes back to the real project listIf QuitClearList(ProjectTargets())ForEach ProjectOptionTargets()AddElement(ProjectTargets())ProjectTargets() = ProjectOptionTargets() ; structure copyNext ProjectOptionTargets(); set the *DefaultTarget variable properly and ensuer there is a def targetSetProjectDefaultTarget()SetDebuggerMenuStates(); update the menu to reflect our target changesStartFlickerFix(#WINDOW_Main)CreateIDEMenu()StopFlickerFix(#WINDOW_Main, 1)EndIfEndIfCase #GADGET_Option_CancelClearList(ProjectOptionTargets()) ; do not apply these changesQuit = 1Case #GADGET_Option_UseMainFileDisableOptionGadgets()Case #GADGET_Option_Debugger; No action here anymore, as the menu item is disabled anyway for consistencyCase #GADGET_Option_SelectMainFileFile$ = ResolveRelativePath(Options_CurrentBasePath,ドル GetGadgetText(#GADGET_Option_MainFile))If Trim(File$) = ""File$ = Options_CurrentBasePath$EndIfFile$ = OpenFileRequester(Language("Compiler","OpenMainFile"), File,ドル Language("Compiler","SourcePattern"), 0)If File$SetGadgetText(#GADGET_Option_MainFile, CreateRelativePath(Options_CurrentBasePath,ドル File$))EndIfCase #GADGET_Option_UseCompilerDisableGadget(#GADGET_Option_SelectCompiler, 1-GetGadgetState(#GADGET_Option_UseCompiler))CompilerIf Not #SpiderBasicCase #GADGET_Option_SelectOutputFileFile$ = ResolveRelativePath(Options_CurrentBasePath,ドル GetGadgetText(#GADGET_Option_OutputFile))If Trim(File$) = ""File$ = Options_CurrentBasePath$EndIfIf GetGadgetState(#GADGET_Option_ExecutableFormat) = 2 ; shared dllCompilerIf #CompileWindowsPattern$ = Language("Compiler","DllPattern")Extension$ = ".dll"CompilerElseIf #CompileMacPattern$ = "Shared Library (*.dylib)|*.dylib|All Files (*.*)|*.*"Extension$ = ".dylib"CompilerElse ; LinuxPattern$ = "Shared Library (*.so)|*.so|All Files (*.*)|*.*"Extension$ = ".so"CompilerEndIfElseCompilerIf #CompileWindowsPattern$ = Language("Compiler","ExePattern")Extension$ = ".exe"CompilerElseIf #CompileMacPattern$ = ""If GetGadgetState(#GADGET_Option_ExecutableFormat) = 1 ; consoleExtension$ = "" ; console, do not append .app automatically hereElseExtension$ = ".app" ; automatically append ".app" for gui programsEndIfCompilerElse ; LinuxPattern$ = ""Extension$ = ""CompilerEndIfEndIfFile$ = SaveFileRequester(Language("Compiler","SetOutputFile"), File,ドル Pattern,ドル 0)If File$If LCase(Right(File,ドル Len(Extension$))) <> Extension$ And SelectedFilePattern() <> 1File$+Extension$EndIfSetGadgetText(#GADGET_Option_OutputFile, CreateRelativePath(Options_CurrentBasePath,ドル File$))EndIfCase #GADGET_Option_SelectIconFile$ = ResolveRelativePath(Options_CurrentBasePath,ドル GetGadgetText(#GADGET_Option_IconName))If Trim(File$) = ""File$ = Options_CurrentBasePath$EndIfPattern$ = Language("Compiler","IconPattern")CompilerIf #CompileMac; change .ico to .icnsPattern$ = ReplaceString(Pattern,ドル "ico", "icns")CompilerEndIfFile$ = OpenFileRequester(Language("Compiler","OpenIcon"), File,ドル Pattern,ドル 0)If File$If SelectedFilePattern() = 0 And GetExtensionPart(File$) = ""CompilerIf #CompileWindowsExt$ = "ico"CompilerElseExt$ = "icns"CompilerEndIfFile$ + "." + Ext$EndIfSetGadgetText(#GADGET_Option_IconName, CreateRelativePath(Options_CurrentBasePath,ドル File$))EndIfCase #GADGET_Option_UseIconResult = GetGadgetState(#GADGET_Option_UseIcon)DisableGadget(#GADGET_Option_IconName , 1-Result)DisableGadget(#GADGET_Option_SelectIcon, 1-Result)Case #GADGET_Option_GetLinkerFile$ = ResolveRelativePath(Options_CurrentBasePath,ドル GetGadgetText(#GADGET_Option_Linker))If Trim(File$) = ""File$ = Options_CurrentBasePath$EndIfFile$ = OpenFileRequester(Language("Compiler","OpenLinkerFile"), File,ドル Language("Compiler","AllFilesPattern"), 0)If File$SetGadgetText(#GADGET_Option_Linker, CreateRelativePath(Options_CurrentBasePath,ドル File$))EndIfCase #GADGET_Option_SelectDebuggerDisableOptionGadgets()Case #GADGET_Option_DebuggerModeDisableOptionGadgets()Case #GADGET_Option_SelectWarningDisableOptionGadgets()Case #GADGET_Option_SelectCurrentDirIf Trim(GetGadgetText(#GADGET_Option_CurrentDir)) = ""Path$ = Options_CurrentBasePath$ElsePath$ = ResolveRelativePath(Options_CurrentBasePath,ドル GetGadgetText(#GADGET_Option_CurrentDir))EndIfPath$ = PathRequester("", Path$)If Path$SetGadgetText(#GADGET_Option_CurrentDir, CreateRelativePath(Options_CurrentBasePath,ドル Path$))EndIfCompilerEndIfCase #GADGET_Option_UseCompileCountDisableOptionGadgets()Case #GADGET_Option_UseBuildCountDisableOptionGadgets()Case #GADGET_Option_ConstantListindex = GetGadgetState(#GADGET_Option_ConstantList)If index = -1SetGadgetText(#GADGET_Option_ConstantLine, "")ElseSetGadgetText(#GADGET_Option_ConstantLine, GetGadgetItemText(#GADGET_Option_ConstantList, index, 0))EndIfCase #GADGET_Option_ConstantAddText$ = GetGadgetText(#GADGET_Option_ConstantLine)index = CountGadgetItems(#GADGET_Option_ConstantList)If Text$ <> "" And index < #MAX_Constants-1AddGadgetItem(#GADGET_Option_ConstantList, index, Text$)SetGadgetItemState(#GADGET_Option_ConstantList, index, #PB_ListIcon_Checked)SetGadgetState(#GADGET_Option_ConstantList, index)EndIfCase #GADGET_Option_ConstantSetText$ = GetGadgetText(#GADGET_Option_ConstantLine)index = GetGadgetState(#GADGET_Option_ConstantList)If Text$ <> "" And index <> -1SetGadgetItemText(#GADGET_Option_ConstantList, index, Text,ドル 0)EndIfCase #GADGET_Option_ConstantRemoveindex = GetGadgetState(#GADGET_Option_ConstantList)If index <> -1RemoveGadgetItem(#GADGET_Option_ConstantList, index)SetGadgetText(#GADGET_Option_ConstantLine, "")EndIfCase #GADGET_Option_ConstantClearClearGadgetItems(#GADGET_Option_ConstantList)SetGadgetText(#GADGET_Option_ConstantLine, "")Case #GADGET_Option_TargetListState = GetGadgetState(#GADGET_Option_TargetList)If State = -1; we must have a selection, so select the default targetState = 0 ; fallbackForEach ProjectOptionTargets()If ProjectOptionTargets()\IsDefaultState = ListIndex(ProjectOptionTargets())BreakEndIfNext ProjectOptionTargets()SetGadgetState(#GADGET_Option_TargetList, State)EndIfSelectElement(ProjectOptionTargets(), State); don't need to do anything when the selection did not changeIf *Options_CurrentTarget <> @ProjectOptionTargets()If *Options_CurrentTargetGetTargetOptions(*Options_CurrentTarget) ; save old optionsEndIf*Options_CurrentTarget = @ProjectOptionTargets()SetTargetOptions(*Options_CurrentTarget) ; set new optionsEndIfUpdateTargetGadgets(); Display popupmenu if neededIf EventType() = #PB_EventType_RightClickDisplayPopupMenu(#POPUPMENU_Options, WindowID(#WINDOW_Option))EndIfCase #GADGET_Option_AddTargetName$ = Trim(InputRequester(Language("Compiler","AddTarget"), Language("Compiler","EnterTargetName"), Language("Compiler","NewTargetName")))If Name$found = 0ForEach ProjectOptionTargets()If UCase(ProjectOptionTargets()\Name$) = Name$found = 1BreakEndIfNext ProjectOptionTargets()If foundMessageRequester(Language("Compiler","OptionsTitle"), Language("Compiler","NameExists"))ElseIf *Options_CurrentTargetGetTargetOptions(*Options_CurrentTarget) ; save old optionsEndIfLastElement(ProjectOptionTargets())AddElement(ProjectOptionTargets())ProjectOptionTargets()\ID = GetUniqueID() ; already generate the unique id here (there is no harm if it the user aborts)ProjectOptionTargets()\IsProject = #TrueProjectOptionTargets()\Name$ = Name$ProjectOptionTargets()\IsEnabled = #TrueProjectOptionTargets()\IsDefault = #False*Options_CurrentTarget = @ProjectOptionTargets()SetTargetOptions(*Options_CurrentTarget)AddGadgetItem(#GADGET_Option_TargetList, -1, Name,ドル ProjectTargetImage(@ProjectOptionTargets()))SetGadgetState(#GADGET_Option_TargetList, CountGadgetItems(#GADGET_Option_TargetList)-1)UpdateTargetGadgets()EndIfEndIfCase #GADGET_Option_CopyTargetState = GetGadgetState(#GADGET_Option_TargetList)If State <> -1SelectElement(ProjectOptionTargets(), State)Name$ = Trim(InputRequester(Language("Compiler","CopyTarget"), Language("Compiler","EnterTargetName"), ProjectOptionTargets()\Name$ + " " + Language("Compiler", "TargetCopySuffix")))If Name$found = 0ForEach ProjectOptionTargets()If UCase(ProjectOptionTargets()\Name$) = Name$found = 1BreakEndIfNext ProjectOptionTargets()If foundMessageRequester(Language("Compiler","OptionsTitle"), Language("Compiler","NameExists"))ElseIf *Options_CurrentTargetGetTargetOptions(*Options_CurrentTarget) ; save old optionsEndIf; Copy the whole structure to the end of the list; We need a dummy temp element, as we cannot do CopyStructure across different elements elseSelectElement(ProjectOptionTargets(), State)Temp.CompileTarget = ProjectOptionTargets()LastElement(ProjectOptionTargets())AddElement(ProjectOptionTargets())ProjectOptionTargets() = TempProjectOptionTargets()\ID = GetUniqueID() ; make sure the new target get its own unique idProjectOptionTargets()\Name$ = Name$ProjectOptionTargets()\IsDefault = #False ; there can be only 1 default*Options_CurrentTarget = @ProjectOptionTargets()SetTargetOptions(*Options_CurrentTarget)AddGadgetItem(#GADGET_Option_TargetList, -1, Name,ドル ProjectTargetImage(@ProjectOptionTargets()))SetGadgetState(#GADGET_Option_TargetList, CountGadgetItems(#GADGET_Option_TargetList)-1)UpdateTargetGadgets()EndIfEndIfEndIfCase #GADGET_Option_EditTargetState = GetGadgetState(#GADGET_Option_TargetList)If State <> -1SelectElement(ProjectOptionTargets(), State)Name$ = Trim(InputRequester(Language("Compiler","EditTarget"), Language("Compiler","EnterTargetName"), ProjectOptionTargets()\Name$))If Name$ <> ""ForEach ProjectOptionTargets()If ListIndex(ProjectOptionTargets()) <> State And UCase(Name$) = UCase(ProjectOptionTargets()\Name$)found = 1BreakEndIfNext ProjectOptionTargets()SelectElement(ProjectOptionTargets(), State)If foundMessageRequester(Language("Compiler","OptionsTitle"), Language("Compiler","NameExists"))ElseProjectOptionTargets()\Name$ = Name$SetGadgetItemText(#GADGET_Option_TargetList, State, Name,ドル 0)EndIfEndIfEndIfCase #GADGET_Option_RemoveTargetState = GetGadgetState(#GADGET_Option_TargetList); cannot delete the last targetIf State <> -1 And ListSize(ProjectOptionTargets()) > 1 And MessageRequester(Language("Compiler","OptionsTitle"), Language("Compiler","ConfirmTargetDelete"), #PB_MessageRequester_YesNo|#FLAG_Question) = #PB_MessageRequester_YesIf State > 0NewState = State - 1ElseNewState = 0EndIfSelectElement(ProjectOptionTargets(), State)IsDefault = ProjectOptionTargets()\IsDefaultDeleteElement(ProjectOptionTargets())RemoveGadgetItem(#GADGET_Option_TargetList, State); If the old target was the default, set a new oneIf IsDefaultSelectElement(ProjectOptionTargets(), 0)ProjectOptionTargets()\IsDefault = #TrueSetGadgetItemImage(#GADGET_Option_TargetList, 0, ProjectTargetImage(@ProjectOptionTargets()))EndIf; We need a new current element always;SetGadgetState(#GADGET_Option_TargetList, NewState)SelectElement(ProjectOptionTargets(), NewState)*Options_CurrentTarget = @ProjectOptionTargets()SetTargetOptions(*Options_CurrentTarget)UpdateTargetGadgets()EndIfCase #GADGET_Option_TargetUpState = GetGadgetState(#GADGET_Option_TargetList)If State > 0SelectElement(ProjectOptionTargets(), State)*Current = @ProjectOptionTargets()If PreviousElement(ProjectOptionTargets())SwapElements(ProjectOptionTargets(), @ProjectOptionTargets(), *Current)SelectElement(ProjectOptionTargets(), State-1)SetGadgetItemText(#GADGET_Option_TargetList, State-1, ProjectOptionTargets()\Name,ドル 0)SetGadgetItemImage(#GADGET_Option_TargetList, State-1, ProjectTargetImage(@ProjectOptionTargets()))SelectElement(ProjectOptionTargets(), State)SetGadgetItemText(#GADGET_Option_TargetList, State, ProjectOptionTargets()\Name,ドル 0)SetGadgetItemImage(#GADGET_Option_TargetList, State, ProjectTargetImage(@ProjectOptionTargets())); We end up with the same selection as before, so no change in the displayed targetSetGadgetState(#GADGET_Option_TargetList, State-1)UpdateTargetGadgets()EndIfEndIfCase #GADGET_Option_TargetDownState = GetGadgetState(#GADGET_Option_TargetList)If State <> -1 And State < ListSize(ProjectOptionTargets())-1SelectElement(ProjectOptionTargets(), State)*Current = @ProjectOptionTargets()If NextElement(ProjectOptionTargets())SwapElements(ProjectOptionTargets(), @ProjectOptionTargets(), *Current)SelectElement(ProjectOptionTargets(), State+1)SetGadgetItemText(#GADGET_Option_TargetList, State+1, ProjectOptionTargets()\Name,ドル 0)SetGadgetItemImage(#GADGET_Option_TargetList, State+1, ProjectTargetImage(@ProjectOptionTargets()))SelectElement(ProjectOptionTargets(), State)SetGadgetItemText(#GADGET_Option_TargetList, State, ProjectOptionTargets()\Name,ドル 0)SetGadgetItemImage(#GADGET_Option_TargetList, State, ProjectTargetImage(@ProjectOptionTargets())); We end up with the same selection as before, so no change in the displayed targetSetGadgetState(#GADGET_Option_TargetList, State+1)UpdateTargetGadgets()EndIfEndIfCase #GADGET_Option_DefaultTarget, #GADGET_Option_DefaultTargetMenuState = GetGadgetState(#GADGET_Option_TargetList)If State <> -1SelectElement(ProjectOptionTargets(), State)Selected = GetGadgetState(#GADGET_Option_DefaultTarget); If it was menu action, the gadget state did not change, so reverse it ourselvesIf GadgetID = #GADGET_Option_DefaultTargetMenuSelected = 1-SelectedEndIfIf SelectedProjectOptionTargets()\IsDefault = #TrueSetGadgetItemImage(#GADGET_Option_TargetList, State, ProjectTargetImage(@ProjectOptionTargets()))ForEach ProjectOptionTargets()If ListIndex(ProjectOptionTargets()) <> StateProjectOptionTargets()\IsDefault = #FalseSetGadgetItemImage(#GADGET_Option_TargetList, ListIndex(ProjectOptionTargets()), ProjectTargetImage(@ProjectOptionTargets()))EndIfNext ProjectOptionTargets()ElseIf ListSize(ProjectOptionTargets()) = 1SetGadgetState(#GADGET_Option_TargetList, #True) ; cannot unset this if it is the only targetElseProjectOptionTargets()\IsDefault = #FalseSetGadgetItemImage(#GADGET_Option_TargetList, ListIndex(ProjectOptionTargets()), ProjectTargetImage(@ProjectOptionTargets())); select a different target as default, as there must always be oneIf State = 0NextElement(ProjectOptionTargets())ElseFirstElement(ProjectOptionTargets())EndIfProjectOptionTargets()\IsDefault = #TrueSetGadgetItemImage(#GADGET_Option_TargetList, ListIndex(ProjectOptionTargets()), ProjectTargetImage(@ProjectOptionTargets()))EndIfEndIfEndIfUpdateTargetGadgets() ; sync the menu statesCase #GADGET_Option_TargetEnabled, #GADGET_Option_TargetEnabledMenuState = GetGadgetState(#GADGET_Option_TargetList)If State <> -1SelectElement(ProjectOptionTargets(), State)ProjectOptionTargets()\IsEnabled = GetGadgetState(#GADGET_Option_TargetEnabled); If it was menu action, the gadget state did not change, so reverse it ourselvesIf GadgetID = #GADGET_Option_TargetEnabledMenuProjectOptionTargets()\IsEnabled = 1-ProjectOptionTargets()\IsEnabledEndIfSetGadgetItemImage(#GADGET_Option_TargetList, State, ProjectTargetImage(@ProjectOptionTargets()))EndIfUpdateTargetGadgets() ; sync the menu statesCase #GADGET_Option_OpenProjectOpenProjectOptions(#False) ; no new projectCompilerIf #CompileWindows And Not #SpiderBasicCase #GADGET_Option_EnableAdminIf GetGadgetState(#GADGET_Option_EnableAdmin)SetGadgetState(#GADGET_Option_EnableUser, 0) ; both cannot be set at onceEndIfCase #GADGET_Option_EnableUserIf GetGadgetState(#GADGET_Option_EnableUser)SetGadgetState(#GADGET_Option_EnableAdmin, 0) ; both cannot be set at onceEndIfCase #GADGET_Option_IncludeVersionDisableOptionGadgets()Case #GADGET_Option_ResourceAddFile$ = GetGadgetText(#GADGET_Option_ResourceFile)If File$ <> ""AddGadgetItem(#GADGET_Option_ResourceList, -1, File$)SetGadgetState(#GADGET_Option_ResourceList, CountGadgetItems(#GADGET_Option_ResourceList)-1)SetGadgetText(#GADGET_Option_ResourceFile, "")EndIfCase #GADGET_Option_ResourceRemoveindex = GetGadgetState(#GADGET_Option_ResourceList)If index <> -1RemoveGadgetItem(#GADGET_Option_ResourceList, index)EndIfCase #GADGET_Option_ResourceClearClearGadgetItems(#GADGET_Option_ResourceList)Case #GADGET_Option_ResourceSelectFileFile$ = ResolveRelativePath(Options_CurrentBasePath,ドル GetGadgetText(#GADGET_Option_ResourceFile))If File$ = ""File$ = Options_CurrentBasePath$EndIfFile$ = OpenFileRequester(Language("Resources","OpenResource"), File,ドル Language("Resources","ResourcePattern"), 0)If File$ <> ""SetGadgetText(#GADGET_Option_ResourceFile, CreateRelativePath(Options_CurrentBasePath,ドル File$))EndIfCase #GADGET_Option_TokensText$ = ""For i = 0 To 4Text$ + Language("Resources","Token"+Str(i)) + #NewLineNext iText$ + Language("Resources","DateTokens")MessageRequester(Language("Resources","Tokens"), Text,ドル #FLAG_Info)CompilerEndIfEndSelectEndSelectIf Quit = 1If MemorizeWindowIf Options_IsProjectModeOptionWindowDialog\Close(@ProjectOptionWindowPosition)ElseOptionWindowDialog\Close(@OptionWindowPosition)EndIfElseOptionWindowDialog\Close()EndIf; Re-enable this so the user can make changes againDisableMenuItem(#MENU, #MENU_Debugger, #False)UpdateProjectInfo()EndIfEndProcedureProcedure UpdateOptionWindow(); Update the compiler list;If GetGadgetState(#GADGET_Option_UseCompiler)OldSelection$ = GetGadgetText(#GADGET_Option_SelectCompiler)EndIfClearGadgetItems(#GADGET_Option_SelectCompiler)AddGadgetItem(#GADGET_Option_SelectCompiler, -1, DefaultCompiler\VersionString$)ForEach Compilers()If Compilers()\ValidatedAddGadgetItem(#GADGET_Option_SelectCompiler, -1, Compilers()\VersionString$)SetGadgetItemData(#GADGET_Option_SelectCompiler, CountGadgetItems(#GADGET_Option_SelectCompiler)-1, @Compilers())EndIfNext Compilers()If GetGadgetState(#GADGET_Option_UseCompiler); find a matching compiler*Compiler.Compiler = FindCompiler(OldSelection$)If *Compiler = 0MessageRequester(#ProductName,ドル Language("Compiler","CompilerNotFound")+":"+#NewLine+OldSelection,ドル #FLAG_Warning)SetGadgetState(#GADGET_Option_SelectCompiler, 0)ElseIf *Compiler = @DefaultCompilerSetGadgetState(#GADGET_Option_SelectCompiler, 0)Else; one of them must match, as FindCompiler() returned somethinglast = CountGadgetItems(#GADGET_Option_SelectCompiler)For index = 1 To lastIf GetGadgetItemData(#GADGET_Option_SelectCompiler, index) = *CompilerSetGadgetState(#GADGET_Option_SelectCompiler, index)BreakEndIfNext indexEndIfElseSetGadgetState(#GADGET_Option_SelectCompiler, 0)EndIfIf Options_IsProjectMode; Re-apply the images for theme changes;SetGadgetAttribute(#GADGET_Option_AddTarget, #PB_Button_Image, ImageID(#IMAGE_Option_AddTarget))SetGadgetAttribute(#GADGET_Option_EditTarget, #PB_Button_Image, ImageID(#IMAGE_Option_EditTarget))SetGadgetAttribute(#GADGET_Option_CopyTarget, #PB_Button_Image, ImageID(#IMAGE_Option_CopyTarget))SetGadgetAttribute(#GADGET_Option_RemoveTarget, #PB_Button_Image, ImageID(#IMAGE_Option_RemoveTarget))SetGadgetAttribute(#GADGET_Option_TargetUp, #PB_Button_Image, ImageID(#IMAGE_Option_TargetUp))SetGadgetAttribute(#GADGET_Option_TargetDown, #PB_Button_Image, ImageID(#IMAGE_Option_TargetDown))GadgetToolTip(#GADGET_Option_AddTarget, Language("Compiler","AddTarget"))GadgetToolTip(#GADGET_Option_EditTarget, Language("Compiler","RenameTarget"))GadgetToolTip(#GADGET_Option_CopyTarget, Language("Compiler","CopyTarget"))GadgetToolTip(#GADGET_Option_RemoveTarget, Language("Compiler","RemoveTarget"))GadgetToolTip(#GADGET_Option_TargetUp, Language("Compiler","TargetUp"))GadgetToolTip(#GADGET_Option_TargetDown, Language("Compiler","TargetDown")); Re-create the popup menu with new images/text;If EnableMenuIcons*Popup = CreatePopupImageMenu(#POPUPMENU_Options)Else*Popup = CreatePopupMenu(#POPUPMENU_Options)EndIf; Re-use the gadget ids for the menu for simplicity (same as for the shortcuts)If *PopupMenuItem(#GADGET_Option_AddTarget, Language("Compiler","AddTarget"), ImageID(#IMAGE_Option_AddTarget))MenuItem(#GADGET_Option_CopyTarget, Language("Compiler","CopyTarget"), ImageID(#IMAGE_Option_CopyTarget))MenuItem(#GADGET_Option_EditTarget, Language("Compiler","EditTarget"), ImageID(#IMAGE_Option_EditTarget))MenuBar()MenuItem(#GADGET_Option_RemoveTarget, Language("Compiler","RemoveTarget"), ImageID(#IMAGE_Option_RemoveTarget))MenuBar()MenuItem(#GADGET_Option_TargetUp, Language("Compiler","TargetUp"), ImageID(#IMAGE_Option_TargetUp))MenuItem(#GADGET_Option_TargetDown, Language("Compiler","TargetDown"), ImageID(#IMAGE_Option_TargetDown))MenuBar()MenuItem(#GADGET_Option_DefaultTargetMenu, Language("Compiler","DefaultTarget"))MenuItem(#GADGET_Option_TargetEnabledMenu, Language("Compiler","EnableTarget"))EndIf; apply enabled/disabled states to this new popup menuUpdateTargetGadgets(); apply theme changes to the list of targets tooForEach ProjectOptionTargets()SetGadgetItemImage(#GADGET_Option_TargetList, ListIndex(ProjectOptionTargets()), ProjectTargetImage(@ProjectOptionTargets()))Next ProjectOptionTargets()EndIfOptionWindowDialog\LanguageUpdate()OptionWindowDialog\GuiUpdate()EndProcedure
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。