ProgramOptionsUnit.pas 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. unit ProgramOptionsUnit;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5. StdCtrls, ExtCtrls, ComCtrls;
  6. type
  7. TProgramOptionsForm = class(TForm)
  8. CloseButton: TButton;
  9. PageController: TPageControl;
  10. CalculatorSheet: TTabSheet;
  11. Label2: TLabel;
  12. TI89CheckBox: TCheckBox;
  13. TI92PlusCheckBox: TCheckBox;
  14. V200CheckBox: TCheckBox;
  15. Label5: TLabel;
  16. OSSheet: TTabSheet;
  17. Label3: TLabel;
  18. NoStubRadioButton: TRadioButton;
  19. DoorsRadioButton: TRadioButton;
  20. PreOSRadioButton: TRadioButton;
  21. MinAMSCheckBox: TCheckBox;
  22. MinAMSEdit: TEdit;
  23. RelocFormatSheet: TTabSheet;
  24. Panel2: TPanel;
  25. Label4: TLabel;
  26. RelocAMSRadioButton: TRadioButton;
  27. RelocKernelRadioButton: TRadioButton;
  28. RelocCompressedRadioButton: TRadioButton;
  29. Panel3: TPanel;
  30. Label15: TLabel;
  31. ROMCallDirectRadioButton: TRadioButton;
  32. ROMCallKernelRadioButton: TRadioButton;
  33. ROMCallCompressedRadioButton: TRadioButton;
  34. ROMCallFLineRadioButton: TRadioButton;
  35. InternalFLineEmulatorCheckBox: TCheckBox;
  36. BSSFormatSheet: TTabSheet;
  37. HomeScreenSheet: TTabSheet;
  38. LCDSaveCheckBox: TCheckBox;
  39. EnableErrorReturnCheckBox: TCheckBox;
  40. Label11: TLabel;
  41. ReturnValueRadioButton: TRadioButton;
  42. ReturnDoneRadioButton: TRadioButton;
  43. Label10: TLabel;
  44. Label7: TLabel;
  45. Panel1: TPanel;
  46. Label6: TLabel;
  47. BSSKernelRadioButton: TRadioButton;
  48. BSSCompressedRadioButton: TRadioButton;
  49. BSSMergeRadioButton: TRadioButton;
  50. Panel4: TPanel;
  51. Label8: TLabel;
  52. DataVarKernelRadioButton: TRadioButton;
  53. DataVarCompressedRadioButton: TRadioButton;
  54. WelcomeSheet: TTabSheet;
  55. Label1: TLabel;
  56. Label9: TLabel;
  57. OptimizeCalcConstsCheckBox: TCheckBox;
  58. Label12: TLabel;
  59. RelocFLineJumpsCheckBox: TCheckBox;
  60. UnofficialOSSupportCheckBox: TCheckBox;
  61. RelocFLineJumps4ByteCheckBox: TCheckBox;
  62. ROMCallOptimizedCheckBox: TCheckBox;
  63. RelocMlinkRadioButton: TRadioButton;
  64. ROMCallMlinkRadioButton: TRadioButton;
  65. BSSMlinkRadioButton: TRadioButton;
  66. DataVarMlinkRadioButton: TRadioButton;
  67. procedure FormShow(Sender: TObject);
  68. procedure ShellRadioButtonClick(Sender: TObject);
  69. procedure MinAMSCheckBoxClick(Sender: TObject);
  70. procedure RelocRadioButtonClick(Sender: TObject);
  71. procedure ItemMouseDown(Sender: TObject; Button: TMouseButton;
  72. Shift: TShiftState; X, Y: Integer);
  73. procedure CalcCheckBoxClick(Sender: TObject);
  74. procedure RelocFLineJumpsCheckBoxClick(Sender: TObject);
  75. private
  76. public
  77. end;
  78. implementation
  79. uses
  80. MainUnit;
  81. {$R *.DFM}
  82. procedure TProgramOptionsForm.FormShow(Sender: TObject);
  83. begin
  84. ActiveControl := PageController;
  85. CalcCheckBoxClick (Sender);
  86. ShellRadioButtonClick (Sender);
  87. MinAMSCheckBoxClick (Sender);
  88. RelocRadioButtonClick (Sender);
  89. RelocFLineJumpsCheckBoxClick (Sender);
  90. end;
  91. procedure TProgramOptionsForm.ShellRadioButtonClick(Sender: TObject);
  92. begin
  93. with LCDSaveCheckBox do begin
  94. Enabled := NostubRadioButton.Checked;
  95. if not Enabled then
  96. Checked := True;
  97. end;
  98. with RelocAMSRadioButton do begin
  99. Enabled := NostubRadioButton.Checked;
  100. if Checked and not Enabled then
  101. RelocKernelRadioButton.Checked := True;
  102. end;
  103. with RelocKernelRadioButton do begin
  104. Enabled := not PreOSRadioButton.Checked;
  105. if Checked and not Enabled then
  106. RelocCompressedRadioButton.Checked := True;
  107. end;
  108. with RelocCompressedRadioButton do begin
  109. Enabled := not DoorsRadioButton.Checked;
  110. if Checked and not Enabled then
  111. RelocKernelRadioButton.Checked := True;
  112. end;
  113. with ROMCallDirectRadioButton do begin
  114. Enabled := NostubRadioButton.Checked;
  115. if Checked and not Enabled then
  116. ROMCallKernelRadioButton.Checked := True;
  117. end;
  118. with ROMCallKernelRadioButton do begin
  119. Enabled := not PreOSRadioButton.Checked;
  120. if Checked and not Enabled then
  121. ROMCallCompressedRadioButton.Checked := True;
  122. end;
  123. with ROMCallCompressedRadioButton do begin
  124. Enabled := not DoorsRadioButton.Checked;
  125. if Checked and not Enabled then
  126. ROMCallKernelRadioButton.Checked := True;
  127. end;
  128. with BSSKernelRadioButton do begin
  129. Enabled := not PreOSRadioButton.Checked;
  130. if Checked and not Enabled then
  131. BSSCompressedRadioButton.Checked := True;
  132. end;
  133. with BSSCompressedRadioButton do begin
  134. Enabled := not DoorsRadioButton.Checked;
  135. if Checked and not Enabled then
  136. BSSKernelRadioButton.Checked := True;
  137. end;
  138. RelocRadioButtonClick (Sender);
  139. end;
  140. procedure TProgramOptionsForm.MinAMSCheckBoxClick(Sender: TObject);
  141. begin
  142. MinAMSEdit.Enabled := MinAMSCheckBox.Checked;
  143. end;
  144. procedure TProgramOptionsForm.RelocRadioButtonClick(Sender: TObject);
  145. begin
  146. with InternalFLineEmulatorCheckBox do begin
  147. Enabled := (RelocFLineJumpsCheckBox.Checked or ROMCallFLineRadioButton.Checked) and (not RelocFLineJumps4ByteCheckBox.Checked);
  148. if not Enabled then
  149. Checked := RelocFLineJumps4ByteCheckBox.Checked;
  150. end;
  151. with ROMCallOptimizedCheckBox do begin
  152. Enabled := (ROMCallDirectRadioButton.Checked or ROMCallFLineRadioButton.Checked) and NostubRadioButton.Checked;
  153. if not Enabled then
  154. Checked := False;
  155. end;
  156. end;
  157. procedure TProgramOptionsForm.ItemMouseDown(Sender: TObject;
  158. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  159. begin
  160. if Button = mbRight then
  161. if Sender is TControl then
  162. with TControl (Sender) do
  163. MainForm.DocFile.KeywordLookup (Hint);
  164. end;
  165. procedure TProgramOptionsForm.CalcCheckBoxClick(Sender: TObject);
  166. var
  167. CalcCount: Integer;
  168. begin
  169. CalcCount := 0;
  170. if TI89CheckBox.Checked then
  171. Inc (CalcCount);
  172. if TI92PlusCheckBox.Checked then
  173. Inc (CalcCount);
  174. if V200CheckBox.Checked then
  175. Inc (CalcCount);
  176. with OptimizeCalcConstsCheckBox do begin
  177. Enabled := CalcCount > 1;
  178. if not Enabled then
  179. Checked := CalcCount = 1;
  180. end;
  181. end;
  182. procedure TProgramOptionsForm.RelocFLineJumpsCheckBoxClick(
  183. Sender: TObject);
  184. begin
  185. with RelocFLineJumps4ByteCheckBox do begin
  186. Enabled := RelocFLineJumpsCheckBox.Checked;
  187. if not Enabled then
  188. Checked := False;
  189. end;
  190. RelocRadioButtonClick (Sender);
  191. end;
  192. end.