--- oup/current/Settings.pas 2006/12/18 23:35:30 43 +++ oup/current/Settings.pas 2006/12/23 23:36:07 53 @@ -11,20 +11,17 @@ type 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); + check_reg_dat: TCheckBox; + check_reg_oldb: TCheckBox; + check_reg_opf: TCheckBox; 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; + function RegisterExtension(ext: String; reg: Boolean): Integer; private public end; @@ -37,7 +34,7 @@ implementation {$R *.dfm} uses - Main, Data, ftypesAPI; + Main, Data, FTypeReg; @@ -64,53 +61,31 @@ end; -function TForm_Settings.RegisterExtension(ext: String): Integer; +function TForm_Settings.RegisterExtension(ext: String; reg: Boolean): 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 + ftr := TFileTypeRegistration.Create; + if reg then begin - ftr := TFileTypeRegistration.Create; - if ftr <> nil then + if ExtensionRegistered(ext, temps) then + if not ftr.UnregisterExtension(ext) then + ShowMessage('Could not unregister ' + ext + '-files'); + if ftr.RegisterType(ext, 'ONI' + ext, 'ONI ' + ext + '-file', Application.EXEname + ',1') 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; + ftr.AddHandler('open', '"' + Application.EXEname + '" ' + MidStr( + ext, 2, Length(ext) - 1) + ' "%1"'); + ftr.SetDefaultHandler; end; + end else begin + if ExtensionRegistered(ext, temps) then + if not ftr.UnregisterExtension(ext) then + ShowMessage('Could not unregister ' + ext + '-files'); end; + ftr.Free; end; @@ -125,6 +100,8 @@ end; procedure TForm_Settings.btn_okClick(Sender: TObject); +var + temps: String; begin AppSettings.FilenumbersAsHex := check_filesashex.Checked; AppSettings.CharSet := StrToInt( @@ -134,46 +111,49 @@ begin ' ', 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; - + if check_reg_dat.Checked then + begin + if ExtensionRegistered('.dat', temps) then + begin + if temps <> 'ONI.dat' then + if MessageBox(Self.Handle, PChar('.dat-files already registered to "' + + temps+'". Reregister?'), PChar('Reregister?'), + MB_YESNO + MB_ICONQUESTION) = ID_YES then + RegisterExtension('.dat', True); + end else + RegisterExtension('.dat', True); + end else + RegisterExtension('.dat', False); + if check_reg_oldb.Checked then + begin + if ExtensionRegistered('.oldb', temps) then + begin + if temps <> 'ONI.oldb' then + if MessageBox(Self.Handle, PChar('.oldb-files already registered to "' + + temps+'". Reregister?'), PChar('Reregister?'), + MB_YESNO + MB_ICONQUESTION) = ID_YES then + RegisterExtension('.oldb', True); + end else + RegisterExtension('.oldb', True); + end else + RegisterExtension('.oldb', False); + if check_reg_opf.Checked then + begin + if ExtensionRegistered('.opf', temps) then + begin + if temps <> 'ONI.opf' then + if MessageBox(Self.Handle, PChar('.opf-files already registered to "' + + temps+'". Reregister?'), PChar('Reregister?'), + MB_YESNO + MB_ICONQUESTION) = ID_YES then + RegisterExtension('.opf', True); + end else + RegisterExtension('.opf', True); + end else + RegisterExtension('.opf', False); -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; + Self.Close; end; @@ -196,17 +176,20 @@ var i: Byte; begin if ExtensionRegistered('.dat', temps) then - btn_register_dat.Caption := 'Unregister .dat files' + check_reg_dat.Checked := temps = 'ONI.dat' else - btn_register_dat.Caption := 'Register .dat files with OUP'; + check_reg_dat.Checked := False; + if ExtensionRegistered('.oldb', temps) then - btn_register_oldb.Caption := 'Unregister .oldb files' + check_reg_oldb.Checked := temps = 'ONI.oldb' else - btn_register_oldb.Caption := 'Register .oldb files with OUP'; + check_reg_oldb.Checked := False; + if ExtensionRegistered('.opf', temps) then - btn_register_opf.Caption := 'Unregister .opf files' + check_reg_opf.Checked := temps = 'ONI.opf' else - btn_register_opf.Caption := 'Register .opf files with OUP'; + check_reg_opf.Checked := False; + check_filesashex.Checked := AppSettings.FilenumbersAsHex; check_hideunused.Checked := AppSettings.HideUnusedData;