{ $Id$ This file is part of the Free Pascal Integrated Development Environment Copyright (c) 1998 by Berczi Gabor Options menu entries See the file COPYING.FPC, included in this distribution, for details about the copyright. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} procedure TIDEApp.SetSwitchesMode; var R,R2: TRect; D: PCenterDialog; RB: PRadioButtons; i : TSwitchMode; SwitchesCount : integer; LastItem: PSItem; L: longint; begin SwitchesCount:=ord(high(TSwitchMode))-ord(low(TSwitchMode))+1; R.Assign(0,0,36,4+SwitchesCount); New(D, Init(R, dialog_switchesmode)); with D^ do begin HelpCtx:=hcSwitchesMode; GetExtent(R); R.Grow(-3,-1); Inc(R.A.Y); R2.Copy(R); Inc(R2.A.Y); R2.B.Y:=R2.A.Y+SwitchesCount; LastItem:=nil; for I:=high(TSwitchMode) downto low(TSwitchMode) do LastItem:=NewSItem(SwitchesModeName[I], LastItem); New(RB, Init(R2, LastItem)); L:=ord(SwitchesMode); { ^^^ this is necessary, since TRadioButtons.GetData() reads a full longint and by just specifying the SwitchesMode var (only 1 bytes), the three bytes located next to it in the memory will determine the three most significant bytes of the longint. And if they aren't all zero, then we will select some items outside the actual ones... } RB^.SetData(L); Insert(RB); R2.Copy(R); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, static_switchesmode_switchesmode, RB))); end; InsertButtons(D); RB^.Select; if Desktop^.ExecView(D)=cmOK then SwitchesMode:=TSwitchMode(RB^.Value); Dispose(D, Done); UpdateMode; UpdateTarget; end; procedure TIDEApp.DoCompilerSwitch; var R,R2,R3,TabR,TabIR: TRect; D: PCenterDialog; CB1,CB2,CB3,CB4,CB5: PCheckBoxes; RB1,{RB2,}RB3,RB4,RB5,RB6: PRadioButtons; Items: PSItem; IL: PEditorInputLine; Count : integer; I,L: longint; Tab: PTab; Label11,{Label12,} Label21,Label22,Label23, Label31,Label41, Label51,Label52,Label53: PLabel; begin R.Assign(0,0,72,18); New(D, Init(R, dialog_compilerswitches)); with D^ do begin HelpCtx:=hcCompilerNoAltX; GetExtent(R); R.Grow(-2,-1); Dec(R.B.Y,2); TabR.Copy(R); TabIR.Copy(R); Inc(TabIR.A.Y,2); TabIR.Grow(0,-1); { --- Sheet 1 --- } Count:=SyntaxSwitches^.ItemCount; R.Copy(TabIR); R2.Copy(R); { R2.B.X:=(R2.A.X+(R2.B.X-R2.A.X) div 2)-2;} R2.B.X:=R2.B.X-4; R2.B.Y:=R2.A.Y+((Count+1) div 2); Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(SyntaxSwitches^.ItemName(I), Items); New(CB1, Init(R2, Items)); for I:=0 to Count-1 do if SyntaxSwitches^.GetBooleanItem(I) then CB1^.Press(I); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label11, Init(R2, label_compiler_syntaxswitches, CB1)); { --- Sheet 2 --- } Count:=CodegenSwitches^.ItemCount; R2.Copy(TabIR); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2-2; R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(CodegenSwitches^.ItemName(I), Items); New(CB3, Init(R2, Items)); for I:=0 to Count-1 do if CodegenSwitches^.GetBooleanItem(I) then CB3^.Press(I); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label21, Init(R2, label_compiler_runtimechecks, CB3)); Count:=OptimizingGoalSwitches^.ItemCount; R2.Copy(TabIR); R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2; Dec(R2.B.X,4); R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(OptimizingGoalSwitches^.ItemName(I), Items); New(RB3, Init(R2, Items)); L:=OptimizingGoalSwitches^.GetCurrSel; RB3^.SetData(L); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label22, Init(R2, label_compiler_optimizations, RB3)); Count:=OptimizationSwitches^.ItemCount; R2.Copy(TabIR); R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2; Dec(R2.B.X,4); Inc(R2.A.Y, OptimizingGoalSwitches^.ItemCount); R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(OptimizationSwitches^.ItemName(I), Items); New(CB2, Init(R2, Items)); for I:=0 to Count-1 do if OptimizationSwitches^.GetBooleanItem(I) then CB2^.Press(I); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; Count:=ProcessorSwitches^.ItemCount; R2.Copy(TabIR); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2-2; Inc(R2.A.Y,CodegenSwitches^.ItemCount+2); R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(ProcessorSwitches^.ItemName(I), Items); New(RB1, Init(R2, Items)); L:=ProcessorSwitches^.GetCurrSel; RB1^.SetData(L); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label23, Init(R2, label_compiler_targetprocessor, RB1)); { --- Sheet 3 --- } Count:=VerboseSwitches^.ItemCount; R.Copy(TabIR); R2.Copy(R); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2; R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(VerboseSwitches^.ItemName(I), Items); New(CB4, Init(R2, Items)); for I:=0 to Count-1 do if VerboseSwitches^.GetBooleanItem(I) then CB4^.Press(I); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label31, Init(R2, label_compiler_verboseswitches, CB4)); { --- Sheet 4 --- } Count:=BrowserSwitches^.ItemCount; R.Copy(TabIR); R2.Copy(R); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2; R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(BrowserSwitches^.ItemName(I), Items); New(RB4, Init(R2, Items)); L:=BrowserSwitches^.GetCurrSel; RB4^.SetData(L); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label41, Init(R2, label_compiler_browser, RB4)); { --- Sheet 5 --- } Count:=AsmReaderSwitches^.ItemCount; R2.Copy(TabIR); R2.B.X:=R2.B.X-(R2.B.X-R2.A.X) div 2; Dec(R2.B.X,4); R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(AsmReaderSwitches^.ItemName(I), Items); New(RB5, Init(R2, Items)); L:=AsmReaderSwitches^.GetCurrSel; RB5^.SetData(L); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label51, Init(R2, label_compiler_assemblerreader, RB5)); R2.Copy(TabIR); R2.B.X:=R2.B.X-(R2.B.X-R2.A.X) div 2; Dec(R2.B.X,4); R2.A.Y:=R2.A.Y+Count+2; Count:=AsmInfoSwitches^.ItemCount; R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(AsmInfoSwitches^.ItemName(I), Items); New(CB5, Init(R2, Items)); for I:=0 to Count-1 do if AsmInfoSwitches^.GetBooleanItem(I) then CB5^.Press(I); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label52, Init(R2, label_compiler_assemblerinfo, CB5)); Count:=AsmOutputSwitches^.ItemCount; R2.Copy(TabIR); R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2; Dec(R2.B.X,4); R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(AsmOutputSwitches^.ItemName(I), Items); New(RB6, Init(R2, Items)); L:=AsmOutputSwitches^.GetCurrSel; RB6^.SetData(L); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; New(Label53, Init(R2, label_compiler_assembleroutput, RB6)); { create tabs } New(Tab, Init(TabR, NewTabDef(page_compiler_syntax,CB1, NewTabItem(Label11, NewTabItem(CB1, nil)), NewTabDef(page_compiler_codegeneration,CB3, NewTabItem(Label21, NewTabItem(CB3, NewTabItem(Label22, NewTabItem(CB2, NewTabItem(Label23, NewTabItem(RB3, NewTabItem(RB1, nil))))))), NewTabDef(page_compiler_verbose,CB4, NewTabItem(Label31, NewTabItem(CB4, nil)), NewTabDef(page_compiler_browser,RB4, NewTabItem(Label41, NewTabItem(RB4, nil)), NewTabDef(page_compiler_assembler,CB1, NewTabItem(Label51, NewTabItem(RB5, NewTabItem(Label52, NewTabItem(CB5, NewTabItem(Label53, NewTabItem(RB6, nil)))))), nil))))))); Tab^.GrowMode:=0; Insert(Tab); { conditionnals } R2.Copy(TabR); R2.A.Y:=R2.B.Y+1; R2.B.Y:=R2.A.Y+1; Dec(R2.B.X,4); New(IL, Init(R2, 128)); IL^.Data^:=ConditionalSwitches^.GetStringItem(0); Insert(IL); R3.Copy(R2); R3.A.X:=R2.B.X+1; R3.B.X:=R3.A.X+3; Insert(New(PHistory, Init(R3, IL, hidConditionalDefines))); R2.Move(0,-1); Insert(New(PLabel, Init(R2,ConditionalSwitches^.ItemName(0), IL))); end; InsertButtons(D); if Desktop^.ExecView(D)=cmOK then begin for I:=0 to SyntaxSwitches^.ItemCount-1 do SyntaxSwitches^.SetBooleanItem(I,CB1^.Mark(I)); for I:=0 to CodeGenSwitches^.ItemCount-1 do CodegenSwitches^.SetBooleanItem(I,CB3^.Mark(I)); for I:=0 to OptimizationSwitches^.ItemCount-1 do OptimizationSwitches^.SetBooleanItem(I,CB2^.Mark(I)); for I:=0 to VerboseSwitches^.ItemCount-1 do VerboseSwitches^.SetBooleanItem(I,CB4^.Mark(I)); OptimizingGoalSwitches^.SetCurrSel(RB3^.Value); ProcessorSwitches^.SetCurrSel(RB1^.Value); AsmReaderSwitches^.SetCurrSel(RB5^.Value); for I:=0 to AsmInfoSwitches^.ItemCount-1 do AsmInfoSwitches^.SetBooleanItem(I,CB5^.Mark(I)); AsmOutputSwitches^.SetCurrSel(RB6^.Value); BrowserSwitches^.SetCurrSel(RB4^.Value); ConditionalSwitches^.SetStringItem(0,IL^.Data^); end; Dispose(D, Done); end; procedure TIDEApp.MemorySizes; var R,R2,R3: TRect; D: PCenterDialog; ILs: array[0..10] of PIntegerLine; I: integer; begin R.Assign(0,0,40,2+MemorySwitches^.ItemCount*2); New(D, Init(R, dialog_memorysizes)); with D^ do begin HelpCtx:=hcmemorysizes; GetExtent(R); R.Grow(-3,-1); R2.Copy(R); Inc(R2.A.Y); R2.B.Y:=R2.A.Y+1; for I:=0 to MemorySwitches^.ItemCount-1 do begin R3.Copy(R2); R3.A.X:=21; R3.B.X:=R3.A.X+10; New(ILs[I], Init(R3, MinMemSize, MaxMemSize)); ILs[I]^.Data^:=IntToStr(MemorySwitches^.GetLongintItem(I)); Insert(ILs[I]); R3.Copy(R2); R3.B.X:=21; Insert(New(PLabel, Init(R3, MemorySwitches^.ItemName(I), ILs[I]))); R2.Move(0,2); end; { R3.Copy(R2); R3.A.X:=21; R3.B.X:=R3.A.X+10; New(IL2, Init(R3, MinHeapSize, MaxHeapSize)); IL2^.Data^:=IntToStr(GetHeapSize); Insert(IL2); R3.Copy(R2); R3.B.X:=21; Insert(New(PLabel, Init(R3, 'Local ~h~eap size', IL2)));} end; InsertButtons(D); ILs[0]^.Select; if Desktop^.ExecView(D)=cmOK then begin for I:=0 to MemorySwitches^.ItemCount-1 do begin MemorySwitches^.SetLongintItem(I,StrToInt(ILs[I]^.Data^)); end; { SetStackSize(StrToInt(IL1^.Data^)); SetHeapSize(StrToInt(IL2^.Data^));} end; Dispose(D, Done); end; procedure TIDEApp.DoLinkerSwitch; var R,R2: TRect; D: PCenterDialog; RB2: PRadioButtons; CB,CB2 : PCheckBoxes; Count,I: longint; Items: PSItem; L: longint; begin R.Assign(0,0,66,8); New(D, Init(R, dialog_linker)); with D^ do begin HelpCtx:=hclinker; GetExtent(R); R.Grow(-3,-1); Count:=LinkAfterSwitches^.ItemCount; R2.Copy(R); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2 - 1; Inc(R2.A.Y,1); R2.B.Y:=R2.A.Y+Count; Items:=nil; for I:=Count-1 downto 0 do Items:=NewSItem(LinkAfterSwitches^.ItemName(I), Items); New(CB, Init(R2, Items)); for I:=0 to Count-1 do if LinkAfterSwitches^.GetBooleanItem(I) then CB^.Press(I); Insert(CB); Dec(R2.A.Y); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_compiler_linkafter, CB))); R2.Copy(R); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2 - 1; Inc(R2.A.Y,Count+2); R2.B.Y:=R2.A.Y+1; Items:=NewSItem(OtherLinkerSwitches^.ItemName(1), Nil); New(CB2, Init(R2, Items)); if OtherLinkerSwitches^.GetBooleanItem(1) then CB2^.Press(0); Insert(CB2); R2.Copy(R); Inc(R2.A.Y); R2.B.Y:=R2.A.Y+LibLinkerSwitches^.ItemCount; R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2+1; Items:=nil; for I:=LibLinkerSwitches^.ItemCount-1 downto 0 do Items:=NewSItem(LibLinkerSwitches^.ItemName(I), Items); New(RB2, Init(R2, Items)); L:=LibLinkerSwitches^.GetCurrSel; RB2^.SetData(L); Insert(RB2); R2.Copy(R); R2.B.Y:=R2.A.Y+1; R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2+1; Insert(New(PLabel, Init(R2, label_linker_preferredlibtype, RB2))); end; InsertButtons(D); RB2^.Select; if Desktop^.ExecView(D)=cmOK then begin { SetEXEFormat(TEXEFormat(RB1^.Value+1));} LibLinkerSwitches^.SetCurrSel(RB2^.Value); OtherLinkerSwitches^.SetBooleanItem(1,CB2^.Mark(0)); if LibLinkerSwitches^.GetCurrSelParam='X' then if CompareText(TargetSwitches^.GetCurrSelParam,'win32')=0 then if CompareText(AsmOutputSwitches^.GetCurrSelParam,'pecoff')<>0 then if ConfirmBox( FormatStrStr3(msg_xmustbesettoyforz_doyouwanttochangethis, label_compiler_assembleroutput,'pecoff','smartlinking'),nil,false)=cmYes then AsmOutputSwitches^.SetCurrSelParam('pecoff'); for I:=0 to LinkAfterSwitches^.ItemCount-1 do LinkAfterSwitches^.SetBooleanItem(I,CB^.Mark(I)); end; Dispose(D, Done); end; procedure TIDEApp.DoDebuggerSwitch; var R,R2,R3: TRect; D: PCenterDialog; RB,RB2 : PRadioButtons; CBStrip: PCheckBoxes; {$ifdef win32} CB2: PCheckBoxes; {$endif win32} {$ifdef Unix} IL: PEditorInputLine; {$endif Unix} IL2: PEditorInputLine; L,I: longint; Items: PSItem; const {$ifdef win32} OtherFieldLines = 3; {$else not win32} {$ifdef Unix} OtherFieldLines = 3; {$else not Unix} OtherFieldLines = 0; {$endif Unix} {$endif win32} begin R.Assign(0,0,60,2+DebugInfoSwitches^.ItemCount+1+2 +ProfileInfoSwitches^.ItemCount+2+2+1+OtherFieldLines); New(D, Init(R, dialog_debugger)); with D^ do begin HelpCtx:=hcdebugger; { Strip all } GetExtent(R); R.Grow(-3,-1); R2.Copy(R); Inc(R2.A.Y,2); R2.B.Y:=R2.A.Y+1; Items:=NewSItem(OtherLinkerSwitches^.ItemName(0), Nil); New(CBStrip, Init(R2, Items)); if OtherLinkerSwitches^.GetBooleanItem(0) then CBStrip^.Press(0); Insert(CBStrip); GetExtent(R); R.Grow(-3,-1); R2.Copy(R); Inc(R2.A.Y,3); R2.B.Y:=R2.A.Y+DebugInfoSwitches^.ItemCount; Items:=nil; for I:=DebugInfoSwitches^.ItemCount-1 downto 0 do Items:=NewSItem(DebugInfoSwitches^.ItemName(I), Items); New(RB, Init(R2, Items)); L:=DebugInfoSwitches^.GetCurrSel; RB^.SetData(L); Insert(RB); R2.Copy(R); Inc(R2.A.Y); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_debugger_debuginfo, RB))); R2.Copy(R); Inc(R2.A.Y,3+DebugInfoSwitches^.ItemCount+2); R2.B.Y:=R2.A.Y+ProfileInfoSwitches^.ItemCount; Items:=nil; for I:=ProfileInfoSwitches^.ItemCount-1 downto 0 do Items:=NewSItem(ProfileInfoSwitches^.ItemName(I), Items); New(RB2, Init(R2, Items)); L:=ProfileInfoSwitches^.GetCurrSel; RB2^.SetData(L); Insert(RB2); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_debugger_profileswitches, RB2))); {custom } Inc(R2.A.Y,2+ProfileInfoSwitches^.ItemCount+1); R2.B.Y:=R2.A.Y+1; R3.Copy(R2); Dec(R3.B.X,4); New(IL2, Init(R3, 255)); IL2^.Data^:=CustomArg[SwitchesMode]; Insert(IL2); R3.Copy(R2); R3.A.X:=R3.B.X-3; R3.B.X:=R3.A.X+3; Insert(New(PHistory, Init(R3, IL2, hidCompilerArgs))); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_debugger_compilerargs, IL2))); {$ifdef win32} R2.Move(0,4); New(CB2,Init(R2,NewSItem(label_debugger_useanotherconsole, nil))); Insert(CB2); if DebuggeeTTY<>'' then L:=1 else L:=0; CB2^.SetData(L); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_debugger_redirection, CB2))); {$endif win32} {$ifdef Unix} R2.Move(0,4); New(IL, Init(R2, 255)); IL^.Data^:=DebuggeeTTY; Insert(IL); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_debugger_useanothertty, IL))); {$endif win32} end; InsertButtons(D); RB^.Select; if Desktop^.ExecView(D)=cmOK then begin DebugInfoSwitches^.SetCurrSel(RB^.Value); ProfileInfoSwitches^.SetCurrSel(RB2^.Value); OtherLinkerSwitches^.SetBooleanItem(0,CBStrip^.Mark(0)); CustomArg[SwitchesMode]:=IL2^.Data^; {$ifdef win32} if CB2^.value<>0 then DebuggeeTTY:='on' else DebuggeeTTY:=''; {$endif win32} {$ifdef Unix} DebuggeeTTY:=IL^.Data^; {$endif Unix} end; Dispose(D, Done); end; {$ifdef SUPPORT_REMOTE} procedure TIDEApp.DoRemote; var R,R2: TRect; IL1,IL2,IL3,IL4,IL5,IL6: PEditorInputLine; D: PCenterDialog; const FieldLines = 6; begin { RemoteMachine : string = ''; RemotePort : string = '2345'; RemoteConfig : string = ''; RemoteIdent : string = ''; RemoteDir : string = ''; RemoteSendCommand : string = 'scp $CONFIG $IDENT $LOCALFILE $REMOTEMACHINE:$REMOTEDIR'; } R.Assign(0,0,60,2+2*FieldLines+2); New(D, Init(R, dialog_remote)); with D^ do begin HelpCtx:=hcremotedialog; GetExtent(R); R.Grow(-3,-1); R2.Copy(R); R2.B.Y:=R2.A.Y+1; { remote machine name } R2.Move(0,3); New(IL1, Init(R2, 255)); IL1^.Data^:=RemoteMachine; Insert(IL1); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_remote_machine, IL1))); { remote machine port } R2.Move(0,3); New(IL2, Init(R2, 255)); IL2^.Data^:=RemotePort; Insert(IL2); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_remote_port, IL2))); { remote machine dir } R2.Move(0,3); New(IL3, Init(R2, 255)); IL3^.Data^:=RemoteDir; Insert(IL3); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_remote_dir, IL3))); { remote machine config } R2.Move(0,3); New(IL4, Init(R2, 255)); IL4^.Data^:=RemoteConfig; Insert(IL4); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_remote_config, IL4))); { remote machine ident } R2.Move(0,3); New(IL5, Init(R2, 255)); IL5^.Data^:=RemoteIdent; Insert(IL5); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_remote_ident, IL5))); { remote machine command } R2.Move(0,3); New(IL6, Init(R2, 255)); IL6^.Data^:=RemoteSendCommand; Insert(IL6); R2.Move(0,-1); Insert(New(PLabel, Init(R2,label_remote_command, IL6))); end; InsertButtons(D); if Desktop^.ExecView(D)=cmOK then begin RemoteMachine:=IL1^.Data^; RemotePort:=IL2^.Data^; RemoteDir:=IL3^.Data^; RemoteConfig:=IL4^.Data^; RemoteIdent:=IL5^.Data^; RemoteSendCommand:=IL6^.Data^; end; Dispose(D, Done); end; {$endif SUPPORT_REMOTE} procedure TIDEApp.Directories; var R,R2: TRect; D: PCenterDialog; IL : array[0..11] of PEditorInputLine; Count,I : integer; const LW = 25; begin Count:=DirectorySwitches^.ItemCount; R.Assign(0,0,round(ScreenWidth*64/80),2+Count*2); New(D, Init(R, dialog_directories)); with D^ do begin HelpCtx:=hcdirectories; GetExtent(R); R.Grow(-2,-2); Dec(R.B.X); R.B.Y:=R.A.Y+1; for i:=Count-1 downto 0 do begin R2.Copy(R); R2.A.X:=LW; New(IL[i], Init(R2, 255)); IL[i]^.Data^:=DirectorySwitches^.GetStringItem(i); Insert(IL[i]); R2.Copy(R); R2.B.X:=LW; Insert(New(PLabel, Init(R2, DirectorySwitches^.ItemName(i), IL[i]))); R.Move(0,2); end; end; InsertButtons(D); IL[Count-1]^.Select; if Desktop^.ExecView(D)=cmOK then begin for i:=Count-1 downto 0 do DirectorySwitches^.SetStringItem(i,IL[i]^.Data^); end; Dispose(D, Done); end; procedure TIDEApp.Tools; var D : PToolsDialog; begin D:=New(PToolsDialog, Init); ExecuteDialog(D,nil); end; (*procedure TIDEApp.Preferences; var R,R2: TRect; D: PCenterDialog; RB1 : PRadioButtons; CountModes : integer; hp : pvideomodelist; items : PSItem; videomode : tvideomode; i,modevalue : longint; function ToStr(l : longint) : string; var s : string; begin str(l,s); ToStr:=s; end; const color2str : array[false..true] of string = ('in b/w','in color'); begin GetVideoMode(videomode); CountModes:=0; i:=0; modevalue:=0; R.Assign(0,0,64,18); New(D, Init(R, 'Preferences')); with D^ do begin hp:=video.modes; items:=nil; r2.assign(2,3,24,17); while assigned(hp) do begin items:=NewSItem(ToStr(hp^.col)+'x'+ToStr(hp^.row)+' '+color2str[hp^.color],items); if (hp^.col=videomode.col) and (hp^.row=videomode.row) and (hp^.color=videomode.color) then modevalue:=i; inc(CountModes); { we can't display an infinite number of modes } if CountModes>=r.b.y-r.a.y+1 then break; inc(i); hp:=hp^.next; end; modevalue:=CountModes-modevalue-1; new(rb1,init(r2,items)); insert(rb1); rb1^.value:=modevalue; r2.move(0,-1);r2.b.y:=r2.a.y+1; insert(new(plabel,init(r2,'~V~ideo mode',rb1))); end; InsertButtons(D); if Desktop^.ExecView(D)=cmOK then begin { change video mode ? } if rb1^.value<>modevalue then begin modevalue:=CountModes-rb1^.value-1; hp:=video.modes; for i:=1 to modevalue do hp:=hp^.next; videomode.col:=hp^.col; videomode.row:=hp^.row; videomode.color:=hp^.color; SetScreenVideoMode(videomode); end; end; Dispose(D, Done); end;*) type PVideoModeCollection = ^TVideoModeCollection; TVideoModeCollection = object(TSortedCollection) function Compare(Key1, Key2: Pointer): Sw_Integer; virtual; procedure FreeItem(Item: Pointer); virtual; end; function TVideoModeCollection.Compare(Key1, Key2: Pointer): Sw_Integer; var R: Sw_integer; K1: PVideoMode absolute Key1; K2: PVideoMode absolute Key2; begin if K1^.ColK2^.Col then R:= 1 else if K1^.RowK2^.Row then R:= 1 else if (K1^.Color=false) and (K2^.Color=true ) then R:=-1 else if (K1^.Color=true ) and (K2^.Color=false) then R:= 1 else R:=0; Compare:=R; end; procedure TVideoModeCollection.FreeItem(Item: Pointer); begin FreeMem(Item,sizeof(TVideoMode)); end; procedure TIDEApp.Preferences; var R,R2: TRect; D: PCenterDialog; C: PVideoModeCollection; VMLB: PVideoModeListBox; OldScreenMode,VM: TVideoMode; ScreenModeInfo : array[1..3] of longint; CurVP,VP: PVideoMode; RB1: PPlainRadioButtons; CB1,CB2: PPlainCheckBoxes; CurIdx: integer; i : word; begin New(C, Init(10,50)); for i:=0 to GetVideoModeCount-1 do begin GetVideoModeData(i,VM); GetMem(VP,sizeof(TVideoMode)); Move(VM,VP^,sizeof(TVideoMode)); C^.Insert(VP); if (VM.Row=ScreenMode.Row) and (VM.Col=ScreenMode.Col) and (VM.Color=ScreenMode.Color) then CurVP:=VP; end; R.Assign(0,0,64,15); New(D, Init(R, dialog_preferences)); with D^ do begin HelpCtx:=hcpreferences; GetExtent(R); R.Grow(-2,-2); R.B.X:=R.A.X+(R.B.X-R.A.X) div 2 - 1; R.B.Y:=R.A.Y+3; R2.Copy(R); R2.Grow(-1,-1); New(VMLB, Init(R2, Min(4,C^.Count), C)); if CurVP=nil then CurIdx:=-1 else CurIdx:=C^.IndexOf(CurVP); if CurIdx<>-1 then VMLB^.FocusItem(CurIdx); Insert(New(PGroupView, Init(R, label_preferences_videomode, VMLB))); Insert(VMLB); R.Move(0,R.B.Y-R.A.Y{+1}); R.B.Y:=R.A.Y+4; R2.Copy(R); R2.Grow(-1,-1); New(RB1, Init(R2, NewSItem(label_preferences_currentdirectory, NewSItem(label_preferences_configdirectory, nil)))); RB1^.Press(DesktopLocation); Insert(New(PGroupView, Init(R, label_preferences_desktopfile, RB1))); Insert(RB1); R.Move(0,R.B.Y-R.A.Y{+1}); R.B.Y:=R.A.Y+5; R2.Copy(R); R2.Grow(-1,-1); New(CB1, Init(R2, NewSItem(label_preferences_editorfiles, NewSItem(label_preferences_environment, NewSItem(label_preferences_desktop, nil))))); CB1^.Value:=AutoSaveOptions; Insert(New(PGroupView, Init(R, label_preferences_autosave, CB1))); Insert(CB1); GetExtent(R); R.Grow(-2,-2); R.A.X:=R.B.X-(R.B.X-R.A.X) div 2 + 1; R.B.Y:=R.A.Y+7; R.Move(0,R.B.Y-R.A.Y{+1}); R.B.Y:=R.A.Y+5; R2.Copy(R); R2.Grow(-1,-1); New(CB2, Init(R2, NewSItem(label_preferences_autotracksource, NewSItem(label_preferences_closeongotosource, NewSItem(label_preferences_changedironopen, nil))))); CB2^.Value:=MiscOptions; Insert(New(PGroupView, Init(R, label_preferences_options, CB2))); Insert(CB2); end; InsertButtons(D); if Desktop^.ExecView(D)=cmOK then begin if (C^.count>0) then begin with PVideoMode(C^.At(VMLB^.Focused))^ do begin VM.Col:=Col; VM.Row:=Row; VM.Color:=Color; end; if (VM.Col<>ScreenMode.Col) or (VM.Row<>ScreenMode.Row) or (VM.Color<>ScreenMode.Color) then Begin OldScreenMode:=ScreenMode; SetScreenVideoMode(VM); if (VM.Col<>ScreenMode.Col) or (VM.Row<>ScreenMode.Row) or (VM.Color<>ScreenMode.Color) then begin SetScreenVideoMode(OldScreenMode); ScreenModeInfo[1]:=VM.col; ScreenModeInfo[2]:=VM.row; ScreenModeInfo[3]:=byte(VM.color); ErrorBox(msg_cantsetscreenmode,@ScreenModeInfo); end; End; end; AutoSaveOptions:=CB1^.Value; MiscOptions:=CB2^.Value; DesktopLocation:=RB1^.Value; end; Dispose(D, Done); Dispose(C, Done); end; procedure TIDEApp.EditorOptions(Editor: PEditor); var D: PCenterDialog; R,R2,R3: TRect; CB: PCheckBoxes; ILTab,ILIdent: PIntegerLine; ExtIL,TabExtIL: PEditorInputLine; TabSize,IndentSize: Integer; EFlags,EFValue: Longint; Title: string; begin if Editor=nil then begin TabSize:=DefaultTabSize; EFlags:=DefaultCodeEditorFlags; IndentSize:=DefaultIndentSize; Title:=dialog_defaulteditoroptions; end else begin TabSize:=Editor^.GetTabSize; EFlags:=Editor^.GetFlags; IndentSize:=Editor^.GetIndentSize; Title:=dialog_editoroptions; end; EFValue:=0; if (EFlags and efBackupFiles )<>0 then EFValue:=EFValue or (1 shl 0); if (EFlags and efInsertMode )<>0 then EFValue:=EFValue or (1 shl 1); if (EFlags and efAutoIndent )<>0 then EFValue:=EFValue or (1 shl 2); if (EFlags and efUseTabCharacters )<>0 then EFValue:=EFValue or (1 shl 3); if (EFlags and efBackSpaceUnindents)<>0 then EFValue:=EFValue or (1 shl 4); if (EFlags and efPersistentBlocks )<>0 then EFValue:=EFValue or (1 shl 5); if (EFlags and efSyntaxHighlight )<>0 then EFValue:=EFValue or (1 shl 6); if (EFlags and efBlockInsCursor )<>0 then EFValue:=EFValue or (1 shl 7); if (EFlags and efVerticalBlocks )<>0 then EFValue:=EFValue or (1 shl 8); if (EFlags and efHighlightColumn )<>0 then EFValue:=EFValue or (1 shl 9); if (EFlags and efHighlightRow )<>0 then EFValue:=EFValue or (1 shl 10); if (EFlags and efAutoBrackets )<>0 then EFValue:=EFValue or (1 shl 11); if (EFlags and efKeepTrailingSpaces)<>0 then EFValue:=EFValue or (1 shl 12); if (EFlags and efCodeComplete )<>0 then EFValue:=EFValue or (1 shl 13); if (EFlags and efFolds )<>0 then EFValue:=EFValue or (1 shl 14); R.Assign(0,0,66,20); New(D, Init(R, Title)); with D^ do begin HelpCtx:=hcEditor; GetExtent(R); R.Grow(-2,-2); R.B.Y:=R.A.Y+9; R2.Copy(R); Inc(R2.A.Y); New(CB, Init(R2, NewSItem(label_editor_backupfiles, NewSItem(label_editor_insertmode, NewSItem(label_editor_autoindentmode, NewSItem(label_editor_usetabcharacters, NewSItem(label_editor_backspaceunindents, NewSItem(label_editor_persistentblocks, NewSItem(label_editor_syntaxhighlight, NewSItem(label_editor_blockinsertcursor, NewSItem(label_editor_verticalblocks, NewSItem(label_editor_highlightcolumn, NewSItem(label_editor_highlightrow, NewSItem(label_editor_autoclosingbrackets, NewSItem(label_editor_keeptrailingspaces, NewSItem(label_editor_codecomplete, NewSItem(label_editor_folds, nil))))))))))))))))); CB^.Value:=EFValue; Insert(CB); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_editor_editoroptions, CB))); R.Move(0,(R.B.Y-R.A.Y)+1); R.B.Y:=R.A.Y+1; R2.Copy(R); Inc(R2.A.Y); R2.B.Y:=R2.A.Y; R3.Copy(R); Inc(R3.A.X,10); R3.B.X:=R3.A.X+5; New(ILTab, Init(R3, 0,100)); ILTab^.Data^:=IntToStr(TabSize); Insert(ILTab); R3.Copy(R); R3.B.X:=R3.A.X+10; Insert(New(PLabel, Init(R3, label_editor_tabsize, ILTab))); R3.Copy(R); Inc(R3.A.X,40); R3.B.X:=R3.A.X+5; New(ILIdent, Init(R3, 0,100)); ILIdent^.Data^:=IntToStr(IndentSize); Insert(ILIdent); R3.Copy(R); Inc(R3.A.X,28); R3.B.X:=R3.A.X+12; Insert(New(PLabel, Init(R3, label_editor_IndentSize, ILIdent))); R.Move(0,(R.B.Y-R.A.Y)+1); R.B.Y:=R.A.Y+2; R2.Copy(R); Inc(R2.A.Y); New(ExtIL, Init(R2, 128)); ExtIL^.SetData(HighlightExts); Insert(ExtIL); R2.Move(0,-1); Insert(New(PLabel, Init(R2, label_editor_highlightextensions, ExtIL))); R.Move(0,(R.B.Y-R.A.Y)+1); R.B.Y:=R.A.Y+2; R2.Copy(R); Inc(R2.A.Y); New(TabExtIL, Init(R2, 128)); TabExtIL^.SetData(TabsPattern); Insert(TabExtIL); R2.Move(0,-1); Insert(New(PLabel, Init(R2, label_editor_filepatternsneedingtabs, TabExtIL))); end; InsertButtons(D); CB^.Select; if Desktop^.ExecView(D)=cmOK then begin EFlags:=0; if (CB^.Value and (1 shl 0))<>0 then EFlags:=EFlags or efBackupFiles; if (CB^.Value and (1 shl 1))<>0 then EFlags:=EFlags or efInsertMode; if (CB^.Value and (1 shl 2))<>0 then EFlags:=EFlags or efAutoIndent; if (CB^.Value and (1 shl 3))<>0 then EFlags:=EFlags or efUseTabCharacters; if (CB^.Value and (1 shl 4))<>0 then EFlags:=EFlags or efBackSpaceUnindents; if (CB^.Value and (1 shl 5))<>0 then EFlags:=EFlags or efPersistentBlocks; if (CB^.Value and (1 shl 6))<>0 then EFlags:=EFlags or efSyntaxHighlight; if (CB^.Value and (1 shl 7))<>0 then EFlags:=EFlags or efBlockInsCursor; if (CB^.Value and (1 shl 8))<>0 then EFlags:=EFlags or efVerticalBlocks; if (CB^.Value and (1 shl 9))<>0 then EFlags:=EFlags or efHighlightColumn; if (CB^.Value and (1 shl 10))<>0 then EFlags:=EFlags or efHighlightRow; if (CB^.Value and (1 shl 11))<>0 then EFlags:=EFlags or efAutoBrackets; if (CB^.Value and (1 shl 12))<>0 then EFlags:=EFlags or efKeepTrailingSpaces; if (CB^.Value and (1 shl 13))<>0 then EFlags:=EFlags or efCodeComplete; if (CB^.Value and (1 shl 14))<>0 then EFlags:=EFlags or efFolds; TabSize:=StrToInt(ILTab^.Data^); IndentSize:=StrToInt(ILIdent^.Data^); if Editor=nil then begin DefaultTabSize:=TabSize; DefaultIndentSize:=IndentSize; DefaultCodeEditorFlags:=EFlags; end else begin Editor^.SetIndentSize(IndentSize); Editor^.SetTabSize(TabSize); Editor^.SetFlags(EFlags); end; ExtIL^.GetData(HighlightExts); TabExtIL^.GetData(TabsPattern); end; Dispose(D, Done); end; procedure TIDEApp.CodeComplete; var D : PCodeCompleteDialog; begin D:=New(PCodeCompleteDialog, Init); ExecuteDialog(D,nil); end; procedure TIDEApp.CodeTemplates; begin ExecuteDialog(New(PCodeTemplatesDialog, Init(false,'')),nil); end; procedure TIDEApp.BrowserOptions(Browser: PBrowserWindow); var D: PCenterDialog; R,R2,R3 : TRect; TitleS: string; CB1,CB2: PCheckBoxes; RB1,RB2: PRadioButtons; begin if Browser=nil then TitleS:=dialog_browseroptions else TitleS:=dialog_localbrowseroptions; R.Assign(0,0,56,15); New(D, Init(R, TitleS)); with D^ do begin HelpCtx:=hcBrowser; GetExtent(R); R.Grow(-2,-2); R.B.Y:=R.A.Y+1+3; R2.Copy(R); Inc(R2.A.Y); New(CB1, Init(R2, NewSItem(RExpand(label_browser_labels,21+2), NewSItem(label_browser_constants, NewSItem(label_browser_types, NewSItem(label_browser_variables, NewSItem(label_browser_procedures, NewSItem(label_browser_inherited, nil))))))) ); Insert(CB1); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_browser_symbols, CB1))); R.Move(0,R.B.Y-R.A.Y+1); R.B.Y:=R.A.Y+1+2; R2.Copy(R); R3.Copy(R2); R3.B.X:=R3.A.X+(R3.B.X-R3.A.X) div 2-1; Inc(R3.A.Y); New(RB1, Init(R3, NewSItem(label_browser_newbrowser, NewSItem(label_browser_currentbrowser, nil))) ); Insert(RB1); R3.Move(0,-1); R3.B.Y:=R3.A.Y+1; Insert(New(PLabel, Init(R3, label_browser_subbrowsing, RB1))); R3.Copy(R2); R3.A.X:=R3.B.X-(R3.B.X-R3.A.X) div 2+1; Inc(R3.A.Y); New(RB2, Init(R3, NewSItem(label_browser_scope, NewSItem(label_browser_reference, nil))) ); Insert(RB2); R3.Move(0,-1); R3.B.Y:=R3.A.Y+1; Insert(New(PLabel, Init(R3, label_browser_preferredpane, RB2))); R.Move(0,R.B.Y-R.A.Y+1); R.B.Y:=R.A.Y+1+1; R2.Copy(R); Inc(R2.A.Y); New(CB2, Init(R2, NewSItem(RExpand(label_browser_qualifiedsymbols,21+2), NewSItem(label_browser_sortsymbols, nil))) ); Insert(CB2); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_browser_display, CB2))); end; InsertButtons(D); CB1^.Select; if Desktop^.ExecView(D)=cmOK then begin end; Dispose(D, Done); end; procedure TIDEApp.Startup; begin NotImplemented; end; procedure TIDEApp.DesktopOptions; var R: TRect; D: PCenterDialog; CB: PCheckBoxes; begin R.Assign(0,0,40,12); New(D, Init(R, dialog_desktoppreferences)); with D^ do begin HelpCtx:=hcDesktopOptions; GetExtent(R); R.Grow(-2,-2); Inc(R.A.Y); R.B.Y:=R.A.Y+8; New(CB, Init(R, NewSItem(label_desktop_historylists, NewSItem(label_desktop_clipboard, NewSItem(label_desktop_watches, NewSItem(label_desktop_breakpoints, NewSItem(label_desktop_openwindow, NewSItem(label_desktop_symbolinfo, NewSItem(label_desktop_codecompletewords, NewSItem(label_desktop_codetemplates, nil)))))))))); CB^.Value:=DesktopFileFlags; Insert(CB); R.Move(0,-1); R.B.Y:=R.A.Y+1; Insert(New(PLabel, Init(R, label_desktop_preservedacrosssessions, CB))); end; InsertButtons(D); CB^.Select; if Desktop^.ExecView(D)=cmOK then begin DesktopFileFlags:=CB^.Value; end; Dispose(D, Done); end; procedure TIDEApp.Mouse; var R,R2: TRect; D: PCenterDialog; SB: PScrollBar; CB: PCheckBoxes; RB1,RB2: PRadioButtons; begin R.Assign(0,0,62,15); New(D, Init(R, dialog_mouseoptions)); with D^ do begin HelpCtx:=hcMouse; GetExtent(R); R.Grow(-3,-2); R.B.Y:=R.A.Y+3; R2.Copy(R); Inc(R2.A.Y,2); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2 -1; New(SB, Init(R2)); SB^.GrowMode:=0; SB^.Options:=SB^.Options or ofSelectable; SB^.SetParams(DoubleDelay,1,20,1,1); Insert(SB); R2.Move(0,-1); Insert(New(PStaticText, Init(R2, label_mouse_speedbar))); R2.Move(-1,-1); Insert(New(PLabel, Init(R2, label_mouse_doubleclickspeed, SB))); R2.Copy(R); Inc(R2.A.Y,2); R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2 +1; New(CB, Init(R2, NewSItem(label_mouse_reversebuttons, nil) )); if MouseReverse then CB^.Press(0); Insert(CB); R.Move(0,(R.B.Y-R.A.Y)+1); R.B.Y:=R.A.Y+8; R2.Copy(R); Inc(R2.A.Y); R2.B.X:=R2.A.X+(R2.B.X-R2.A.X) div 2 -1; New(RB1, Init(R2, NewSItem(label_mouse_act_nothing, NewSItem(label_mouse_act_topicsearch, NewSItem(label_mouse_act_gotocursor, NewSItem(label_mouse_act_breakpoint, NewSItem(label_mouse_act_evaluate, NewSItem(label_mouse_act_addwatch, NewSItem(label_mouse_act_browsesymbol, nil))))))))); RB1^.Press(CtrlMouseAction); Insert(RB1); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_mouse_crtlrightmousebuttonaction, RB1))); R2.Copy(R); Inc(R2.A.Y); R2.A.X:=R2.B.X-(R2.B.X-R2.A.X) div 2 +1; New(RB2, Init(R2, NewSItem(label_mouse_act_nothing, NewSItem(label_mouse_act_topicsearch, NewSItem(label_mouse_act_gotocursor, NewSItem(label_mouse_act_breakpoint, NewSItem(label_mouse_act_evaluate, NewSItem(label_mouse_act_addwatch, NewSItem(label_mouse_act_browsesymbol, nil))))))))); RB2^.Press(AltMouseAction); Insert(RB2); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Insert(New(PLabel, Init(R2, label_mouse_altrightmousebuttonaction, RB2))); end; InsertButtons(D); RB1^.Select; if Desktop^.ExecView(D)=cmOK then begin MouseReverse:=CB^.Mark(0); DoubleDelay:=SB^.Value; CtrlMouseAction:=RB1^.Value; AltMouseAction:=RB2^.Value; end; Dispose(D, Done); end; procedure TIDEApp.Colors; {$Ifdef FVISION} begin end; {$else FVISION} var D: PColorDialog; begin New(D, Init(AppPalette, ColorGroup(label_colors_grp_browser, ColorItem(label_colors_framepassive , 215, ColorItem(label_colors_frameactive , 216, ColorItem(label_colors_frameicon , 217, ColorItem(label_colors_scrollbarpage , 218, ColorItem(label_colors_scrollbaricons , 219, ColorItem(label_colors_normaltext , 220, ColorItem(label_colors_selectedtext , 221, ColorItem(label_colors_activeitem , 222, ColorItem(label_colors_inactiveitem , 223, ColorItem(label_colors_focuseditem , 224, ColorItem(label_colors_selecteditem , 225, ColorItem(label_colors_divider , 226, nil)))))))))))), ColorGroup(label_colors_grp_clock, ColorItem(label_colors_clockview , 227, nil), ColorGroup(label_colors_grp_desktop, DesktopColorItems(nil), ColorGroup(label_colors_grp_dialogs, DialogColorItems(dpGrayDialog,nil), ColorGroup(label_colors_grp_editor, ColorItem(label_colors_framepassive , 167, ColorItem(label_colors_frameactive , 168, ColorItem(label_colors_frameicon , 169, ColorItem(label_colors_scrollbarpage , 170, ColorItem(label_colors_scrollbaricons , 171, ColorItem(label_colors_normaltext , 199, ColorItem(label_colors_selectedtext , 208, ColorItem(label_colors_highlighcolumn , 209, ColorItem(label_colors_highlightrow , 210, ColorItem(label_colors_errormessages , 214, nil)))))))))), ColorGroup(label_colors_grp_help, ColorItem(label_colors_framepassive , 128, ColorItem(label_colors_frameactive , 129, ColorItem(label_colors_frameicon , 130, ColorItem(label_colors_scrollbarpage , 131, ColorItem(label_colors_scrollbaricons , 132, ColorItem(label_colors_helptext , 160, ColorItem(label_colors_helplinks , 161, ColorItem(label_colors_selectedlink , 162, ColorItem(label_colors_selectedtext , 163, ColorItem(label_colors_html_heading1 , 229, ColorItem(label_colors_html_heading2 , 230, ColorItem(label_colors_html_heading3 , 231, ColorItem(label_colors_html_heading4 , 232, ColorItem(label_colors_html_heading5 , 233, ColorItem(label_colors_html_heading6 , 234, nil))))))))))))))), ColorGroup(label_colors_grp_menus, MenuColorItems(nil), ColorGroup(label_colors_grp_syntax, ColorItem(label_colors_whitespace , 200, ColorItem(label_colors_comments , 201, ColorItem(label_colors_reservedwords , 202, ColorItem(label_colors_identifiers , 203, ColorItem(label_colors_strings , 204, ColorItem(label_colors_numbers , 205, ColorItem(label_colors_hexnumbers , 212, ColorItem(label_colors_assembler , 206, ColorItem(label_colors_symbols , 207, ColorItem(label_colors_directives , 211, ColorItem(label_colors_tabs , 213, nil))))))))))), nil)))))))))); D^.HelpCtx:=hcColors; if ExecuteDialog(D, @AppPalette)=cmOK then begin DoneMemory; Message(Application,evBroadcast,cmUpdate,nil); ReDraw; UpdateScreen(true); end; end; {$endif FVISION} procedure TIDEApp.OpenINI; var D: PFileDialog; FileName: string; begin New(D, Init('*'+ExtOf(INIFileName),dialog_openoptions,dialog_ini_filename,fdOpenButton,hidOpenIniFile)); D^.HelpCtx:=hcOpenIni; if Desktop^.ExecView(D)<>cmCancel then begin D^.GetFileName(FileName); if ExistsFile(FileName)=false then ErrorBox(msg_cantopenconfigfile,nil) else begin IniFileName:=FileName; ReadINIFile; Message(Application,evBroadcast,cmUpdate,nil); end; end; Dispose(D, Done); end; procedure TIDEApp.SaveINI; begin if WriteINIFile(false)=false then ErrorBox(msg_errorsavingconfigfile,nil); end; procedure TIDEApp.SaveAsINI; var D: PFileDialog; FileName: string; CanWrite: boolean; begin New(D, Init('*'+ExtOf(INIFileName),dialog_saveoptions,dialog_ini_filename,fdOpenButton,hidSaveIniFile)); D^.HelpCtx:=hcSaveAsINI; if Desktop^.ExecView(D)<>cmCancel then begin D^.GetFileName(FileName); CanWrite:=(ExistsFile(FileName)=false); if CanWrite=false then CanWrite:=ConfirmBox(FormatStrStr(msg_filealreadyexistsoverwrite,SmartPath(FileName)),nil,false)=cmYes; if CanWrite then begin IniFileName:=FileName; if WriteINIFile(true)=false then ErrorBox(msg_errorsavingconfigfile,nil); Message(Application,evBroadcast,cmUpdate,nil); end; end; Dispose(D, Done); end; { $Log$ Revision 1.11 2002-12-18 01:21:42 pierre + Use TEditorInputLine instead of TInputLine Revision 1.10 2002/11/28 12:56:23 pierre + Remote dialog added Revision 1.9 2002/11/21 00:37:56 pierre + some cross gdb enhancements Revision 1.8 2002/09/07 15:40:44 peter * old logs removed and tabs fixed Revision 1.7 2002/09/04 08:52:46 pierre * adapt to fpcodtmp interface change Revision 1.6 2002/01/24 09:21:42 pierre * only disable Alt-X in Options|Compiler dialog }