{ /*************************************************************************** PoCheckerXMLConfig.pp ----------------------------- ***************************************************************************/ *************************************************************************** * * * This source is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This code is distributed in the hope that it will be useful, but * * WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * General Public License for more details. * * * * A copy of the GNU General Public License is available on the World * * Wide Web at . You can also * * obtain it by writing to the Free Software Foundation, * * Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. * * * *************************************************************************** } // This souce is copied from the IDEOptionDefs unit // It provides the standalone version of PoChecker with the // same ConfigStorage interface as the embedded tool unit PoCheckerXMLConfig; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LazConfigStorage, Laz2_XMLCfg; type { TXMLOptionsStorage } TXMLOptionsStorage = class(TConfigStorage) private FFreeXMLConfig: boolean; FXMLConfig: TXMLConfig; protected function GetFullPathValue(const APath, ADefault: String): String; override; function GetFullPathValue(const APath: String; ADefault: Integer): Integer; override; function GetFullPathValue(const APath: String; ADefault: Boolean): Boolean; override; procedure SetFullPathValue(const APath, AValue: String); override; procedure SetDeleteFullPathValue(const APath, AValue, DefValue: String); override; procedure SetFullPathValue(const APath: String; AValue: Integer); override; procedure SetDeleteFullPathValue(const APath: String; AValue, DefValue: Integer); override; procedure SetFullPathValue(const APath: String; AValue: Boolean); override; procedure SetDeleteFullPathValue(const APath: String; AValue, DefValue: Boolean); override; procedure DeleteFullPath(const APath: string); override; procedure DeleteFullPathValue(const APath: string); override; public constructor Create(const Filename: string; LoadFromDisk: Boolean); override; constructor Create(TheXMLConfig: TXMLConfig); constructor Create(TheXMLConfig: TXMLConfig; const StartPath: string); destructor Destroy; override; procedure Clear; override; property XMLConfig: TXMLConfig read FXMLConfig; property FreeXMLConfig: boolean read FFreeXMLConfig write FFreeXMLConfig; procedure WriteToDisk; override; function GetFilename: string; override; end; implementation { TXMLOptionsStorage } function TXMLOptionsStorage.GetFullPathValue(const APath, ADefault: String): String; begin Result:=XMLConfig.GetValue(APath, ADefault); end; function TXMLOptionsStorage.GetFullPathValue(const APath: String; ADefault: Integer): Integer; begin Result:=XMLConfig.GetValue(APath, ADefault); end; function TXMLOptionsStorage.GetFullPathValue(const APath: String; ADefault: Boolean): Boolean; begin Result:=XMLConfig.GetValue(APath, ADefault); end; procedure TXMLOptionsStorage.SetFullPathValue(const APath, AValue: String); begin XMLConfig.SetValue(APath, AValue); end; procedure TXMLOptionsStorage.SetDeleteFullPathValue(const APath, AValue, DefValue: String); begin XMLConfig.SetDeleteValue(APath, AValue, DefValue); end; procedure TXMLOptionsStorage.SetFullPathValue(const APath: String; AValue: Integer); begin XMLConfig.SetValue(APath, AValue); end; procedure TXMLOptionsStorage.SetDeleteFullPathValue(const APath: String; AValue, DefValue: Integer); begin XMLConfig.SetDeleteValue(APath, AValue, DefValue); end; procedure TXMLOptionsStorage.SetFullPathValue(const APath: String; AValue: Boolean); begin XMLConfig.SetValue(APath, AValue); end; procedure TXMLOptionsStorage.SetDeleteFullPathValue(const APath: String; AValue, DefValue: Boolean); begin XMLConfig.SetDeleteValue(APath, AValue, DefValue); end; procedure TXMLOptionsStorage.DeleteFullPath(const APath: string); begin XMLConfig.DeletePath(APath); end; procedure TXMLOptionsStorage.DeleteFullPathValue(const APath: string); begin XMLConfig.DeleteValue(APath); end; constructor TXMLOptionsStorage.Create(const Filename: string; LoadFromDisk: Boolean); begin if LoadFromDisk then FXMLConfig:=TXMLConfig.Create(Filename) else FXMLConfig:=TXMLConfig.CreateClean(Filename); FFreeXMLConfig:=true; end; constructor TXMLOptionsStorage.Create(TheXMLConfig: TXMLConfig); begin FXMLConfig:=TheXMLConfig; if FXMLConfig=nil then raise Exception.Create(''); end; constructor TXMLOptionsStorage.Create(TheXMLConfig: TXMLConfig; const StartPath: string); begin Create(TheXMLConfig); AppendBasePath(StartPath); end; destructor TXMLOptionsStorage.Destroy; begin if FreeXMLConfig then FreeAndNil(FXMLConfig); inherited Destroy; end; procedure TXMLOptionsStorage.Clear; begin FXMLConfig.Clear; end; procedure TXMLOptionsStorage.WriteToDisk; begin FXMLConfig.Flush; end; function TXMLOptionsStorage.GetFilename: string; begin Result:=FXMLConfig.Filename; end; end.