Что нового

DH - Dynamic Help

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
AutoIt: 3.3.8.1
Версия: 1.2

Категория: Утилита

Описание: Утилита предназначена для создания динамического Help'a нескольких UDF с возможностью быстрого переключения с одной на другую.
В своей работе использует UDF : IniVirtual от Azjio.

Возможности:
* Создание дерева функций, использованных в UDF
Варианты:
- с разделением на разделы (регионы)
- без разделения
* Возможность просмотра Include-файлов, использованных в UDF
* Возможность просмотра содержимого всего UDF
* Возможность просмотра содержимого отдельного раздела (региона) UDF (при наличии разделения на регионы в UDF)
* Возможность просмотра содержимого каждой отдельной функции
Варианты просмотра :
- только содержание функции
- описание функции (с кратким содержанием функции)

- фрейм функции (описание + содержание)
* Возможность добавления новых UDF в Ini-базу
* Возможность удаления UDF из Ini-базы
* Возможность оперативного переключения с одной UDF Ini-базы на другую
- Примечание. При этом отражаются все изменения , произошедшие в UDF
* Возможность просмотра любых AutoIt-скриптов.
* Возможность добавления файлов
* Возможность добавления папки
* Возможность Ресайза линией ( 28.09.2013 )
* Возможность форматирования au3-файла (10.10.2013 )
Файл : Dynamic Help v0.4.1
Dynamic Help v0.5 (Комплект в Архиве 7z) 28.09.2013
Dinamic Help(SCI) v1.2 10.10.2013
История версий:
v0.3 - 24.09.2013 - Первая публичная версия
v0.4.1 - 25.09.2013
* Добавлена возможность добавления нескольких UDF (Joiner)
* Добавлена возможность всех UDF каталога (Joiner)
* Изменен принцип установки иконок на TreeView
* Устранены мелкие недостатки
v0.5 - 28.09.2013
Добавлено :
* Возможность добавления папки (всех UDF каталога)
* Возможность Ресайза линией
* Переключение форматов перенесено в Меню
* Улучшен внешний вид
* Устранены отдельные недостатки
v1.2 - 10.10.2013
* В качестве элемента Edit Использован элемент Scintilla
* Оставлен один режим просмотра (фрейм)
Добавлено :
* Возможность форматирования au3-текста

Пример :
Код:
#include <GuiConstantsEx.au3>

$s_File=@ScriptDir & '\Dinamic Help v0.3.exe'
$h_Form = GUICreate('Пример Dinamic Help', 600, 750)
GUICtrlCreateMenu("")
$id_Help = GUICtrlCreateMenuItem(" ? ", -1)

GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $id_Help
			ShellExecute($s_File)
	EndSwitch
WEnd

Скриншот:


Источник: http://autoit-script.ru
Автор: gregaz
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: DH - Dinamic Help

gregaz [?]
Следует прятать под тег thumb а не img, исправил.

По поводу названия. Если имелось в виду Динамический..., то правильнее Dynamic.
По поводу Полезняшки... это скорее пример, перенёс.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: DH - Dinamic Help

А вообще полезная утилита получилась.

Из пожеланий:

* Добавить вкладки для открываемых файлов библиотеки (чтобы можно было переключаться между ними удобно).
* Вместо комментированного заголовка, выводить пропарсенный список.
* Если будет добавлено предыдущее, то можно ещё добавить поддержку редактирования заголовка функции.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
CreatoR [?]
* Добавить вкладки для открываемых файлов библиотеки (чтобы можно было переключаться между ними удобно).
Имеется ввиду заменить элементы Radio вкладками подобно обычной справке ?

Вместо комментированного заголовка, выводить пропарсенный список.
А что это даст ?
Идея создания утилиты была в том, чтобы иметь возможность оперативно просмотреть описания ф-ий, в какой бы форме они не присутствовали в UDF.
Ведь не секрет то, что у авторов UDF , особого желания создавать справку к ней не замечается (за редким исключением).
Описания к функциям составляют по разному, что затруднит парсинг.
Можно наверное обрабатывать описания стандартной формы, а остальные выдавать без обработки.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
gregaz
Не понял откуда, но у меня появился файл Date.au3 в списке, а в ini строка "Date.au3=Date.au3" (без пути) и при клике на нём AutoIt3 падает. Нормально, хотя в 3.3.9.21 заголовочную информацию вырезают, скоро там не будет описание функций.
Последнее время я делаю прыжок к функции и смотрю описание и код. Оно есть в SciTE.

При первом запуске не плохо бы определить путь к Include и предоставить выбор файлов оттуда.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
gregaz [?]
Имеется ввиду заменить элементы Radio вкладками подобно обычной справке ?
Нет, просто убрать Active и подобное, вместо этого позволить загружать более одной библиотеки одновременно.
Подобно открытию множества файлов в текст. редакторе.

Удобочитаемость как минимум, а как максимум(?) см. третьи пункт в моём списке :smile:.

