Commit d668f54

Nick committed on
Adding inc/dec for all cell parts
commit d668f543122d01148ac07ea6ee18bedc5c3e8b9c parent 57f2d36
3 changed files +107−16
Modifiedtracker.lfm +37−9
@@ -57,14 +57,14 @@ object frmTracker: TfrmTracker
57 Height = 442 57 Height = 442
58 Top = 0 58 Top = 0
59 Width = 968 59 Width = 968
60 ActivePage = InstrumentTabSheet 60 ActivePage = PatternTabSheet
61 Align = alClient 61 Align = alClient
62 ParentFont = False 62 ParentFont = False
63 TabIndex = 2 63 TabIndex = 1
64 TabOrder = 0 64 TabOrder = 0
65 object GeneralTabSheet: TTabSheet 65 object GeneralTabSheet: TTabSheet
66 Caption = 'General' 66 Caption = 'General'
67 ClientHeight = 412 67 ClientHeight = 414
68 ClientWidth = 960 68 ClientWidth = 960
69 ParentFont = False 69 ParentFont = False
70 object SongInformationGroupbox: TGroupBox 70 object SongInformationGroupbox: TGroupBox
@@ -141,16 +141,16 @@ object frmTracker: TfrmTracker
141 end 141 end
142 object PatternTabSheet: TTabSheet 142 object PatternTabSheet: TTabSheet
143 Caption = 'Patterns' 143 Caption = 'Patterns'
144 ClientHeight = 412 144 ClientHeight = 414
145 ClientWidth = 960 145 ClientWidth = 960
146 ParentFont = False 146 ParentFont = False
147 object Panel3: TPanel 147 object Panel3: TPanel
148 Left = 224 148 Left = 224
149 Height = 412 149 Height = 414
150 Top = 0 150 Top = 0
151 Width = 736 151 Width = 736
152 Align = alClient 152 Align = alClient
153 ClientHeight = 412 153 ClientHeight = 414
154 ClientWidth = 736 154 ClientWidth = 736
155 ParentFont = False 155 ParentFont = False
156 TabOrder = 0 156 TabOrder = 0
@@ -199,7 +199,7 @@ object frmTracker: TfrmTracker
199 end 199 end
200 object ScrollBox1: TScrollBox 200 object ScrollBox1: TScrollBox
201 Left = 1 201 Left = 1
202 Height = 380 202 Height = 382
203 Top = 31 203 Top = 31
204 Width = 734 204 Width = 734
205 HorzScrollBar.Increment = 1 205 HorzScrollBar.Increment = 1
@@ -218,7 +218,7 @@ object frmTracker: TfrmTracker
218 end 218 end
219 object OrderEditStringGrid: TStringGrid 219 object OrderEditStringGrid: TStringGrid
220 Left = 0 220 Left = 0
221 Height = 412 221 Height = 414
222 Top = 0 222 Top = 0
223 Width = 224 223 Width = 224
224 Align = alLeft 224 Align = alLeft
@@ -4920,7 +4920,7 @@ object frmTracker: TfrmTracker
4920 end 4920 end
4921 object GBSSaveDialog: TSaveDialog 4921 object GBSSaveDialog: TSaveDialog
4922 Filter = 'Gameboy Soundtrack|*.gbs' 4922 Filter = 'Gameboy Soundtrack|*.gbs'
4923 left = 590 4923 left = 560
4924 top = 37 4924 top = 37
4925 end 4925 end
4926 object WaveSaveDialog: TSaveDialog 4926 object WaveSaveDialog: TSaveDialog
@@ -5030,6 +5030,34 @@ object frmTracker: TfrmTracker
5030 ShortCut = 16473 5030 ShortCut = 16473
5031 OnClick = TrackerPopupRedoClick 5031 OnClick = TrackerPopupRedoClick
5032 end 5032 end
5033 object MenuItem36: TMenuItem
5034 Caption = '-'
5035 Visible = False
5036 end
5037 object MenuItem37: TMenuItem
5038 Caption = 'Increment value by 1'
5039 ShortCut = 16571
5040 Visible = False
5041 OnClick = MenuItem37Click
5042 end
5043 object MenuItem38: TMenuItem
5044 Caption = 'Decrement value by 1'
5045 ShortCut = 16573
5046 Visible = False
5047 OnClick = MenuItem38Click
5048 end
5049 object MenuItem39: TMenuItem
5050 Caption = 'Increment value by 10'
5051 ShortCut = 24763
5052 Visible = False
5053 OnClick = MenuItem39Click
5054 end
5055 object MenuItem40: TMenuItem
5056 Caption = 'Decrement value by 10'
5057 ShortCut = 24765
5058 Visible = False
5059 OnClick = MenuItem40Click
5060 end
5033 end 5061 end
5034 object WavSaveDialog: TSaveDialog 5062 object WavSaveDialog: TSaveDialog
5035 DefaultExt = '.wav' 5063 DefaultExt = '.wav'
Modifiedtracker.pas +31−0
@@ -39,7 +39,12 @@ type
39 MenuItem33: TMenuItem; 39 MenuItem33: TMenuItem;
40 MenuItem34: TMenuItem; 40 MenuItem34: TMenuItem;
41 MenuItem35: TMenuItem; 41 MenuItem35: TMenuItem;
42 MenuItem36: TMenuItem;
43 MenuItem37: TMenuItem;
44 MenuItem38: TMenuItem;
45 MenuItem39: TMenuItem;
42 MenuItem4: TMenuItem; 46 MenuItem4: TMenuItem;
47 MenuItem40: TMenuItem;
43 NoiseVisualizer: TPaintBox; 48 NoiseVisualizer: TPaintBox;
44 MODOpenDialog: TOpenDialog; 49 MODOpenDialog: TOpenDialog;
45 Panel6: TPanel; 50 Panel6: TPanel;
@@ -264,6 +269,10 @@ type
264 procedure MenuItem31Click(Sender: TObject); 269 procedure MenuItem31Click(Sender: TObject);
265 procedure MenuItem33Click(Sender: TObject); 270 procedure MenuItem33Click(Sender: TObject);
266 procedure MenuItem34Click(Sender: TObject); 271 procedure MenuItem34Click(Sender: TObject);
272 procedure MenuItem37Click(Sender: TObject);
273 procedure MenuItem38Click(Sender: TObject);
274 procedure MenuItem39Click(Sender: TObject);
275 procedure MenuItem40Click(Sender: TObject);
267 procedure MenuItem5Click(Sender: TObject); 276 procedure MenuItem5Click(Sender: TObject);
268 procedure MenuItem8Click(Sender: TObject); 277 procedure MenuItem8Click(Sender: TObject);
269 procedure NoiseVisualizerPaint(Sender: TObject); 278 procedure NoiseVisualizerPaint(Sender: TObject);
@@ -1582,6 +1591,8 @@ procedure TfrmTracker.MenuItem34Click(Sender: TObject);
1582 var 1591 var
1583 Stream: TStream; 1592 Stream: TStream;
1584 begin 1593 begin
1594 if not CheckUnsavedChanges then Exit;
1595
1585 if MODOpenDialog.Execute then begin 1596 if MODOpenDialog.Execute then begin
1586 DestroySong(Song); 1597 DestroySong(Song);
1587 1598
@@ -1594,6 +1605,26 @@ begin
1594 end; 1605 end;
1595 end; 1606 end;
1596 1607
1608 procedure TfrmTracker.MenuItem37Click(Sender: TObject);
1609 begin
1610 TrackerGrid.IncrementSelection(1, 1, 0, 0, 1);
1611 end;
1612
1613 procedure TfrmTracker.MenuItem38Click(Sender: TObject);
1614 begin
1615 TrackerGrid.IncrementSelection(-1, -1, 0, 0, -1);
1616 end;
1617
1618 procedure TfrmTracker.MenuItem39Click(Sender: TObject);
1619 begin
1620 TrackerGrid.IncrementSelection(12, 10, 0, 0, $10);
1621 end;
1622
1623 procedure TfrmTracker.MenuItem40Click(Sender: TObject);
1624 begin
1625 TrackerGrid.IncrementSelection(-12, -10, 0, 0, -$10);
1626 end;
1627
1597 procedure TfrmTracker.MenuItem5Click(Sender: TObject); 1628 procedure TfrmTracker.MenuItem5Click(Sender: TObject);
1598 begin 1629 begin
1599 frmAboutHugetracker.Show; 1630 frmAboutHugetracker.Show;
Modifiedtrackergrid.pas +39−7
@@ -128,6 +128,7 @@ type
128 128
129 function GetAt(SelectionPos: TSelectionPos): Integer; 129 function GetAt(SelectionPos: TSelectionPos): Integer;
130 procedure SetAt(SelectionPos: TSelectionPos; Value: Integer); 130 procedure SetAt(SelectionPos: TSelectionPos; Value: Integer);
131 procedure IncrementAt(SelectionPos: TSelectionPos; Value: Integer);
131 procedure ClearAt(SelectionPos: TSelectionPos); 132 procedure ClearAt(SelectionPos: TSelectionPos);
132 133
133 procedure SelectAll; 134 procedure SelectAll;
@@ -137,6 +138,7 @@ type
137 procedure DoRedo; 138 procedure DoRedo;
138 procedure DoRepeatPaste; 139 procedure DoRepeatPaste;
139 procedure TransposeSelection(Semitones: Integer); 140 procedure TransposeSelection(Semitones: Integer);
141 procedure IncrementSelection(Note, Instrument, Volume, EffectCode, EffectParam: Integer);
140 procedure InterpolateSelection; 142 procedure InterpolateSelection;
141 procedure OpenEffectEditor; 143 procedure OpenEffectEditor;
142 144
@@ -574,19 +576,37 @@ begin
574 end; 576 end;
575 577
576 procedure TTrackerGrid.TransposeSelection(Semitones: Integer); 578 procedure TTrackerGrid.TransposeSelection(Semitones: Integer);
579 begin
580 IncrementSelection(Semitones, 0, 0, 0, 0);
581 end;
582
583 procedure TTrackerGrid.IncrementSelection(Note, Instrument, Volume, EffectCode,
584 EffectParam: Integer);
577 var 585 var
578 C, R: Integer; 586 Pos: TSelectionPos;
579 begin 587 begin
580 NormalizeCursors; 588 NormalizeCursors;
581 589
582 for R := Cursor.Y to Other.Y do 590 Pos := Cursor;
583 for C := Cursor.X to Other.X do 591
584 if Patterns[C]^[R].Note <> NO_NOTE then 592 while Pos.Y <= Other.Y do begin
585 Patterns[C]^[R].Note := 593 while Pos <= Other do begin
586 EnsureRange(Patterns[C]^[R].Note + Semitones, LOWEST_NOTE, HIGHEST_NOTE); 594 case Pos.SelectedPart of
595 cpNote: IncrementAt(Pos, Note);
596 cpInstrument: IncrementAt(Pos, Instrument);
597 cpVolume: IncrementAt(Pos, Volume);
598 cpEffectCode: IncrementAt(Pos, EffectCode);
599 cpEffectParams: IncrementAt(Pos, EffectParam);
600 end;
601 IncSelectionPos(Pos);
602 end;
603 Inc(Pos.Y);
604 Pos.X := Cursor.X;
605 Pos.SelectedPart := Cursor.SelectedPart;
606 end;
587 607
588 Invalidate; 608 Invalidate;
589 SaveUndoState; 609 SaveUndoState
590 end; 610 end;
591 611
592 procedure TTrackerGrid.InterpolateSelection; 612 procedure TTrackerGrid.InterpolateSelection;
@@ -1017,6 +1037,18 @@ begin
1017 end; 1037 end;
1018 end; 1038 end;
1019 1039
1040 procedure TTrackerGrid.IncrementAt(SelectionPos: TSelectionPos; Value: Integer);
1041 begin
1042 with Patterns[SelectionPos.X]^[SelectionPos.Y] do
1043 case SelectionPos.SelectedPart of
1044 cpNote: Note := EnsureRange(Note+Value, LOWEST_NOTE, HIGHEST_NOTE);
1045 cpInstrument: Instrument := Max(Instrument+Value, 0);
1046 cpVolume:;
1047 cpEffectCode: EffectCode := EnsureRange(EffectCode+Value, $0, $F);
1048 cpEffectParams: EffectParams.Value := EnsureRange(EffectParams.Value+Value, Low(Byte), High(Byte));
1049 end;
1050 end;
1051
1020 procedure TTrackerGrid.ClearAt(SelectionPos: TSelectionPos); 1052 procedure TTrackerGrid.ClearAt(SelectionPos: TSelectionPos);
1021 begin 1053 begin
1022 with Patterns[SelectionPos.X]^[SelectionPos.Y] do 1054 with Patterns[SelectionPos.X]^[SelectionPos.Y] do