@@ -265,6 +265,7 @@ type |
| 265 |
TreeView1: TTreeView; |
265 |
TreeView1: TTreeView; |
| 266 |
TrackerGrid: TTrackerGrid; |
266 |
TrackerGrid: TTrackerGrid; |
| 267 |
TableGrid: TTableGrid; |
267 |
TableGrid: TTableGrid; |
|
|
268 |
procedure FormShow(Sender: TObject); |
| 268 |
procedure TestOctaveButtonClick(Sender: TObject); |
269 |
procedure TestOctaveButtonClick(Sender: TObject); |
| 269 |
procedure DebugButtonClick(Sender: TObject); |
270 |
procedure DebugButtonClick(Sender: TObject); |
| 270 |
procedure DecreaseOctaveActionExecute(Sender: TObject); |
271 |
procedure DecreaseOctaveActionExecute(Sender: TObject); |
@@ -309,7 +310,6 @@ type |
| 309 |
MousePos: TPoint; var Handled: Boolean); |
310 |
MousePos: TPoint; var Handled: Boolean); |
| 310 |
procedure ScrollBox1MouseWheelUp(Sender: TObject; Shift: TShiftState; |
311 |
procedure ScrollBox1MouseWheelUp(Sender: TObject; Shift: TShiftState; |
| 311 |
MousePos: TPoint; var Handled: Boolean); |
312 |
MousePos: TPoint; var Handled: Boolean); |
| 312 |
procedure FormShow(Sender: TObject); |
|
|
| 313 |
procedure InstrumentComboBoxChange(Sender: TObject); |
313 |
procedure InstrumentComboBoxChange(Sender: TObject); |
| 314 |
procedure CopyActionExecute(Sender: TObject); |
314 |
procedure CopyActionExecute(Sender: TObject); |
| 315 |
procedure CutActionExecute(Sender: TObject); |
315 |
procedure CutActionExecute(Sender: TObject); |
@@ -425,6 +425,7 @@ type |
| 425 |
CurrentWave: ^TWave; |
425 |
CurrentWave: ^TWave; |
| 426 |
CurrentInstrumentBank: TInstrumentType; |
426 |
CurrentInstrumentBank: TInstrumentType; |
| 427 |
LoadedFileName: String; |
427 |
LoadedFileName: String; |
|
|
428 |
SubpatternMap: TPatternMap; |
| 428 |
|
429 |
|
| 429 |
PreviewingInstrument: Integer; |
430 |
PreviewingInstrument: Integer; |
| 430 |
PreviewingWithKey: Word; |
431 |
PreviewingWithKey: Word; |
@@ -434,7 +435,6 @@ type |
| 434 |
SaveSucceeded: Boolean; |
435 |
SaveSucceeded: Boolean; |
| 435 |
ScopesOn: Boolean; |
436 |
ScopesOn: Boolean; |
| 436 |
|
437 |
|
| 437 |
{PatternsNode, } |
|
|
| 438 |
WaveInstrumentsNode, |
438 |
WaveInstrumentsNode, |
| 439 |
NoiseInstrumentsNode, |
439 |
NoiseInstrumentsNode, |
| 440 |
DutyInstrumentsNode, |
440 |
DutyInstrumentsNode, |
@@ -506,9 +506,11 @@ var |
| 506 |
begin |
506 |
begin |
| 507 |
HaltPlayback; |
507 |
HaltPlayback; |
| 508 |
|
508 |
|
|
|
509 |
SubpatternMap.Clear; |
|
|
510 |
for I := Low(Song.Instruments.All) to High(Song.Instruments.All) do |
|
|
511 |
SubpatternMap.Add(I, @Song.Instruments.All[I].Subpattern); |
|
|
512 |
|
| 509 |
LoadingFile := True; // HACK!!!!! |
513 |
LoadingFile := True; // HACK!!!!! |
| 510 |
LoadInstrument(itSquare, 1); |
|
|
| 511 |
LoadWave(0); |
|
|
| 512 |
|
514 |
|
| 513 |
RoutineSynedit.Text := Song.Routines[0]; |
515 |
RoutineSynedit.Text := Song.Routines[0]; |
| 514 |
RoutineNumberSpinner.Value := 0; |
516 |
RoutineNumberSpinner.Value := 0; |
@@ -536,7 +538,6 @@ begin |
| 536 |
InstrumentComboBox.Items.Add('Noise '+IntToStr(I)+': '+Song.Instruments.Noise[ModInst(I)].Name); |
538 |
InstrumentComboBox.Items.Add('Noise '+IntToStr(I)+': '+Song.Instruments.Noise[ModInst(I)].Name); |
| 537 |
|
539 |
|
| 538 |
InstrumentComboBox.ItemIndex := 0; |
540 |
InstrumentComboBox.ItemIndex := 0; |
| 539 |
//TrackerGrid.SelectedInstrument := 1; //ModInst(InstrumentComboBox.ItemIndex); |
|
|
| 540 |
|
541 |
|
| 541 |
for I := Low(TInstrumentBank) to High(TInstrumentBank) do begin |
542 |
for I := Low(TInstrumentBank) to High(TInstrumentBank) do begin |
| 542 |
DutyInstrumentsNode.Items[I-1].Text := IntToStr(I)+': '+Song.Instruments.Duty[I].Name; |
543 |
DutyInstrumentsNode.Items[I-1].Text := IntToStr(I)+': '+Song.Instruments.Duty[I].Name; |
@@ -544,6 +545,9 @@ begin |
| 544 |
NoiseInstrumentsNode.Items[I-1].Text := IntToStr(I)+': '+Song.Instruments.Noise[I].Name; |
545 |
NoiseInstrumentsNode.Items[I-1].Text := IntToStr(I)+': '+Song.Instruments.Noise[I].Name; |
| 545 |
end; |
546 |
end; |
| 546 |
|
547 |
|
|
|
548 |
LoadInstrument(itSquare, 1); |
|
|
549 |
LoadWave(0); |
|
|
550 |
|
| 547 |
LoadingFile := False; // HACK!!!! |
551 |
LoadingFile := False; // HACK!!!! |
| 548 |
|
552 |
|
| 549 |
OrderEditStringGrid.Row := 1; |
553 |
OrderEditStringGrid.Row := 1; |
@@ -913,15 +917,6 @@ begin |
| 913 |
TrackerGrid.LoadPattern(I, OrderNum); |
917 |
TrackerGrid.LoadPattern(I, OrderNum); |
| 914 |
end; |
918 |
end; |
| 915 |
|
919 |
|
| 916 |
for I := 0 to 0 do begin |
|
|
| 917 |
OrderNum := 0; |
|
|
| 918 |
TryStrToInt( |
|
|
| 919 |
OrderEditStringGrid.Cells[I+1, OrderEditStringGrid.Row], |
|
|
| 920 |
OrderNum |
|
|
| 921 |
); |
|
|
| 922 |
TableGrid.LoadPattern(I, OrderNum); |
|
|
| 923 |
end; |
|
|
| 924 |
|
|
|
| 925 |
CopyOrderGridToOrderMatrix; |
920 |
CopyOrderGridToOrderMatrix; |
| 926 |
end; |
921 |
end; |
| 927 |
|
922 |
|
@@ -1118,27 +1113,27 @@ procedure TfrmTracker.RecreateTrackerGrid; |
| 1118 |
var |
1113 |
var |
| 1119 |
I: Integer; |
1114 |
I: Integer; |
| 1120 |
begin |
1115 |
begin |
|
|
1116 |
// Recreate TrackerGrid |
| 1121 |
if Assigned(TrackerGrid) then TrackerGrid.Free; |
1117 |
if Assigned(TrackerGrid) then TrackerGrid.Free; |
| 1122 |
TrackerGrid := TTrackerGrid.Create(Self, ScrollBox1, Song.Patterns, 4); |
1118 |
TrackerGrid := TTrackerGrid.Create(Self, ScrollBox1, Song.Patterns, 4); |
| 1123 |
TrackerGrid.OnResize:=@OnTrackerGridResize; |
1119 |
TrackerGrid.OnResize:=@OnTrackerGridResize; |
| 1124 |
TrackerGrid.OnCursorOutOfBounds:=@OnTrackerGridCursorOutOfBounds; |
1120 |
TrackerGrid.OnCursorOutOfBounds:=@OnTrackerGridCursorOutOfBounds; |
| 1125 |
TrackerGrid.FontSize := TrackerSettings.PatternEditorFontSize; |
1121 |
TrackerGrid.FontSize := TrackerSettings.PatternEditorFontSize; |
| 1126 |
TrackerGrid.Left := RowNumberStringGrid.Left + RowNumberStringGrid.Width; |
1122 |
TrackerGrid.Left := RowNumberStringGrid.Left + RowNumberStringGrid.Width; |
| 1127 |
RowNumberStringGrid.DefaultRowHeight := TrackerGrid.RowHeight; |
|
|
| 1128 |
ScopesOn := TrackerSettings.UseScopes; |
|
|
| 1129 |
|
|
|
| 1130 |
// Fix the size of the channel headers |
|
|
| 1131 |
for I := 1 to HeaderControl1.Sections.Count-1 do |
|
|
| 1132 |
HeaderControl1.Sections.Items[I].Width := TrackerGrid.ColumnWidth; |
|
|
| 1133 |
|
|
|
| 1134 |
TrackerGrid.PopupMenu := TrackerGridPopup; |
1123 |
TrackerGrid.PopupMenu := TrackerGridPopup; |
|
|
1124 |
RowNumberStringGrid.DefaultRowHeight := TrackerGrid.RowHeight; |
| 1135 |
|
1125 |
|
|
|
1126 |
// Recreate TableGrid |
| 1136 |
if Assigned(TableGrid) then TableGrid.Free; |
1127 |
if Assigned(TableGrid) then TableGrid.Free; |
| 1137 |
TableGrid := TTableGrid.Create(Self, ScrollBox2, Song.Patterns, 1); |
1128 |
TableGrid := TTableGrid.Create(Self, ScrollBox2, SubpatternMap, 1); |
| 1138 |
|
1129 |
|
| 1139 |
TableGrid.FontSize := TrackerSettings.PatternEditorFontSize; |
1130 |
TableGrid.FontSize := TrackerSettings.PatternEditorFontSize; |
| 1140 |
RowNumberStringGrid1.DefaultRowHeight := TrackerGrid.RowHeight; |
1131 |
RowNumberStringGrid1.DefaultRowHeight := TrackerGrid.RowHeight; |
| 1141 |
TableGrid.Left := RowNumberStringGrid1.Left - TableGrid.Width; |
1132 |
TableGrid.Left := RowNumberStringGrid1.Left - TableGrid.Width; |
|
|
1133 |
|
|
|
1134 |
// Fix the size of the channel headers |
|
|
1135 |
for I := 1 to HeaderControl1.Sections.Count-1 do |
|
|
1136 |
HeaderControl1.Sections.Items[I].Width := TrackerGrid.ColumnWidth; |
| 1142 |
end; |
1137 |
end; |
| 1143 |
|
1138 |
|
| 1144 |
procedure TfrmTracker.RecreateRowNumbers; |
1139 |
procedure TfrmTracker.RecreateRowNumbers; |
@@ -1172,6 +1167,8 @@ begin |
| 1172 |
end; |
1167 |
end; |
| 1173 |
CI := CurrentInstrument; |
1168 |
CI := CurrentInstrument; |
| 1174 |
|
1169 |
|
|
|
1170 |
TableGrid.LoadPattern(0, UnmodInst(Bank, Instr)); |
|
|
1171 |
|
| 1175 |
InstrumentTypeComboBox.ItemIndex := Integer(CurrentInstrumentBank); |
1172 |
InstrumentTypeComboBox.ItemIndex := Integer(CurrentInstrumentBank); |
| 1176 |
InstrumentNumberSpinner.Value := Instr; |
1173 |
InstrumentNumberSpinner.Value := Instr; |
| 1177 |
InstrumentNameEdit.Text := CI^.Name; |
1174 |
InstrumentNameEdit.Text := CI^.Name; |
@@ -1386,6 +1383,7 @@ begin |
| 1386 |
{$endif} |
1383 |
{$endif} |
| 1387 |
|
1384 |
|
| 1388 |
VisualizerBuffer := TBGRABitmap.Create(Duty1Visualizer.Width, Duty1Visualizer.Height); |
1385 |
VisualizerBuffer := TBGRABitmap.Create(Duty1Visualizer.Width, Duty1Visualizer.Height); |
|
|
1386 |
SubpatternMap := TPatternMap.Create; |
| 1389 |
|
1387 |
|
| 1390 |
PreviewingInstrument := -1; |
1388 |
PreviewingInstrument := -1; |
| 1391 |
|
1389 |
|
@@ -1425,9 +1423,6 @@ begin |
| 1425 |
// Initialize ticks per row |
1423 |
// Initialize ticks per row |
| 1426 |
Song.TicksPerRow := TicksPerRowSpinEdit.Value; |
1424 |
Song.TicksPerRow := TicksPerRowSpinEdit.Value; |
| 1427 |
|
1425 |
|
| 1428 |
LoadInstrument(itSquare, 1); |
|
|
| 1429 |
LoadWave(0); |
|
|
| 1430 |
|
|
|
| 1431 |
// Initialize order table (InitializeSong creates the default order table) |
1426 |
// Initialize order table (InitializeSong creates the default order table) |
| 1432 |
CopyOrderMatrixToOrderGrid; |
1427 |
CopyOrderMatrixToOrderGrid; |
| 1433 |
|
1428 |
|
@@ -1770,6 +1765,7 @@ procedure TfrmTracker.IncreaseOctaveActionExecute(Sender: TObject); |
| 1770 |
begin |
1765 |
begin |
| 1771 |
OctaveSpinEdit.Value := OctaveSpinEdit.Value + 1; |
1766 |
OctaveSpinEdit.Value := OctaveSpinEdit.Value + 1; |
| 1772 |
TrackerGrid.SelectedOctave := OctaveSpinEdit.Value; |
1767 |
TrackerGrid.SelectedOctave := OctaveSpinEdit.Value; |
|
|
1768 |
TableGrid.SelectedOctave := OctaveSpinEdit.Value; |
| 1773 |
end; |
1769 |
end; |
| 1774 |
|
1770 |
|
| 1775 |
procedure TfrmTracker.IncrementCurrentInstrumentActionExecute(Sender: TObject); |
1771 |
procedure TfrmTracker.IncrementCurrentInstrumentActionExecute(Sender: TObject); |
@@ -1911,13 +1907,6 @@ begin |
| 1911 |
Handled := False; |
1907 |
Handled := False; |
| 1912 |
end; |
1908 |
end; |
| 1913 |
|
1909 |
|
| 1914 |
procedure TfrmTracker.FormShow(Sender: TObject); |
|
|
| 1915 |
begin |
|
|
| 1916 |
// HACK: This needs to be done due to a scaling bug in the LCL. |
|
|
| 1917 |
RecreateTrackerGrid; |
|
|
| 1918 |
ReloadPatterns |
|
|
| 1919 |
end; |
|
|
| 1920 |
|
|
|
| 1921 |
procedure TfrmTracker.TestOctaveButtonClick(Sender: TObject); |
1910 |
procedure TfrmTracker.TestOctaveButtonClick(Sender: TObject); |
| 1922 |
begin |
1911 |
begin |
| 1923 |
case (Sender as TButton).Tag of |
1912 |
case (Sender as TButton).Tag of |
@@ -1930,17 +1919,30 @@ begin |
| 1930 |
end; |
1919 |
end; |
| 1931 |
end; |
1920 |
end; |
| 1932 |
|
1921 |
|
|
|
1922 |
procedure TfrmTracker.FormShow(Sender: TObject); |
|
|
1923 |
begin |
|
|
1924 |
{ HACK: This needs to be done due to a scaling bug in the LCL. |
|
|
1925 |
For some reason, omitting these two lines causes the window to |
|
|
1926 |
appear at a weird size, not the one defined by the form editor. } |
|
|
1927 |
|
|
|
1928 |
// TODO: Look into this! This makes literally zero sense. |
|
|
1929 |
RecreateTrackerGrid; |
|
|
1930 |
ReloadPatterns; |
|
|
1931 |
LoadInstrument(itSquare, 1) // Load default pattern for tablegrid |
|
|
1932 |
end; |
|
|
1933 |
|
| 1933 |
procedure TfrmTracker.DebugButtonClick(Sender: TObject); |
1934 |
procedure TfrmTracker.DebugButtonClick(Sender: TObject); |
| 1934 |
var |
1935 |
var |
| 1935 |
S: TStream; |
1936 |
S: TStream; |
| 1936 |
begin |
1937 |
begin |
| 1937 |
TableGrid.Invalidate; |
1938 |
UpdateUIAfterLoad(); |
| 1938 |
end; |
1939 |
end; |
| 1939 |
|
1940 |
|
| 1940 |
procedure TfrmTracker.DecreaseOctaveActionExecute(Sender: TObject); |
1941 |
procedure TfrmTracker.DecreaseOctaveActionExecute(Sender: TObject); |
| 1941 |
begin |
1942 |
begin |
| 1942 |
OctaveSpinEdit.Value := OctaveSpinEdit.Value - 1; |
1943 |
OctaveSpinEdit.Value := OctaveSpinEdit.Value - 1; |
| 1943 |
TrackerGrid.SelectedOctave := OctaveSpinEdit.Value; |
1944 |
TrackerGrid.SelectedOctave := OctaveSpinEdit.Value; |
|
|
1945 |
TableGrid.SelectedOctave := OctaveSpinEdit.Value; |
| 1944 |
end; |
1946 |
end; |
| 1945 |
|
1947 |
|
| 1946 |
procedure TfrmTracker.DecrementCurrentInstrumentActionExecute(Sender: TObject); |
1948 |
procedure TfrmTracker.DecrementCurrentInstrumentActionExecute(Sender: TObject); |
@@ -2003,6 +2005,7 @@ end; |
| 2003 |
procedure TfrmTracker.OctaveSpinEditChange(Sender: TObject); |
2005 |
procedure TfrmTracker.OctaveSpinEditChange(Sender: TObject); |
| 2004 |
begin |
2006 |
begin |
| 2005 |
TrackerGrid.SelectedOctave := OctaveSpinEdit.Value; |
2007 |
TrackerGrid.SelectedOctave := OctaveSpinEdit.Value; |
|
|
2008 |
TableGrid.SelectedOctave := OctaveSpinEdit.Value; |
| 2006 |
end; |
2009 |
end; |
| 2007 |
|
2010 |
|
| 2008 |
procedure TfrmTracker.RoutineNumberSpinnerChange(Sender: TObject); |
2011 |
procedure TfrmTracker.RoutineNumberSpinnerChange(Sender: TObject); |
@@ -2026,6 +2029,7 @@ end; |
| 2026 |
procedure TfrmTracker.StepSpinEditChange(Sender: TObject); |
2029 |
procedure TfrmTracker.StepSpinEditChange(Sender: TObject); |
| 2027 |
begin |
2030 |
begin |
| 2028 |
TrackerGrid.Step := StepSpinEdit.Value; |
2031 |
TrackerGrid.Step := StepSpinEdit.Value; |
|
|
2032 |
TableGrid.Step := StepSpinEdit.Value; |
| 2029 |
end; |
2033 |
end; |
| 2030 |
|
2034 |
|
| 2031 |
procedure TfrmTracker.StopActionExecute(Sender: TObject); |
2035 |
procedure TfrmTracker.StopActionExecute(Sender: TObject); |