@@ -6,7 +6,8 @@ interface |
| 6 |
|
6 |
|
| 7 |
uses |
7 |
uses |
| 8 |
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Spin, Grids, |
8 |
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Spin, Grids, |
| 9 |
LCLProc, Buttons, ExtCtrls, Constants, Keymap, hUGESettings; |
9 |
LCLProc, Buttons, ExtCtrls, Constants, Keymap, hUGESettings, hUGEDataTypes, |
|
|
10 |
TrackerGrid; |
| 10 |
|
11 |
|
| 11 |
type |
12 |
type |
| 12 |
|
13 |
|
@@ -18,20 +19,26 @@ type |
| 18 |
Button3: TButton; |
19 |
Button3: TButton; |
| 19 |
Button4: TButton; |
20 |
Button4: TButton; |
| 20 |
Button5: TButton; |
21 |
Button5: TButton; |
| 21 |
ColorButton1: TColorButton; |
22 |
Button6: TButton; |
| 22 |
ColorButton10: TColorButton; |
23 |
Button7: TButton; |
| 23 |
ColorButton11: TColorButton; |
24 |
Button8: TButton; |
| 24 |
ColorButton12: TColorButton; |
25 |
NoteTextColorButton: TColorButton; |
| 25 |
ColorButton13: TColorButton; |
26 |
OpenDialog2: TOpenDialog; |
| 26 |
ColorButton14: TColorButton; |
27 |
Panel1: TPanel; |
| 27 |
ColorButton2: TColorButton; |
28 |
SaveDialog2: TSaveDialog; |
| 28 |
ColorButton3: TColorButton; |
29 |
SelectedColorButton: TColorButton; |
| 29 |
ColorButton4: TColorButton; |
30 |
FourthRowColorButton: TColorButton; |
| 30 |
ColorButton5: TColorButton; |
31 |
SixteenthRowColorButton: TColorButton; |
| 31 |
ColorButton6: TColorButton; |
32 |
DotsColorButton: TColorButton; |
| 32 |
ColorButton7: TColorButton; |
33 |
DividersColorButton: TColorButton; |
| 33 |
ColorButton8: TColorButton; |
34 |
InstrumentTextColorButton: TColorButton; |
| 34 |
ColorButton9: TColorButton; |
35 |
MiscEffectTextColorButton: TColorButton; |
|
|
36 |
PitchEffectTextColorButton: TColorButton; |
|
|
37 |
VolumeEffectTextColorButton: TColorButton; |
|
|
38 |
PanningEffectTextColorButton: TColorButton; |
|
|
39 |
SongEffectTextColorButton: TColorButton; |
|
|
40 |
BackgroundColorButton: TColorButton; |
|
|
41 |
HighlightedColorButton: TColorButton; |
| 35 |
ColorDialog1: TColorDialog; |
42 |
ColorDialog1: TColorDialog; |
| 36 |
DisplayHexRowNumbersCheck: TCheckBox; |
43 |
DisplayHexRowNumbersCheck: TCheckBox; |
| 37 |
CustomizationGroupBox: TGroupBox; |
44 |
CustomizationGroupBox: TGroupBox; |
@@ -50,7 +57,7 @@ type |
| 50 |
Label8: TLabel; |
57 |
Label8: TLabel; |
| 51 |
Label9: TLabel; |
58 |
Label9: TLabel; |
| 52 |
OptionsGroupBox: TGroupBox; |
59 |
OptionsGroupBox: TGroupBox; |
| 53 |
Panel1: TPanel; |
60 |
SampleTrackerGridPanel: TPanel; |
| 54 |
PreviewWhenPlacingCheck: TCheckBox; |
61 |
PreviewWhenPlacingCheck: TCheckBox; |
| 55 |
PreviewWhenBumpingCheck: TCheckBox; |
62 |
PreviewWhenBumpingCheck: TCheckBox; |
| 56 |
KeymapCheckbox: TCheckBox; |
63 |
KeymapCheckbox: TCheckBox; |
@@ -66,13 +73,25 @@ type |
| 66 |
procedure Button3Click(Sender: TObject); |
73 |
procedure Button3Click(Sender: TObject); |
| 67 |
procedure Button4Click(Sender: TObject); |
74 |
procedure Button4Click(Sender: TObject); |
| 68 |
procedure Button5Click(Sender: TObject); |
75 |
procedure Button5Click(Sender: TObject); |
|
|
76 |
procedure Button6Click(Sender: TObject); |
|
|
77 |
procedure Button7Click(Sender: TObject); |
|
|
78 |
procedure Button8Click(Sender: TObject); |
|
|
79 |
procedure FontSizeSpinnerChange(Sender: TObject); |
| 69 |
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); |
80 |
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); |
| 70 |
procedure FormCreate(Sender: TObject); |
81 |
procedure FormCreate(Sender: TObject); |
| 71 |
procedure KeymapCheckboxChange(Sender: TObject); |
82 |
procedure KeymapCheckboxChange(Sender: TObject); |
| 72 |
procedure KeyMapStringGridValidateEntry(sender: TObject; aCol, aRow: Integer; |
83 |
procedure KeyMapStringGridValidateEntry(sender: TObject; aCol, aRow: Integer; |
| 73 |
const OldValue: string; var NewValue: String); |
84 |
const OldValue: string; var NewValue: String); |
|
|
85 |
procedure NoteTextColorButtonColorChanged(Sender: TObject); |
| 74 |
private |
86 |
private |
|
|
87 |
SamplePatternMap: TPatternMap; |
|
|
88 |
SampleTrackerGrid: TTrackerGrid; |
|
|
89 |
LoadingColors: Boolean; |
| 75 |
|
90 |
|
|
|
91 |
procedure RecreateTrackerGrid; |
|
|
92 |
procedure UpdateTrackerGridColors; |
|
|
93 |
procedure SaveColorsToFile(Filename: String); |
|
|
94 |
procedure LoadColorsFromFile(Filename: String); |
| 76 |
public |
95 |
public |
| 77 |
|
96 |
|
| 78 |
end; |
97 |
end; |
@@ -114,9 +133,49 @@ begin |
| 114 |
KeyMapStringGrid.InsertRowWithValues(KeyMapStringGrid.RowCount, ['', '']); |
133 |
KeyMapStringGrid.InsertRowWithValues(KeyMapStringGrid.RowCount, ['', '']); |
| 115 |
end; |
134 |
end; |
| 116 |
|
135 |
|
|
|
136 |
procedure TfrmOptions.Button6Click(Sender: TObject); |
|
|
137 |
begin |
|
|
138 |
NoteTextColorButton.ButtonColor := $007F4A00; |
|
|
139 |
InstrumentTextColorButton.ButtonColor := $007F7F00; |
|
|
140 |
MiscEffectTextColorButton.ButtonColor := $003F3F7C; |
|
|
141 |
PitchEffectTextColorButton.ButtonColor := $00006262; |
|
|
142 |
VolumeEffectTextColorButton.ButtonColor := $00007F26; |
|
|
143 |
PanningEffectTextColorButton.ButtonColor := $007F7F00; |
|
|
144 |
SongEffectTextColorButton.ButtonColor := $0000007F; |
|
|
145 |
BackgroundColorButton.ButtonColor := $00D0DBE1; |
|
|
146 |
HighlightedColorButton.ButtonColor := $007A99A9; |
|
|
147 |
SelectedColorButton.ButtonColor := $009EB4C0; |
|
|
148 |
FourthRowColorButton.ButtonColor := $00C3D1D8; |
|
|
149 |
SixteenthRowColorButton.ButtonColor := $00B5C5CE; |
|
|
150 |
DotsColorButton.ButtonColor := clGray; |
|
|
151 |
DividersColorButton.ButtonColor := $00ABB7BC; |
|
|
152 |
|
|
|
153 |
UpdateTrackerGridColors; |
|
|
154 |
end; |
|
|
155 |
|
|
|
156 |
procedure TfrmOptions.Button7Click(Sender: TObject); |
|
|
157 |
begin |
|
|
158 |
if OpenDialog2.Execute then |
|
|
159 |
LoadColorsFromFile(OpenDialog2.FileName); |
|
|
160 |
end; |
|
|
161 |
|
|
|
162 |
procedure TfrmOptions.Button8Click(Sender: TObject); |
|
|
163 |
begin |
|
|
164 |
if SaveDialog2.Execute then |
|
|
165 |
SaveColorsToFile(SaveDialog2.FileName); |
|
|
166 |
end; |
|
|
167 |
|
|
|
168 |
procedure TfrmOptions.FontSizeSpinnerChange(Sender: TObject); |
|
|
169 |
begin |
|
|
170 |
if Visible then // Don't do this while the form is being constructed. |
|
|
171 |
RecreateTrackerGrid; |
|
|
172 |
end; |
|
|
173 |
|
| 117 |
procedure TfrmOptions.FormClose(Sender: TObject; var CloseAction: TCloseAction); |
174 |
procedure TfrmOptions.FormClose(Sender: TObject; var CloseAction: TCloseAction); |
| 118 |
begin |
175 |
begin |
| 119 |
KeyMapStringGrid.SaveToFile('custom_keymap.km'); |
176 |
KeyMapStringGrid.SaveToFile('custom_keymap.km'); |
|
|
177 |
SaveColorsToFile('color_scheme.col'); |
|
|
178 |
|
| 120 |
TrackerSettings.PatternEditorFontSize := FontSizeSpinner.Value; |
179 |
TrackerSettings.PatternEditorFontSize := FontSizeSpinner.Value; |
| 121 |
TrackerSettings.UseScopes := ScopesCheck.Checked; |
180 |
TrackerSettings.UseScopes := ScopesCheck.Checked; |
| 122 |
TrackerSettings.UseCustomKeymap := KeymapCheckbox.Checked; |
181 |
TrackerSettings.UseCustomKeymap := KeymapCheckbox.Checked; |
@@ -126,18 +185,36 @@ begin |
| 126 |
end; |
185 |
end; |
| 127 |
|
186 |
|
| 128 |
procedure TfrmOptions.FormCreate(Sender: TObject); |
187 |
procedure TfrmOptions.FormCreate(Sender: TObject); |
|
|
188 |
var |
|
|
189 |
SamplePattern: PPattern; |
|
|
190 |
I: Integer; |
| 129 |
begin |
191 |
begin |
| 130 |
KeyMapStringGrid.SaveOptions := soAll; |
192 |
KeyMapStringGrid.SaveOptions := soAll; |
| 131 |
|
193 |
|
| 132 |
if FileExists('custom_keymap.km') then |
194 |
if FileExists('custom_keymap.km') then |
| 133 |
KeyMapStringGrid.LoadFromFile('custom_keymap.km'); |
195 |
KeyMapStringGrid.LoadFromFile('custom_keymap.km'); |
| 134 |
|
196 |
|
|
|
197 |
if FileExists('color_scheme.col') then |
|
|
198 |
LoadColorsFromFile('color_scheme.col'); |
|
|
199 |
|
| 135 |
FontSizeSpinner.Value := TrackerSettings.PatternEditorFontSize; |
200 |
FontSizeSpinner.Value := TrackerSettings.PatternEditorFontSize; |
| 136 |
ScopesCheck.Checked := TrackerSettings.UseScopes; |
201 |
ScopesCheck.Checked := TrackerSettings.UseScopes; |
| 137 |
KeymapCheckbox.Checked := TrackerSettings.UseCustomKeymap; |
202 |
KeymapCheckbox.Checked := TrackerSettings.UseCustomKeymap; |
| 138 |
PreviewWhenPlacingCheck.Checked := TrackerSettings.PreviewWhenPlacing; |
203 |
PreviewWhenPlacingCheck.Checked := TrackerSettings.PreviewWhenPlacing; |
| 139 |
PreviewWhenBumpingCheck.Checked := TrackerSettings.PreviewWhenBumping; |
204 |
PreviewWhenBumpingCheck.Checked := TrackerSettings.PreviewWhenBumping; |
| 140 |
DisplayHexRowNumbersCheck.Checked := TrackerSettings.DisplayRowNumbersAsHex; |
205 |
DisplayHexRowNumbersCheck.Checked := TrackerSettings.DisplayRowNumbersAsHex; |
|
|
206 |
|
|
|
207 |
SamplePatternMap := TPatternMap.Create; |
|
|
208 |
SamplePattern := SamplePatternMap.GetOrCreateNew(0); |
|
|
209 |
|
|
|
210 |
for I := $0 to $F do begin |
|
|
211 |
SamplePattern^[I*2].Note := I; |
|
|
212 |
SamplePattern^[I*2].Instrument := Random(15); |
|
|
213 |
SamplePattern^[I*2].EffectCode := I; |
|
|
214 |
SamplePattern^[I*2].EffectParams.Value := Random($FF); |
|
|
215 |
end; |
|
|
216 |
|
|
|
217 |
RecreateTrackerGrid; |
| 141 |
end; |
218 |
end; |
| 142 |
|
219 |
|
| 143 |
procedure TfrmOptions.KeymapCheckboxChange(Sender: TObject); |
220 |
procedure TfrmOptions.KeymapCheckboxChange(Sender: TObject); |
@@ -159,5 +236,144 @@ begin |
| 159 |
end; |
236 |
end; |
| 160 |
end; |
237 |
end; |
| 161 |
|
238 |
|
|
|
239 |
procedure TfrmOptions.NoteTextColorButtonColorChanged(Sender: TObject); |
|
|
240 |
begin |
|
|
241 |
if not LoadingColors then |
|
|
242 |
UpdateTrackerGridColors; |
|
|
243 |
end; |
|
|
244 |
|
|
|
245 |
procedure TfrmOptions.RecreateTrackerGrid; |
|
|
246 |
var |
|
|
247 |
I: Integer; |
|
|
248 |
begin |
|
|
249 |
if Assigned(SampleTrackerGrid) then |
|
|
250 |
SampleTrackerGrid.Free; |
|
|
251 |
|
|
|
252 |
SampleTrackerGrid := TTrackerGrid.Create(Self, SampleTrackerGridPanel, SamplePatternMap); |
|
|
253 |
SampleTrackerGrid.FontSize := FontSizeSpinner.Value; |
|
|
254 |
for I := 0 to 3 do |
|
|
255 |
SampleTrackerGrid.LoadPattern(I, 0); |
|
|
256 |
|
|
|
257 |
SampleTrackerGridPanel.Invalidate; |
|
|
258 |
end; |
|
|
259 |
|
|
|
260 |
procedure TfrmOptions.UpdateTrackerGridColors; |
|
|
261 |
begin |
|
|
262 |
clNote := NoteTextColorButton.ButtonColor; |
|
|
263 |
clInstrument := InstrumentTextColorButton.ButtonColor; |
|
|
264 |
|
|
|
265 |
clFxMisc := MiscEffectTextColorButton.ButtonColor; |
|
|
266 |
clFxPitch := PitchEffectTextColorButton.ButtonColor; |
|
|
267 |
clFxVolume := VolumeEffectTextColorButton.ButtonColor; |
|
|
268 |
clFxPan := PanningEffectTextColorButton.ButtonColor; |
|
|
269 |
clFxSong := SongEffectTextColorButton.ButtonColor; |
|
|
270 |
|
|
|
271 |
clBackground := BackgroundColorButton.ButtonColor; |
|
|
272 |
clHighlighted := HighlightedColorButton.ButtonColor; |
|
|
273 |
clSelected := SelectedColorButton.ButtonColor; |
|
|
274 |
|
|
|
275 |
clLineFour := FourthRowColorButton.ButtonColor; |
|
|
276 |
clLineSixteen := SixteenthRowColorButton.ButtonColor; |
|
|
277 |
|
|
|
278 |
clDots := DotsColorButton.ButtonColor; |
|
|
279 |
clDividers := DividersColorButton.ButtonColor; |
|
|
280 |
|
|
|
281 |
SampleTrackerGridPanel.Invalidate; |
|
|
282 |
end; |
|
|
283 |
|
|
|
284 |
procedure TfrmOptions.SaveColorsToFile(Filename: String); |
|
|
285 |
var |
|
|
286 |
F: file of TColor; |
|
|
287 |
begin |
|
|
288 |
try |
|
|
289 |
AssignFile(F, Filename); |
|
|
290 |
Rewrite(F); |
|
|
291 |
|
|
|
292 |
Write(F, clNote); |
|
|
293 |
Write(F, clInstrument); |
|
|
294 |
|
|
|
295 |
Write(F, clFxMisc); |
|
|
296 |
Write(F, clFxPitch); |
|
|
297 |
Write(F, clFxVolume); |
|
|
298 |
Write(F, clFxPan); |
|
|
299 |
Write(F, clFxSong); |
|
|
300 |
|
|
|
301 |
Write(F, clBackground); |
|
|
302 |
Write(F, clHighlighted); |
|
|
303 |
Write(F, clSelected); |
|
|
304 |
|
|
|
305 |
Write(F, clLineFour); |
|
|
306 |
Write(F, clLineSixteen); |
|
|
307 |
|
|
|
308 |
Write(F, clDots); |
|
|
309 |
Write(F, clDividers); |
|
|
310 |
|
|
|
311 |
CloseFile(F); |
|
|
312 |
except |
|
|
313 |
on E: Exception do begin |
|
|
314 |
ShowMessage('Couldn''t load colors from ' + Filename); |
|
|
315 |
end; |
|
|
316 |
end; |
|
|
317 |
end; |
|
|
318 |
|
|
|
319 |
procedure TfrmOptions.LoadColorsFromFile(Filename: String); |
|
|
320 |
var |
|
|
321 |
F: file of TColor; |
|
|
322 |
begin |
|
|
323 |
LoadingColors := True; |
|
|
324 |
try |
|
|
325 |
AssignFile(F, Filename); |
|
|
326 |
Reset(F); |
|
|
327 |
|
|
|
328 |
Read(F, clNote); |
|
|
329 |
Read(F, clInstrument); |
|
|
330 |
|
|
|
331 |
Read(F, clFxMisc); |
|
|
332 |
Read(F, clFxPitch); |
|
|
333 |
Read(F, clFxVolume); |
|
|
334 |
Read(F, clFxPan); |
|
|
335 |
Read(F, clFxSong); |
|
|
336 |
|
|
|
337 |
Read(F, clBackground); |
|
|
338 |
Read(F, clHighlighted); |
|
|
339 |
Read(F, clSelected); |
|
|
340 |
|
|
|
341 |
Read(F, clLineFour); |
|
|
342 |
Read(F, clLineSixteen); |
|
|
343 |
|
|
|
344 |
Read(F, clDots); |
|
|
345 |
Read(F, clDividers); |
|
|
346 |
|
|
|
347 |
CloseFile(F); |
|
|
348 |
except |
|
|
349 |
on E: Exception do begin |
|
|
350 |
ShowMessage('Couldn''t load colors from ' + Filename); |
|
|
351 |
end; |
|
|
352 |
end; |
|
|
353 |
|
|
|
354 |
NoteTextColorButton.ButtonColor := clNote; |
|
|
355 |
InstrumentTextColorButton.ButtonColor := clInstrument; |
|
|
356 |
|
|
|
357 |
MiscEffectTextColorButton.ButtonColor := clFxMisc; |
|
|
358 |
PitchEffectTextColorButton.ButtonColor := clFxPitch; |
|
|
359 |
VolumeEffectTextColorButton.ButtonColor := clFxVolume; |
|
|
360 |
PanningEffectTextColorButton.ButtonColor := clFxPan; |
|
|
361 |
SongEffectTextColorButton.ButtonColor := clFxSong; |
|
|
362 |
|
|
|
363 |
BackgroundColorButton.ButtonColor := clBackground; |
|
|
364 |
HighlightedColorButton.ButtonColor := clHighlighted; |
|
|
365 |
SelectedColorButton.ButtonColor := clSelected; |
|
|
366 |
|
|
|
367 |
FourthRowColorButton.ButtonColor := clLineFour; |
|
|
368 |
SixteenthRowColorButton.ButtonColor := clLineSixteen; |
|
|
369 |
|
|
|
370 |
DotsColorButton.ButtonColor := clDots; |
|
|
371 |
DividersColorButton.ButtonColor := clDividers; |
|
|
372 |
|
|
|
373 |
LoadingColors := False; |
|
|
374 |
|
|
|
375 |
SampleTrackerGridPanel.Invalidate; |
|
|
376 |
end; |
|
|
377 |
|
| 162 |
end. |
378 |
end. |
| 163 |
|
379 |
|