root/trunk/Units/unit_Settings.pas
| 475 | 479 | ||
|---|---|---|---|
77 | FDeviceDir: string; | 77 | FDeviceDir: string; |
78 | 78 | ||
79 | // SYSTEM_SECTION | 79 | // SYSTEM_SECTION |
80 | FTransliterate: Boolean; | 80 | // TODO : REMOVE FTransliterate: Boolean; |
81 | FActiveCollection: Integer; | 81 | FActiveCollection: Integer; |
82 | FDoCheckUpdate: Boolean; | 82 | FDoCheckUpdate: Boolean; |
83 | FCheckExternalLibUpdate: Boolean; | 83 | FCheckExternalLibUpdate: Boolean; |
... | ... | ||
86 | FFileNameTemplate: string; | 86 | FFileNameTemplate: string; |
87 | FExportMode: TExportMode; | 87 | FExportMode: TExportMode; |
88 | FRemoveSquareBrackets: Boolean; | 88 | FRemoveSquareBrackets: Boolean; |
89 | FUseSystemTemp: Boolean; | ||
90 | FTXTEncoding: TTXTEncoding; | 89 | FTXTEncoding: TTXTEncoding; |
91 | 90 | ||
92 | // INTERFACE_SECTION | 91 | // INTERFACE_SECTION |
... | ... | ||
180 | 179 | ||
181 | // SORT_SECTION | 180 | // SORT_SECTION |
182 | FEnableSort: Boolean; | 181 | FEnableSort: Boolean; |
183 | FInputFolder: string; | 182 | FImportDir: string; |
184 | 183 | ||
185 | FFB2FolderTemplate: string; | 184 | FFB2FolderTemplate: string; |
186 | FFB2FileTemplate: string; | 185 | FFB2FileTemplate: string; |
... | ... | ||
226 | 225 | ||
227 | function GetInitialDir(const key: string): string; | 226 | function GetInitialDir(const key: string): string; |
228 | procedure SetInitialDir(const key, Value: string); | 227 | procedure SetInitialDir(const key, Value: string); |
228 | |||
229 | function GetPresetPath: string; | 229 | function GetPresetPath: string; |
230 | |||
231 | procedure SetUpdateDir(const Value: string); | ||
230 | function GetUpdatePath: string; | 232 | function GetUpdatePath: string; |
231 | 233 | ||
234 | procedure SetImportDir(const Value: string); | ||
235 | function GetImportPath: string; | ||
236 | |||
232 | public | 237 | public |
233 | constructor Create; | 238 | constructor Create; |
234 | destructor Destroy; override; | 239 | destructor Destroy; override; |
... | ... | ||
238 | 243 | ||
239 | public | 244 | public |
240 | property AppPath: string read FAppPath; | 245 | property AppPath: string read FAppPath; |
246 | |||
241 | property DataDir: string read FDataDir; | 247 | property DataDir: string read FDataDir; |
242 | property DataPath: string read GetDataPath; | 248 | property DataPath: string read GetDataPath; |
249 | |||
243 | property TempDir: string read FTempDir write FTempDir; | 250 | property TempDir: string read FTempDir write FTempDir; |
244 | property TempPath: string read GetTempPath; | 251 | property TempPath: string read GetTempPath; |
252 | |||
245 | property WorkDir: string read FWorkDir; | 253 | property WorkDir: string read FWorkDir; |
246 | property WorkPath: string read GetWorkPath; | 254 | property WorkPath: string read GetWorkPath; |
247 | property PresetDir: string read FPresetDir write FPresetDir; | 255 | |
256 | property PresetDir: string read FPresetDir; | ||
248 | property PresetPath: string read GetPresetPath; | 257 | property PresetPath: string read GetPresetPath; |
249 | property UpdateDir: string read FUpdateDir write FUpdateDir; | 258 | |
259 | property UpdateDir: string read FUpdateDir write SetUpdateDir; | ||
250 | property UpdatePath: string read GetUpdatePath; | 260 | property UpdatePath: string read GetUpdatePath; |
251 | // | 261 | // |
252 | // Полные пути к некоторым файлам | 262 | // Полные пути к некоторым файлам |
... | ... | ||
256 | // | 266 | // |
257 | // Собственно настройки программы | 267 | // Собственно настройки программы |
258 | // | 268 | // |
259 | property UseSystemTemp: Boolean read FUseSystemTemp write FUseSystemTemp; | ||
260 | |||
261 | property DeviceDir: string read FDeviceDir write SetDeviceDir; | 269 | property DeviceDir: string read FDeviceDir write SetDeviceDir; |
262 | property DevicePath: string read GetDevicePath; | 270 | property DevicePath: string read GetDevicePath; |
271 | |||
263 | property ReadDir: string read FReadDir write SetReadDir; | 272 | property ReadDir: string read FReadDir write SetReadDir; |
264 | property ReadPath: string read GetReadPath; | 273 | property ReadPath: string read GetReadPath; |
265 | 274 | ||
266 | property TransliterateFileName: Boolean read FTransliterate write FTransliterate; | 275 | // TODO : REMOVE property TransliterateFileName: Boolean read FTransliterate write FTransliterate; |
267 | property ActiveCollection: Integer read FActiveCollection write FActiveCollection; | 276 | property ActiveCollection: Integer read FActiveCollection write FActiveCollection; |
268 | property CheckUpdate: Boolean read FDoCheckUpdate write FDoCheckUpdate; | 277 | property CheckUpdate: Boolean read FDoCheckUpdate write FDoCheckUpdate; |
269 | property CheckExternalLibUpdate: Boolean read FCheckExternalLibUpdate write FCheckExternalLibUpdate; | 278 | property CheckExternalLibUpdate: Boolean read FCheckExternalLibUpdate write FCheckExternalLibUpdate; |
... | ... | ||
367 | 376 | ||
368 | // SORT_SECTION | 377 | // SORT_SECTION |
369 | property EnableSort: Boolean read FEnableSort write FEnableSort; | 378 | property EnableSort: Boolean read FEnableSort write FEnableSort; |
370 | property InputFolder: string read FInputFolder write FInputFolder; | 379 | property ImportDir: string read FImportDir write SetImportDir; |
380 | property ImportPath: string read GetImportPath; | ||
371 | 381 | ||
372 | property FB2FolderTemplate: string read FFB2FolderTemplate write FFB2FolderTemplate; | 382 | property FB2FolderTemplate: string read FFB2FolderTemplate write FFB2FolderTemplate; |
373 | property FB2FileTemplate: string read FFB2FileTemplate write FFB2FileTemplate; | 383 | property FB2FileTemplate: string read FFB2FileTemplate write FFB2FileTemplate; |
... | ... | ||
452 | STR_USERDBS = 'user'; | 462 | STR_USERDBS = 'user'; |
453 | 463 | ||
454 | var | 464 | var |
455 | AppDataPath: string; | 465 | GlobalAppDataDir: string; |
456 | 466 | ||
457 | UseLocalData, UseLocalTemp, UserDatabase: Boolean; | 467 | UseLocalData, UseLocalTemp, UserDatabase: Boolean; |
458 | I: Integer; | 468 | I: Integer; |
... | ... | ||
462 | begin | 472 | begin |
463 | inherited Create; | 473 | inherited Create; |
464 | 474 | ||
465 | UseLocalData := False; | ||
466 | UseLocalTemp := False; | ||
467 | UserDatabase := False; | ||
468 | |||
469 | FAppPath := ExtractFilePath(Application.ExeName); | 475 | FAppPath := ExtractFilePath(Application.ExeName); |
470 | AppDataPath := GetSpecialPath(CSIDL_APPDATA) + APPDATA_DIR_NAME; | 476 | GlobalAppDataDir := GetSpecialPath(CSIDL_APPDATA) + APPDATA_DIR_NAME; |
471 | 477 | ||
472 | // определяем рабочую и временную папку в зависимости от параметров | 478 | // определяем рабочую и временную папку в зависимости от параметров |
473 | // командной строки или ключевых файлов FDbsFileName := SYSTEM_DATABASE_FILENAME; | 479 | // командной строки или ключевых файлов FDbsFileName := SYSTEM_DATABASE_FILENAME; |
474 | FIniFileName := SETTINGS_FILE_NAME; | 480 | FIniFileName := SETTINGS_FILE_NAME; |
475 | 481 | ||
482 | UseLocalData := False; | ||
483 | UseLocalTemp := False; | ||
484 | UserDatabase := False; | ||
485 | |||
476 | for I := 1 to ParamCount do | 486 | for I := 1 to ParamCount do |
477 | begin | 487 | begin |
478 | if not UseLocalData then | 488 | if not UseLocalData then |
479 | UseLocalData := (LowerCase(ParamStr(I)) = STR_USELOCALDATA); | 489 | UseLocalData := (LowerCase(ParamStr(I)) = STR_USELOCALDATA); |
490 | |||
480 | if not UseLocalTemp then | 491 | if not UseLocalTemp then |
481 | UseLocalTemp := (LowerCase(paramstr(I)) = STR_USELOCALTEMP); | 492 | UseLocalTemp := (LowerCase(ParamStr(I)) = STR_USELOCALTEMP); |
493 | |||
482 | if (LowerCase(ParamStr(I)) = STR_USERDBS) and (ParamStr(I + 1) <> '') then | 494 | if (LowerCase(ParamStr(I)) = STR_USERDBS) and (ParamStr(I + 1) <> '') then |
483 | begin | 495 | begin |
484 | DBFileName := ParamStr(I + 1); | 496 | DBFileName := ParamStr(I + 1); |
... | ... | ||
487 | end; | 499 | end; |
488 | end; | 500 | end; |
489 | 501 | ||
490 | UseLocalData := UseLocalData or FileExists(FAppPath + STR_USELOCALDATA) or not DirectoryExists(AppDataPath); | 502 | UseLocalData := UseLocalData or FileExists(FAppPath + STR_USELOCALDATA) or not DirectoryExists(GlobalAppDataDir); |
491 | UseLocalTemp := UseLocalTemp or FileExists(FAppPath + STR_USELOCALTEMP); | 503 | UseLocalTemp := UseLocalTemp or FileExists(FAppPath + STR_USELOCALTEMP); |
492 | 504 | ||
493 | // Устанавливаем рабочую папку
| 505 | // |
506 | // Устанавливаем рабочую папку и папку с данными
// | ||
507 | FWorkDir := IfThen(UseLocalData, ExcludeTrailingPathDelimiter(FAppPath), GlobalAppDataDir); | ||
508 | FDataDir := WorkPath + DATA_DIR_NAME; | ||
494 | 509 | ||
495 | if not UseLocalData then | ||
496 | begin // работаем с AppData | ||
497 | FWorkDir := AppDataPath; | ||
498 | FDataDir := WorkPath + DATA_DIR_NAME; | ||
499 | end | ||
500 | else | ||
501 | begin | ||
502 | FWorkDir := FAppPath; // работаем с AppPath | ||
503 | FDataDir := FAppPath + DATA_DIR_NAME; | ||
504 | end; | ||
505 | |||
506 | if UserDatabase then // пользовательский файл БД и настроек | 510 | if UserDatabase then // пользовательский файл БД и настроек |
507 | begin | 511 | begin |
508 | FDbsFileName := DBFileName + '.dbs'; | 512 | FDbsFileName := DBFileName + '.dbs'; |
509 | FIniFileName := DBFileName + '.ini'; | 513 | FIniFileName := DBFileName + '.ini'; |
510 | if FileExists(WorkPath + SETTINGS_FILE_NAME) and not FileExists(WorkPath + FIniFileName) then | 514 | if FileExists(WorkPath + SETTINGS_FILE_NAME) and not FileExists(WorkPath + FIniFileName) then |
515 | begin | ||
511 | // если такого файла еще нет, копируем стандартный | 516 | // если такого файла еще нет, копируем стандартный |
512 | unit_globals.CopyFile(WorkPath + SETTINGS_FILE_NAME, WorkPath + FIniFileName); | 517 | unit_globals.CopyFile(WorkPath + SETTINGS_FILE_NAME, WorkPath + FIniFileName); |
513 | // может лучше использовать Windows.CopyFile(PChar(WorkPath + SETTINGS_FILE_NAME), PChar(WorkPath + FIniFileName), False); | 518 | // может лучше использовать Windows.CopyFile(PChar(WorkPath + SETTINGS_FILE_NAME), PChar(WorkPath + FIniFileName), False); |
519 | end; | ||
514 | end; | 520 | end; |
515 | 521 | ||
522 | // | ||
516 | // устанавливаем временную папку | 523 | // устанавливаем временную папку |
517 | 524 | // | |
518 | if not UseLocalTemp then | 525 | if UseLocalTemp then |
519 | FTempDir := TPath.Combine(TPath.GetTempPath, '_myhomelib') | 526 | FTempDir := FAppPath + TEMP_DIR_NAME |
520 | else | 527 | else |
521 | FTempDir := FAppPath + TEMP_DIR_NAME; | 528 | FTempDir := TPath.Combine(TPath.GetTempPath, '_myhomelib'); |
522 | 529 | ||
530 | // | ||
531 | // устанавливаем путь для хранения пресетов // | ||
523 | FPresetDir := WorkPath + PRESET_DIR_NAME; | 532 | FPresetDir := WorkPath + PRESET_DIR_NAME; |
533 | |||
524 | // ----------------------------------------------------- | 534 | // ----------------------------------------------------- |
525 | |||
526 | FReaders := TReaders.Create; | 535 | FReaders := TReaders.Create; |
527 | FScripts := TScripts.Create; | 536 | FScripts := TScripts.Create; |
528 | FUpdateList := TUpdateInfoList.Create; | 537 | FUpdateList := TUpdateInfoList.Create; |
... | ... | ||
628 | FreeMem(proxyInfo); | 639 | FreeMem(proxyInfo); |
629 | end; | 640 | end; |
630 | 641 | ||
642 | function SafeGetDirName(const Value: string): string; | ||
643 | begin | ||
644 | if (Value = '') or (TPath.GetPathRoot(Value) = Value) then | ||
645 | Result := Value | ||
646 | else | ||
647 | Result := ExcludeTrailingPathDelimiter(Value); | ||
648 | end; | ||
649 | |||
650 | function SafeGetPath(const Value: string): string; | ||
651 | begin | ||
652 | if Value = '' then | ||
653 | Result := Value | ||
654 | else | ||
655 | Result := IncludeTrailingPathDelimiter(Value); | ||
656 | end; | ||
657 | |||
631 | procedure TMHLSettings.LoadSettings; | 658 | procedure TMHLSettings.LoadSettings; |
632 | var | 659 | var |
633 | iniFile: TIniFile; | 660 | iniFile: TIniFile; |
... | ... | ||
637 | // | 664 | // |
638 | // PATH_SECTION | 665 | // PATH_SECTION |
639 | // | 666 | // |
640 | FDeviceDir := ExcludeTrailingPathDelimiter(iniFile.ReadString(PATH_SECTION, 'Device', 'C:\')); | 667 | DeviceDir := iniFile.ReadString(PATH_SECTION, 'Device', ''); |
641 | FReadDir := ExcludeTrailingPathDelimiter(iniFile.ReadString(PATH_SECTION, 'Read', '')); | 668 | ReadDir := iniFile.ReadString(PATH_SECTION, 'Read', ''); |
642 | FUpdateDir := ExcludeTrailingPathDelimiter(iniFile.ReadString(PATH_SECTION, 'Update', '')); | 669 | UpdateDir := iniFile.ReadString(PATH_SECTION, 'Update', ''); |
643 | 670 | ||
644 | if not DirectoryExists(FReadDir) then | ||
645 | FReadDir := FTempDir; | ||
646 | |||
647 | if FUpdateDir = '' then | ||
648 | FUpdateDir := FWorkDir; | ||
649 | |||
650 | // | 671 | // |
651 | // SYSTEM_SECTION | 672 | // SYSTEM_SECTION |
652 | // | 673 | // |
653 | FTransliterate := iniFile.ReadBool(SYSTEM_SECTION, 'TransliterateFileName', True); | 674 | // TODO : REMOVE FTransliterate := iniFile.ReadBool(SYSTEM_SECTION, 'TransliterateFileName', True); |
654 | FActiveCollection := iniFile.ReadInteger(SYSTEM_SECTION, 'ActiveCollection', 1); | 675 | FActiveCollection := iniFile.ReadInteger(SYSTEM_SECTION, 'ActiveCollection', 1); |
655 | FDoCheckUpdate := iniFile.ReadBool(SYSTEM_SECTION, 'CheckUpdates', True); | 676 | FDoCheckUpdate := iniFile.ReadBool(SYSTEM_SECTION, 'CheckUpdates', True); |
656 | FCheckExternalLibUpdate := iniFile.ReadBool(SYSTEM_SECTION, 'CheckLibrusecUpdates', True); | 677 | FCheckExternalLibUpdate := iniFile.ReadBool(SYSTEM_SECTION, 'CheckLibrusecUpdates', True); |
657 | FPromptDevicePath := iniFile.ReadBool(SYSTEM_SECTION, 'PromptDevicePath', False); | 678 | FPromptDevicePath := iniFile.ReadBool(SYSTEM_SECTION, 'PromptDevicePath', True); |
658 | FFolderTemplate := iniFile.ReadString(SYSTEM_SECTION, 'FolderTemplate', '%f\%s'); | 679 | FFolderTemplate := iniFile.ReadString(SYSTEM_SECTION, 'FolderTemplate', '%f\%s'); |
659 | FFileNameTemplate := iniFile.ReadString(SYSTEM_SECTION, 'FileNameTemplate', '%n - %t'); | 680 | FFileNameTemplate := iniFile.ReadString(SYSTEM_SECTION, 'FileNameTemplate', '%n - %t'); |
660 | FRemoveSquareBrackets := iniFile.ReadBool(SYSTEM_SECTION, 'RemoveSquareBrackets', True); | 681 | FRemoveSquareBrackets := iniFile.ReadBool(SYSTEM_SECTION, 'RemoveSquareBrackets', True); |
661 | FUseSystemTemp := iniFile.ReadBool(SYSTEM_SECTION, 'UseSystemTemp', False); | ||
662 | 682 | ||
663 | case iniFile.ReadInteger(SYSTEM_SECTION, 'ExpFormat', 0) of | 683 | case iniFile.ReadInteger(SYSTEM_SECTION, 'ExpFormat', 0) of |
664 | 0: FExportMode := emFB2; | 684 | 0: FExportMode := emFB2; |
... | ... | ||
726 | FLibUsername := iniFile.ReadString(NETWORK_SECTION, 'lib-user', ''); | 746 | FLibUsername := iniFile.ReadString(NETWORK_SECTION, 'lib-user', ''); |
727 | FLibPassword := DecodePassString(iniFile.ReadString(NETWORK_SECTION, 'lib-pass', '')); | 747 | FLibPassword := DecodePassString(iniFile.ReadString(NETWORK_SECTION, 'lib-pass', '')); |
728 | 748 | ||
729 | FUseIESettings := iniFile.ReadBool(NETWORK_SECTION, 'use_ie_settings', False); | 749 | FUseIESettings := iniFile.ReadBool(NETWORK_SECTION, 'use_ie_settings', True); |
730 | if FUseIESettings then | 750 | if FUseIESettings then |
731 | GetIEProxySettings(FIEProxyServer, FIEProxyPort); | 751 | GetIEProxySettings(FIEProxyServer, FIEProxyPort); |
732 | 752 | ||
... | ... | ||
793 | // | 813 | // |
794 | 814 | ||
795 | FEnableSort := iniFile.ReadBool(FILE_SORT_SECTION, 'EnableFileSort', False); | 815 | FEnableSort := iniFile.ReadBool(FILE_SORT_SECTION, 'EnableFileSort', False); |
796 | FInputFolder := iniFile.ReadString(FILE_SORT_SECTION, 'InputFolder', ''); | 816 | FImportDir := iniFile.ReadString(FILE_SORT_SECTION, 'InputFolder', ''); |
797 | 817 | ||
798 | FFB2FolderTemplate := iniFile.ReadString(FILE_SORT_SECTION, 'Fb2FolderTemplate', ''); | 818 | FFB2FolderTemplate := iniFile.ReadString(FILE_SORT_SECTION, 'Fb2FolderTemplate', ''); |
799 | FFB2FileTemplate := iniFile.ReadString(FILE_SORT_SECTION, 'Fb2FileTemplate', ''); | 819 | FFB2FileTemplate := iniFile.ReadString(FILE_SORT_SECTION, 'Fb2FileTemplate', ''); |
... | ... | ||
829 | // | 849 | // |
830 | // SYSTEM_SECTION | 850 | // SYSTEM_SECTION |
831 | // | 851 | // |
832 | iniFile.WriteBool(SYSTEM_SECTION, 'TransliterateFileName', FTransliterate); | 852 | // TODO : REMOVE iniFile.WriteBool(SYSTEM_SECTION, 'TransliterateFileName', FTransliterate); |
833 | iniFile.WriteInteger(SYSTEM_SECTION, 'ActiveCollection', FActiveCollection); | 853 | iniFile.WriteInteger(SYSTEM_SECTION, 'ActiveCollection', FActiveCollection); |
834 | iniFile.WriteBool(SYSTEM_SECTION, 'CheckUpdates', FDoCheckUpdate); | 854 | iniFile.WriteBool(SYSTEM_SECTION, 'CheckUpdates', FDoCheckUpdate); |
835 | iniFile.WriteBool(SYSTEM_SECTION, 'CheckLibrusecUpdates', FCheckExternalLibUpdate); | 855 | iniFile.WriteBool(SYSTEM_SECTION, 'CheckLibrusecUpdates', FCheckExternalLibUpdate); |
... | ... | ||
923 | // | 943 | // |
924 | iniFile.WriteBool(IMPORT_SECTION, 'CheckFB2Exist', FCheckExistsFiles); | 944 | iniFile.WriteBool(IMPORT_SECTION, 'CheckFB2Exist', FCheckExistsFiles); |
925 | 945 | ||
926 | |||
927 | // | 946 | // |
928 | // BEHAVIOR_SECTION | 947 | // BEHAVIOR_SECTION |
929 | // | 948 | // |
930 | |||
931 | iniFile.WriteBool(BEHAVIOR_SECTION, 'ShowRusABC', FShowRusBar); | 949 | iniFile.WriteBool(BEHAVIOR_SECTION, 'ShowRusABC', FShowRusBar); |
932 | iniFile.WriteBool(BEHAVIOR_SECTION, 'ShowEngABC', FShowEngBar); | 950 | iniFile.WriteBool(BEHAVIOR_SECTION, 'ShowEngABC', FShowEngBar); |
933 | iniFile.WriteBool(BEHAVIOR_SECTION, 'DoNotShowDeleted', FDoNotShowDeleted); | 951 | iniFile.WriteBool(BEHAVIOR_SECTION, 'DoNotShowDeleted', FDoNotShowDeleted); |
... | ... | ||
948 | iniFile.WriteBool(BEHAVIOR_SECTION, 'ForceConvertToFBD', FForceConvertToFBD); | 966 | iniFile.WriteBool(BEHAVIOR_SECTION, 'ForceConvertToFBD', FForceConvertToFBD); |
949 | iniFile.WriteBool(BEHAVIOR_SECTION, 'OverwriteFB2Info', FOverwriteFB2Info); | 967 | iniFile.WriteBool(BEHAVIOR_SECTION, 'OverwriteFB2Info', FOverwriteFB2Info); |
950 | iniFile.WriteString(BEHAVIOR_SECTION, 'BookHeaderTemplate', FFBDBookHeaderTemplate); | 968 | iniFile.WriteString(BEHAVIOR_SECTION, 'BookHeaderTemplate', FFBDBookHeaderTemplate); |
969 | |||
951 | // | 970 | // |
952 | // FILE_SORT_SECTION | 971 | // FILE_SORT_SECTION |
953 | // | 972 | // |
954 | |||
955 | iniFile.WriteBool(FILE_SORT_SECTION, 'EnableFileSort', FEnableSort); | 973 | iniFile.WriteBool(FILE_SORT_SECTION, 'EnableFileSort', FEnableSort); |
956 | iniFile.WriteString(FILE_SORT_SECTION, 'InputFolder', FInputFolder); | 974 | iniFile.WriteString(FILE_SORT_SECTION, 'InputFolder', FImportDir); |
957 | 975 | ||
958 | iniFile.WriteString(FILE_SORT_SECTION, 'Fb2FolderTemplate', FFB2FolderTemplate); | 976 | iniFile.WriteString(FILE_SORT_SECTION, 'Fb2FolderTemplate', FFB2FolderTemplate); |
959 | iniFile.WriteString(FILE_SORT_SECTION, 'Fb2FileTemplate', FFB2FileTemplate); | 977 | iniFile.WriteString(FILE_SORT_SECTION, 'Fb2FileTemplate', FFB2FileTemplate); |
... | ... | ||
1209 | 1227 | ||
1210 | function TMHLSettings.GetDataPath: string; | 1228 | function TMHLSettings.GetDataPath: string; |
1211 | begin | 1229 | begin |
1230 | Assert(FDataDir <> ''); | ||
1212 | Result := IncludeTrailingPathDelimiter(FDataDir); | 1231 | Result := IncludeTrailingPathDelimiter(FDataDir); |
1213 | end; | 1232 | end; |
1214 | 1233 | ||
1215 | function TMHLSettings.GetTempPath: string; | 1234 | function TMHLSettings.GetTempPath: string; |
1216 | begin | 1235 | begin |
1236 | Assert(FTempDir <> ''); | ||
1217 | Result := IncludeTrailingPathDelimiter(FTempDir); | 1237 | Result := IncludeTrailingPathDelimiter(FTempDir); |
1218 | end; | 1238 | end; |
1219 | 1239 | ||
1240 | procedure TMHLSettings.SetUpdateDir(const Value: string); | ||
1241 | begin | ||
1242 | FUpdateDir := SafeGetDirName(Value); | ||
1243 | end; | ||
1244 | |||
1220 | function TMHLSettings.GetUpdatePath: string; | 1245 | function TMHLSettings.GetUpdatePath: string; |
1221 | begin | 1246 | begin |
1222 | Result := IncludeTrailingPathDelimiter(FUpdateDir); | 1247 | // |
1248 | // провериться на пустоту и существование. Вернуть папку по умолчанию в случае надобности
// | ||
1249 | if (FUpdateDir = '') or not TDirectory.Exists(FUpdateDir) then | ||
1250 | Result := WorkPath | ||
1251 | else | ||
1252 | Result := IncludeTrailingPathDelimiter(FUpdateDir); | ||
1223 | end; | 1253 | end; |
1224 | 1254 | ||
1255 | procedure TMHLSettings.SetImportDir(const Value: string); | ||
1256 | begin | ||
1257 | FImportDir := SafeGetDirName(Value); | ||
1258 | end; | ||
1259 | |||
1260 | function TMHLSettings.GetImportPath: string; | ||
1261 | begin | ||
1262 | Assert(FImportDir <> ''); | ||
1263 | Result := SafeGetPath(FImportDir); | ||
1264 | end; | ||
1265 | |||
1225 | function TMHLSettings.GetWorkPath: string; | 1266 | function TMHLSettings.GetWorkPath: string; |
1226 | begin | 1267 | begin |
1268 | Assert(FWorkDir <> ''); | ||
1227 | Result := IncludeTrailingPathDelimiter(FWorkDir); | 1269 | Result := IncludeTrailingPathDelimiter(FWorkDir); |
1228 | end; | 1270 | end; |
1229 | 1271 | ||
1230 | function TMHLSettings.GetDevicePath: string; | 1272 | function TMHLSettings.GetDevicePath: string; |
1231 | begin | 1273 | begin |
1274 | Assert(FDeviceDir <> ''); | ||
1232 | Result := IncludeTrailingPathDelimiter(FDeviceDir); | 1275 | Result := IncludeTrailingPathDelimiter(FDeviceDir); |
1233 | end; | 1276 | end; |
1234 | 1277 | ||
1278 | procedure TMHLSettings.SetDeviceDir(const Value: string); | ||
1279 | begin | ||
1280 | FDeviceDir := SafeGetDirName(Value); | ||
1281 | end; | ||
1282 | |||
1235 | function TMHLSettings.GetSystemFileName(fileType: TMHLSystemFile): string; | 1283 | function TMHLSettings.GetSystemFileName(fileType: TMHLSystemFile): string; |
1236 | begin | 1284 | begin |
1237 | case fileType of | 1285 | case fileType of |
... | ... | ||
1254 | end; | 1303 | end; |
1255 | end; | 1304 | end; |
1256 | 1305 | ||
1257 | procedure TMHLSettings.SetDeviceDir(const Value: string); | ||
1258 | begin | ||
1259 | FDeviceDir := ExcludeTrailingPathDelimiter(Value); | ||
1260 | end; | ||
1261 | |||
1262 | procedure TMHLSettings.LoadInitialDirs(iniFile: TIniFile); | 1306 | procedure TMHLSettings.LoadInitialDirs(iniFile: TIniFile); |
1263 | var | 1307 | var |
1264 | I: Integer; | 1308 | I: Integer; |
... | ... | ||
1289 | Result := FInitialDirs.Values[key]; | 1333 | Result := FInitialDirs.Values[key]; |
1290 | end; | 1334 | end; |
1291 | 1335 | ||
1336 | procedure TMHLSettings.SetInitialDir(const key, Value: string); | ||
1337 | begin | ||
1338 | FInitialDirs.Values[key] := Value; | ||
1339 | end; | ||
1340 | |||
1292 | function TMHLSettings.GetPresetPath: string; | 1341 | function TMHLSettings.GetPresetPath: string; |
1293 | begin | 1342 | begin |
1294 | if FPresetDir <> '' then | 1343 | Assert(FPresetDir <> ''); |
1295 | Result := IncludeTrailingPathDelimiter(FPresetDir) | 1344 | Result := SafeGetPath(FPresetDir); |
1296 | else | ||
1297 | Result := ''; | ||
1298 | end; | 1345 | end; |
1299 | 1346 | ||
1300 | function TMHLSettings.GetReadPath: string; | 1347 | function TMHLSettings.GetReadPath: string; |
1301 | begin | 1348 | begin |
1302 | if FReadDir <> '' then | 1349 | if (FReadDir = '') or not TDirectory.Exists(FReadDir) then |
1303 | Result := IncludeTrailingPathDelimiter(FReadDir) | 1350 | Result := TempPath |
1304 | else | 1351 | else |
1305 | Result := ''; | 1352 | Result := SafeGetPath(FReadDir); |
1306 | end; | 1353 | end; |
1307 | 1354 | ||
1308 | procedure TMHLSettings.SetInitialDir(const key, Value: string); | ||
1309 | begin | ||
1310 | FInitialDirs.Values[key] := Value; | ||
1311 | end; | ||
1312 | |||
1313 | procedure TMHLSettings.SetReadDir(const Value: string); | 1355 | procedure TMHLSettings.SetReadDir(const Value: string); |
1314 | begin | 1356 | begin |
1315 | FReadDir := ExcludeTrailingPathDelimiter(Value) | 1357 | FReadDir := SafeGetDirName(Value); |
1316 | end; | 1358 | end; |
1317 | 1359 | ||
1318 | initialization | 1360 | initialization |
Download diff