Нормальная загрузка и смена пакетов программ и утилит, подгрузка деревьев.

Пакеты читаются в кодировке UTF8.
develop
Anthony Axenov 2019-01-20 13:41:33 +08:00
parent c473d722da
commit 43d2f180fd
14 changed files with 511 additions and 260 deletions

View File

@ -19,9 +19,9 @@
<VersionInfo>
<UseVersionInfo Value="True"/>
<MinorVersionNr Value="7"/>
<RevisionNr Value="1"/>
<Language Value="0419"/>
<Attributes pvaDebug="True" pvaPrivateBuild="True"/>
<StringTable ProductVersion="0.7.1.0"/>
</VersionInfo>
<BuildModes Count="2">
<Item1 Name="Debug" Default="True"/>
@ -148,7 +148,6 @@
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
<UseHeaptrc Value="True"/>
<TrashVariables Value="True"/>
<UseExternalDbgSyms Value="True"/>
</Debugging>
@ -166,7 +165,7 @@
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Exceptions Count="4">
<Item1>
<Name Value="EAbort"/>
</Item1>
@ -176,6 +175,9 @@
<Item3>
<Name Value="EFOpenError"/>
</Item3>
<Item4>
<Name Value="RunError(211)"/>
</Item4>
</Exceptions>
</Debugging>
</CONFIG>

Binary file not shown.

View File

@ -1,31 +1,41 @@
#
# ABTool v0.7.0
# Пакет программ для установки
# Пакет программ для установки
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1
Name=Пакет программ 1
Description=Пакет программ 1, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
Имя4=\\setup1.exe /ключ1 /ключ2
Имя5=\\папка_рядом_с_abtool.exe\setup2.exe
Имя6=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1
[Группа 4]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
Имя4=\\setup1.exe /ключ1 /ключ2
Имя5=\\папка_рядом_с_abtool.exe\setup2.exe
Имя6=\папка_в_корне_диска\setup3.exe

View File

@ -1,31 +1,46 @@
#
# ABTool v0.7.0
# Пакет программ для установки
# Пакет программ для установки
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1
Name=Пакет программ 2
Description=Пакет программ 2, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
Имя4=\\setup1.exe /ключ1 /ключ2
Имя5=\\папка_рядом_с_abtool.exe\setup2.exe
Имя6=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1
[Группа 4]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
Имя4=\\setup1.exe /ключ1 /ключ2
Имя5=\\папка_рядом_с_abtool.exe\setup2.exe
Имя6=\папка_в_корне_диска\setup3.exe
[Группа 5]
Имя4=\\setup4.exe /ключ1
[Группа 6]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1

View File

@ -1,31 +1,31 @@
#
# ABTool v0.7.0
# Пакет программ для установки
# Пакет программ для установки
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1
Name=Пакет программ 3
Description=Пакет программ 3, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1

View File

@ -1,31 +1,31 @@
#
# ABTool v0.7.0
# Пакет программ для установки
# Пакет программ для установки
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название программы"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1
Name=Пакет программ 4
Description=Пакет программ 4, используемый по умолчанию
[Группа 1]
Имя1=\\setup1.exe /ключ1 /ключ2
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
Имя3=\папка_в_корне_диска\setup3.exe
[Группа 2]
Имя4=\\setup4.exe /ключ1
[Группа 3]
Имя5=\\setup5.exe
Имя6=\\setup6.exe /ключ1

View File

@ -1,36 +1,36 @@
#
# ABTool v0.7.0
# Пакет утилит для запуска
# Пакет утилит для запуска
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe
Name=Пакет утилит 1
Description=Пакет утилит 1, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe

View File

@ -1,36 +1,36 @@
#
# ABTool v0.7.0
# Пакет утилит для запуска
# Пакет утилит для запуска
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe
Name=Пакет утилит 2
Description=Пакет утилит 2, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe

View File

@ -1,36 +1,36 @@
#
# ABTool v0.7.0
# Пакет утилит для запуска
# Пакет утилит для запуска
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe
Name=Пакет утилит 3
Description=Пакет утилит 3, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe

View File

