НАСТРОЙКИ

Отображение формы настроек переделано. Теперь она создаётся только 1 раз при первом вызове.
Добавлен выпадающий списк для выбора локализаций. Кнопка сброса к дефолту изменена.
Чтение настроек из abtool.ini (кроме локализаций). Сброс контроллов к актуальным настройкам при каждом показе формы настроек.
Считанные настройки хранятся в глобальной переменной внутри uOptions. Таким образом:
- исключены циклические ссылки с участием dMain ради доступа к настройкам
- теперь можно только вызвать конструктор TOptions, а сам созданный объект нигде не сохранять: объект GlobalOptions уже будет доступен
Новая функция dMain.GetLocalesIniFileList для получения списка файлов локализаций.
Обновлены ini-файлы. Мелочи по оформлению кода.
develop
Anthony Axenov 2019-01-26 01:37:22 +08:00
parent e968856a55
commit 685274a356
15 changed files with 1325 additions and 194 deletions

View File

@ -75,7 +75,7 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="8">
<Units Count="9">
<Unit0>
<Filename Value="ABTool.lpr"/>
<IsPartOfProject Value="True"/>
@ -120,9 +120,15 @@
<Filename Value="foptions.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="fmOptions"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="fOptions"/>
</Unit7>
<Unit8>
<Filename Value="uoptions.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="uOptions"/>
</Unit8>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -13,7 +13,8 @@ uses {$IFDEF UNIX} {$IFDEF UseCThreads}
uPackage,
uPackageUtils,
uPackageList,
fOptions;
fOptions,
uOptions;
{$R *.res}

View File

@ -0,0 +1,187 @@
; Author: AnthonyAxenov, anthonysoprano.93@gmail.com, abtool.ru
; Date: 20:11 20.05.2015
[Info]
; Language name - required
Name=DEBUG
; ABTool version — required
ABToolVer=0.8.0
[Main]
; Bidirectional mode:
; = 1 - Left to right
; = 2 - Right to left with right alignment
; = 3 - Right to left with left alignment
; = 4 - Right to left with right alignment only for reading (not typing)
Bidi=1
[SplashForm]
;
; Splash form
;
SplashForm_Lab_Loading=SplashForm_Lab_Loading
[MainForm]
;
; Main form
;
;Tabs
MainForm_Tab_Soft=MainForm_Tab_Soft
MainForm_Tab_Tools=MainForm_Tab_Tools
MainForm_Tab_System=MainForm_Tab_System
; Deprecated since v0.8.0.313 (19:01 19.05.2015)
;MainForm_Tab_SysInfo=MainForm_Tab_SysInfo
; Deprecated since v0.8.0.313 (19:01 19.05.2015)
;MainForm_Tab_SysCare=MainForm_Tab_SysCare
MainForm_Tab_Log=MainForm_Tab_Log
;Common buttons on toolbars
MainForm_Btn_List=MainForm_Btn_List
MainForm_Mnb_ExpandAll=MainForm_Mnb_ExpandAll
MainForm_Mnb_CollapseAll=MainForm_Mnb_CollapseAll
MainForm_Btn_Search=MainForm_Btn_Search
MainForm_Mnb_PackDefault=MainForm_Mnb_PackDefault
MainForm_Mnb_PacksEdit=MainForm_Mnb_PacksEdit
;"Programms" tab
MainForm_Btn_SoftCheck=MainForm_Btn_SoftCheck
MainForm_Mnb_SoftCheckAll=MainForm_Mnb_SoftCheckAll
MainForm_Mnb_SoftCheckNone=MainForm_Mnb_SoftCheckNone
MainForm_Btn_SoftPackages=MainForm_Btn_SoftPackages
MainForm_Btn_SoftStart=MainForm_Btn_SoftStart
;"Utilities" tab
MainForm_Btn_ToolsPackages=MainForm_Btn_ToolsPackages
;"System" tab
MainForm_Lab_System=MainForm_Lab_System
MainForm_SInfo_RowOSVer=MainForm_SInfo_RowPCName
MainForm_SInfo_RowPCName=MainForm_SInfo_RowPCName
MainForm_SInfo_RowUserName=MainForm_SInfo_RowUserName
MainForm_Lab_UserVars=MainForm_Lab_UserVars
MainForm_Vars_Col1=MainForm_Vars_Col1
MainForm_Vars_Col2=MainForm_Vars_Col2
MainForm_Lab_SysVars=MainForm_Lab_SysVars
MainForm_Btn_SysInfoRefresh=MainForm_Btn_SysInfoRefresh
MainForm_Btn_VarsEdit=MainForm_Btn_VarsEdit
MainForm_Mnb_CopyVarValue=MainForm_Mnb_CopyVarValue
MainForm_Mnb_CopyVarLine=MainForm_Mnb_CopyVarLine
MainForm_Mnb_CopyVarAll=MainForm_Mnb_CopyVarAll
MainForm_Grp_Power=MainForm_Grp_Power
MainForm_Btn_PowerOff=MainForm_Btn_PowerOff
MainForm_Btn_Reboot=MainForm_Btn_Reboot
;"Log" tab
MainForm_Btn_LogClear=MainForm_Btn_LogClear
MainForm_Btn_LogSave=MainForm_Btn_LogSave
;Other strings in this window
;MainForm_Caption=ABTool Debugging
MainForm_Btn_Options=MainForm_Btn_Options
[OptionsForm]
;
; Options form
;
;Tabs
OptForm_Tab_Common=OptForm_Tab_Common
OptForm_Tab_Interface=OptForm_Tab_Interface
OptForm_Tab_Packages=OptForm_Tab_Packages
OptForm_Tab_About=OptForm_Tab_About
;"Common" tab
; "OptForm_Grp_Lang / Language"
OptForm_Grp_Lang=OptForm_Grp_Lang
OptForm_Lab_LangFileIs=OptForm_Lab_LangFileIs
OptForm_Lab_LangNameIs=OptForm_Lab_LangNameIs
OptForm_Lab_LangVerIs=OptForm_Lab_LangVerIs
OptForm_Grp_Soft=OptForm_Grp_Soft
OptForm_Chb_ChkExitCodes=OptForm_Chb_ChkExitCodes
OptForm_Chb_ChkExitCodesHint=OptForm_Chb_ChkExitCodesHint
OptForm_Chb_DntUnChkItems=OptForm_Chb_DntUnChkItems
OptForm_Chb_DntUnChkItemsHint=OptForm_Chb_DntUnChkItemsHint
OptForm_Chb_ColorSoftTree=OptForm_Chb_ColorSoftTree
OptForm_Chb_ColorSoftTreeHint=OptForm_Chb_ColorSoftTreeHint
OptForm_Chb_ShowProgress=OptForm_Chb_ShowProgress
OptForm_Chb_ShowProgressHint=OptForm_Chb_ShowProgressHint
OptForm_Chb_ExpandSoft=OptForm_Chb_ExpandSoft
OptForm_Chb_ExpandSoftHint=OptForm_Chb_ExpandSoftHint
OptForm_Chb_QuietREG=OptForm_Chb_QuietREG
OptForm_Chb_QuietREGHint=OptForm_Chb_QuietREGHint
OptForm_Grp_Tools=OptForm_Grp_Tools
OptForm_Chb_HideOnTool=OptForm_Chb_HideOnTool
OptForm_Chb_HideOnToolHint=OptForm_Chb_HideOnToolHint
OptForm_Chb_ExpandTools=OptForm_Chb_ExpandTools
OptForm_Chb_ExpandToolsHint=OptForm_Chb_ExpandToolsHint
; "OptForm_Url_DownloadLangs / Download other languages"
OptForm_Url_DownloadLangs=OptForm_Url_DownloadLangs
;"Interface" tab
OptForm_Chb_ShowLog=OptForm_Chb_ShowLog
OptForm_Chb_ShowLogHint=OptForm_Chb_ShowLogHint
OptForm_Chb_DrawOutlines=OptForm_Chb_DrawOutlines
OptForm_Chb_DrawOutlinesHint=OptForm_Chb_DrawOutlinesHint
OptForm_Chb_ScreenSnap=OptForm_Chb_ScreenSnap
OptForm_Chb_ScreenSnapHint=OptForm_Chb_ScreenSnapHint
OptForm_Chb_OnTop=OptForm_Chb_OnTop
OptForm_Chb_OnTopHint=OptForm_Chb_OnTopHint
OptForm_Chb_ShowPkgDesc=OptForm_Chb_ShowPkgDesc
OptForm_Chb_ShowPkgDescHint=OptForm_Chb_ShowPkgDescHint
OptForm_Chb_SrchVisible=OptForm_Chb_SrchVisible
OptForm_Chb_SrchVisibleHint=OptForm_Chb_SrchVisibleHint
OptForm_Chb_ScrollLog=OptForm_Chb_ScrollLog
OptForm_Chb_ScrollLogHint=OptForm_Chb_ScrollLogHint
OptForm_Grp_PkgSwitchMethod=OptForm_Grp_PkgSwitchMethod
OptForm_Rdb_PkgSwByMenu=OptForm_Rdb_PkgSwByMenu
OptForm_Rdb_PkgSwByMenuHint=OptForm_Rdb_PkgSwByMenuHint
OptForm_Rdb_PkgSwByTabs=OptForm_Rdb_PkgSwByTabs
OptForm_Rdb_PkgSwByTabsHint=OptForm_Rdb_PkgSwByTabsHint
OptForm_Chb_PkgSwShrinkTabs=OptForm_Chb_PkgSwShrinkTabs
OptForm_Chb_PkgSwShrinkTabsHint=OptForm_Chb_PkgSwShrinkTabsHint
OptForm_Cmb_PkgSwTabsPosHint=OptForm_Cmb_PkgSwTabsPosHint
OptForm_Cmb_PkgSwTabsPosTop=OptForm_Cmb_PkgSwTabsPosTop
OptForm_Cmb_PkgSwTabsPosBottom=OptForm_Cmb_PkgSwTabsPosBottom
OptForm_Cmb_PkgSwTabsPosLeft=OptForm_Cmb_PkgSwTabsPosLeft
OptForm_Cmb_PkgSwTabsPosRight=OptForm_Cmb_PkgSwTabsPosRight
;"Packages" tab
OptForm_Grp_PkgSoft=OptForm_Grp_PkgSoft
OptForm_Grp_PkgTools=OptForm_Grp_PkgTools
OptForm_Btn_BrowseUserSoftPkg=OptForm_Btn_BrowseUserSoftPkg
OptForm_Btn_BrowseUserSoftPkgHint=OptForm_Btn_BrowseUserSoftPkgHint
OptForm_Btn_ClearUserSoftPkgHint=OptForm_Btn_ClearUserSoftPkgHint
OptForm_Btn_OpenIniDir=OptForm_Btn_OpenIniDir
OptForm_Btn_OpenIniDirHint=OptForm_Btn_OpenIniDirHint
OptForm_Grp_PkgInfo=OptForm_Grp_PkgInfo
OptForm_Lab_PkgNameIs=OptForm_Lab_PkgNameIs
OptForm_Lab_PkgDescIs=OptForm_Lab_PkgDescIs
;"About" tab
OptForm_Lab_ABToolBuildIs=OptForm_Lab_ABToolBuildIs
OptForm_Lab_WhatsNew=OptForm_Lab_WhatsNew
OptForm_Url_ReportBug=OptForm_Url_ReportBug
OptForm_Url_Help=OptForm_Url_Help
OptForm_Btn_CheckUpdates=OptForm_Btn_CheckUpdates
OptForm_Btn_CheckingUpdates=OptForm_Btn_CheckingUpdates
;Other strings in this window
OptForm_Caption=OptForm_Caption
OptForm_Btn_ResetOptions=OptForm_Btn_ResetOptions
OptForm_Btn_SaveOptions=OptForm_Btn_SaveOptions
OptForm_Btn_Close=OptForm_Btn_Close
[ProgressForm]
;
; Installation progress form
;
[ChoosePkgForm]
;
; Form to choose package
;
[Messages]
;
; Messages to show
;
[Log]
;
; Log messages
;

