-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfrmCopyPattern.pas
103 lines (90 loc) · 4.23 KB
/
frmCopyPattern.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
unit frmCopyPattern;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TCopyPatternDlg = class(TForm)
cmdOK: TButton;
cmdCancel: TButton;
lblCopyTo: TLabel;
txtDest: TEdit;
udnDest: TUpDown;
Label1: TLabel;
txtSource: TEdit;
udnSource: TUpDown;
lblOverwriteMsg: TLabel;
GroupBox1: TGroupBox;
chkChan1: TCheckBox;
chkChan2: TCheckBox;
chkDrums: TCheckBox;
procedure udnDestClick(Sender: TObject; Button: TUDBtnType);
procedure FormShow(Sender: TObject);
procedure cmdOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CopyPatternDlg: TCopyPatternDlg;
implementation
uses frmSTMainWnd;
{$R *.dfm}
procedure TCopyPatternDlg.cmdOKClick(Sender: TObject);
var
i: Integer;
begin
STMainWnd.Song.Pattern[udnDest.Position].Length := STMainWnd.Song.Pattern[udnSource.Position].Length;
STMainWnd.Song.Pattern[udnDest.Position].Tempo := STMainWnd.Song.Pattern[udnSource.Position].Tempo;
STMainWnd.Song.Pattern[udnDest.Position].Name := STMainWnd.Song.Pattern[udnSource.Position].Name;
for i := 1 to STMainWnd.Song.Pattern[udnSource.Position].Length do
begin
if chkChan1.Checked then
begin
STMainWnd.Song.Pattern[udnDest.Position].Chan[1][i] := STMainWnd.Song.Pattern[udnSource.Position].Chan[1][i];
STMainWnd.Song.Pattern[udnDest.Position].Sustain[1][i] := STMainWnd.Song.Pattern[udnSource.Position].Sustain[1][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Glissando[1][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Glissando[1][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Skew[1][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Skew[1][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].SkewXOR[1][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].SkewXOR[1][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Arpeggio[1][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Arpeggio[1][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Warp[1][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Warp[1][i];
end;
if chkChan2.Checked then
begin
STMainWnd.Song.Pattern[udnDest.Position].Chan[2][i] := STMainWnd.Song.Pattern[udnSource.Position].Chan[2][i];
STMainWnd.Song.Pattern[udnDest.Position].Sustain[2][i] := STMainWnd.Song.Pattern[udnSource.Position].Sustain[2][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Glissando[2][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Glissando[2][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Skew[2][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Skew[2][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].SkewXOR[2][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].SkewXOR[2][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Arpeggio[2][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Arpeggio[2][i];
STMainWnd.Song.SvgPatternData[udnDest.Position].Warp[2][i] := STMainWnd.Song.SvgPatternData[udnSource.Position].Warp[2][i];
end;
if chkDrums.Checked then
STMainWnd.Song.Pattern[udnDest.Position].Drum[i] := STMainWnd.Song.Pattern[udnSource.Position].Drum[i];
end;
STMainWnd.udnPatternNum.Position := udnDest.Position;
STMainWnd.txtPatternNumChange(nil);
Self.ModalResult := mrOK;
end;
procedure TCopyPatternDlg.FormShow(Sender: TObject);
begin
if not (STMainWnd.Song.IsPatternEmpty(udnDest.Position)) then
begin
lblOverwriteMsg.Caption := 'The destination pattern, ' + IntToStr(udnDest.Position) + ', already contains data which will be overwritten if you select OK.';
lblOverwriteMsg.Show
end
else
lblOverwriteMsg.Hide;
end;
procedure TCopyPatternDlg.udnDestClick(Sender: TObject; Button: TUDBtnType);
begin
if not (STMainWnd.Song.IsPatternEmpty(udnDest.Position)) then
begin
lblOverwriteMsg.Caption := 'The destination pattern, ' + IntToStr(udnDest.Position) + ', already contains data which will be overwritten if you select OK.';
lblOverwriteMsg.Show
end
else
lblOverwriteMsg.Hide;
end;
end.