1 |
|
unit Tool_Extractor; |
2 |
– |
|
2 |
|
interface |
4 |
– |
|
3 |
|
uses |
4 |
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
5 |
< |
Dialogs, StdCtrls, ExtCtrls, StrUtils, ComCtrls; |
5 |
> |
Dialogs, Tool_Template, StdCtrls, ExtCtrls, ComCtrls, Menus; |
6 |
|
|
7 |
|
type |
8 |
< |
TForm_Extractor = class(TForm) |
11 |
< |
group_select: TGroupBox; |
8 |
> |
TForm_Extractor = class(TForm_ToolTemplate) |
9 |
|
group_extract: TGroupBox; |
10 |
|
group_singlefiles: TGroupBox; |
11 |
|
btn_sel_dat: TButton; |
14 |
|
btn_all_dat: TButton; |
15 |
|
btn_all_datraw: TButton; |
16 |
|
btn_all_datraw_convert: TButton; |
20 |
– |
group_onefile: TGroupBox; |
17 |
|
btn_sel_files_toone: TButton; |
18 |
|
btn_all_files_toone: TButton; |
19 |
+ |
group_onefile: TGroupBox; |
20 |
|
group_progress: TGroupBox; |
24 |
– |
progress: TProgressBar; |
21 |
|
lbl_progress: TLabel; |
22 |
|
lbl_estimated: TLabel; |
23 |
+ |
progress: TProgressBar; |
24 |
|
btn_abort: TButton; |
25 |
|
saved: TSaveDialog; |
29 |
– |
panel_extension: TPanel; |
30 |
– |
lbl_filter: TLabel; |
31 |
– |
combo_extension: TComboBox; |
32 |
– |
check_zerobyte: TCheckBox; |
33 |
– |
edit_filtername: TEdit; |
34 |
– |
check_filtername: TCheckBox; |
35 |
– |
list: TListBox; |
36 |
– |
procedure LoadFileNames; |
37 |
– |
procedure check_filternameClick(Sender: TObject); |
38 |
– |
procedure check_zerobyteClick(Sender: TObject); |
39 |
– |
procedure combo_extensionClick(Sender: TObject); |
40 |
– |
procedure panel_extensionResize(Sender: TObject); |
41 |
– |
procedure Recreatelist; |
42 |
– |
|
26 |
|
procedure FormCreate(Sender: TObject); |
44 |
– |
procedure FormClose(Sender: TObject; var Action: TCloseAction); |
45 |
– |
procedure FormResize(Sender: TObject); |
27 |
|
procedure Extract(Sender: TObject); |
28 |
+ |
procedure btn_abortClick(Sender: TObject); |
29 |
|
private |
30 |
|
public |
31 |
|
end; |
34 |
|
Form_Extractor: TForm_Extractor; |
35 |
|
|
36 |
|
implementation |
55 |
– |
|
37 |
|
{$R *.dfm} |
57 |
– |
|
38 |
|
uses Main, Code_Functions, Data, Code_OniDataClass; |
39 |
|
|
60 |
– |
|
61 |
– |
|
62 |
– |
|
63 |
– |
procedure TForm_Extractor.Recreatelist; |
64 |
– |
var |
65 |
– |
i: LongWord; |
66 |
– |
exts: TStringArray; |
67 |
– |
begin |
68 |
– |
combo_extension.Items.Clear; |
69 |
– |
combo_extension.Items.Add('_All files_ (' + IntToStr( |
70 |
– |
OniDataConnection.GetFilesCount) + ')'); |
71 |
– |
exts := OniDataConnection.GetExtensionsList; |
72 |
– |
for i := 0 to High(exts) do |
73 |
– |
combo_extension.Items.Add(exts[i]); |
74 |
– |
combo_extension.ItemIndex := 0; |
75 |
– |
combo_extensionClick(Self); |
76 |
– |
end; |
77 |
– |
|
78 |
– |
|
79 |
– |
|
80 |
– |
|
81 |
– |
procedure TForm_Extractor.LoadFileNames; |
82 |
– |
var |
83 |
– |
Extension: String[4]; |
84 |
– |
no_zero_bytes: Boolean; |
85 |
– |
pattern: String; |
86 |
– |
files: TStringArray; |
87 |
– |
i: LongWord; |
88 |
– |
begin |
89 |
– |
Extension := MidStr(combo_extension.Items.Strings[combo_extension.ItemIndex], 1, 4); |
90 |
– |
no_zero_bytes := not check_zerobyte.Checked; |
91 |
– |
pattern := ''; |
92 |
– |
if check_filtername.Checked then |
93 |
– |
pattern := edit_filtername.Text; |
94 |
– |
if Extension = '_All' then |
95 |
– |
Extension := ''; |
96 |
– |
|
97 |
– |
files := OniDataConnection.GetFilesList(extension, pattern, no_zero_bytes); |
98 |
– |
list.Items.Clear; |
99 |
– |
if Length(files) > 0 then |
100 |
– |
for i := 0 to High(files) do |
101 |
– |
list.Items.Add(files[i]); |
102 |
– |
end; |
103 |
– |
|
104 |
– |
|
105 |
– |
|
106 |
– |
|
107 |
– |
procedure TForm_Extractor.panel_extensionResize(Sender: TObject); |
108 |
– |
begin |
109 |
– |
combo_extension.Width := panel_extension.Width - 5; |
110 |
– |
edit_filtername.Width := panel_extension.Width - 5; |
111 |
– |
end; |
112 |
– |
|
113 |
– |
|
114 |
– |
|
115 |
– |
|
116 |
– |
procedure TForm_Extractor.combo_extensionClick(Sender: TObject); |
117 |
– |
begin |
118 |
– |
LoadFileNames; |
119 |
– |
end; |
120 |
– |
|
121 |
– |
|
122 |
– |
|
123 |
– |
|
124 |
– |
procedure TForm_Extractor.check_zerobyteClick(Sender: TObject); |
125 |
– |
var |
126 |
– |
i: Byte; |
127 |
– |
begin |
128 |
– |
LoadFileNames; |
129 |
– |
end; |
130 |
– |
|
131 |
– |
|
132 |
– |
|
133 |
– |
|
134 |
– |
procedure TForm_Extractor.check_filternameClick(Sender: TObject); |
135 |
– |
begin |
136 |
– |
edit_filtername.Enabled := not check_filtername.Checked; |
137 |
– |
LoadFileNames; |
138 |
– |
end; |
139 |
– |
|
140 |
– |
|
141 |
– |
|
142 |
– |
|
143 |
– |
procedure TForm_Extractor.FormResize(Sender: TObject); |
144 |
– |
begin |
145 |
– |
if Self.Width >= 450 then |
146 |
– |
begin |
147 |
– |
end |
148 |
– |
else |
149 |
– |
Self.Width := 450; |
150 |
– |
if Self.Height >= 400 then |
151 |
– |
begin |
152 |
– |
group_progress.Height := group_extract.Height - 293; |
153 |
– |
end |
154 |
– |
else |
155 |
– |
Self.Height := 400; |
156 |
– |
end; |
157 |
– |
|
158 |
– |
|
159 |
– |
|
160 |
– |
|
161 |
– |
procedure TForm_Extractor.FormClose(Sender: TObject; var Action: TCloseAction); |
162 |
– |
begin |
163 |
– |
Action := caFree; |
164 |
– |
end; |
165 |
– |
|
166 |
– |
|
167 |
– |
|
168 |
– |
|
40 |
|
procedure TForm_Extractor.FormCreate(Sender: TObject); |
41 |
|
begin |
42 |
+ |
inherited; |
43 |
+ |
Self.AllowMultiSelect := True; |
44 |
+ |
|
45 |
|
btn_sel_dat.Caption := 'Selected files' + CrLf + '(dat contents only)'; |
46 |
|
btn_sel_datraw.Caption := 'Selected files' + CrLf + '(dat+raw contents)'; |
47 |
|
btn_sel_datraw_convert.Caption := |
54 |
|
btn_all_files_toone.Caption := 'All files in list' + CrLf + '(dat contents only)'; |
55 |
|
end; |
56 |
|
|
57 |
< |
|
58 |
< |
|
57 |
> |
procedure TForm_Extractor.btn_abortClick(Sender: TObject); |
58 |
> |
begin |
59 |
> |
ShowMessage('X'); |
60 |
> |
end; |
61 |
|
|
62 |
|
procedure TForm_Extractor.Extract(Sender: TObject); |
63 |
|
var |
88 |
|
begin |
89 |
|
begintime := Time; |
90 |
|
group_progress.Visible := True; |
91 |
< |
group_select.Enabled := False; |
91 |
> |
panel_files.Enabled := False; |
92 |
|
group_singlefiles.Enabled := False; |
93 |
|
group_onefile.Enabled := False; |
94 |
|
lbl_estimated.Caption := 'Estimated finishing time: unknown'; |
105 |
|
else |
106 |
|
begin |
107 |
|
group_progress.Visible := False; |
108 |
< |
group_select.Enabled := True; |
108 |
> |
panel_files.Enabled := True; |
109 |
|
group_singlefiles.Enabled := True; |
110 |
|
group_onefile.Enabled := True; |
111 |
|
Exit; |
117 |
|
end; |
118 |
|
if sel_only then |
119 |
|
begin |
120 |
< |
files := list.SelCount; |
120 |
> |
files := filelist.SelCount; |
121 |
|
lbl_progress.Caption := 'Files done: 0/' + IntToStr(files); |
122 |
|
progress.Max := files; |
123 |
|
done := 0; |
124 |
< |
for i := 0 to list.Count - 1 do |
124 |
> |
for i := 0 to filelist.Count - 1 do |
125 |
|
begin |
126 |
< |
if list.Selected[i] then |
126 |
> |
if filelist.Selected[i] then |
127 |
|
begin |
128 |
|
if one_file then |
129 |
|
begin |
130 |
|
ExportFile(OniDataConnection.ExtractFileID( |
131 |
< |
list.Items.Strings[list.ItemIndex]), ExtractFileName(saved.FileName), |
131 |
> |
filelist.Items.Strings[filelist.ItemIndex]), ExtractFileName(saved.FileName), |
132 |
|
settings, ExtractFileDir(saved.FileName)); |
133 |
|
end |
134 |
|
else |
135 |
|
begin |
136 |
|
ExportFile(OniDataConnection.ExtractFileID( |
137 |
< |
list.Items.Strings[list.ItemIndex]), list.Items.Strings[i], settings, 'D:'); |
137 |
> |
filelist.Items.Strings[filelist.ItemIndex]), filelist.Items.Strings[i], settings, 'D:'); |
138 |
|
end; |
139 |
|
Inc(done); |
140 |
|
end; |
151 |
|
end |
152 |
|
else |
153 |
|
begin |
154 |
< |
files := list.Count; |
154 |
> |
files := filelist.Count; |
155 |
|
lbl_progress.Caption := 'Files done: 0/' + IntToStr(files); |
156 |
|
progress.Max := files; |
157 |
< |
for i := 0 to list.Count - 1 do |
157 |
> |
for i := 0 to filelist.Count - 1 do |
158 |
|
begin |
159 |
|
if one_file then |
160 |
|
begin |
161 |
|
ExportFile(OniDataConnection.ExtractFileID( |
162 |
< |
list.Items.Strings[list.ItemIndex]), ExtractFileName(saved.FileName), |
162 |
> |
filelist.Items.Strings[filelist.ItemIndex]), ExtractFileName(saved.FileName), |
163 |
|
settings, ExtractFileDir(saved.FileName)); |
164 |
|
end |
165 |
|
else |
166 |
|
begin |
167 |
|
ExportFile(OniDataConnection.ExtractFileID( |
168 |
< |
list.Items.Strings[list.ItemIndex]), list.Items.Strings[i], settings, 'D:'); |
168 |
> |
filelist.Items.Strings[filelist.ItemIndex]), filelist.Items.Strings[i], settings, 'D:'); |
169 |
|
end; |
170 |
|
if ((i mod 10) = 0) and (i >= 50) then |
171 |
|
lbl_estimated.Caption := 'Estimated finishing time: ' + TimeToStr( |
179 |
|
end; |
180 |
|
end; |
181 |
|
group_progress.Visible := False; |
182 |
< |
group_select.Enabled := True; |
182 |
> |
panel_files.Enabled := True; |
183 |
|
group_singlefiles.Enabled := True; |
184 |
|
group_onefile.Enabled := True; |
185 |
|
end; |
186 |
|
end; |
187 |
|
|
188 |
+ |
begin |
189 |
+ |
AddToolListEntry('extractor', 'Extractor', ''); |
190 |
|
end. |