View File

@ -0,0 +1,189 @@
; Author: AnthonyAxenov, anthonysoprano.93@gmail.com, abtool.ru
; Date: 20:11 20.05.2015
[Info]
; Language name - required
Name=English
; ABTool version — required
ABToolVer=0.8.0
[Main]
; Bidirectional mode:
; = 1 - Left to right
; = 2 - Right to left with right alignment
; = 3 - Right to left with left alignment
; = 4 - Right to left with right alignment only for reading (not typing)
Bidi=1
[SplashForm]
;
; Splash form
;
SplashForm_Lab_Loading=Loading...
[MainForm]
;
; Main form
;
;Tabs
MainForm_Tab_Soft=Programms
MainForm_Tab_Tools=Utilities
MainForm_Tab_System=System
; Deprecated since v0.8.0.313 (19:01 19.05.2015)
;MainForm_Tab_SysInfo=Common info
; Deprecated since v0.8.0.313 (19:01 19.05.2015)
;MainForm_Tab_SysCare=Maintenance
MainForm_Tab_Log=Log
;Common buttons on toolbars
MainForm_Btn_List=List
MainForm_Mnb_ExpandAll=Expand all
MainForm_Mnb_CollapseAll=Collapse all
MainForm_Btn_Search=Search
MainForm_Mnb_PackDefault=Default
MainForm_Mnb_PacksEdit=Package management...
;"Programms" tab
MainForm_Btn_SoftCheck=Choose
MainForm_Mnb_SoftCheckAll=Choose all
MainForm_Mnb_SoftCheckNone=Choose none
MainForm_Btn_SoftPackages=Programm packages
MainForm_Btn_SoftStart=<<< Start installation >>>
;"Utilities" tab
MainForm_Btn_ToolsPackages=Utility packages
;"System" tab
MainForm_Lab_System=System
MainForm_SInfo_RowOSVer=OS version
MainForm_SInfo_RowPCName=PC name
MainForm_SInfo_RowUserName=User name
MainForm_Lab_UserVars=Environment variables for
MainForm_Vars_Col1=Variable
MainForm_Vars_Col2=Value
MainForm_Lab_SysVars=System environment variables
MainForm_Btn_SysInfoRefresh=Refresh
MainForm_Btn_VarsEdit=Edit variables...
MainForm_Mnb_CopyVarValue=Copy value to clipboard
MainForm_Mnb_CopyVarLine=Copy variable with value
MainForm_Mnb_CopyVarAll=Copy all
MainForm_Grp_Power=Power management
MainForm_Btn_PowerOff=Power off
MainForm_Btn_Reboot=Reboot
;"Log" tab
MainForm_Btn_LogClear=Clear log
MainForm_Btn_LogSave=Save log to file...
;Other strings in this window
;MainForm_Caption=ABTool in English!
MainForm_Btn_Options=Options
[OptionsForm]
;
; Options form
;
;Tabs
OptForm_Tab_Common=Common
OptForm_Tab_Interface=Interface
OptForm_Tab_Packages=Packages
OptForm_Tab_About=About
;"Common" tab
; "OptForm_Grp_Lang / Language"
OptForm_Grp_Lang=
OptForm_Lab_LangFileIs=Filename:
OptForm_Lab_LangNameIs=Language:
OptForm_Lab_LangVerIs=Version:
OptForm_Grp_Soft=«Software» tab
OptForm_Chb_ChkExitCodes=Immediately report if the return code <> 0
OptForm_Chb_ChkExitCodesHint=When the installer is finished with a code other than zero, you will be asked to terminate the installation process
OptForm_Chb_DntUnChkItems=Leave the check box checked with the return code <> 0
OptForm_Chb_DntUnChkItemsHint=Later, you can try to install only those programs, the installation of which was not completed correctly
OptForm_Chb_ColorSoftTree=Color software tree list after installing
OptForm_Chb_ColorSoftTreeHint=When the installation process is complete, a list of programs to be is colored as follows: Failed to start — red, return code <> 0 — blue
OptForm_Chb_ShowProgress=Show the overall process of software installation
OptForm_Chb_ShowProgressHint=During installation, the main window will disappear and there will be another, displaying the overall progress of the installation. Otherwise - the main window will not disappear, but will be blocked
OptForm_Chb_ExpandSoft=Expand software tree when package is loaded
OptForm_Chb_ExpandSoftHint=
OptForm_Chb_QuietREG=Silent import from REG-files
OptForm_Chb_QuietREGHint=REGEDIT will not ask for confirmation
OptForm_Grp_Tools=«Utilities» tab
OptForm_Chb_HideOnTool=Hide ABTool when utility is launched
OptForm_Chb_HideOnToolHint=When utility is launched, ABTool will not disturb
OptForm_Chb_ExpandTools=Expand utilities tree when package is loaded
OptForm_Chb_ExpandToolsHint=
; "OptForm_Url_DownloadLangs / Download other languages"
;OptForm_Url_DownloadLangs=
;"Interface" tab
OptForm_Chb_ShowLog=Show log tab
OptForm_Chb_ShowLogHint=The log appears on the an additional tab and contains complete protocol of events
OptForm_Chb_DrawOutlines=Draw lists outlines
OptForm_Chb_DrawOutlinesHint=It applies both to the Software and Utilities tabs
OptForm_Chb_ScreenSnap=Snap ABTool to the screen borders when moving
OptForm_Chb_ScreenSnapHint=
OptForm_Chb_OnTop=Keep ABTool on top
OptForm_Chb_OnTopHint=
OptForm_Chb_ShowPkgDesc=Show package descriptions
OptForm_Chb_ShowPkgDescHint=It applies both to the Software and Utilities tabs
OptForm_Chb_SrchVisible=Search bar is always shown
OptForm_Chb_SrchVisibleHint=It applies both to the Software and Utilities tabs
OptForm_Chb_ScrollLog=Always scroll log to the end
OptForm_Chb_ScrollLogHint=
OptForm_Grp_PkgSwitchMethod=Package switching method
OptForm_Rdb_PkgSwByMenu=Let me choose via package menu
OptForm_Rdb_PkgSwByMenuHint=It applies both to the Software and Utilities tabs
OptForm_Rdb_PkgSwByTabs=Show packages as tabs:
OptForm_Rdb_PkgSwByTabsHint=It applies both to the Software and Utilities tabs
OptForm_Chb_PkgSwShrinkTabs=Fit all names (long names will be trimmed)
OptForm_Chb_PkgSwShrinkTabsHint=If disabled, all packages' names may not fit on this panel
OptForm_Cmb_PkgSwTabsPosHint=Choose package tabs position
OptForm_Cmb_PkgSwTabsPosTop=Top
OptForm_Cmb_PkgSwTabsPosBottom=Bottom
OptForm_Cmb_PkgSwTabsPosLeft=Left
OptForm_Cmb_PkgSwTabsPosRight=Right
;"Packages" tab
OptForm_Grp_PkgSoft=Software
OptForm_Grp_PkgTools=Utilities
OptForm_Btn_BrowseUserSoftPkg=Choose
OptForm_Btn_BrowseUserSoftPkgHint=Choose your package in special window
OptForm_Btn_ClearUserSoftPkgHint=Clear field
OptForm_Btn_OpenIniDir=Open ABTool_ini directory
OptForm_Btn_OpenIniDirHint=
OptForm_Grp_PkgInfo=Package info
OptForm_Lab_PkgNameIs=Name:
OptForm_Lab_PkgDescIs=Description:
;"About" tab
OptForm_Lab_ABToolBuildIs=build
OptForm_Lab_WhatsNew=What's new in this version:
OptForm_Url_ReportBug=Report bug
OptForm_Url_Help=Get help
OptForm_Btn_CheckUpdates=Check updates
OptForm_Btn_CheckingUpdates=Checking updates...
;Other strings in this window
OptForm_Caption=ABTool options
OptForm_Btn_ResetOptions=Reset
OptForm_Btn_SaveOptions=Save
OptForm_Btn_Close=Close
[ProgressForm]
;
; Installation progress form
;
[ChoosePkgForm]
;
; Form to choose package
;
[Messages]
;
; Messages to show
;
[Log]
;
; Log messages
;

