ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/Settings.pas
Revision: 248
Committed: Mon Nov 26 11:02:28 2007 UTC (17 years, 10 months ago) by alloc
Content type: text/x-pascal
File size: 6050 byte(s)
Log Message:

File Contents

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