unit Settings; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StrUtils, Grids, Wrapgrid; type TForm_Settings = class(TForm) check_filesashex: TCheckBox; btn_ok: TButton; btn_cancel: TButton; btn_register_oldb: TButton; btn_register_opf: TButton; btn_register_dat: TButton; label_charset: TLabel; combo_charset: TComboBox; check_hideunused: TCheckBox; procedure btn_register_opfClick(Sender: TObject); procedure btn_register_oldbClick(Sender: TObject); procedure btn_register_datClick(Sender: TObject); procedure btn_cancelClick(Sender: TObject); procedure btn_okClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormShow(Sender: TObject); function RegisterExtension(ext: String): Integer; private public end; var Form_Settings: TForm_Settings; implementation {$R *.dfm} uses Main, Data, FTypeReg; function ExtensionRegistered(ext: String; var RegisteredAs: String): Boolean; var ftr: TFileTypeRegistration; begin ftr := TFileTypeRegistration.Create; if (ftr <> nil) then begin try RegisteredAs := ftr.GetInternalKey(ext); if RegisteredAs <> '' then Result := True else Result := False; finally ftr.Free; end; end; end; function TForm_Settings.RegisterExtension(ext: String): Integer; var ftr: TFileTypeRegistration; temps: String; warnmsg: String; begin Result := -1; if ExtensionRegistered(ext, temps) then begin if temps <> 'ONI' + ext then begin warnmsg := ext + '-files are not registered to OUP but as "' + temps + '"-files.' + #13 + #10 + 'Do you really want to unregister' + ext + '-files?'; if MessageBox(Self.Handle, PChar(warnmsg), PChar('Warning'), MB_YESNO) = ID_NO then Exit; end; ftr := TFileTypeRegistration.Create; if ftr <> nil then try if not ftr.UnregisterExtension(ext) then ShowMessage('Could not unregister ' + ext + '-files') else Result := 2; finally ftr.Free; end; end else begin ftr := TFileTypeRegistration.Create; if ftr <> nil then begin try if ftr.RegisterType(ext, 'ONI' + ext, 'ONI ' + ext + '-file', Application.EXEname + ',1') then begin ftr.AddHandler('open', '"' + Application.EXEname + '" ' + MidStr( ext, 2, Length(ext) - 1) + ' "%1"'); ftr.SetDefaultHandler; Result := 1; end; finally ftr.Free; end; end; end; end; procedure TForm_Settings.btn_cancelClick(Sender: TObject); begin Self.Close; end; procedure TForm_Settings.btn_okClick(Sender: TObject); begin AppSettings.FilenumbersAsHex := check_filesashex.Checked; AppSettings.CharSet := StrToInt( MidStr(combo_charset.Items.Strings[combo_charset.ItemIndex], Pos( ' ', combo_charset.Items.Strings[combo_charset.ItemIndex]) + 3, Length( combo_charset.Items.Strings[combo_charset.ItemIndex]) - Pos( ' ', combo_charset.Items.Strings[combo_charset.ItemIndex]) - 2)); AppSettings.HideUnusedData := check_hideunused.Checked; Self.Close; end; procedure TForm_Settings.btn_register_datClick(Sender: TObject); begin case RegisterExtension('.dat') of 2: btn_register_dat.Caption := 'Register .dat files with OUP'; 1: btn_register_dat.Caption := 'Unregister .dat files'; end; end; procedure TForm_Settings.btn_register_oldbClick(Sender: TObject); begin case RegisterExtension('.oldb') of 2: btn_register_oldb.Caption := 'Register .oldb files with OUP'; 1: btn_register_oldb.Caption := 'Unregister .oldb files'; end; end; procedure TForm_Settings.btn_register_opfClick(Sender: TObject); begin case RegisterExtension('.opf') of 2: btn_register_opf.Caption := 'Register .opf files with OUP'; 1: btn_register_opf.Caption := 'Unregister .opf files'; end; end; procedure TForm_Settings.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := False; Self.Visible := False; Form_Main.Enabled := True; Form_Main.SetFocus; end; procedure TForm_Settings.FormShow(Sender: TObject); var temps: String; i: Byte; begin if ExtensionRegistered('.dat', temps) then btn_register_dat.Caption := 'Unregister .dat files' else btn_register_dat.Caption := 'Register .dat files with OUP'; if ExtensionRegistered('.oldb', temps) then btn_register_oldb.Caption := 'Unregister .oldb files' else btn_register_oldb.Caption := 'Register .oldb files with OUP'; if ExtensionRegistered('.opf', temps) then btn_register_opf.Caption := 'Unregister .opf files' else btn_register_opf.Caption := 'Register .opf files with OUP'; check_filesashex.Checked := AppSettings.FilenumbersAsHex; check_hideunused.Checked := AppSettings.HideUnusedData; for i := 0 to combo_charset.Items.Count - 1 do if StrToInt(MidStr(combo_charset.Items.Strings[i], Pos( ' ', combo_charset.Items.Strings[i]) + 3, Length(combo_charset.Items.Strings[i]) - Pos(' ', combo_charset.Items.Strings[i]) - 2)) = AppSettings.CharSet then combo_charset.ItemIndex := i; end; end.