View File

@ -0,0 +1,185 @@
; Author: AnthonyAxenov, anthonysoprano.93@gmail.com, abtool.ru
; Date: 20:11 20.05.2015
[Info]
; Language name - required
Name=Русский
; ABTool version — required
ABToolVer=0.8.0
[Main]
; Bidirectional mode:
; = 1 - Left to right
; = 2 - Right to left with right alignment
; = 3 - Right to left with left alignment
; = 4 - Right to left with right alignment only for reading (not typing)
Bidi=2
[SplashForm]
;
; Splash form
;
SplashForm_Lab_Loading=Загрузка...
[MainForm]
;
; Main form
;
;Tabs
MainForm_Tab_Soft=Программы
MainForm_Tab_Tools=Утилиты
MainForm_Tab_System=Система
; Deprecated since v0.8.0.313 (19:01 19.05.2015)
;MainForm_Tab_SysInfo=Общая информация
; Deprecated since v0.8.0.313 (19:01 19.05.2015)
;MainForm_Tab_SysCare=Обслуживание
MainForm_Tab_Log=Лог
;Common buttons on toolbars
MainForm_Btn_List=Список
MainForm_Mnb_ExpandAll=Развернуть все
MainForm_Mnb_CollapseAll=Свернуть все
MainForm_Btn_Search=Поиск
MainForm_Mnb_PackDefault=По умолчанию
MainForm_Mnb_PacksEdit=Управление пакетами...
;"Programms" tab
MainForm_Btn_SoftCheck=Выбор
MainForm_Mnb_SoftCheckAll=Выбрать все
MainForm_Mnb_SoftCheckNone=Снять выбор
MainForm_Btn_SoftPackages=Пакеты программ
MainForm_Btn_SoftStart=<<< Приступить к установке >>>
;"Utilities" tab
MainForm_Btn_ToolsPackages=Пакеты утилит
;"System" tab
MainForm_Lab_System=Система
MainForm_SInfo_RowOSVer=Версия ОС
MainForm_SInfo_RowPCName=Имя ПК
MainForm_SInfo_RowUserName=Имя пользователя
MainForm_Lab_UserVars=Переменные среды для
MainForm_Vars_Col1=Переменная
MainForm_Vars_Col2=Значение
MainForm_Lab_SysVars=Системные переменные среды
MainForm_Btn_SysInfoRefresh=Обновить
MainForm_Btn_VarsEdit=Редактирование...
MainForm_Mnb_CopyVarValue=Копировать значение
MainForm_Mnb_CopyVarLine=Копировать строку
MainForm_Mnb_CopyVarAll=Копировать все
MainForm_Grp_Power=Питание компьютера
MainForm_Btn_PowerOff=Выключение
MainForm_Btn_Reboot=Перезагрузка
;"Log" tab
MainForm_Btn_LogClear=Очистить лог
MainForm_Btn_LogSave=Сохранить...
;Other strings in this window
MainForm_Btn_Options=Настройки
[OptionsForm]
;
; Options form
;
;Tabs
OptForm_Tab_Common=Общие
OptForm_Tab_Interface=Интерфейс
OptForm_Tab_Packages=Пакеты
OptForm_Tab_About=О программе
;"Common" tab
; "OptForm_Grp_Lang / Language"
OptForm_Grp_Lang=Язык
OptForm_Lab_LangFileIs=Файл:
OptForm_Lab_LangNameIs=Язык:
OptForm_Lab_LangVerIs=Версия:
OptForm_Grp_Soft=Вкладка «Программы»
OptForm_Chb_ChkExitCodes=Немедленно сообщать о коде возврата <> 0
OptForm_Chb_ChkExitCodesHint=В случае завершения инсталлятора с кодом, отличным от нуля, вам предлагается прервать процесс установки программ
OptForm_Chb_DntUnChkItems=Не снимать отметку с чекбокса при коде возврата <> 0
OptForm_Chb_DntUnChkItemsHint=В последующем вы можете попробовать установить только те программы, установка которых не была завершена корректно
OptForm_Chb_ColorSoftTree=Раскрашивать список программ после установки
OptForm_Chb_ColorSoftTreeHint=После завершения процесса установки список программ будет раскрашен так: ошибка запуска — красный, код возврата <> 0 — синий
OptForm_Chb_ShowProgress=Отображать общий ход установки программ
OptForm_Chb_ShowProgressHint=Во время установки главное окно скроется и появится другое, с отображением общего хода установки. Иначе — главное окно не исчезнет, но заблокируется
OptForm_Chb_ExpandSoft=Раскрывать список программ после загрузки пакета
OptForm_Chb_ExpandSoftHint=
OptForm_Chb_QuietREG=Тихий импорт REG-файлов
OptForm_Chb_QuietREGHint=Когда до него дойдёт очередь, данные будут внесены без подтверждений
OptForm_Grp_Tools=Вкладка «Утилиты»
OptForm_Chb_HideOnTool=Скрыть главное окно ABTool при запуске утилиты
OptForm_Chb_HideOnToolHint=После запуска утилиты окно ABTool не будет мешать
OptForm_Chb_ExpandTools=Раскрывать список утилит после загрузки пакета
OptForm_Chb_ExpandToolsHint=
; "OptForm_Url_DownloadLangs / Download other languages"
OptForm_Url_DownloadLangs=Скачать другие языки
;"Interface" tab
OptForm_Chb_ShowLog=Показывать лог событий
OptForm_Chb_ShowLogHint=Лог выводится на дополнительную вкладку и содержит полный протокол событий
OptForm_Chb_DrawOutlines=Показывать линии при отрисовке списков
OptForm_Chb_DrawOutlinesHint=
OptForm_Chb_ScreenSnap=Прилипание окон к краям экрана
OptForm_Chb_ScreenSnapHint=
OptForm_Chb_OnTop=Поверх всех окон
OptForm_Chb_OnTopHint=
OptForm_Chb_ShowPkgDesc=Показывать описания пакетов
OptForm_Chb_ShowPkgDescHint=Действует как на вкладке установки, так и на вкладке утилит
OptForm_Chb_SrchVisible=Строка поиска всегда видна
OptForm_Chb_SrchVisibleHint=Действует как на вкладке установки, так и на вкладке утилит
OptForm_Chb_ScrollLog=Всегда прокручивать лог до конца
OptForm_Chb_ScrollLogHint=
OptForm_Grp_PkgSwitchMethod=Переключение между пакетами
OptForm_Rdb_PkgSwByMenu=Через меню над списками
OptForm_Rdb_PkgSwByMenuHint=Действует как на вкладке установки, так и на вкладке утилит
OptForm_Rdb_PkgSwByTabs=Отображать в виде закладок:
OptForm_Rdb_PkgSwByTabsHint=Действует как на вкладке установки, так и на вкладке утилит
OptForm_Chb_PkgSwShrinkTabs=Вмещать все (длинные названия будут укорочены)
OptForm_Chb_PkgSwShrinkTabsHint=Если выключено, все названия могут не поместиться в ширину панели закладок
OptForm_Cmb_PkgSwTabsPosHint=Выберите положение панели закладок
OptForm_Cmb_PkgSwTabsPosTop=Сверху
OptForm_Cmb_PkgSwTabsPosBottom=Снизу
OptForm_Cmb_PkgSwTabsPosLeft=Слева
OptForm_Cmb_PkgSwTabsPosRight=Справа
;"Packages" tab
OptForm_Grp_PkgSoft=Программы
OptForm_Grp_PkgTools=Утилиты
OptForm_Btn_BrowseUserSoftPkg=Выбор
OptForm_Btn_BrowseUserSoftPkgHint=Выбрать пользовательский пакет в отдельном окне
OptForm_Btn_ClearUserSoftPkgHint=Очистить поле
OptForm_Btn_OpenIniDir=Открыть папку ABTool_ini
OptForm_Btn_OpenIniDirHint=
OptForm_Grp_PkgInfo=Информация о пакете
OptForm_Lab_PkgNameIs=Название:
OptForm_Lab_PkgDescIs=Описание:
;"About" tab
OptForm_Lab_ABToolBuildIs=сборка
OptForm_Lab_WhatsNew=Что нового в этой версии:
OptForm_Url_ReportBug=Сообщить об ошибке
OptForm_Url_Help=Помощь
OptForm_Btn_CheckUpdates=Проверить обновления
OptForm_Btn_CheckingUpdates=ПОлучение информации...
;Other strings in this window
OptForm_Caption=Настройки ABTool
OptForm_Btn_ResetOptions=Сброс
OptForm_Btn_SaveOptions=Сохранить
OptForm_Btn_Close=Закрыть
[ProgressForm]
;
; Installation progress form
;
[ChoosePkgForm]
;
; Form to choose package
;
[Messages]
;
; Messages to show
;
[Log]
;
; Log messages
;

View File

@ -1,25 +1,22 @@
[Options]
Locale=
ScreenSnap=1
ShowPkgDesc=1
DrawOutlines=1
OnTop=0
ChkExitCodes=0
DntUnChkItems=1
ColorSoftTree=1
ShowProgress=1
ExpandSoft=1
QuietREG=0
ExpandSoft=1
HideOnTool=0
ExpandTools=1
ShowLog=1
DrawOutlines=1
ScreenSnap=1
OnTop=0
ShowPkgDesc=1
SrchVisible=0
[UserSoftPackages]
UserSoftPkg1=
UserSoftPkg2=
UserSoftPkg3=
LastUserSoftPkg=0
[UserToolPackages]
UserToolPkg1=
UserToolPkg2=
UserToolPkg3=
LastUserToolPkg=0
Left=
Top=
Width=
Height=

View File