Идея создания утилиты была в том, чтобы иметь возможность оперативно просмотреть описания ф-ий, в какой бы форме они не присутствовали в UDF.
Ничего не мешает добавить опцию в настройки, где будет указан режим вывода заголовка.

Ведь не секрет то, что у авторов UDF , особого желания создавать справку к ней не замечается (за редким исключением).
С таким же успехом функции могут быть напрочь лишены всяких описаний (комментарий), что тогда будет показывать программа?
Тут я считаю нужно вовсе игнорировать функцию, или подобную библиотеку в целом.

Описания к функциям составляют по разному, что затруднит парсинг.
Подобная программа может придерживаться стандарту (ну или нескольким вариантов таких "стандартов"), а в случае неудачного парсинга, выводить заголовок полностью, как это делается сейчас.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
AZJIO [?]
При первом запуске не плохо бы определить путь к Include и предоставить выбор файлов оттуда.
тут поддерживаю. сделать выбор папки с библиотеками. а в одиночном выборе , все-таки, включить возможность выбора нескольких библиотек.
и по внешнему виду - при запуске программы как х86 на системе х64 нет значков в колонке со списком функций. если программу запустить как х64, то значки как на скрине. так и должно быть? они пропадают при обновлении. точнее некоторые.



Добавлено:
Сообщение автоматически объединено:

я для себя чуть переделал меню и функции выбора папки или файла библиотеки
меню:
Код:
$id_AddHelp = GUICtrlCreateMenu("&Файл")
$iFileItem_udf = GUICtrlCreateMenuItem("Добавить UDF", $id_AddHelp)
$iFileItem_folder = GUICtrlCreateMenuItem("Добавить папку с UDF", $id_AddHelp)
$id_DelHelp = GUICtrlCreateMenu("&Удалить")
$id_DelHelp_udf = GUICtrlCreateMenuItem("Удалить UDF", $id_DelHelp)
$id_Info = GUICtrlCreateMenu("&?")
$id_Info_item = GUICtrlCreateMenuItem("Справка", $id_Info)

