Commit 330f728

Nick Faro committed on
UI changes for tablegrid
commit 330f728778b9b0dc2d88e663172e9f8ddfa29c94 parent 0d6222e
2 changed files +107−103
Modifiedtracker.lfm +70−70
@@ -1,12 +1,12 @@
1 object frmTracker: TfrmTracker 1 object frmTracker: TfrmTracker
2 Left = 1701 2 Left = 1294
3 Height = 902 3 Height = 857
4 Top = 190 4 Top = 208
5 Width = 1458 5 Width = 1318
6 AllowDropFiles = True 6 AllowDropFiles = True
7 Caption = 'hUGETracker' 7 Caption = 'hUGETracker'
8 ClientHeight = 882 8 ClientHeight = 837
9 ClientWidth = 1458 9 ClientWidth = 1318
10 KeyPreview = True 10 KeyPreview = True
11 Menu = MainMenu1 11 Menu = MainMenu1
12 OnCloseQuery = FormCloseQuery 12 OnCloseQuery = FormCloseQuery
@@ -20,7 +20,7 @@ object frmTracker: TfrmTracker
20 LCLVersion = '2.2.0.3' 20 LCLVersion = '2.2.0.3'
21 object TreeView1: TTreeView 21 object TreeView1: TTreeView
22 Left = 0 22 Left = 0
23 Height = 770 23 Height = 725
24 Top = 89 24 Top = 89
25 Width = 193 25 Width = 193
26 Align = alLeft 26 Align = alLeft
@@ -41,35 +41,35 @@ object frmTracker: TfrmTracker
41 end 41 end
42 object Splitter1: TSplitter 42 object Splitter1: TSplitter
43 Left = 193 43 Left = 193
44 Height = 770 44 Height = 725
45 Top = 89 45 Top = 89
46 Width = 5 46 Width = 5
47 end 47 end
48 object Panel1: TPanel 48 object Panel1: TPanel
49 Left = 198 49 Left = 198
50 Height = 770 50 Height = 725
51 Top = 89 51 Top = 89
52 Width = 1260 52 Width = 1120
53 Align = alClient 53 Align = alClient
54 BevelOuter = bvNone 54 BevelOuter = bvNone
55 ClientHeight = 770 55 ClientHeight = 725
56 ClientWidth = 1260 56 ClientWidth = 1120
57 ParentFont = False 57 ParentFont = False
58 TabOrder = 2 58 TabOrder = 2
59 object PageControl1: TPageControl 59 object PageControl1: TPageControl
60 Left = 0 60 Left = 0
61 Height = 770 61 Height = 725
62 Top = 0 62 Top = 0
63 Width = 1260 63 Width = 1120
64 ActivePage = PatternTabSheet 64 ActivePage = InstrumentTabSheet
65 Align = alClient 65 Align = alClient
66 ParentFont = False 66 ParentFont = False
67 TabIndex = 1 67 TabIndex = 2
68 TabOrder = 0 68 TabOrder = 0
69 object GeneralTabSheet: TTabSheet 69 object GeneralTabSheet: TTabSheet
70 Caption = 'General' 70 Caption = 'General'
71 ClientHeight = 742 71 ClientHeight = 697
72 ClientWidth = 1252 72 ClientWidth = 1112
73 ParentFont = False 73 ParentFont = False
74 object SongInformationGroupbox: TGroupBox 74 object SongInformationGroupbox: TGroupBox
75 Left = 8 75 Left = 8
@@ -144,17 +144,17 @@ object frmTracker: TfrmTracker
144 end 144 end
145 object PatternTabSheet: TTabSheet 145 object PatternTabSheet: TTabSheet
146 Caption = 'Patterns' 146 Caption = 'Patterns'
147 ClientHeight = 742 147 ClientHeight = 697
148 ClientWidth = 1252 148 ClientWidth = 1112
149 ParentFont = False 149 ParentFont = False
150 object Panel3: TPanel 150 object Panel3: TPanel
151 Left = 224 151 Left = 224
152 Height = 742 152 Height = 697
153 Top = 0 153 Top = 0
154 Width = 1028 154 Width = 888
155 Align = alClient 155 Align = alClient
156 ClientHeight = 742 156 ClientHeight = 697
157 ClientWidth = 1028 157 ClientWidth = 888
158 ParentFont = False 158 ParentFont = False
159 TabOrder = 0 159 TabOrder = 0
160 object HeaderControl1: THeaderControl 160 object HeaderControl1: THeaderControl
@@ -162,7 +162,7 @@ object frmTracker: TfrmTracker
162 Height = 30 162 Height = 30
163 Hint = 'Left click to mute, right click to solo' 163 Hint = 'Left click to mute, right click to solo'
164 Top = 1 164 Top = 1
165 Width = 1026 165 Width = 886
166 DragReorder = False 166 DragReorder = False
167 Images = ImageList2 167 Images = ImageList2
168 Sections = < 168 Sections = <
@@ -207,9 +207,9 @@ object frmTracker: TfrmTracker
207 end 207 end
208 object ScrollBox1: TScrollBox 208 object ScrollBox1: TScrollBox
209 Left = 1 209 Left = 1
210 Height = 710 210 Height = 665
211 Top = 31 211 Top = 31
212 Width = 1026 212 Width = 886
213 HorzScrollBar.Increment = 3 213 HorzScrollBar.Increment = 3
214 HorzScrollBar.Page = 32 214 HorzScrollBar.Page = 32
215 HorzScrollBar.Smooth = True 215 HorzScrollBar.Smooth = True
@@ -220,15 +220,15 @@ object frmTracker: TfrmTracker
220 VertScrollBar.Tracking = True 220 VertScrollBar.Tracking = True
221 Align = alClient 221 Align = alClient
222 BorderStyle = bsNone 222 BorderStyle = bsNone
223 ClientHeight = 710 223 ClientHeight = 665
224 ClientWidth = 1026 224 ClientWidth = 886
225 ParentFont = False 225 ParentFont = False
226 TabOrder = 1 226 TabOrder = 1
227 OnMouseWheelDown = ScrollBox1MouseWheelDown 227 OnMouseWheelDown = ScrollBox1MouseWheelDown
228 OnMouseWheelUp = ScrollBox1MouseWheelUp 228 OnMouseWheelUp = ScrollBox1MouseWheelUp
229 object RowNumberStringGrid: TStringGrid 229 object RowNumberStringGrid: TStringGrid
230 Left = 0 230 Left = 0
231 Height = 710 231 Height = 665
232 Top = 0 232 Top = 0
233 Width = 32 233 Width = 32
234 Align = alLeft 234 Align = alLeft
@@ -244,7 +244,7 @@ object frmTracker: TfrmTracker
244 end 244 end
245 object OrderEditStringGrid: TStringGrid 245 object OrderEditStringGrid: TStringGrid
246 Left = 0 246 Left = 0
247 Height = 742 247 Height = 697
248 Top = 0 248 Top = 0
249 Width = 224 249 Width = 224
250 Align = alLeft 250 Align = alLeft
@@ -309,14 +309,14 @@ object frmTracker: TfrmTracker
309 end 309 end
310 object InstrumentTabSheet: TTabSheet 310 object InstrumentTabSheet: TTabSheet
311 Caption = 'Instruments' 311 Caption = 'Instruments'
312 ClientHeight = 742 312 ClientHeight = 697
313 ClientWidth = 1252 313 ClientWidth = 1112
314 ParentFont = False 314 ParentFont = False
315 object FlowPanel1: TFlowPanel 315 object FlowPanel1: TFlowPanel
316 Left = 0 316 Left = 0
317 Height = 742 317 Height = 697
318 Top = 0 318 Top = 0
319 Width = 943 319 Width = 803
320 Align = alClient 320 Align = alClient
321 AutoSize = True 321 AutoSize = True
322 BevelOuter = bvNone 322 BevelOuter = bvNone
@@ -566,9 +566,9 @@ object frmTracker: TfrmTracker
566 end 566 end
567 end 567 end
568 object EnvelopeGroupBox: TGroupBox 568 object EnvelopeGroupBox: TGroupBox
569 Left = 301 569 Left = 7
570 Height = 136 570 Height = 136
571 Top = 7 571 Top = 294
572 Width = 582 572 Width = 582
573 Anchors = [] 573 Anchors = []
574 BorderSpacing.Left = 7 574 BorderSpacing.Left = 7
@@ -669,7 +669,7 @@ object frmTracker: TfrmTracker
669 object SquareGroupBox: TGroupBox 669 object SquareGroupBox: TGroupBox
670 Left = 7 670 Left = 7
671 Height = 169 671 Height = 169
672 Top = 294 672 Top = 444
673 Width = 319 673 Width = 319
674 Anchors = [] 674 Anchors = []
675 BorderSpacing.Left = 7 675 BorderSpacing.Left = 7
@@ -796,7 +796,7 @@ object frmTracker: TfrmTracker
796 object WaveGroupBox: TGroupBox 796 object WaveGroupBox: TGroupBox
797 Left = 340 797 Left = 340
798 Height = 169 798 Height = 169
799 Top = 294 799 Top = 444
800 Width = 297 800 Width = 297
801 Anchors = [] 801 Anchors = []
802 BorderSpacing.Left = 7 802 BorderSpacing.Left = 7
@@ -901,9 +901,9 @@ object frmTracker: TfrmTracker
901 end 901 end
902 end 902 end
903 object NoiseGroupBox: TGroupBox 903 object NoiseGroupBox: TGroupBox
904 Left = 651 904 Left = 7
905 Height = 59 905 Height = 59
906 Top = 294 906 Top = 627
907 Width = 237 907 Width = 237
908 Anchors = [] 908 Anchors = []
909 BorderSpacing.Left = 7 909 BorderSpacing.Left = 7
@@ -930,20 +930,20 @@ object frmTracker: TfrmTracker
930 end 930 end
931 end 931 end
932 object GroupBox1: TGroupBox 932 object GroupBox1: TGroupBox
933 Left = 943 933 Left = 803
934 Height = 735 934 Height = 690
935 Top = 7 935 Top = 7
936 Width = 309 936 Width = 309
937 Align = alRight 937 Align = alRight
938 Anchors = [] 938 Anchors = []
939 BorderSpacing.Top = 7 939 BorderSpacing.Top = 7
940 Caption = 'Subpattern' 940 Caption = 'Subpattern'
941 ClientHeight = 715 941 ClientHeight = 670
942 ClientWidth = 305 942 ClientWidth = 305
943 TabOrder = 1 943 TabOrder = 1
944 object ScrollBox2: TScrollBox 944 object ScrollBox2: TScrollBox
945 Left = 0 945 Left = 0
946 Height = 715 946 Height = 670
947 Top = 0 947 Top = 0
948 Width = 305 948 Width = 305
949 HorzScrollBar.Increment = 3 949 HorzScrollBar.Increment = 3
@@ -956,12 +956,12 @@ object frmTracker: TfrmTracker
956 VertScrollBar.Tracking = True 956 VertScrollBar.Tracking = True
957 Align = alClient 957 Align = alClient
958 BorderStyle = bsNone 958 BorderStyle = bsNone
959 ClientHeight = 715 959 ClientHeight = 670
960 ClientWidth = 305 960 ClientWidth = 305
961 TabOrder = 0 961 TabOrder = 0
962 object RowNumberStringGrid1: TStringGrid 962 object RowNumberStringGrid1: TStringGrid
963 Left = 273 963 Left = 273
964 Height = 715 964 Height = 670
965 Top = 0 965 Top = 0
966 Width = 32 966 Width = 32
967 Align = alRight 967 Align = alRight
@@ -978,16 +978,16 @@ object frmTracker: TfrmTracker
978 end 978 end
979 object WavesTabSheet: TTabSheet 979 object WavesTabSheet: TTabSheet
980 Caption = 'Waves' 980 Caption = 'Waves'
981 ClientHeight = 742 981 ClientHeight = 697
982 ClientWidth = 1252 982 ClientWidth = 1112
983 ParentFont = False 983 ParentFont = False
984 object WaveEditPaintBox: TPaintBox 984 object WaveEditPaintBox: TPaintBox
985 AnchorSideTop.Control = WaveEditGroupBox 985 AnchorSideTop.Control = WaveEditGroupBox
986 AnchorSideTop.Side = asrBottom 986 AnchorSideTop.Side = asrBottom
987 Left = 0 987 Left = 0
988 Height = 582 988 Height = 537
989 Top = 160 989 Top = 160
990 Width = 1252 990 Width = 1112
991 Align = alBottom 991 Align = alBottom
992 Anchors = [akTop, akLeft, akRight, akBottom] 992 Anchors = [akTop, akLeft, akRight, akBottom]
993 BorderSpacing.Top = 13 993 BorderSpacing.Top = 13
@@ -1080,17 +1080,17 @@ object frmTracker: TfrmTracker
1080 end 1080 end
1081 object CommentsTabSheet: TTabSheet 1081 object CommentsTabSheet: TTabSheet
1082 Caption = 'Comments' 1082 Caption = 'Comments'
1083 ClientHeight = 742 1083 ClientHeight = 697
1084 ClientWidth = 1252 1084 ClientWidth = 1112
1085 ParentFont = False 1085 ParentFont = False
1086 object CommentMemo: TMemo 1086 object CommentMemo: TMemo
1087 AnchorSideTop.Control = Label17 1087 AnchorSideTop.Control = Label17
1088 AnchorSideTop.Side = asrBottom 1088 AnchorSideTop.Side = asrBottom
1089 Left = 0 1089 Left = 0
1090 Height = 706 1090 Height = 661
1091 Hint = 'The comments section for your song. Greetings/links/etc' 1091 Hint = 'The comments section for your song. Greetings/links/etc'
1092 Top = 36 1092 Top = 36
1093 Width = 1252 1093 Width = 1112
1094 Align = alBottom 1094 Align = alBottom
1095 Anchors = [akTop, akLeft, akRight, akBottom] 1095 Anchors = [akTop, akLeft, akRight, akBottom]
1096 BorderSpacing.Top = 13 1096 BorderSpacing.Top = 13
@@ -1110,16 +1110,16 @@ object frmTracker: TfrmTracker
1110 end 1110 end
1111 object RoutinesTabSheet: TTabSheet 1111 object RoutinesTabSheet: TTabSheet
1112 Caption = 'Routines' 1112 Caption = 'Routines'
1113 ClientHeight = 742 1113 ClientHeight = 697
1114 ClientWidth = 1252 1114 ClientWidth = 1112
1115 ParentFont = False 1115 ParentFont = False
1116 inline RoutineSynedit: TSynEdit 1116 inline RoutineSynedit: TSynEdit
1117 AnchorSideTop.Control = Label19 1117 AnchorSideTop.Control = Label19
1118 AnchorSideTop.Side = asrBottom 1118 AnchorSideTop.Side = asrBottom
1119 Left = 0 1119 Left = 0
1120 Height = 614 1120 Height = 569
1121 Top = 128 1121 Top = 128
1122 Width = 1252 1122 Width = 1112
1123 Align = alBottom 1123 Align = alBottom
1124 BorderSpacing.Top = 13 1124 BorderSpacing.Top = 13
1125 Anchors = [akTop, akLeft, akRight, akBottom] 1125 Anchors = [akTop, akLeft, akRight, akBottom]
@@ -1652,11 +1652,11 @@ object frmTracker: TfrmTracker
1652 Left = 0 1652 Left = 0
1653 Height = 64 1653 Height = 64
1654 Top = 25 1654 Top = 25
1655 Width = 1458 1655 Width = 1318
1656 Align = alTop 1656 Align = alTop
1657 BevelOuter = bvNone 1657 BevelOuter = bvNone
1658 ClientHeight = 64 1658 ClientHeight = 64
1659 ClientWidth = 1458 1659 ClientWidth = 1318
1660 ParentFont = False 1660 ParentFont = False
1661 TabOrder = 3 1661 TabOrder = 3
1662 object LEDMeter1: TLEDMeter 1662 object LEDMeter1: TLEDMeter
@@ -1664,7 +1664,7 @@ object frmTracker: TfrmTracker
1664 Left = 0 1664 Left = 0
1665 Height = 32 1665 Height = 32
1666 Top = 32 1666 Top = 32
1667 Width = 670 1667 Width = 530
1668 Anchors = [akTop, akLeft, akRight] 1668 Anchors = [akTop, akLeft, akRight]
1669 BevelStyle = bvLowered 1669 BevelStyle = bvLowered
1670 Colors.Border = 2168839 1670 Colors.Border = 2168839
@@ -1687,7 +1687,7 @@ object frmTracker: TfrmTracker
1687 Left = 0 1687 Left = 0
1688 Height = 32 1688 Height = 32
1689 Top = 0 1689 Top = 0
1690 Width = 670 1690 Width = 530
1691 Anchors = [akTop, akLeft, akRight] 1691 Anchors = [akTop, akLeft, akRight]
1692 BevelStyle = bvLowered 1692 BevelStyle = bvLowered
1693 Colors.Border = 2168839 1693 Colors.Border = 2168839
@@ -1706,7 +1706,7 @@ object frmTracker: TfrmTracker
1706 Section3Value = 48 1706 Section3Value = 48
1707 end 1707 end
1708 object Duty1Visualizer: TPaintBox 1708 object Duty1Visualizer: TPaintBox
1709 Left = 670 1709 Left = 530
1710 Height = 64 1710 Height = 64
1711 Top = 0 1711 Top = 0
1712 Width = 197 1712 Width = 197
@@ -1716,7 +1716,7 @@ object frmTracker: TfrmTracker
1716 OnPaint = Duty1VisualizerPaint 1716 OnPaint = Duty1VisualizerPaint
1717 end 1717 end
1718 object Duty2Visualizer: TPaintBox 1718 object Duty2Visualizer: TPaintBox
1719 Left = 867 1719 Left = 727
1720 Height = 64 1720 Height = 64
1721 Top = 0 1721 Top = 0
1722 Width = 197 1722 Width = 197
@@ -1726,7 +1726,7 @@ object frmTracker: TfrmTracker
1726 OnPaint = Duty2VisualizerPaint 1726 OnPaint = Duty2VisualizerPaint
1727 end 1727 end
1728 object WaveVisualizer: TPaintBox 1728 object WaveVisualizer: TPaintBox
1729 Left = 1064 1729 Left = 924
1730 Height = 64 1730 Height = 64
1731 Top = 0 1731 Top = 0
1732 Width = 197 1732 Width = 197
@@ -1736,7 +1736,7 @@ object frmTracker: TfrmTracker
1736 OnPaint = WaveVisualizerPaint 1736 OnPaint = WaveVisualizerPaint
1737 end 1737 end
1738 object NoiseVisualizer: TPaintBox 1738 object NoiseVisualizer: TPaintBox
1739 Left = 1261 1739 Left = 1121
1740 Height = 64 1740 Height = 64
1741 Top = 0 1741 Top = 0
1742 Width = 197 1742 Width = 197
@@ -1749,8 +1749,8 @@ object frmTracker: TfrmTracker
1749 object StatusBar1: TStatusBar 1749 object StatusBar1: TStatusBar
1750 Left = 0 1750 Left = 0
1751 Height = 23 1751 Height = 23
1752 Top = 859 1752 Top = 814
1753 Width = 1458 1753 Width = 1318
1754 AutoHint = True 1754 AutoHint = True
1755 Panels = < 1755 Panels = <
1756 item 1756 item
@@ -1771,7 +1771,7 @@ object frmTracker: TfrmTracker
1771 Left = 0 1771 Left = 0
1772 Height = 25 1772 Height = 25
1773 Top = 0 1773 Top = 0
1774 Width = 1458 1774 Width = 1318
1775 AutoSize = True 1775 AutoSize = True
1776 Caption = 'ToolBar1' 1776 Caption = 'ToolBar1'
1777 EdgeBorders = [ebBottom] 1777 EdgeBorders = [ebBottom]
Modifiedtracker.pas +37−33
@@ -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);