@ -3678,6 +3678,42 @@ object dmMain: TdmMain
end
object mbRefresh: TMenuItem
Caption = 'Обновить'
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00994E
0399994E035C9B500400994E031A984D026C984D02A6984D02CC984D02C1984D
028C984D024D994E03109C510500A2570A00A65B0D00FFFFFF00FFFFFF009C51
05CC9C5105CC9C510585A35806BFC8841AE3EAA71FF5FCB920FFFCB920F1EAA6
1FCFC78219A6A35909789D520622A2570A00A65B0D00FFFFFF00FFFFFF00A257
0ACCF9BF40FFA2570ACCF7B52AFFF6B01CFFF7B11EFFF8B527FFF8B527F1F7B1
1ED6F6B01CB4F8BA3490AB62105FA3580B19A65B0D00FFFFFF00FFFFFF00A85D
0ECCF2B339FFF3B844FFEEA824FFF2B339FFC37E23DCA85D0ECCA85D0EC1C27E
22BAE7A937B2EFAB2A90F3B8436DAD631243A95E0F06FFFFFF00FFFFFF00AF64
14CCECB149FFE6A334FFEEB752FFAF6414CCAF641494AD621200AA5F0F00AE63
134AAF641488E4A74491E8A83B6DCA88314EAF641419FFFFFF00FFFFFF00B66B
19CCEBB861FFE7B057FFE7B057FFEEBF6AFFB66B19CCB76C1A5CB56A1800AF64
1400B56A1932C7843178E3A84E6CDCA24C54B66B1925FFFFFF00FFFFFF00BD72
1E99BE731FCCBE731FCCBE731FCCBE731FCCBE731FCCBD721E99C0752000C378
2300BD721E00BE731F33E5B06140E7B4663FBD721E20FFFFFF00FFFFFF00C67B
2620E8B86F3FE6B46C40C57A2533C2782200BF752000C1762100C67B2699C57A
25CCC57A25CCC57A25CCC57A25CCC57A25CCC67B2699FFFFFF00FFFFFF00CD82
2A25E6B16654E8B5706CD8984478CE832B32CF842C00CB802800CC81295CCD82
2ACCF3CD84FFECBD77FFECBD77FFF0C57EFFCD822ACCFFFFFF00FFFFFF00D489
3019E2A7554EEDBC766DEEBE7491D4893088D58A314AD98E3300D3882F00D489
3094D48930CCF4CD84FFEAB772FFF1C67EFFD48930CCFFFFFF00FFFFFF00DA8F
3406DD943A43F8D2896DF4C57D90F4C77AB2E5A852BADB9034C1DB9034CCE5A8
52DCF7CD85FFF2C27AFFF8D389FFF7CD85FFDB9034CCFFFFFF00FFFFFF00DC91
3500E0953919E49E435FFCD88D90FACF85B4FBD086D6FCD489F1FCD489FFFBD0
86FFFACF85FFFBD389FFE19639CCFEDD92FFE19639CCFFFFFF00FFFFFF00DC91
3500E1963900E59A3D22E79F4378F1B964A6FACF80CFFEDA8EF1FEDA8EFFFACF
81F5F1BB65E3E79E42BFE59A3D85E59A3DCCE59A3DCCFFFFFF00FFFFFF00DC91
3500E1963900E59A3D00E89D3F10E99E404DE99E408CE99E40C1E99E40CCE99E
40A6E99E406CE89D3F1AE69B3D00E99E405CE99E4099FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
ImageIndex = 16
ShortCut = 16466
OnClick = mbRefreshClick

119
dmain.pas
View File