функции:
Код:
;=======================================
; Добавляет файл библиотеки в Ини-файл
;=======================================
Func _DH_Ini_AddFile()
	$var = FileOpenDialog('', '', '(*.au3)', 1 + 4)
	If @error Then
		Return SetError(1)
	EndIf
	$var_string = StringReplace($var, "|", '\', 1)
	Local $Drive, $Dir, $FName, $Ext
	$path = _PathSplit($var_string, $Drive, $Dir, $FName, $Ext)
	$replace = StringReplace($var_string, '|', '*' & $path[1] & $path[2])
	$result = StringSplit($replace, '*', 2)
	For $i = 0 To UBound($result) - 1
		If $result[$i] = $s_OriginalFile Or _IniVirtual_Read($a_Ini_Main2D, '_HELP FILES', 'Active', '') = $result[$i] Then
			ContinueLoop
		EndIf
		IniWrite($s_Main_HelpIni, '_HELP FILES', __DH_Get_Name($result[$i]), $result[$i])
		_IniVirtual_Write($a_Ini_Main2D, '_HELP FILES', __DH_Get_Name($result[$i]), $result[$i])
	Next
	__DH_Update_TreeView()
	Return $result
EndFunc   ;==>_DH_Ini_AddFile

;=======================================
; Добавляет папку с библиотеками в Ини-файл
;=======================================
Func _DH_Ini_AddFolder()
	$var = FileSelectFolder('', '')
	If @error Then
		Return SetError(1)
	EndIf
	$filelist = _FileListToArray($var, '*.au3')
	If @error Then
		Return SetError(1)
	EndIf
	Local $filelistfolder[1]
	For $i = 1 To UBound($filelist) - 1
		If $var & '\' & $filelist[$i] = $s_OriginalFile Or _IniVirtual_Read($a_Ini_Main2D, '_HELP FILES', 'Active', '') = $var & '\' & $filelist[$i] Then
			ContinueLoop
		Else
			_ArrayAdd($filelistfolder, $var & '\' & $filelist[$i])
			IniWrite($s_Main_HelpIni, '_HELP FILES', __DH_Get_Name($var & '\' & $filelist[$i]), $var & '\' & $filelist[$i])
			_IniVirtual_Write($a_Ini_Main2D, '_HELP FILES', __DH_Get_Name($var & '\' & $filelist[$i]), $var & '\' & $filelist[$i])
		EndIf
	Next
	__DH_Update_TreeView()
	Return $filelistfolder
EndFunc   ;==>_DH_Ini_AddFolder
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Всем спасибо за замечания.
В принципе здесь я хотел показать саму идею, а не способ реализации, который оставляет желать лучшего.
Круг выполняемых задач можно расширять.
Я предполагал выполнить добавление папок (спасибо joiner).
Можно добавить папку Избранное
Можно добавить и тематические папки
Несложно выполнить это на Scintilla, что позволит использовать Folding и расцветку тегов.
Не знаю стоит ли усложнять ?

Одно замечу : .
Даже при отсутствии описания часто приходится заглядывать в UDF для просмотра формата параметров ф-ии и возвращаемого значения.
Для этого достаточно первой и предпоследней строки ф-ии.

Особенно это касается самопальных UDF, которые мы используем.
Именно для просмотра этих UDF я и предполагал использовать Dynamic Help
Попутно появилась возможность просмотра стандартных UDF.

Кстати многие из нас имеет папочку, где хранит бесчисленное множество UDF разных авторов.
Вот для просмотра их подобная утилита бала бы не лишней


Добавлено:
Сообщение автоматически объединено:

Если есть желающие, предлагаю принять участие в модернизации утилиты.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
gregaz [?]
В принципе здесь я хотел показать саму идею
сама идея хороша. во всяком случае, для меня. я частенько просматриваю включаемые библиотеки через редактор скриптов. а тут можно открыть уже целое хранилище.
что очень хотелось бы увидеть, так это раскраску кода в программе.
добавить возможность редактирования скриптов в окне программы. ведь можно добавить в базу и свои скрипты. почему бы нет? :smile:
думаю что стоит продолжать улучшать программу. как дополнительный инструмент AutoIT.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Обновил до v0.4.1

v0.4.1 - 25.09.2013
* Добавлена возможность добавления нескольких UDF (Joiner)
* Добавлена возможность всех UDF каталога (Joiner)
* Изменен принцип установки иконок на TreeView
* Устранены мелкие недостатки



Добавлено:
Сообщение автоматически объединено:

AZJIO [?]
Не понял откуда, но у меня появился файл Date.au3 в списке, а в ini строка "Date.au3=Date.au3" (без пути) и при клике на нём AutoIt3 падает

Откуда появилась не могу понять , если падает при двойном клике, то это я устранил проверкой на существование файла.
А при одинарном вообще не должен был???
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
gregaz [?]
Если есть желающие, предлагаю принять участие в модернизации утилиты.
Я пока такие же действия выполняю через свою утилиту JumpToString или через плагин к Notepad++ - FunctionList.dll оба они выдают список функций и по клику делают переход к функции для её просмотра, а также, как я говорил выше, и что это ещё лучше - выделить двойным кликом имя функции и вызвать горячую клавишу прыжок, автоматически открывает необходимый UDF и переходит к функции в ней. И просмотр сохраняет всю мощь редактора.
Поэтому пока не вижу необходимости выбирать иной способ просмотра описания функции.

Для SciTE аналогичное выполняют утилита SciTEJump и горячая клавиша Ctrl+J "Jump To Function Prod" и возврат - "JumpBack" Ctrl+Shift+J.
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
joiner [?]
при запуске программы как х86 на системе х64 нет значков в колонке со списком функций. если программу запустить как х64, то значки как на скрине. так и должно быть?

Проверить не могу. При создании TreeView я для простоты использовал простейший способ установки иконок.
В последней версии я немного изменил концепцию получения иконок.
Попробуй- скажешь есть изменения ?


[?]
что очень хотелось бы увидеть, так это раскраску кода в программе.

Чуть позже попробую представить (по крайней мере в личку, если нужно) . Есть у меня UDF по Scintille, но она не публиковалась, т.к. надо корректировать. Хотя сам пользуюсь давно.
добавить возможность редактирования скриптов в окне программы. ведь можно добавить в базу и свои скрипты.

Конечно можно, правда это уже вобщем то другой инструмент. Наверное все в одну кучу не стоит. А отдельным инструментом на этом принципе вполне





Добавлено:
Сообщение автоматически объединено:

AZJIO [?]
Для SciTE аналогичное выполняют SciTEJump и Ctrl+J "Jump To Function Prod"
Поэтому пока не вижу необходимости выбирать иной способ просмотра описания функции.

Я тоже пользовался ими в SciTE. Но в какой-то момент меня не устроило то, что нет оперативной возможности быстро переходить от файла к файлу. А понадобилось прыгать по многим UDF, расположенным в разных местах. Поэтому вкладки меня не очень устраивают
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
gregaz [?]
Если есть желающие, предлагаю принять участие в модернизации утилиты.
Ну вот ссылки подходящие
парсить au3 http://www.autoitscript.com/forum/topic/152146-au3-script-parsing-related-functions/
Code Scanner - http://www.autoitscript.com/forum/topic/153368-code-scanner/
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
gregaz [?]
В последней версии я немного изменил концепцию получения иконок.
теперь с иконками все нормально в любой битности запуска скрипта
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Обновление:
v0.5 - 28.09.2013
Добавлено :
* Возможность добавления папки (всех UDF каталога)
* Возможность Ресайза линией
* Переключение форматов перенесено в Меню
* Улучшен внешний вид
* Устранены отдельные недостатки
 
Автор
G

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Обновил :

v1.2 - 10.10.2013
* В качестве элемента Edit Использован элемент Scintilla
* Оставлен один режим просмотра (фрейм)
Добавлено :
* Возможность форматирования au3-текста

(Отказался от излишних режимов просмотра, ради упрощения. Использовал элементы парсинга).

P.S. Фактически получился просмотрщик скриптов ;)
 
Верх