lazarus/doceditor/lazdeopts.pp

166 lines
5.2 KiB
ObjectPascal

{
***************************************************************************
* *
* 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 <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
* *
***************************************************************************
Author: Michael Van Canneyt
}
unit LazDEOpts;
{$mode objfpc}{$H+}
Interface
uses SysUtils, IniFiles, LazFileUtils, LazUTF8;
Var
SkipEmptyNodes : Boolean;
ConfirmDelete : Boolean;
CreateBackup : Boolean;
ShowHelpHints : Boolean;
StartMaximized : Boolean;
ReopenLast : Boolean;
MaxRecentUsed : Integer;
BackupExtension : String;
DefaultExtension : String;
CmdMakeSkel : String;
cmdFPDoc : String;
Const
ImgIndxNew = 0;
ImgIndxEdited = 1;
Procedure LoadOptions;
Procedure SaveOptions;
Function GetOptionFileName : String;
Implementation
uses translations;
const
DefFilename = 'fpde.ini';
SecPrefs = 'Preferences';
KeySkipEmptyNodes = 'SkipEmptyNodes';
KeyConfirmDelete = 'ConfirmDelete';
KeyCreateBackup = 'CreateBackup';
KeyBackupExtension = 'BackupExtension';
KeyDefaultExtension = 'DefaultExtension';
//KeyMaxRecentUsed = 'MaxMRUitems';
KeyCmdMakeSkel = 'makeskel';
KeyCmdFpdoc = 'fpdoc';
KeyShowHints = 'ShowHints';
{$ifndef MSWindows}
Function GetOptionFileName : String;
Const
fpdedir = '.fpde';
Var
HomeDir : String;
begin
HomeDir:=GetEnvironmentVariableUTF8('HOME');
If (HomeDir<>'') then
begin
HomeDir:=IncludeTrailingPathDelimiter(HomeDir)+fpdedir;
If not DirectoryExistsUTF8(HomeDir) then
If Not CreateDirUTF8(HomeDir) then
HomeDir:=''
else
HomeDir:=HomeDir;
end;
Result:=IncludeTrailingPathDelimiter(HomeDir)+DefFileName;
end;
{$else}
Function GetOptionFileName : String;
begin
Result:=ExtractFilePath(ParamStrUTF8(0))+DefFileName;
end;
{$endif}
Procedure LoadOptions;
begin
With TInifile.Create(UTF8ToSys(GetOptionFileName)) do
Try
SkipEmptyNodes:=ReadBool(SecPrefs,KeySkipEmptyNodes,SkipEmptyNodes);
ConfirmDelete:=ReadBool(SecPrefs,KeyConfirmDelete,ConfirmDelete);
CreateBackup:=ReadBool(SecPrefs,KeyCreateBackup,CreateBackup);
ShowHelpHints:=ReadBool(SecPrefs,KeyShowHints,ShowHelpHints);
StartMaximized := ReadBool(SecPrefs, 'StartMaximized', StartMaximized);
ReopenLast := ReadBool(SecPrefs, 'ReopenLast', ReopenLast);
BackupExtension:=ReadString(SecPrefs,KeyBackupExtension,BackupExtension);
DefaultExtension:=ReadString(SecPrefs,KeyDefaultExtension,DefaultExtension);
CmdMakeSkel:=ReadString(SecPrefs,KeyCmdMakeSkel,cmdMakeSkel);
Cmdfpdoc:=ReadString(SecPrefs,KeyCmdfpdoc,cmdfpdoc);
finally
Free;
end;
end;
Procedure SaveOptions;
begin
With TInifile.Create(UTF8ToSys(GetOptionFileName)) do
Try
WriteBool(SecPrefs,KeySkipEmptyNodes,SkipEmptyNodes);
WriteBool(SecPrefs,KeyConfirmDelete,ConfirmDelete);
WriteBool(SecPrefs,KeyCreateBackup,CreateBackup);
WriteBool(SecPrefs,KeyShowHints,ShowHelpHints);
WriteBool(SecPrefs, 'StartMaximized', StartMaximized);
WriteBool(SecPrefs, 'ReopenLast', ReopenLast);
WriteString(SecPrefs,KeyBackupExtension,BackupExtension);
WriteString(SecPrefs,KeyDefaultExtension,DefaultExtension);
WriteString(SecPrefs,KeyCmdMakeSkel,cmdMakeSkel);
WriteString(SecPrefs,KeyCmdfpdoc,cmdfpdoc);
UpdateFile;
finally
Free;
end;
end;
procedure TranslateResStrings;
var
S: String;
LangID: TLanguageID;
begin
LangID := GetLanguageID;
S:=AppendPathDelim(AppendPathDelim(ExtractFileDir(ParamStr(0))) + 'languages');
TranslateUnitResourceStrings('LazDEMsg', S+'lazde.%s.po', LangID.LanguageID, LangID.LanguageCode);
end;
Initialization
SkipEmptyNodes := True;
ConfirmDelete := True;
CreateBackup := True;
StartMaximized := true;
ReopenLast := true;
BackupExtension := '.~xml';
DefaultExtension := '.xml';
MaxRecentUSed := 10;
CmdMakeSkel := 'makeskel';
cmdfpdoc := 'fpdoc';
ShowHelpHints := true;
TranslateResStrings;
end.