@ -5,8 +5,8 @@ unit dMain;
interface
uses
Classes, SysUtils, FileUtil, Controls, Menus, Forms, PopupNotifier,
VirtualTrees, uPackage, uPackageList, fOptions;
Classes, SysUtils, FileUtil, Controls, Menus, Forms, PopupNotifier, Dialogs,
VirtualTrees, uPackage, uPackageList, fOptions, uOptions;
type
@ -47,13 +47,13 @@ type
procedure mbOptionsPkgClick(Sender: TObject);
procedure mbRefreshClick(Sender: TObject);
private
// Форма настроек
fmOptions: TfmOptions;
// Подготовка директорий
procedure PrepareDirs();
procedure PrepareDirs();
// Подготовка списков пакетов
procedure PreparePackages();
procedure PreparePackageLists();
public
{ Публичные переменные, которые доступны во всех юнитах с подключенным uses ..., dMain }
// путь к файлу ABTool.exe
ABToolExePath: String;
// путь к директории ABTool
@ -65,11 +65,13 @@ type
// путь к директории ABTool\Logs
ABToolLogPath: String;
// Список объектов пакетов программ для установки
SoftPackages: TPackageList;
SoftPackages: TPackageList;
// Список объектов пакетов утилит для запуска
ToolsPackages: TPackageList;
// Установка состояния отметки для всех корневых нод указанного дерева
procedure SetVSTCheckState(AVST: TBaseVirtualTree; AState: boolean);
// Показ формы настроек на указанной странице и возврат модального результата
function CallOptionsForm(APageIndex: byte = 0): TModalResult;
end;
var
@ -82,7 +84,7 @@ uses fMain;
{$R *.lfm}
{ TdmMain }
{------------------------------------------------------------------------------
Конструктор: TdmMain.Create()
Назначение: Создание датамодуля, подготовка путей и списков пакетов
@ -90,29 +92,20 @@ uses fMain;
procedure TdmMain.DataModuleCreate(Sender: TObject);
begin
PrepareDirs();
PreparePackages();
PreparePackageLists();
TOptions.Create(dmMain.ABToolDataPath + '\abtool.ini');
end;
procedure TdmMain.mbAboutClick(Sender: TObject);
var
fmOptions: TfmOptions;
begin
fmOptions := TfmOptions.Create(fmMain);
fmOptions.PageControl.ActivePageIndex := 2;
fmOptions.ShowModal;
end;
{------------------------------------------------------------------------------
Конструктор: TdmMain.SetVSTCheckState()
Назначение: Установка состояния отметки для всех корневых нод указанного дерева
Конструктор: TdmMain.SetVSTCheckState()
Назначение: Установка состояния отметки для всех корневых нод указанного дерева
Вх. параметры:
AVST: TBaseVirtualTree - дерево
AState: boolean - состояние отметок: TRUE выбрать все, FALSE снять выбор со всех
------------------------------------------------------------------------------}
procedure TdmMain.SetVSTCheckState(AVST: TBaseVirtualTree; AState: boolean);
var
Node: PVirtualNode;
Node: PVirtualNode;
// Установка состояния отметки ноды-родителя дочерним нодам
procedure CheckChildNodes(ANode: PVirtualNode);
@ -147,23 +140,23 @@ begin
end;
{------------------------------------------------------------------------------
Конструктор: TdmMain.mbCheckAllClick()
Назначение: Обработка клика п. меню "Выбрать всё"
Конструктор: TdmMain.mbCheckAllClick()
Назначение: Обработка клика п. меню "Выбрать всё"
------------------------------------------------------------------------------}
procedure TdmMain.mbCheckAllClick(Sender: TObject);
begin
SetVSTCheckState(fmMain.vstSoftPkgContents, true);
end;
end;
{------------------------------------------------------------------------------
Конструктор: TdmMain.mbCheckNoneClick()
Назначение: Обработка клика п. меню "Снять выбор"
Конструктор: TdmMain.mbCheckNoneClick()
Назначение: Обработка клика п. меню "Снять выбор"
------------------------------------------------------------------------------}
procedure TdmMain.mbCheckNoneClick(Sender: TObject);
begin
SetVSTCheckState(fmMain.vstSoftPkgContents, false);
end;
{------------------------------------------------------------------------------
Процедура: TdmMain.mbCollapseTreeClick()
Назначение: Сворачивание дерева на активной вкладке главного окна
@ -199,9 +192,9 @@ begin
1: fmMain.btnToolsPkgReload.Click;
end;
end;
{------------------------------------------------------------------------------
Процедура: TdmMain.PreparePackages()
Процедура: TdmMain.PrepareDirs()
Назначение: Подготовка директорий
------------------------------------------------------------------------------}
procedure TdmMain.PrepareDirs();
@ -218,34 +211,64 @@ begin
if not DirectoryExists(ABToolLogPath) then
ForceDirectories(ABToolLogPath);
end;
{------------------------------------------------------------------------------
Процедура: TdmMain.PreparePackages()
Процедура: TdmMain.PreparePackageLists()
Назначение: Подготовка списков пакетов
------------------------------------------------------------------------------}
procedure TdmMain.PreparePackages();
procedure TdmMain.PreparePackageLists();
begin
SoftPackages := TPackageList.Create;
SoftPackages.Load(ptSoft);
ToolsPackages := TPackageList.Create;
ToolsPackages.Load(ptTools);
end;
procedure TdmMain.mbOptionsMainClick(Sender: TObject);
var
fmOptions: TfmOptions;
begin
fmOptions := TfmOptions.Create(fmMain);
fmOptions.ShowModal;
end;
procedure TdmMain.mbOptionsPkgClick(Sender: TObject);
var
fmOptions: TfmOptions;
{------------------------------------------------------------------------------
Функция: TdmMain.CallOptionsForm()
Назначение: Показ формы настроек на указанной странице и возврат модального
результата
Возвращает: TModalResult
------------------------------------------------------------------------------}
function TdmMain.CallOptionsForm(APageIndex: byte = 0): TModalResult;
begin
fmOptions := TfmOptions.Create(fmMain);
fmOptions.PageControl.ActivePageIndex := 1;
fmOptions.ShowModal;
if fmOptions = nil then
fmOptions := TfmOptions.Create(fmMain);
fmOptions.PageControl.ActivePageIndex := APageIndex;
Result := fmOptions.ShowModal;
end;
{------------------------------------------------------------------------------
Процедура: TdmMain.mbOptionsMainClick()
Назначение: Обработка клика п. меню "Настройки - Основные..."
------------------------------------------------------------------------------}
procedure TdmMain.mbOptionsMainClick(Sender: TObject);
begin
CallOptionsForm;
end;
{------------------------------------------------------------------------------
Процедура: TdmMain.mbOptionsPkgClick()
Назначение: Обработка клика п. меню "Настройки - Управление пакетами..."
------------------------------------------------------------------------------}
procedure TdmMain.mbOptionsPkgClick(Sender: TObject);
begin
case CallOptionsForm(1) of
mrOK: ;//ShowMessage('mrOK');
mrClose: ;//ShowMessage('mrClose');
end;
end;
{------------------------------------------------------------------------------
Процедура: TdmMain.mbAboutClick()
Назначение: Обработка клика п. меню "Помощь - О программе..."
------------------------------------------------------------------------------}
procedure TdmMain.mbAboutClick(Sender: TObject);
begin
case CallOptionsForm(2) of
mrOK: ;//ShowMessage('mrOK');
mrClose: ;//ShowMessage('mrClose');
end;
end;
end.

View File

@ -1,7 +1,7 @@
object fmMain: TfmMain
Left = 301
Left = 1513
Height = 450
Top = 108
Top = 182
Width = 350
BorderIcons = [biSystemMenu, biMinimize]
Caption = 'ABTool'

View File

@ -1,7 +1,7 @@
object fmOptions: TfmOptions
Left = 656
Left = 1451
Height = 450
Top = 109
Top = 164
Width = 350
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
@ -3207,13 +3207,15 @@ object fmOptions: TfmOptions
71FE000F5EFF000773FE000387FE800176FD80002DC38001693C0003D1190007
36A3800F57F7800F8AFFC00F76FFC01F8BFFE03FBEFFF47FBDFF
}
OnCreate = FormCreate
OnClose = FormClose
OnShow = FormShow
Position = poMainFormCenter
ShowHint = True
ShowInTaskBar = stNever
LCLVersion = '1.8.4.0'
object PageControl: TPageControl
Left = 0
Height = 416
Height = 412
Top = 0
Width = 350
ActivePage = tabCommon
@ -3223,30 +3225,30 @@ object fmOptions: TfmOptions
TabWidth = 86
object tabCommon: TTabSheet
Caption = 'Общие'
ClientHeight = 390
ClientHeight = 386
ClientWidth = 342
object grpOptInstall: TGroupBox
Left = 5
Height = 171
Top = 131
Height = 159
Top = 149
Width = 332
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Right = 5
Caption = 'Вкладка «Установка»'
ClientHeight = 153
ClientHeight = 141
ClientWidth = 328
TabOrder = 0
object cbChkExitCodes: TCheckBox
Left = 5
Height = 19
Top = 5
Top = 4
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Немедленно сообщать о коде возврата <> 0'
TabOrder = 0
@ -3254,12 +3256,12 @@ object fmOptions: TfmOptions
object cbDntUnChkItems: TCheckBox
Left = 5
Height = 19
Top = 29
Top = 27
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Не снимать отметку с чекбокса при коде возврата <> 0'
TabOrder = 1
@ -3267,12 +3269,12 @@ object fmOptions: TfmOptions
object cbShowProgress: TCheckBox
Left = 5
Height = 19
Top = 77
Top = 73
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Отображать общий ход установки программ'
TabOrder = 2
@ -3280,12 +3282,12 @@ object fmOptions: TfmOptions
object cbColorSoftTree: TCheckBox
Left = 5
Height = 19
Top = 53
Top = 50
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Раскрашивать список программ после установки'
TabOrder = 3
@ -3293,12 +3295,12 @@ object fmOptions: TfmOptions
object cbQuietREG: TCheckBox
Left = 5
Height = 19
Top = 101
Top = 96
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Тихий импорт REG-файлов'
TabOrder = 4
@ -3306,12 +3308,12 @@ object fmOptions: TfmOptions
object cbExpandSoft: TCheckBox
Left = 5
Height = 19
Top = 125
Top = 119
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Раскрывать дерево после загрузки пакета'
TabOrder = 5
@ -3319,26 +3321,26 @@ object fmOptions: TfmOptions
end
object grpOptTools: TGroupBox
Left = 5
Height = 73
Top = 307
Height = 67
Top = 313
Width = 332
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Right = 5
Caption = 'Вкладка «Утилиты»'
ClientHeight = 55
ClientHeight = 49
ClientWidth = 328
TabOrder = 1
object cbHideOnTool: TCheckBox
Left = 5
Height = 19
Top = 5
Top = 4
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Скрывать главное окно при запуске утилит'
TabOrder = 0
@ -3346,12 +3348,12 @@ object fmOptions: TfmOptions
object cbExpandTools: TCheckBox
Left = 5
Height = 19
Top = 29
Top = 27
Width = 318
Align = alTop
AutoSize = False
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Раскрывать дерево после загрузки пакета'
TabOrder = 1
@ -3359,25 +3361,25 @@ object fmOptions: TfmOptions
end
object grpOptMainform: TGroupBox
Left = 5
Height = 121
Top = 5
Height = 111
Top = 33
Width = 332
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Right = 5
Caption = 'Главное окно'
ClientHeight = 103
ClientHeight = 93
ClientWidth = 328
TabOrder = 2
object cbOnTop: TCheckBox
Left = 5
Height = 19
Top = 77
Top = 73
Width = 318
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Поверх всех окон'
TabOrder = 0
@ -3385,23 +3387,23 @@ object fmOptions: TfmOptions
object cbDrawOutlines: TCheckBox
Left = 5
Height = 19
Top = 53
Top = 50
Width = 318
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Рисовать линии при отрисовке деревьев'
Caption = 'Рисовать в деревьях линии уровней вложенности'
TabOrder = 1
end
object cbShowPkgDesc: TCheckBox
Left = 5
Height = 19
Top = 29
Top = 27
Width = 318
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Показывать описания пакетов'
TabOrder = 2
@ -3409,16 +3411,45 @@ object fmOptions: TfmOptions
object cbScreenSnap: TCheckBox
Left = 5
Height = 19
Top = 5
Top = 4
Width = 318
Align = alTop
BorderSpacing.Left = 5
BorderSpacing.Top = 5
BorderSpacing.Top = 4
BorderSpacing.Right = 5
Caption = 'Прилипание к краям экрана'
TabOrder = 3
end
end
object pnLanguage: TPanel
Left = 0
Height = 28
Top = 0
Width = 342
Align = alTop
BevelOuter = bvNone
ClientHeight = 28
ClientWidth = 342
TabOrder = 3
object cmbLanguage: TComboBox
Left = 108
Height = 21
Top = 4
Width = 230
Anchors = [akTop, akLeft, akRight]
ItemHeight = 13
Style = csDropDownList
TabOrder = 0
end
object Label1: TLabel
Left = 8
Height = 13
Top = 8
Width = 83
Caption = 'Язык / Language'
ParentColor = False
end
end
end
object tabPackages: TTabSheet
Caption = 'Пакеты'
@ -3427,7 +3458,6 @@ object fmOptions: TfmOptions
Caption = 'О программе'
ClientHeight = 390
ClientWidth = 342
OnContextPopup = tabAboutContextPopup
object imgLogo: TImage
Left = 147
Height = 48
@ -3720,18 +3750,18 @@ object fmOptions: TfmOptions
end
object btnClose: TButton
Left = 272
Height = 25
Top = 420
Height = 29
Top = 416
Width = 75
Anchors = [akTop, akRight]
Caption = 'Закрыть'
OnClick = btnCloseClick
ModalResult = 11
TabOrder = 1
end
object btnSave: TButton
Left = 109
Height = 25
Top = 420
Height = 29
Top = 416
Width = 132
Anchors = [akTop, akLeft, akRight]
Caption = 'Сохранить'
@ -3741,15 +3771,53 @@ object fmOptions: TfmOptions
Font.Pitch = fpVariable
Font.Quality = fqDraft
Font.Style = [fsBold]
ModalResult = 1
OnClick = btnSaveClick
ParentFont = False
TabOrder = 2
end
object btnSetDefault: TButton
Left = 4
Height = 25
Top = 420
Width = 75
Caption = 'Сброс'
TabOrder = 3
object btnSetDefault: TSpeedButton
Left = 8
Height = 24
Hint = 'Установить настройки по умолчанию'
Top = 418
Width = 24
Flat = True
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00994E
0399994E035C9B500400994E031A984D026C984D02A6984D02CC984D02C1984D
028C984D024D994E03109C510500A2570A00A65B0D00FFFFFF00FFFFFF009C51
05CC9C5105CC9C510585A35806BFC8841AE3EAA71FF5FCB920FFFCB920F1EAA6
1FCFC78219A6A35909789D520622A2570A00A65B0D00FFFFFF00FFFFFF00A257
0ACCF9BF40FFA2570ACCF7B52AFFF6B01CFFF7B11EFFF8B527FFF8B527F1F7B1
1ED6F6B01CB4F8BA3490AB62105FA3580B19A65B0D00FFFFFF00FFFFFF00A85D
0ECCF2B339FFF3B844FFEEA824FFF2B339FFC37E23DCA85D0ECCA85D0EC1C27E
22BAE7A937B2EFAB2A90F3B8436DAD631243A95E0F06FFFFFF00FFFFFF00AF64
14CCECB149FFE6A334FFEEB752FFAF6414CCAF641494AD621200AA5F0F00AE63
134AAF641488E4A74491E8A83B6DCA88314EAF641419FFFFFF00FFFFFF00B66B
19CCEBB861FFE7B057FFE7B057FFEEBF6AFFB66B19CCB76C1A5CB56A1800AF64
1400B56A1932C7843178E3A84E6CDCA24C54B66B1925FFFFFF00FFFFFF00BD72
1E99BE731FCCBE731FCCBE731FCCBE731FCCBE731FCCBD721E99C0752000C378
2300BD721E00BE731F33E5B06140E7B4663FBD721E20FFFFFF00FFFFFF00C67B
2620E8B86F3FE6B46C40C57A2533C2782200BF752000C1762100C67B2699C57A
25CCC57A25CCC57A25CCC57A25CCC57A25CCC67B2699FFFFFF00FFFFFF00CD82
2A25E6B16654E8B5706CD8984478CE832B32CF842C00CB802800CC81295CCD82
2ACCF3CD84FFECBD77FFECBD77FFF0C57EFFCD822ACCFFFFFF00FFFFFF00D489
3019E2A7554EEDBC766DEEBE7491D4893088D58A314AD98E3300D3882F00D489
3094D48930CCF4CD84FFEAB772FFF1C67EFFD48930CCFFFFFF00FFFFFF00DA8F
3406DD943A43F8D2896DF4C57D90F4C77AB2E5A852BADB9034C1DB9034CCE5A8
52DCF7CD85FFF2C27AFFF8D389FFF7CD85FFDB9034CCFFFFFF00FFFFFF00DC91
3500E0953919E49E435FFCD88D90FACF85B4FBD086D6FCD489F1FCD489FFFBD0
86FFFACF85FFFBD389FFE19639CCFEDD92FFE19639CCFFFFFF00FFFFFF00DC91
3500E1963900E59A3D22E79F4378F1B964A6FACF80CFFEDA8EF1FEDA8EFFFACF
81F5F1BB65E3E79E42BFE59A3D85E59A3DCCE59A3DCCFFFFFF00FFFFFF00DC91
3500E1963900E59A3D00E89D3F10E99E404DE99E408CE99E40C1E99E40CCE99E
40A6E99E406CE89D3F1AE69B3D00E99E405CE99E4099FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
end
end

View File

@ -5,15 +5,14 @@ unit fOptions;
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel,
ComCtrls, ExtCtrls, StdCtrls, Menus, Types;
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
ComCtrls, ExtCtrls, StdCtrls, Menus, Buttons, uOptions;
type
{ TfmOptions }
TfmOptions = class(TForm)
btnSetDefault: TButton;
btnSave: TButton;
btnClose: TButton;
btnCheckUpdates: TButton;
@ -33,6 +32,7 @@ type
cbHideOnTool: TCheckBox;
cbDrawOutlines: TCheckBox;
cbScreenSnap: TCheckBox;
cmbLanguage: TComboBox;
grpOptMainform: TGroupBox;
grpOptInstall: TGroupBox;
grpOptTools: TGroupBox;
@ -40,18 +40,20 @@ type
labAboutTitle: TLabel;
labCopyright: TLabel;
labDescription: TLabel;
Label1: TLabel;
mmLicenseText: TMemo;
PageControl: TPageControl;
pnLanguage: TPanel;
btnSetDefault: TSpeedButton;
tabCommon: TTabSheet;
tabPackages: TTabSheet;
tabAbout: TTabSheet;
tabLicense: TTabSheet;
procedure btnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure tabAboutContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
procedure btnSaveClick(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
private
procedure ResetControlls;
public
end;
@ -65,20 +67,65 @@ implementation
{ TfmOptions }
procedure TfmOptions.FormCreate(Sender: TObject);
{------------------------------------------------------------------------------
Процедура: TfmOptions.btnSaveClick()
Назначение: Закрытие формы настроек и возврат модального результата при клике
по кнопке "Сохранить"
Описание: Закрытие формы происходит автоматически благодаря свойству
ModalResult = mrOK, заданному кнопке в инспекторе объектов.
------------------------------------------------------------------------------}
procedure TfmOptions.btnSaveClick(Sender: TObject);
begin
//TODO сохранение настроек
end;
procedure TfmOptions.btnCloseClick(Sender: TObject);
{------------------------------------------------------------------------------
Процедура: TfmOptions.FormClose()
Назначение: Закрытие формы при её закрытии через кнопку в заголовке и возврат
модального результата
------------------------------------------------------------------------------}
procedure TfmOptions.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Self.Destroy;
ModalResult := mrClose;
end;
procedure TfmOptions.tabAboutContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
{------------------------------------------------------------------------------
Процедура: TfmOptions.FormShow()
Назначение: Показ окна настроек
Описание: Форма настроек создаётся однажды при её первом вызове. При закрытии
она не уничтожается. Она может быть закрыта без сохранения настроек. При
повторном открытии окна контроллы должны принять состояние, соответствущее
текущим (при запуске или прошлом сохранении) настройкам. В противном случае,
повторное открытие окна отобразит прошлые несохранённые изменения - это
введёт пользователя в заблуждение и он примет эти настройки как текущие.
------------------------------------------------------------------------------}
procedure TfmOptions.FormShow(Sender: TObject);
begin
ResetControlls;
end;
{------------------------------------------------------------------------------
Процедура: TfmOptions.ResetControlls()
Назначение: Сброс состояния контроллов в сооответствии с текущими настройками
------------------------------------------------------------------------------}
procedure TfmOptions.ResetControlls;
begin
cmbLanguage.Items := GlobalOptions.ReadAvailableLocales(false);
cbScreenSnap.Checked := GlobalOptions.ScreenSnap;
cbShowPkgDesc.Checked := GlobalOptions.ShowPkgDesc;
cbDrawOutlines.Checked := GlobalOptions.DrawOutlines;
cbOnTop.Checked := GlobalOptions.OnTop;
cbChkExitCodes.Checked := GlobalOptions.ChkExitCodes;
cbDntUnChkItems.Checked := GlobalOptions.DntUnChkItems;
cbColorSoftTree.Checked := GlobalOptions.ColorSoftTree;
cbShowProgress.Checked := GlobalOptions.ShowProgress;
cbQuietREG.Checked := GlobalOptions.QuietREG;
cbExpandSoft.Checked := GlobalOptions.ExpandSoft;
cbHideOnTool.Checked := GlobalOptions.HideOnTool;
cbExpandTools.Checked := GlobalOptions.ExpandTools;
end;
end.

View File

@ -5,16 +5,19 @@ unit uFileUtils;
interface
uses
Classes, SysUtils, FileUtil, Types, uPackage;
Classes, SysUtils, FileUtil, uPackage;
// Получение списка файлов в директории
function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList;
function GetFileList(APath, AFileMask: String; AFullPaths: Boolean = True): TStringList;
// Получение списка всех файлов внутри директории ABTool\
function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList;
// Получение списка всех файлов внутри директории ABTool
function GetABToolFileList(ASubDir, AFileMask: String; AFullPaths: Boolean = True): TStringList;
// Получение списка всех файлов пакетов
function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList;
function GetPackagesIniFileList(APackageType: TPackageType; AFullPaths: Boolean = True): TStringList;
// Получение списка всех файлов локализаций
function GetLocalesIniFileList(AFullPaths: Boolean = True): TStringList;
implementation
@ -22,27 +25,27 @@ implementation
Функция: GetFileList
Назначение: Получение списка файлов в директории
Вх. параметры:
Path: string - путь к директории, список файлов которой нужно получить
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
FullPaths: boolean - возвращать полные пути (true) или только имена
APath: string - путь к директории, список файлов которой нужно получить
AFileMask: string - маска файлов, по которой нужно отфильтровать список файлов
AFullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает:
TStringList - список строк с полными путями или только с именами файлов
------------------------------------------------------------------------------}
function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList;
function GetFileList(APath, AFileMask: String; AFullPaths: Boolean = True): TStringList;
var
SearchRec: TSearchRec;
ResultLines: TStringList;
begin
ResultLines := TStringList.Create;
Path := IncludeTrailingPathDelimiter(Path);
if FindFirst(Path + FileMask, faNormal, SearchRec) = 0 then
APath := IncludeTrailingPathDelimiter(APath);
if FindFirst(APath + AFileMask, faNormal, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr <> faDirectory) then
begin
if FullPaths then
ResultLines.Add(Path + SearchRec.Name)
if AFullPaths then
ResultLines.Add(APath + SearchRec.Name)
else
ResultLines.Add(SearchRec.Name);
end;
@ -56,37 +59,53 @@ end;
Функция: GetABToolFileList
Назначение: Получение списка всех файлов внутри директории ABTool\
Вх. параметры:
SubDir: string - имя директории внутри ABTool\
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
FullPaths: boolean - возвращать полные пути (true) или только имена
ASubDir: string - имя директории внутри ABTool\
AFileMask: string - маска файлов, по которой нужно отфильтровать список файлов
AFullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает:
TStringList - список строк с полными путями или только с именами файлов пакетов
------------------------------------------------------------------------------}
function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList;
function GetABToolFileList(ASubDir, AFileMask: String; AFullPaths: Boolean = True): TStringList;
begin
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + SubDir, FileMask, FullPaths);
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + ASubDir, AFileMask, AFullPaths);
end;
{------------------------------------------------------------------------------
Функция: GetPackagesIniFileList
Назначение: Получение спискавсех файлов пакетов
Назначение: Получение списка всех файлов пакетов
Вх. параметры:
PackageType: TPackageType - тип пакета: ptSoft либо ptTools
FullPaths: boolean - возвращать полные пути (true) или только имена
APackageType: TPackageType - тип пакета: ptSoft либо ptTools
AFullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает:
TStringList - список строк с полными путями или только с именами файлов пакетов
Исключения:
TException - при попытке передать любой другой тип пакета
------------------------------------------------------------------------------}
function GetPackagesIniFileList(APackageType: TPackageType; AFullPaths: Boolean = True): TStringList;
begin
case (APackageType) of
ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', AFullPaths);
ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', AFullPaths);
else raise Exception.Create('GetPackagesIniFileList(): передан неверный тип пакета');
end;
end;
{------------------------------------------------------------------------------
Функция: GetPackagesIniFileList
Назначение: Получение списка всех файлов локализаций
Вх. параметры:
AFullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает:
TStringList - список строк с полными путями или только с именами файлов пакетов
Исключения:
TException - при попытке передать ptUnknown
------------------------------------------------------------------------------}
function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList;
function GetLocalesIniFileList(AFullPaths: Boolean = True): TStringList;
begin
case (PackageType) of
ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', FullPaths);
ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', FullPaths);
ptUnknown: raise Exception.Create('GetPackagesIniFileList(): передан ptUnknown');
end;
Result := GetABToolFileList('Languages', '*.lng', AFullPaths);
end;
end.

