source: oup/current/Settings.pas @ 46

Last change on this file since 46 was 46, checked in by alloc, 17 years ago
File size: 5.4 KB
Line 
1unit Settings;
2
3interface
4
5uses
6  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7  Dialogs, StdCtrls, StrUtils, Grids, Wrapgrid;
8
9type
10  TForm_Settings = class(TForm)
11    check_filesashex: TCheckBox;
12    btn_ok:     TButton;
13    btn_cancel: TButton;
14    btn_register_oldb: TButton;
15    btn_register_opf: TButton;
16    btn_register_dat: TButton;
17    label_charset: TLabel;
18    combo_charset: TComboBox;
19    check_hideunused: TCheckBox;
20    procedure btn_register_opfClick(Sender: TObject);
21    procedure btn_register_oldbClick(Sender: TObject);
22    procedure btn_register_datClick(Sender: TObject);
23    procedure btn_cancelClick(Sender: TObject);
24    procedure btn_okClick(Sender: TObject);
25    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
26    procedure FormShow(Sender: TObject);
27    function RegisterExtension(ext: String): Integer;
28  private
29  public
30  end;
31
32var
33  Form_Settings: TForm_Settings;
34
35implementation
36
37{$R *.dfm}
38
39uses
40  Main, Data, FTypeReg;
41
42
43
44
45function ExtensionRegistered(ext: String; var RegisteredAs: String): Boolean;
46var
47  ftr: TFileTypeRegistration;
48begin
49  ftr := TFileTypeRegistration.Create;
50  if (ftr <> nil) then
51  begin
52    try
53      RegisteredAs := ftr.GetInternalKey(ext);
54      if RegisteredAs <> '' then
55        Result := True
56      else
57        Result := False;
58    finally
59      ftr.Free;
60    end;
61  end;
62end;
63
64
65
66
67function TForm_Settings.RegisterExtension(ext: String): Integer;
68var
69  ftr:     TFileTypeRegistration;
70  temps:   String;
71  warnmsg: String;
72begin
73  Result := -1;
74  if ExtensionRegistered(ext, temps) then
75  begin
76    if temps <> 'ONI' + ext then
77    begin
78      warnmsg := ext + '-files are not registered to OUP but as "' +
79        temps + '"-files.' + #13 + #10 + 'Do you really want to unregister' +
80        ext + '-files?';
81      if MessageBox(Self.Handle, PChar(warnmsg), PChar('Warning'), MB_YESNO) = ID_NO then
82        Exit;
83    end;
84    ftr := TFileTypeRegistration.Create;
85    if ftr <> nil then
86      try
87        if not ftr.UnregisterExtension(ext) then
88          ShowMessage('Could not unregister ' + ext + '-files')
89        else
90          Result := 2;
91      finally
92        ftr.Free;
93      end;
94  end
95  else
96  begin
97    ftr := TFileTypeRegistration.Create;
98    if ftr <> nil then
99    begin
100      try
101        if ftr.RegisterType(ext, 'ONI' + ext, 'ONI ' + ext + '-file',
102          Application.EXEname + ',1') then
103        begin
104          ftr.AddHandler('open', '"' + Application.EXEname + '" ' + MidStr(
105            ext, 2, Length(ext) - 1) + ' "%1"');
106          ftr.SetDefaultHandler;
107          Result := 1;
108        end;
109      finally
110        ftr.Free;
111      end;
112    end;
113  end;
114end;
115
116
117
118
119procedure TForm_Settings.btn_cancelClick(Sender: TObject);
120begin
121  Self.Close;
122end;
123
124
125
126
127procedure TForm_Settings.btn_okClick(Sender: TObject);
128begin
129  AppSettings.FilenumbersAsHex := check_filesashex.Checked;
130  AppSettings.CharSet := StrToInt(
131    MidStr(combo_charset.Items.Strings[combo_charset.ItemIndex], Pos(
132    ' ', combo_charset.Items.Strings[combo_charset.ItemIndex]) + 3, Length(
133    combo_charset.Items.Strings[combo_charset.ItemIndex]) - Pos(
134    ' ', combo_charset.Items.Strings[combo_charset.ItemIndex]) - 2));
135  AppSettings.HideUnusedData := check_hideunused.Checked;
136
137  Self.Close;
138end;
139
140
141
142
143procedure TForm_Settings.btn_register_datClick(Sender: TObject);
144begin
145  case RegisterExtension('.dat') of
146    2:
147      btn_register_dat.Caption := 'Register .dat files with OUP';
148    1:
149      btn_register_dat.Caption := 'Unregister .dat files';
150  end;
151end;
152
153
154
155
156procedure TForm_Settings.btn_register_oldbClick(Sender: TObject);
157begin
158  case RegisterExtension('.oldb') of
159    2:
160      btn_register_oldb.Caption := 'Register .oldb files with OUP';
161    1:
162      btn_register_oldb.Caption := 'Unregister .oldb files';
163  end;
164end;
165
166
167
168
169procedure TForm_Settings.btn_register_opfClick(Sender: TObject);
170begin
171  case RegisterExtension('.opf') of
172    2:
173      btn_register_opf.Caption := 'Register .opf files with OUP';
174    1:
175      btn_register_opf.Caption := 'Unregister .opf files';
176  end;
177end;
178
179
180
181
182procedure TForm_Settings.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
183begin
184  CanClose      := False;
185  Self.Visible  := False;
186  Form_Main.Enabled := True;
187  Form_Main.SetFocus;
188end;
189
190
191
192
193procedure TForm_Settings.FormShow(Sender: TObject);
194var
195  temps: String;
196  i:     Byte;
197begin
198  if ExtensionRegistered('.dat', temps) then
199    btn_register_dat.Caption := 'Unregister .dat files'
200  else
201    btn_register_dat.Caption := 'Register .dat files with OUP';
202  if ExtensionRegistered('.oldb', temps) then
203    btn_register_oldb.Caption := 'Unregister .oldb files'
204  else
205    btn_register_oldb.Caption := 'Register .oldb files with OUP';
206  if ExtensionRegistered('.opf', temps) then
207    btn_register_opf.Caption := 'Unregister .opf files'
208  else
209    btn_register_opf.Caption := 'Register .opf files with OUP';
210  check_filesashex.Checked := AppSettings.FilenumbersAsHex;
211  check_hideunused.Checked := AppSettings.HideUnusedData;
212
213  for i := 0 to combo_charset.Items.Count - 1 do
214    if StrToInt(MidStr(combo_charset.Items.Strings[i], Pos(
215      ' ', combo_charset.Items.Strings[i]) + 3, Length(combo_charset.Items.Strings[i]) -
216      Pos(' ', combo_charset.Items.Strings[i]) - 2)) = AppSettings.CharSet then
217      combo_charset.ItemIndex := i;
218end;
219
220end.
Note: See TracBrowser for help on using the repository browser.