@ -1,36 +1,36 @@
#
# ABTool v0.7.0
# Пакет утилит для запуска
# Пакет утилит для запуска
#
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
# Секция [PackageInfo] содержит общую информацию о данном пакете:
# Name - Название пакета
# Description - Краткое описание пакета
#
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
# В квадратных скобках указывается название группы (например, антивирусы,
# проигрыватели и т.д.).
# Далее без кавычек указывается:
# "Название утилиты"="путь к файлу".
# Путь может начинаться с \ (если путь абсолютный; без буквы диска)
# или с \\ (если путь относителен ABTool.exe).
# Нельзя под один пункт указывать несколько команд.
# Можно указывать дополнительные ключи запуска.
# Во всех параметрах не должно быть разрывов строк.
#
#============================================================================
[PackageInfo]
Name=Пакет по умолчанию
Description=Пакет программ, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe
Name=Пакет утилит 4
Description=Пакет утилит 4, используемый по умолчанию
[Группа 1]
Утилита 1=\\утилита1.exe /ключ1 /ключ2
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
Утилита 3=\папка_в_корне_диска\утилита3.exe
Утилита 4=\\утилита4.exe /ключ1
[Группа 2]
Утилита 5=\\утилита5.exe
Утилита 6=\\утилита6.exe
[Группа 3]
Утилита 7=\\утилита7.exe /ключ1
Утилита 8=\\утилита8.exe
Утилита 9=\\утилита9.exe
Утилита 10=\\утилита10.exe /ключ1 /ключ2
Утилита 11=\\утилита11.exe

View File