373
uoptions.pas 100644
View File

@ -0,0 +1,373 @@
unit uOptions;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, IniFiles, uFileUtils;
type
// Класс настроек
{ TOptions }
TOptions = class(TIniFile)
strict private
// Файл локализации
FLocale: string;
// Прилипание к краям экрана
FScreenSnap: Boolean;
// Показывать описания пакетов
FShowPkgDesc: Boolean;
// Рисовать в деревьях линии уровней вложенности
FDrawOutlines: Boolean;
// Поверх всех окон
FOnTop: Boolean;
// Немедленно сообщать о коде возврата <> 0
FChkExitCodes: Boolean;
// Не снимать отметку с чекбокса при коде возврата <> 0
FDntUnChkItems: Boolean;
// Раскрашивать список программ после установки
FColorSoftTree: Boolean;
// Отображать общий ход установки программ
FShowProgress: Boolean;
// Тихий импорт REG-файлов
FQuietREG: Boolean;
// Раскрывать дерево после загрузки пакета
FExpandSoft: Boolean;
// Скрывать главное окно при запуске утилит
FHideOnTool: Boolean;
// Раскрывать дерево после загрузки пакета
FExpandTools: Boolean;
// Последняя позиция по горизонтали от левого края экрана
FLeft: Integer;
// Последняя позиция по вертикали от верхнего края экрана
FTop: Integer;
// Последняя ширина
FWidth: Integer;
// Последняя высота
FHeight: Integer;
// Параметры, с которыми запушена ABTool
FCLParams: TStringList;
private
// Установка параметра локализации
procedure SetLocale(ALngFilename: string);
public
// Файл локализации
property Locale: string read FLocale write SetLocale;
// Прилипание к краям экрана
property ScreenSnap: Boolean read FScreenSnap write FScreenSnap default True;
// Показывать описания пакетов
property ShowPkgDesc: Boolean read FShowPkgDesc write FShowPkgDesc default True;
// Рисовать в деревьях линии уровней вложенности
property DrawOutlines: Boolean read FDrawOutlines write FDrawOutlines default True;
// Поверх всех окон
property OnTop: Boolean read FOnTop write FOnTop default False;
// Немедленно сообщать о коде возврата <> 0
property ChkExitCodes: Boolean read FChkExitCodes write FChkExitCodes default True;
// Не снимать отметку с чекбокса при коде возврата <> 0
property DntUnChkItems: Boolean read FDntUnChkItems write FDntUnChkItems default True;
// Раскрашивать список программ после установки
property ColorSoftTree: Boolean read FColorSoftTree write FColorSoftTree default True;
// Отображать общий ход установки программ
property ShowProgress: Boolean read FShowProgress write FShowProgress default True;
// Тихий импорт REG-файлов
property QuietREG: Boolean read FQuietREG write FQuietREG default True;
// Раскрывать дерево после загрузки пакета
property ExpandSoft: Boolean read FExpandSoft write FExpandSoft default True;
// Скрывать главное окно при запуске утилит
property HideOnTool: Boolean read FExpandSoft write FExpandSoft default False;
// Раскрывать дерево после загрузки пакета
property ExpandTools: Boolean read FExpandSoft write FExpandSoft default True;
// Последняя позиция по горизонтали от левого края экрана
property Left: Integer read FLeft write FLeft;
// Последняя позиция по вертикали от верхнего края экрана
property Top: Integer read FTop write FTop;
// Последняя ширина
property Width: Integer read FWidth write FWidth default 350;
// Последняя высота
property Height: Integer read FHeight write FHeight default 450;
// Параметры, с которыми запушена ABTool
property CLParams: TStringList read FCLParams;
// Пути ко всем доступным файлам локализаций
function ReadAvailableLocales(AFullPaths: Boolean = True): TStringList;
// Создание объекта настроек и установка настроек
constructor Create(AIniFilename: string); overload;
// Деструктор объекта настроек
destructor Destroy(); override;
// Определение наличия доп. ключей запуска
function HasCLParams: Boolean;
// Установка параметров командной строки, с которыми запущен ABTool
procedure ReadCLParams;
// Поиск ключа запуска среди всех, с которыми запущен ABTool
function FindCLParam(AParamName: string): Boolean;
// Чтение настроек
procedure Load;
end; // TOptions
var
// Настройки - глобальный объект, доступный всем модулям, сославшимся на этот
GlobalOptions: TOptions;
implementation
{ TOptions }
{------------------------------------------------------------------------------
Конструктор: TOptions.Create()
Назначение: Создание объекта настроек и установка настроек
------------------------------------------------------------------------------}
constructor TOptions.Create(AIniFilename: string);
begin
if HasCLParams then
ReadCLParams;
//ReadAvailableLocales;
inherited Create(AIniFilename, [ifoStripComments, ifoStripInvalid]);
Load;
GlobalOptions := Self;
end;
{------------------------------------------------------------------------------
Деструктор: TOptions.Destroy()
------------------------------------------------------------------------------}
destructor TOptions.Destroy();
begin
inherited Destroy();
end;
{------------------------------------------------------------------------------
Функция: TOptions.HasCLParams()
Назначение: Определение наличия доп. ключей запуска
Возвращает: boolean
------------------------------------------------------------------------------}
function TOptions.HasCLParams: Boolean;
begin
Result := ParamCount > 0;
//if FDebug then
// Log('DoesABToolHaveKeys(): '+BoolToStr(Result));
end;
{------------------------------------------------------------------------------
Процедура: TOptions.ReadCLParams()
Назначение: Установка параметров командной строки, с которыми запущен ABTool
------------------------------------------------------------------------------}
procedure TOptions.ReadCLParams;
var
i: byte;
begin
if HasCLParams then
begin
FCLParams := TStringList.Create;
for i := 1 to ParamCount do
FCLParams.Add(Trim(LowerCase(ParamStr(i))));
end;
end;
{------------------------------------------------------------------------------
Функция: TOptions.FindCLParam()
Назначение: Поиск ключа запуска среди всех, с которыми запущен ABTool
Возвращает: boolean
------------------------------------------------------------------------------}
function TOptions.FindCLParam(AParamName: string): Boolean;
var
i: Smallint;
begin
Result := False;
if HasCLParams then
begin
for i := 0 to FCLParams.Count - 1 do
if Pos(LowerCase(AParamName), FCLParams.Strings[i]) > 0 then
begin
Result := True;
Exit;
end;
end;
end;
{------------------------------------------------------------------------------
Процедура: TOptions.Load()
Назначение: Чтение настроек
------------------------------------------------------------------------------}
procedure TOptions.Load;
begin
try
//TODO создание дефолтного файла настроек при отсутсвии такового
//TODO создание файла настроек по умолчанию
SetLocale(ReadString('Options', 'Locale', ''));
FScreenSnap := ReadBool('Options', 'ScreenSnap', True);
FShowPkgDesc := ReadBool('Options', 'ShowPkgDesc', True);
FDrawOutlines := ReadBool('Options', 'DrawOutlines', True);
FOnTop := ReadBool('Options', 'OnTop', False);
FChkExitCodes := ReadBool('Options', 'ChkExitCodes', False);
FDntUnChkItems := ReadBool('Options', 'DntUnChkItems', True);
FColorSoftTree := ReadBool('Options', 'ColorSoftTree', True);
FShowProgress := ReadBool('Options', 'ShowProgress', True);
FQuietREG := ReadBool('Options', 'QuietREG', False);
FExpandSoft := ReadBool('Options', 'ExpandSoft', True);
FHideOnTool := ReadBool('Options', 'HideOnTool', False);
FExpandTools := ReadBool('Options', 'ExpandTools', True);
FLeft := ReadInteger('Options', 'Left', (Screen.Width div 2) - 175);
FTop := ReadInteger('Options', 'Top', (Screen.Height div 2) - 225);
FWidth := ReadInteger('Options', 'Width', 350);
FHeight := ReadInteger('Options', 'Height', 450);
except // SysErrorMessage(GetLastError)
On E: Exception do
begin
raise Exception.Create('Не удалось прочитать настройки из файла abtool.ini.');
//+ #13#10 +
//'Сейчас он будет создан с параметрами по умолчанию.' + #13#10 +
//'Сообщение системы: ' + #13#10 + E.Message + '(' + IntToStr(GetLastError) + ') ');
//SaveOptions(true);
end;
end;
end;
{------------------------------------------------------------------------------
Процедура: TOptions.SetLocale()
Назначение: Установка параметра локализации
------------------------------------------------------------------------------}
procedure TOptions.SetLocale(ALngFilename: string);
begin
//TODO проверка существования файла локализации
FLocale := ALngFilename;
end;
{------------------------------------------------------------------------------
Процедура: TOptions.ReadAvailableLocales()
Назначение: Получение списка всех доступных файлов локализаций
Вх. параметры:
FullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает: TStringList
------------------------------------------------------------------------------}
function TOptions.ReadAvailableLocales(AFullPaths: Boolean = True): TStringList;
begin
Result := GetLocalesIniFileList(AFullPaths);
end;
{
// Чтение настроек
function LoadOptions: boolean;
begin
Result := false;
if Options.Debug then
Log('LoadOptions()');
Log('Загрузка настроек из abtool.ini...');
if not (FileExists(ABToolIniPath + 'abtool.ini')) then begin
Log('Файла настроек не существует. Сейчас он будет создан с параметрами по умолчанию...');
SaveOptions(true);
end // if FileExists
else begin
try
try
with Options do begin
ABToolIniFile := TInifile.Create(ABToolIniPath + 'abtool.ini');
ABToolKeys := TStringList.Create;
ABToolKeys := GetABToolKeys;
if Options.Debug then
Log('LoadOptions(): ABToolKeys='+GetABToolKeys.text);
// Непосредственно чтение настроек из INI в память
if FindCLParam('+lang') then begin
LangFile := ReadString('Options','LangFile','');
if Options.Debug then
Log('LoadOptions(): LangFile='+LangFile);
end; // if +lang
Left := ReadInteger('Options','Left', (Screen.Width div 2) - 180);
Top := ReadInteger('Options','Top', (Screen.Height div 2) - 292);
Width := ReadInteger('Options','Width', 360);
Height := ReadInteger('Options','Height', 485);
ChkExitCodes := ReadBool('Options','ChkExitCodes',false);
DntUnChkItems := ReadBool('Options','DntUnChkItems',true);
ColorSoftTree := ReadBool('Options','ColorSoftTree',true);
ShowProgress := ReadBool('Options','ShowProgress',true);
ExpandSoft := ReadBool('Options','ExpandSoft',true);
QuietREG := ReadBool('Options','QuietREG',false);
HideOnTool := ReadBool('Options','HideOnTool',false);
ExpandTools := ReadBool('Options','ExpandTools',true);
ShowLog := ReadBool('Options','ShowLog',true);
DrawOutlines := ReadBool('Options','DrawOutlines',true);
ScreenSnap := ReadBool('Options','ScreenSnap',true);
OnTop := ReadBool('Options','OnTop',false);
ShowPkgDesc := ReadBool('Options','ShowPkgDesc',true);
SrchVisible := ReadBool('Options','SrchVisible',false);
ScrollLog := ReadBool('Options','ScrollLog',true);
LastSoftPkg := ReadString('Options','LastSoftPkg', '');
LastToolPkg := ReadString('Options','LastToolPkg', '');
if Options.Debug then begin
Log('LoadOptions(): Left='+Left.ToString);
Log('LoadOptions(): Top='+Top.ToString);
Log('LoadOptions(): Width='+Width.ToString);
Log('LoadOptions(): Height='+Height.ToString);
Log('LoadOptions(): ChkExitCodes='+BoolToStr(ChkExitCodes));
Log('LoadOptions(): DntUnChkItems='+BoolToStr(DntUnChkItems));
Log('LoadOptions(): ColorSoftTree='+BoolToStr(ColorSoftTree));
Log('LoadOptions(): ShowProgress='+BoolToStr(ShowProgress));
Log('LoadOptions(): ExpandSoft='+BoolToStr(ExpandSoft));
Log('LoadOptions(): QuietREG='+BoolToStr(QuietREG));
Log('LoadOptions(): HideOnTool='+BoolToStr(HideOnTool));
Log('LoadOptions(): ExpandTools='+BoolToStr(ExpandTools));
Log('LoadOptions(): DrawOutlines='+BoolToStr(DrawOutlines));
Log('LoadOptions(): ScreenSnap='+BoolToStr(ScreenSnap));
Log('LoadOptions(): OnTop='+BoolToStr(OnTop));
Log('LoadOptions(): ShowPkgDesc='+BoolToStr(ShowPkgDesc));
Log('LoadOptions(): SrchVisible='+BoolToStr(SrchVisible));
Log('LoadOptions(): ScrollLog='+BoolToStr(ScrollLog));
Log('LoadOptions(): LastSoftPkg='+LastSoftPkg);
Log('LoadOptions(): ScrollLog='+LastToolPkg);
end;
end; // with Options
Result := true;
except // SysErrorMessage(GetLastError)
On E: Exception Do Begin
Raise Exception.Create('Не удалось прочитать настройки из файла abtool.ini.' + #13#10 +
'Сейчас он будет создан с параметрами по умолчанию.' + #13#10 +
'Сообщение системы: ' + #13#10 + E.Message + '(' + IntToStr(GetLastError) + ') ');
Log('Не удалось прочитать настройки из файла abtool.ini.' + #13#10 +
'Сейчас он будет создан с параметрами по умолчанию.' + #13#10 +
'Сообщение системы: ' + #13#10 + E.Message + '(' + IntToStr(GetLastError) + ') ');
if Options.Debug then
Log('LoadOptions() EXCEPTION Stack Trace:' + #13#10 + E.StackTrace);
SaveOptions(true);
End; // On E: Exception
end; // except
finally
// if Options.ABToolIniFile <> nil then
// Options.Free;
end; // finally
end; // if not FileExists
end;
}
end.

View File

@ -26,9 +26,9 @@ type
TPackage = class(TIniFile)
strict private
// Имя пакета: [PackageInfo] Name
FName: String;
FName: string;
// Описание пакета: [PackageInfo] Description
FDescription: String;
FDescription: string;
// Тип пакета
FType: TPackageType;
private
@ -38,19 +38,19 @@ type
function SetType(): TPackageType;
public
// Имя пакета: [PackageInfo] Name
property Name: String read FName;
property Name: string read FName;
// Описание пакета: [PackageInfo] Description
property Description: String read FDescription;
property Description: string read FDescription;
// Тип пакета
property PackageType: TPackageType read FType;
// Создание объекта пакета и установка информации о нём
constructor Create(APkgFilename: Ansistring); overload;
// Деструктор
constructor Create(AIniFilename: string); overload;
// Деструктор объекта пакета
destructor Destroy(); override;
// Запуск исполняемого файла и получение результатов запуска
function ExecuteItem(const AFileName, AParams: String; AHideMainWindow: Boolean;
function ExecuteItem(const AFileName, AParams: string; AHideMainWindow: Boolean;
Out AOutExitcode: Cardinal): Boolean;
end; // TPackage
@ -61,33 +61,33 @@ implementation
{------------------------------------------------------------------------------
Конструктор: TPackage.Create()
Назначение: Создание объекта пакета и установка информации о нём
Вх. параметры: APkgFilename: Ansistring - путь к ini-файлу
Вх. параметры: AIniFilename: string - путь к ini-файлу
------------------------------------------------------------------------------}
constructor TPackage.Create(APkgFilename: Ansistring);
constructor TPackage.Create(AIniFilename: string);
begin
inherited Create(APkgFilename, [ifoStripComments, ifoStripInvalid]);
inherited Create(AIniFilename, [ifoStripComments, ifoStripInvalid]);
SetProperties();
end;
{------------------------------------------------------------------------------
Процедура: TPackage.SetType()
Назначение: Установка информации о пакете
Процедура: TPackage.SetType()
Назначение: Установка информации о пакете
------------------------------------------------------------------------------}
procedure TPackage.SetProperties();
begin
FName := ReadString('PackageInfo', 'Name', '<без названия>');
FDescription := ReadString('PackageInfo', 'Description', '<без описания>');
FName := Readstring('PackageInfo', 'Name', '<без названия>');
FDescription := Readstring('PackageInfo', 'Description', '<без описания>');
FType := SetType();
end;
{------------------------------------------------------------------------------
Функция: TPackage.SetType()
Назначение: Определение типа пакета по имени его файла
Возвращает: TPackageType - тип пакета
Функция: TPackage.SetType()
Назначение: Определение типа пакета по имени его файла
Возвращает: TPackageType - тип пакета
------------------------------------------------------------------------------}
function TPackage.SetType(): TPackageType;
var
SubStr: String;
SubStr: string;
begin
SubStr := Copy(ExtractFileName(FileName), 1, 4);
if (LowerCase(SubStr) = 'soft') then
@ -99,7 +99,7 @@ begin
end;
{------------------------------------------------------------------------------
Деструктор: TPackage.Destroy()
Деструктор: TPackage.Destroy()
------------------------------------------------------------------------------}
destructor TPackage.Destroy();
begin
@ -110,14 +110,14 @@ end;
Функция: TPackage.ExecuteItem()
Назначение: Запуск исполняемого файла и получение результатов запуска
Вх. параметры:
AFileName : String - путь к исполняемому файлу
AParams : String - дополнительные параметры запуска
AFileName : string - путь к исполняемому файлу
AParams : string - дополнительные параметры запуска
AHideMainWindow : Boolean - скрывать главное окно ABTool (true) или нет (false)
Вых. параметры:
AOutExitcode : Cardinal - код завершения процесса
Возвращает: boolean - true при успешном запуске программы, false при неудаче
------------------------------------------------------------------------------}
function TPackage.ExecuteItem(const AFileName, AParams: String; AHideMainWindow: Boolean;
function TPackage.ExecuteItem(const AFileName, AParams: string; AHideMainWindow: Boolean;
out AOutExitcode: Cardinal): Boolean;
begin

View File

@ -39,7 +39,7 @@ implementation
{ TPackageList }
{------------------------------------------------------------------------------
Процедура: TPackageList.Create()
Процедура: TPackageList.Load()
Назначение: Создание списка пакетов по указанному типу
Вх. параметры: APackageType: TPackageType - тип списка пакета
------------------------------------------------------------------------------}
@ -50,8 +50,8 @@ begin
end;
{------------------------------------------------------------------------------
Процедура: TPackageList.Reload()
Назначение: Заполнение списка пакетов объектами пакетов
Процедура: TPackageList.Reload()
Назначение: Заполнение списка пакетов объектами пакетов
------------------------------------------------------------------------------}
procedure TPackageList.Reload();
var
@ -74,9 +74,9 @@ begin
end;
{------------------------------------------------------------------------------
Функция: TPackage.GetPackageByIndex()
Назначение: Получение пакета из списка по его номеру
Возвращает: TPackage - пакет
Функция: TPackage.GetPackageByIndex()
Назначение: Получение пакета из списка по его номеру
Возвращает: TPackage - пакет
------------------------------------------------------------------------------}
function TPackageList.GetPackageByIndex(Index: integer): TPackage;
begin
@ -84,9 +84,9 @@ begin
end;
{------------------------------------------------------------------------------
Функция: TPackage.GetPackageByIndex()
Назначение: Получение количества пакетов в списке
Возвращает: integer - число пакетов в списке
Функция: TPackage.Count()
Назначение: Получение количества пакетов в списке
Возвращает: integer - число пакетов в списке
------------------------------------------------------------------------------}
function TPackageList.Count(): integer;
begin