Commit dfbd736

Nick committed on
Implement row numbering in tracker
commit dfbd736f292f68421a892f9ee8346a2157fa3698 parent 8371520
9 changed files +52−22
ModifiedSound/sound.pas +1−1
@@ -266,7 +266,7 @@ begin
266 SDL_UnlockAudioDevice(PlayStream); 266 SDL_UnlockAudioDevice(PlayStream);
267 end; 267 end;
268 268
269 procedure AudioCallback(userdata: Pointer; stream: PUInt8; len: Integer)cdecl; 269 procedure AudioCallback(userdata: Pointer; stream: PUInt8; len: Integer) cdecl;
270 begin 270 begin
271 sndBuffer := PSingle(Stream); 271 sndBuffer := PSingle(Stream);
272 sndBytesWritten := 0; 272 sndBytesWritten := 0;
Modifiedtracker.lfm +26−6
@@ -1,7 +1,7 @@
1 object frmTracker: TfrmTracker 1 object frmTracker: TfrmTracker
2 Left = 411 2 Left = 247
3 Height = 806 3 Height = 806
4 Top = 117 4 Top = 197
5 Width = 1270 5 Width = 1270
6 AllowDropFiles = True 6 AllowDropFiles = True
7 Caption = 'hUGETracker' 7 Caption = 'hUGETracker'
@@ -167,6 +167,11 @@ object frmTracker: TfrmTracker
167 DragReorder = False 167 DragReorder = False
168 Images = ImageList2 168 Images = ImageList2
169 Sections = < 169 Sections = <
170 item
171 Alignment = taLeftJustify
172 Width = 32
173 Visible = True
174 end
170 item 175 item
171 Alignment = taCenter 176 Alignment = taCenter
172 ImageIndex = 1 177 ImageIndex = 1
@@ -206,20 +211,35 @@ object frmTracker: TfrmTracker
206 Height = 614 211 Height = 614
207 Top = 31 212 Top = 31
208 Width = 838 213 Width = 838
209 HorzScrollBar.Increment = 1 214 HorzScrollBar.Increment = 3
210 HorzScrollBar.Page = 1 215 HorzScrollBar.Page = 32
211 HorzScrollBar.Smooth = True 216 HorzScrollBar.Smooth = True
212 HorzScrollBar.Tracking = True 217 HorzScrollBar.Tracking = True
213 VertScrollBar.Increment = 1 218 VertScrollBar.Increment = 5
214 VertScrollBar.Page = 1 219 VertScrollBar.Page = 50
215 VertScrollBar.Smooth = True 220 VertScrollBar.Smooth = True
216 VertScrollBar.Tracking = True 221 VertScrollBar.Tracking = True
217 Align = alClient 222 Align = alClient
218 BorderStyle = bsNone 223 BorderStyle = bsNone
224 ClientHeight = 614
225 ClientWidth = 838
219 ParentFont = False 226 ParentFont = False
220 TabOrder = 1 227 TabOrder = 1
221 OnMouseWheelDown = ScrollBox1MouseWheelDown 228 OnMouseWheelDown = ScrollBox1MouseWheelDown
222 OnMouseWheelUp = ScrollBox1MouseWheelUp 229 OnMouseWheelUp = ScrollBox1MouseWheelUp
230 object RowNumberStringGrid: TStringGrid
231 Left = 0
232 Height = 614
233 Top = 0
234 Width = 32
235 Align = alLeft
236 BorderStyle = bsNone
237 ColCount = 1
238 DefaultColWidth = 32
239 RowCount = 64
240 ScrollBars = ssNone
241 TabOrder = 0
242 end
223 end 243 end
224 end 244 end
225 object OrderEditStringGrid: TStringGrid 245 object OrderEditStringGrid: TStringGrid
Modifiedtracker.pas +25−15
@@ -77,6 +77,7 @@ type
77 MenuItem53: TMenuItem; 77 MenuItem53: TMenuItem;
78 NoiseVisualizer: TPaintBox; 78 NoiseVisualizer: TPaintBox;
79 MODOpenDialog: TOpenDialog; 79 MODOpenDialog: TOpenDialog;
80 RowNumberStringGrid: TStringGrid;
80 WaveEditPopup: TPopupMenu; 81 WaveEditPopup: TPopupMenu;
81 SynAnySyn1: TSynAnySyn; 82 SynAnySyn1: TSynAnySyn;
82 WavSaveDialog: TSaveDialog; 83 WavSaveDialog: TSaveDialog;
@@ -775,11 +776,11 @@ end;
775 776
776 procedure TfrmTracker.OnTrackerGridResize(Sender: TObject); 777 procedure TfrmTracker.OnTrackerGridResize(Sender: TObject);
777 var 778 var
778 Section: TCollectionItem; 779 I: Integer;
779 begin 780 begin
780 // Fix the size of the channel headers 781 // Fix the size of the channel headers
781 for Section in HeaderControl1.Sections do 782 for I := 1 to HeaderControl1.Sections.Count-1 do
782 (Section as THeaderSection).Width := TrackerGrid.ColumnWidth; 783 HeaderControl1.Sections.Items[I].Width := TrackerGrid.ColumnWidth;
783 end; 784 end;
784 785
785 procedure TfrmTracker.OnTrackerGridCursorOutOfBounds; 786 procedure TfrmTracker.OnTrackerGridCursorOutOfBounds;
@@ -921,8 +922,8 @@ begin
921 LockPlayback; 922 LockPlayback;
922 GetROMReady('hUGEDriver/preview.gb'); 923 GetROMReady('hUGEDriver/preview.gb');
923 PokeSymbol(SYM_TICKS_PER_ROW, Song.TicksPerRow); 924 PokeSymbol(SYM_TICKS_PER_ROW, Song.TicksPerRow);
924 for I := 0 to 3 do 925 for I := 1 to 4 do
925 snd[I+1].ChannelOFF := HeaderControl1.Sections[I].ImageIndex = 0; 926 snd[I].ChannelOFF := HeaderControl1.Sections[I].ImageIndex = 0;
926 927
927 Result := True; 928 Result := True;
928 end 929 end
@@ -989,19 +990,21 @@ end;
989 990
990 procedure TfrmTracker.RecreateTrackerGrid; 991 procedure TfrmTracker.RecreateTrackerGrid;
991 var 992 var
992 Section: TCollectionItem; 993 I: Integer;
993 begin 994 begin
994 if Assigned(TrackerGrid) then TrackerGrid.Free; 995 if Assigned(TrackerGrid) then TrackerGrid.Free;
995 TrackerGrid := TTrackerGrid.Create(Self, ScrollBox1, Song.Patterns); 996 TrackerGrid := TTrackerGrid.Create(Self, ScrollBox1, Song.Patterns);
996 TrackerGrid.OnResize:=@OnTrackerGridResize; 997 TrackerGrid.OnResize:=@OnTrackerGridResize;
997 TrackerGrid.OnCursorOutOfBounds:=@OnTrackerGridCursorOutOfBounds; 998 TrackerGrid.OnCursorOutOfBounds:=@OnTrackerGridCursorOutOfBounds;
999 TrackerGrid.Left := RowNumberStringGrid.Left + RowNumberStringGrid.Width;
1000 RowNumberStringGrid.DefaultRowHeight := TrackerGrid.RowHeight;
998 1001
999 TrackerGrid.FontSize := OptionsFile.ReadInteger('hUGETracker', 'fontsize', 12); 1002 TrackerGrid.FontSize := OptionsFile.ReadInteger('hUGETracker', 'fontsize', 12);
1000 ScopesOn := OptionsFile.ReadBool('hUGETracker', 'ScopesOn', True); 1003 ScopesOn := OptionsFile.ReadBool('hUGETracker', 'ScopesOn', True);
1001 1004
1002 // Fix the size of the channel headers 1005 // Fix the size of the channel headers
1003 for Section in HeaderControl1.Sections do 1006 for I := 1 to HeaderControl1.Sections.Count-1 do
1004 (Section as THeaderSection).Width := TrackerGrid.ColumnWidth; 1007 HeaderControl1.Sections.Items[I].Width := TrackerGrid.ColumnWidth;
1005 1008
1006 TrackerGrid.PopupMenu := TrackerGridPopup; 1009 TrackerGrid.PopupMenu := TrackerGridPopup;
1007 end; 1010 end;
@@ -1203,6 +1206,7 @@ var
1203 SampleSongs: TStringList; 1206 SampleSongs: TStringList;
1204 S: String; 1207 S: String;
1205 MenuItem: TMenuItem; 1208 MenuItem: TMenuItem;
1209 I: Integer;
1206 begin 1210 begin
1207 {if Screen.Fonts.IndexOf('PixeliteTTF') = -1 then 1211 {if Screen.Fonts.IndexOf('PixeliteTTF') = -1 then
1208 MessageDlg('Warning', 'You don''t have the Pixelite font installed. '+ 1212 MessageDlg('Warning', 'You don''t have the Pixelite font installed. '+
@@ -1280,6 +1284,10 @@ begin
1280 // Switch to general tab sheet 1284 // Switch to general tab sheet
1281 PageControl1.ActivePageIndex := 0; 1285 PageControl1.ActivePageIndex := 0;
1282 1286
1287 // Add the row numbers to the string grid
1288 for I := 0 to RowNumberStringGrid.RowCount-1 do
1289 RowNumberStringGrid.Cells[0, I] := IntToStr(I);
1290
1283 {$ifdef DEVELOPMENT} 1291 {$ifdef DEVELOPMENT}
1284 DebugShiteButton.Visible := True; 1292 DebugShiteButton.Visible := True;
1285 DebugPlayNoteButton.Visible := True; 1293 DebugPlayNoteButton.Visible := True;
@@ -1477,16 +1485,18 @@ begin
1477 SelectedSection := HeaderControl1.Sections[HeaderControl1.GetSectionAt(P)]; 1485 SelectedSection := HeaderControl1.Sections[HeaderControl1.GetSectionAt(P)];
1478 SelectedSection.ImageIndex := 1; 1486 SelectedSection.ImageIndex := 1;
1479 1487
1480 for I := 0 to 3 do 1488 for I := 1 to 4 do
1481 snd[I+1].ChannelOFF := HeaderControl1.Sections[I].ImageIndex = 0; 1489 snd[I].ChannelOFF := HeaderControl1.Sections[I].ImageIndex = 0;
1482 end; 1490 end;
1483 end; 1491 end;
1484 1492
1485 procedure TfrmTracker.HeaderControl1SectionClick( 1493 procedure TfrmTracker.HeaderControl1SectionClick(
1486 HeaderControl: TCustomHeaderControl; Section: THeaderSection); 1494 HeaderControl: TCustomHeaderControl; Section: THeaderSection);
1487 begin 1495 begin
1496 if Section.OriginalIndex = 0 then Exit;
1497
1488 Section.ImageIndex := (Section.ImageIndex + 1) mod 2; 1498 Section.ImageIndex := (Section.ImageIndex + 1) mod 2;
1489 snd[Section.OriginalIndex+1].ChannelOFF := Section.ImageIndex = 0; 1499 snd[Section.OriginalIndex].ChannelOFF := Section.ImageIndex = 0;
1490 end; 1500 end;
1491 1501
1492 procedure TfrmTracker.HeaderControl1SectionResize( 1502 procedure TfrmTracker.HeaderControl1SectionResize(
@@ -1769,10 +1779,10 @@ procedure TfrmTracker.Duty1VisualizerClick(Sender: TObject);
1769 var 1779 var
1770 Section: THeaderSection; 1780 Section: THeaderSection;
1771 begin 1781 begin
1772 if Sender = Duty1Visualizer then Section := HeaderControl1.Sections.Items[0] 1782 if Sender = Duty1Visualizer then Section := HeaderControl1.Sections.Items[1]
1773 else if Sender = Duty2Visualizer then Section := HeaderControl1.Sections.Items[1] 1783 else if Sender = Duty2Visualizer then Section := HeaderControl1.Sections.Items[2]
1774 else if Sender = WaveVisualizer then Section := HeaderControl1.Sections.Items[2] 1784 else if Sender = WaveVisualizer then Section := HeaderControl1.Sections.Items[3]
1775 else {if Sender = NoiseVisualizer then} Section := HeaderControl1.Sections.Items[3]; 1785 else {if Sender = NoiseVisualizer then} Section := HeaderControl1.Sections.Items[4];
1776 1786
1777 Section.ImageIndex := (Section.ImageIndex + 1) mod 2; 1787 Section.ImageIndex := (Section.ImageIndex + 1) mod 2;
1778 snd[Section.OriginalIndex+1].ChannelOFF := Section.ImageIndex = 0; 1788 snd[Section.OriginalIndex+1].ChannelOFF := Section.ImageIndex = 0;