mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: Feature [0001344] Separate UseConfigInProgramDir from all other settings
This commit is contained in:
parent
5acd8f58be
commit
91d151a91c
9 changed files with 41 additions and 140 deletions
|
|
@ -1869,34 +1869,41 @@ begin
|
|||
Exit(True);
|
||||
|
||||
// Check global directory for XML config.
|
||||
if (gpCmdLineCfgDir = EmptyStr) and
|
||||
mbFileExists(gpGlobalCfgDir + 'doublecmd.xml') then
|
||||
if (gpCmdLineCfgDir = EmptyStr) then
|
||||
begin
|
||||
gConfig := TXmlConfig.Create(gpGlobalCfgDir + 'doublecmd.xml');
|
||||
gUseConfigInProgramDir := True;
|
||||
if mbFileAccess(gpGlobalCfgDir + 'doublecmd.xml', fmOpenRead or fmShareDenyWrite) then
|
||||
gUseConfigInProgramDir:= mbFileExists(gpGlobalCfgDir + 'doublecmd.inf');
|
||||
|
||||
if gUseConfigInProgramDir or mbFileExists(gpGlobalCfgDir + 'doublecmd.xml') then
|
||||
begin
|
||||
LoadConfigCheckErrors(@LoadGlobalConfig, gpGlobalCfgDir + 'doublecmd.xml', ErrorMessage);
|
||||
gUseConfigInProgramDir := gConfig.GetValue(gConfig.RootNode, 'Configuration/UseConfigInProgramDir', False);
|
||||
if not gUseConfigInProgramDir then
|
||||
gConfig := TXmlConfig.Create(gpGlobalCfgDir + 'doublecmd.xml');
|
||||
if mbFileExists(gpGlobalCfgDir + 'doublecmd.xml') then
|
||||
begin
|
||||
if mbFileExists(gpCfgDir + 'doublecmd.xml') then
|
||||
// Close global config so that the local config is opened below.
|
||||
FreeAndNil(gConfig)
|
||||
if mbFileAccess(gpGlobalCfgDir + 'doublecmd.xml', fmOpenRead or fmShareDenyWrite) then
|
||||
begin
|
||||
LoadConfigCheckErrors(@LoadGlobalConfig, gpGlobalCfgDir + 'doublecmd.xml', ErrorMessage);
|
||||
gConfig.TryGetValue(gConfig.RootNode, 'Configuration/UseConfigInProgramDir', gUseConfigInProgramDir);
|
||||
|
||||
if not gUseConfigInProgramDir then
|
||||
begin
|
||||
if mbFileExists(gpCfgDir + 'doublecmd.xml') then
|
||||
// Close global config so that the local config is opened below.
|
||||
FreeAndNil(gConfig)
|
||||
else
|
||||
// Local config is used but it doesn't exist. Use global config that has just
|
||||
// been read but set file name accordingly and later save to local config.
|
||||
gConfig.FileName := gpCfgDir + 'doublecmd.xml';
|
||||
end;
|
||||
end
|
||||
else
|
||||
// Local config is used but it doesn't exist. Use global config that has just
|
||||
// been read but set file name accordingly and later save to local config.
|
||||
gConfig.FileName := gpCfgDir + 'doublecmd.xml';
|
||||
begin
|
||||
// Configuration file is not readable.
|
||||
AddStrWithSep(ErrorMessage,
|
||||
'Config file "' + gpGlobalCfgDir + 'doublecmd.xml' +
|
||||
'" exists but is not readable.',
|
||||
LineEnding);
|
||||
Exit(False);
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
// Configuration file is not readable.
|
||||
AddStrWithSep(ErrorMessage,
|
||||
'Config file "' + gpGlobalCfgDir + 'doublecmd.xml' +
|
||||
'" exists but is not readable.',
|
||||
LineEnding);
|
||||
Exit(False);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -2064,18 +2071,24 @@ begin
|
|||
(gpCmdLineCfgDir = EmptyStr) then
|
||||
begin
|
||||
LoadPaths;
|
||||
|
||||
if gUseConfigInProgramDirNew then
|
||||
begin
|
||||
gpCfgDir := gpGlobalCfgDir;
|
||||
UpdateEnvironmentVariable;
|
||||
FileClose(mbFileCreate(gpGlobalCfgDir + 'doublecmd.inf'));
|
||||
end
|
||||
else begin
|
||||
if mbFileExists(gpGlobalCfgDir + 'doublecmd.inf') then
|
||||
mbDeleteFile(gpGlobalCfgDir + 'doublecmd.inf')
|
||||
end;
|
||||
|
||||
{ Save location of configuration files }
|
||||
{ Remove location of configuration files from XML}
|
||||
if mbFileAccess(gpGlobalCfgDir + 'doublecmd.xml', fmOpenWrite or fmShareDenyWrite) then
|
||||
begin
|
||||
TmpConfig := TXmlConfig.Create(gpGlobalCfgDir + 'doublecmd.xml', True);
|
||||
try
|
||||
TmpConfig.SetValue(TmpConfig.RootNode, 'Configuration/UseConfigInProgramDir', gUseConfigInProgramDirNew);
|
||||
TmpConfig.DeleteNode(TmpConfig.RootNode, 'Configuration/UseConfigInProgramDir');
|
||||
TmpConfig.Save;
|
||||
finally
|
||||
TmpConfig.Free;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue