ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/Tool_Extractor.pas
(Generate patch)

Comparing oup/current/Tool_Extractor.pas (file contents):
Revision 44 by alloc, Mon Dec 18 23:35:30 2006 UTC vs.
Revision 45 by alloc, Sat Dec 23 00:03:50 2006 UTC

# Line 1 | Line 1
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;
# Line 17 | Line 14 | type
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;
# Line 52 | Line 34 | var
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 :=
# Line 180 | Line 54 | begin
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
# Line 212 | Line 88 | begin
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';
# Line 229 | Line 105 | begin
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;
# Line 241 | Line 117 | begin
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;
# Line 275 | Line 151 | begin
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(
# Line 303 | Line 179 | begin
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.

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)