@ -10,9 +10,18 @@ Homepage: [abtool.ru](http://abtool.ru/)
Online help (only Russian for now, sorry): [abtool.ru/onlinehelp](http://abtool.ru/onlinehelp/)
## Requirements for development environment
* Windows OS (because ABTool is windows-only software)
* [Lazarus 1.8.4](https://www.lazarus-ide.org/) and newer
* [LCLextensions 0.6.1](/dependencies/lclextensions-0.6.1.zip) and newer
* [VirtualTreeView 5.5.3-R1](/dependencies/virtualtreeview-5.5.3-R1.zip) and newer
Porting to Delphi is welcome. You can create your fork of this repository for these purposes.
## License
This software is licensed under **The MIT License** (read [LICENSE](LICENSE) file).
This software is licensed under **[The MIT License](LICENSE)**.
This means that you can use, distribute, sell and change the program as you want, under the following conditions:
* explicit indication of my authorship of the original project;
@ -43,6 +52,15 @@ So, I'd like to thank everybody listed and not listed here who made or keeps mak
Онлайн справка: [abtool.ru/onlinehelp](http://abtool.ru/onlinehelp/)
## Требования к среде разработки
* Windows OS (потому что ABTool предназначена только для Windows)
* [Lazarus 1.8.4](https://www.lazarus-ide.org/) и новее
* [LCLextensions 0.6.1](/dependencies/lclextensions-0.6.1.zip) и новее
* [VirtualTreeView 5.5.3-R1](/dependencies/virtualtreeview-5.5.3-R1.zip) и новее
Приветствуется портирование под Delphi. Можете создать свой форк этого репозитория для этих целей.
## Лицензия
Эта программа распространяется под **[Лицензией MIT](LICENSE)**.

View File

@ -110,5 +110,8 @@ begin
ToolsPackages.Load(ptTools);
end;
end.

View File

@ -1,7 +1,7 @@
object fmMain: TfmMain
Left = 304
Left = 299
Height = 450
Top = 87
Top = 82
Width = 350
BorderIcons = [biSystemMenu, biMinimize]
Caption = 'ABTool'
@ -3220,11 +3220,11 @@ object fmMain: TfmMain
Height = 430
Top = 0
Width = 350
ActivePage = tabTools
ActivePage = tabSoft
Align = alClient
Images = dmMain.imgIcons
TabHeight = 20
TabIndex = 1
TabIndex = 0
TabOrder = 0
object tabSoft: TTabSheet
Caption = 'Установка'
@ -3239,13 +3239,18 @@ object fmMain: TfmMain
Align = alClient
BorderSpacing.Bottom = 3
BorderStyle = bsNone
CheckImageKind = ckDarkCheck
DefaultText = 'Node'
Header.AutoSizeIndex = 0
DefaultText = 'Программа'
DragOperations = []
Header.AutoSizeIndex = -1
Header.Columns = <>
Header.MainColumn = -1
IncrementalSearch = isVisibleOnly
IncrementalSearchStart = ssAlwaysStartOver
TabOrder = 0
TreeOptions.AutoOptions = [toAutoDropExpand, toAutoExpand, toAutoScrollOnExpand, toAutoSort, toAutoTristateTracking, toAutoDeleteMovedNodes, toAutoChangeScale]
TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning, toEditOnClick]
OnGetText = vstSoftPkgContentsGetText
OnInitNode = vstSoftPkgContentsInitNode
end
object pnSoftTop: TPanel
Left = 0
@ -3268,6 +3273,7 @@ object fmMain: TfmMain
BorderSpacing.Top = 2
BorderSpacing.Right = 1
ItemHeight = 13
OnChange = cmbSoftPkgSelectChange
Style = csDropDownList
TabOrder = 0
end
@ -3440,6 +3446,7 @@ object fmMain: TfmMain
BorderSpacing.Top = 2
BorderSpacing.Right = 1
ItemHeight = 13
OnChange = cmbToolsPkgSelectChange
Style = csDropDownList
TabOrder = 0
end
@ -3564,20 +3571,22 @@ object fmMain: TfmMain
end
object vstToolsPkgContents: TVirtualStringTree
Left = 0
Height = 306
Height = 303
Top = 64
Width = 342
Align = alClient
BorderSpacing.Bottom = 3
BorderStyle = bsNone
CheckImageKind = ckDarkCheck
DefaultText = 'Node'
DefaultText = 'Утилита'
DragOperations = []
Header.AutoSizeIndex = 0
Header.AutoSizeIndex = -1
Header.Columns = <>
Header.MainColumn = -1
IncrementalSearch = isVisibleOnly
IncrementalSearchStart = ssAlwaysStartOver
TabOrder = 3
TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning, toReadOnly, toEditOnClick]
TreeOptions.SelectionOptions = [toAlwaysSelectNode]
TreeOptions.AutoOptions = [toAutoDropExpand, toAutoExpand, toAutoScrollOnExpand, toAutoSort, toAutoTristateTracking, toAutoDeleteMovedNodes, toAutoChangeScale]
OnGetText = vstToolsPkgContentsGetText
end
end
object tabSystem: TTabSheet

256
fmain.pas
View File

@ -6,11 +6,26 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
StdCtrls, ExtCtrls, Buttons, ActnList, EditBtn, Menus, VirtualTrees, Types,
dMain, uFileUtils, uPackage, uPackageUtils, uPackageList;
StdCtrls, ExtCtrls, Buttons, ActnList, EditBtn, Menus, virtualtreeview_package,
VirtualTrees, dMain, uPackage, uPackageList;
type
// Указатель на тип данных TRootNodeData
PRootNodeData = ^TRootNodeData;
// Тип данных для работы с корневыми нодами
TRootNodeData = record
FName: String;
end;
// Указатель на тип данных TChildNodeData
PChildNodeData = ^TChildNodeData;
// Тип данных для работы с дочерними нодами
TChildNodeData = record
FName: String;
FPath: String;
end;
{ TfmMain }
TfmMain = class(TForm)
@ -34,18 +49,43 @@ type
tabSystem: TTabSheet;
tabTools: TTabSheet;
vstSoftPkgContents: TVirtualStringTree;
vstToolsPkgContents: TVirtualStringTree;
// Создание формы и обновление выпадающих меню пакетов программ и утилит
vstToolsPkgContents: TVirtualStringTree;
// Создание формы и обновление выпадающих меню пакетов программ и утилит
procedure FormCreate(Sender: TObject);
// Смена пакета программ через выпадающий список
procedure cmbSoftPkgSelectChange(Sender: TObject);
// Смена пакета утилит через выпадающий список
procedure cmbToolsPkgSelectChange(Sender: TObject);
// Обрабока клика по кнопке обновления выпадающего меню пакетов программ
procedure btnSoftPkgReloadClick(Sender: TObject);
// Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
procedure btnToolsPkgReloadClick(Sender: TObject);
// Отображение отметок в нодах дерева программ
procedure vstSoftPkgContentsInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode;
var InitialStates: TVirtualNodeInitStates);
// Отображение имён утилит в нодах дерева программ
procedure vstSoftPkgContentsGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
// Отображение имён утилит в нодах дерева утилит
procedure vstToolsPkgContentsGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
private
// Перезагрузка списка пакетов и выпадающих меню пакетов по указанному типу
procedure ReloadPackagesList(APackageType: TPackageType);
// Создание ноды в указанном дереве с указанными параметрами
function AddNode(AVST: TVirtualStringTree; ARootNode: PVirtualNode; AName: String;
APath: String = ''): PVirtualNode;
// Создание ноды в указанном дереве с указанными параметрами
//function AddNode(AVST: TVirtualStringTree; ARootNode: PVirtualNode; AName: String;
// APath: String = ''): PVirtualNode;
// Отображение имён программ в нодах деревьев при инициализации деревьев
procedure SetNodeText(AVST: TVirtualStringTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: String);
// Заполнение дерева содержимым пакета
procedure PackageFillVST(AVST: TVirtualStringTree; APackage: TPackage);
public
// Выбор пакета. Заполняется дерево и отображается описание пакета.
procedure SetActivePackage(AType: TPackageType; APackageIndex: Integer);
// Перезагрузка дерева пакетов и выпадающих списков пакетов по указанному типу
procedure ReloadPackagesList(APackageType: TPackageType);
end;
var
@ -56,61 +96,197 @@ implementation
{$R *.lfm}
{ TfmMain }
{------------------------------------------------------------------------------
Процедура: TfmMain.ReloadPackagesList()
Назначение: Создание формы и обновление выпадающих меню пакетов программ и утилит
Вх. параметры: Sender: TObject
Функция: TPackage.AddNode()
Назначение: Создание дочерней ноды в указанном дереве с указанными параметрами
Вх. параметры:
AVST: TVirtualStringTree - компонент дерева, в котором нужно создать ноду
ARootNode: PVirtualNode - указатель на ноду-родителя (для создания ноды, вложенной в неё)
AName: String - название ноды (для отображения имени программы или утилиты)
APath: String = '' - путь к программе или утилите (не заполняется для корневых нод)
Возвращает: PVirtualNode - указатель на созданную ноду списка
------------------------------------------------------------------------------}
function TfmMain.AddNode(AVST: TVirtualStringTree; ARootNode: PVirtualNode; AName: String;
APath: String = ''): PVirtualNode;
var
ptrData: PChildNodeData;
begin
Result := AVST.AddChild(ARootNode);
AVST.ValidateNode(Result, False);
ptrData := AVST.GetNodeData(Result);
ptrData^.FName := AName;
//if Assigned(APath) then
ptrData^.FPath := APath;
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.SetNodeText()
Назначение: Отображение имён программ в нодах деревьев при инициализации деревьев
------------------------------------------------------------------------------}
procedure TfmMain.SetNodeText(AVST: TVirtualStringTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: String);
var
PData: PRootNodeData;
begin
PData := AVST.GetNodeData(Node);
CellText := PData^.FName;
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.SetActivePackage()
Назначение: Выбор пакета. Заполняется дерево и отображается описание пакета.
Вх. параметры:
AType: TPackageType - тип пакета
APackageIndex: integer - номер пакета в списке (а равно в соотв. ComboBox)
------------------------------------------------------------------------------}
procedure TfmMain.SetActivePackage(AType: TPackageType; APackageIndex: Integer);
var
Package: TPackage;
begin
case (AType) of
ptSoft:
begin
Package := dmMain.SoftPackages[APackageIndex];
PackageFillVST(vstSoftPkgContents, Package);
labSoftPkgDescription.Caption := Package.Description;
end;
ptTools:
begin
Package := dmMain.ToolsPackages[APackageIndex];
PackageFillVST(vstToolsPkgContents, Package);
labToolsPkgDescription.Caption := Package.Description;
end;
else
raise Exception.Create('TfmMain.SetActivePackage(): передан неизвестный тип пакета');
end;
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.PackageFillVST()
Назначение: Заполнение дерева содержимым пакета
Вх. параметры:
AVST: TVirtualStringTree - компонент дерева, которое необходимо заполнить
APackage: TPackage - объект пакета
------------------------------------------------------------------------------}
procedure TfmMain.PackageFillVST(AVST: TVirtualStringTree; APackage: TPackage);
var
Sections: TStringList;
SectionItems: TStringList;
keySection: Integer;
keyItem: Integer;
Path: String;
ptrRootNode: PVirtualNode;
ptrChildNode: PVirtualNode;
begin
AVST.Clear;
Sections := TStringList.Create;
SectionItems := TStringList.Create;
APackage.ReadSections(Sections);
for keySection := 0 to Sections.Count - 1 do
begin
if Sections[keySection] = 'PackageInfo' then
continue;
ptrRootNode := AddNode(AVST, nil, Sections[keySection]);
APackage.ReadSection(Sections[keySection], SectionItems);
if SectionItems.Count > 0 then
begin
for keyItem := 0 to SectionItems.Count - 1 do
begin
Path := APackage.ReadString(Sections[keySection], SectionItems[keyItem], '');
AddNode(AVST, ptrRootNode, SectionItems[keyItem], Path);
end;
end;
end;
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.ReloadPackagesList()
Назначение: Обновление выпадающих меню пакетов при создании окна
------------------------------------------------------------------------------}
procedure TfmMain.FormCreate(Sender: TObject);
begin
ReloadPackagesList(ptSoft);
ReloadPackagesList(ptTools);
end;
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.btnSoftPkgReloadClick()
Назначение: Обрабока клика по кнопке обновления выпадающего меню пакетов программ
Вх. параметры: Sender: TObject
Процедура: TfmMain.btnSoftPkgReloadClick()
Назначение: Обрабока клика по кнопке обновления выпадающего списка пакетов программ
------------------------------------------------------------------------------}
procedure TfmMain.btnSoftPkgReloadClick(Sender: TObject);
begin
ReloadPackagesList(ptSoft);
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.btnToolsPkgReloadClick()
Назначение: Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
Вх. параметры: Sender: TObject
Процедура: TfmMain.btnToolsPkgReloadClick()
Назначение: Обрабока клика по кнопке обновления выпадающего списка пакетов утилит
------------------------------------------------------------------------------}
procedure TfmMain.btnToolsPkgReloadClick(Sender: TObject);
begin
ReloadPackagesList(ptTools);
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.vstSoftPkgContentsGetText()
Назначение: Отображение имён программ в нодах дерева программ
------------------------------------------------------------------------------}
procedure TfmMain.vstSoftPkgContentsGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
begin
SetNodeText(vstSoftPkgContents, Node, Column, TextType, CellText);
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.vstSoftPkgContentsGetText()
Назначение: Отображение имён утилит в нодах дерева утилит
------------------------------------------------------------------------------}
procedure TfmMain.vstToolsPkgContentsGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
begin
SetNodeText(vstToolsPkgContents, Node, Column, TextType, CellText);
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.vstSoftPkgContentsInitNode()
Назначение: Отображение отметок в нодах дерева программ
------------------------------------------------------------------------------}
procedure TfmMain.vstSoftPkgContentsInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode;
var InitialStates: TVirtualNodeInitStates);
begin
//Sender.CheckType[Node] := ctTriStateCheckBox;
case (Sender.GetNodeLevel(Node)) of
0: Node^.CheckType := ctTriStateCheckBox;
1: Node^.CheckType := ctCheckBox;
end;
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.ReloadPackagesList()
Назначение: Перезагрузка списка пакетов и выпадающих меню пакетов по указанному типу
Назначение: Перезагрузка пакетов и заполнение выпадающих списков пакетов
Вх. параметры: APackageType: TPackageType - тип списка пакета
------------------------------------------------------------------------------}
procedure TfmMain.ReloadPackagesList(APackageType: TPackageType);
var
LastIndex: integer;
LastIndex: Integer;
Key: Integer;
Pkg: TPackage;
Combo: TComboBox;
PackageList: TPackageList;
begin
Package: TPackage;
Combo: TComboBox;
begin
case (APackageType) of
ptSoft: begin
ptSoft:
begin
Combo := cmbSoftPkgSelect;
PackageList := dmMain.SoftPackages;
end;
ptTools: begin
ptTools:
begin
Combo := cmbToolsPkgSelect;
PackageList := dmMain.ToolsPackages;
end;
ptUnknown: raise Exception.Create('TfmMain.ReloadPackagesList(): передан ptUnknown');
else raise Exception.Create('TfmMain.ReloadPackagesList(): передан неизвестный тип пакета');
end;
LastIndex := Combo.ItemIndex;
if LastIndex < 0 then
@ -121,14 +297,32 @@ begin
begin
for Key := 0 to PackageList.Count - 1 do
begin
Pkg := PackageList[Key];
Combo.Items.Add(Pkg.Name + ' (' + ExtractFileName(Pkg.FileName) + ')');
Package := PackageList[Key];
Combo.Items.Add(Package.Name + ' (' + ExtractFileName(Package.FileName) + ')');
end;
end;
if Combo.Items.Count <= LastIndex then
LastIndex := Combo.Items.Count - 1;
Combo.ItemIndex := LastIndex;
SetActivePackage(APackageType, LastIndex);
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.cmbSoftPkgSelectChange()
Назначение: Смена пакета программ через выпадающий список
------------------------------------------------------------------------------}
procedure TfmMain.cmbSoftPkgSelectChange(Sender: TObject);
begin
SetActivePackage(ptSoft, cmbSoftPkgSelect.ItemIndex);
end;
{------------------------------------------------------------------------------
Процедура: TfmMain.cmbSoftPkgSelectChange()
Назначение: Смена пакета утилит через выпадающий список
------------------------------------------------------------------------------}
procedure TfmMain.cmbToolsPkgSelectChange(Sender: TObject);
begin
SetActivePackage(ptTools, cmbToolsPkgSelect.ItemIndex);
end;
end.