- Сообщения
- 8,673
- Репутация
- 2,484
AutoIt: 3.3.x.x
Версия: 0.3
Категория: Элементы GUI, Разное
Описание:
Библиотека предназначена для создания динамического меню из ini-файл.
Структура/синтаксис меню ini-файла:
Пояснения:
[MENU] --> Имя секции:
* Следует использовать только ansi символы.
Item, ... --> Неактивный пункт меню:
"ITEM_NAME" - Отображаемый текст для неактивного пункта меню.
DISABLED - Сообщает меню что следует деактивировать пункт меню, следует использовать только эту инструкцию.
--- = ... --> Пункт разделитель:
* Следует использовать 3 дефиса для указания разделителя в меню, всё что после знака "=" будет проигнорировано.
Item, ... --> Пункт меню:
"ITEM_NAME" - Отображаемый текст для пункта меню.
COMMAND - [опционально] Команда для выполнения при обращений к пункту меню, поддерживаемые команды:
Execute = Запуск указанного приложения или файла (PATH/URL).
Execute Line = Запуск одной AutoIt строки.
Go to Page = Opens specified URL (PATH/URL) in default browser.
Send = Отправка клавиатурных нажатий (может быть использовано для отправки системных г. клавиш).
Exit = Программный выход из приложения.
"PATH/URL" - Путь к файлу или URL для использования в указанной команде (COMMAND).
"ARGUMENTS" - Аргументы для исполняемого пути ("PATH/URL") - только для команды <Execute>.
"ICON_FILE" - [опционально] Файл иконки для использования в пункте меню.
ICON_ID - [опционально] Идентификатор (имя) иконки в указанном файле иконки ("ICON_FILE").
"HOTKEY" - [опционально] Г. клавиша назначаемая пункту меню (в формате "Ctrl+Shift+Q").
"HOTKEY_IS_GLOBAL" - [опционально] Определяет видимость г. клавиш.
0 использовать только для текущего окна.
1 использовать глобально.
-1 или опущено - использовать поведение по умолчанию (0 или как установлено в _GUICtrlDynamicMenu_SetHotKeysGlobal)
Submenu, ... --> Пункт подменю (вложенное меню):
"MENU_NAME" - Отображаемый текст для пункта подменю.
SECTION_NAME - Имя секции с которой следует читать пункты подменю.
"EXTERNAL_INI_PATH" - [опционально] Внешний ini-файл с которого будет считываться секция меню.
"ICON_FILE" - [опционально] Файл иконки для использования в пункте подменю.
ICON_ID - [опционально] Идентификатор (имя) иконки в указанном файле иконки ("ICON_FILE").
Include, ... --> Полное вложение меню в текущую позицию:
SECTION_NAME - Имя секции с которой следует читать пункты меню.
"EXTERNAL_INI_PATH" - [опционально] Внешний ini-файл с которого будет считываться секция меню.
Код/Пример:
Все файлы для примера имеются в архиве.
Файл: GUIDynamicMenu
Снимок:
История версий:
Источник: autoit-script.ru
Автор(ы): G.Sandler (CreatoR)
Версия: 0.3
Категория: Элементы GUI, Разное
Описание:
Библиотека предназначена для создания динамического меню из ini-файл.
Структура/синтаксис меню ini-файла:
INI:
[MENU]
Item, "ITEM_NAME" = DISABLED
--- = 0
Item, "ITEM_NAME" = COMMAND, "PATH/URL", "ARGUMENTS", "ICON_FILE", ICON_ID, "HOTKEY"
Submenu, "MENU_NAME" = SECTION_NAME, "EXTERNAL_INI_PATH", "ICON_FILE", ICON_ID
Include = SECTION_NAME, "EXTERNAL_INI_PATH"
Пояснения:
[MENU] --> Имя секции:
* Следует использовать только ansi символы.
Item, ... --> Неактивный пункт меню:
"ITEM_NAME" - Отображаемый текст для неактивного пункта меню.
DISABLED - Сообщает меню что следует деактивировать пункт меню, следует использовать только эту инструкцию.
--- = ... --> Пункт разделитель:
* Следует использовать 3 дефиса для указания разделителя в меню, всё что после знака "=" будет проигнорировано.
Item, ... --> Пункт меню:
"ITEM_NAME" - Отображаемый текст для пункта меню.
COMMAND - [опционально] Команда для выполнения при обращений к пункту меню, поддерживаемые команды:
Execute = Запуск указанного приложения или файла (PATH/URL).
Execute Line = Запуск одной AutoIt строки.
Go to Page = Opens specified URL (PATH/URL) in default browser.
Send = Отправка клавиатурных нажатий (может быть использовано для отправки системных г. клавиш).
Exit = Программный выход из приложения.
"PATH/URL" - Путь к файлу или URL для использования в указанной команде (COMMAND).
"ARGUMENTS" - Аргументы для исполняемого пути ("PATH/URL") - только для команды <Execute>.
"ICON_FILE" - [опционально] Файл иконки для использования в пункте меню.
ICON_ID - [опционально] Идентификатор (имя) иконки в указанном файле иконки ("ICON_FILE").
"HOTKEY" - [опционально] Г. клавиша назначаемая пункту меню (в формате "Ctrl+Shift+Q").
"HOTKEY_IS_GLOBAL" - [опционально] Определяет видимость г. клавиш.
0 использовать только для текущего окна.
1 использовать глобально.
-1 или опущено - использовать поведение по умолчанию (0 или как установлено в _GUICtrlDynamicMenu_SetHotKeysGlobal)
Submenu, ... --> Пункт подменю (вложенное меню):
"MENU_NAME" - Отображаемый текст для пункта подменю.
SECTION_NAME - Имя секции с которой следует читать пункты подменю.
"EXTERNAL_INI_PATH" - [опционально] Внешний ini-файл с которого будет считываться секция меню.
"ICON_FILE" - [опционально] Файл иконки для использования в пункте подменю.
ICON_ID - [опционально] Идентификатор (имя) иконки в указанном файле иконки ("ICON_FILE").
Include, ... --> Полное вложение меню в текущую позицию:
SECTION_NAME - Имя секции с которой следует читать пункты меню.
"EXTERNAL_INI_PATH" - [опционально] Внешний ini-файл с которого будет считываться секция меню.
Код/Пример:
Код:
#include <GUIDynamicMenu.au3>
Global $sMenu_File = @ScriptDir & '\Menu.ini'
Global $hGUI, $iToggleHKGlobal_CB, $iMenuIconSize_Combo
Global $iAutoItOnWeb_Menu, $iAutoItForums_Bttn, $iOther_Bttn, $iSelfHandled_Bttn
Global $hAutoItOnWeb_Menu, $hAutoItForums_Menu, $hOther_Menu, $hSelfHandled_Menu
Global $hAutoItOnWeb_DM, $hAutoItForums_DM, $hOther_DM, $hSelfHandled_DM
$hGUI = GUICreate('GUIDynamicMenu Example', 360, 200)
$iAutoItOnWeb_Menu = GUICtrlCreateMenu('AutoIt On the web')
$iAutoItForums_Bttn = GUICtrlCreateButton('AutoIt Forums', 20, 20, 80, 30)
$iOther_Bttn = GUICtrlCreateButton('Other', 140, 20, 80, 30)
$iSelfHandled_Bttn = GUICtrlCreateButton('Self handled', 260, 20, 80, 30)
_GUICtrlDynamicMenu_SetHotKeysGlobal(True)
_GUICtrlDynamicMenu_SetIconSize(16)
;Load menus (False to ignore Reload, only load)
_LoadMenu(False)
$iToggleHKGlobal_CB = GUICtrlCreateCheckbox('HotKeys are global (unless set otherwise from the menu item)', 20, 80)
GUICtrlSetState($iToggleHKGlobal_CB, $GUI_CHECKED)
GUICtrlCreateLabel('Menu icon size:', 20, 123)
$iMenuIconSize_Combo = GUICtrlCreateCombo('', 120, 120, 50, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
GUICtrlSetData($iMenuIconSize_Combo, '16|20|24|28|32|36|40|48', '20')
GUISetState(@SW_SHOW, $hGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE, $hGUI)
_GUICtrlDynamicMenu_Destroy($hAutoItOnWeb_DM)
_GUICtrlDynamicMenu_Destroy($hAutoItForums_DM)
_GUICtrlDynamicMenu_Destroy($hOther_DM)
_GUICtrlDynamicMenu_Destroy($hSelfHandled_DM)
Exit
Case $iAutoItForums_Bttn
_GUICtrlDynamicMenu_Show($hGUI, $hAutoItForums_Menu, $iAutoItForums_Bttn)
Case $iOther_Bttn
_GUICtrlDynamicMenu_Show($hGUI, $hOther_Menu, $iOther_Bttn)
Case $iSelfHandled_Bttn
$iIdentifier = _GUICtrlDynamicMenu_Show($hGUI, $hSelfHandled_Menu, $iSelfHandled_Bttn, False, 2)
$aInfo = _GUICtrlDynamicMenu_GetInfo($hSelfHandled_DM, $iIdentifier)
If Not @error Then
_ArrayDisplay($aInfo)
ShellExecute($aInfo[$GDM_INFO_PATH])
EndIf
Case $iToggleHKGlobal_CB
_GUICtrlDynamicMenu_SetHotKeysGlobal((GUICtrlRead($iToggleHKGlobal_CB) = $GUI_CHECKED))
Case $iMenuIconSize_Combo
_GUICtrlDynamicMenu_SetIconSize(GUICtrlRead($iMenuIconSize_Combo))
GUISetState(@SW_DISABLE, $hGUI)
;Reload the menu to apply changes
_LoadMenu(True)
GUISetState(@SW_ENABLE, $hGUI)
EndSwitch
WEnd
Func _LoadMenu($fReload = False)
If $fReload Then
;Since it's standard gui menu, should be unloaded only, not destroyed
_GUICtrlDynamicMenu_UnLoad($hAutoItOnWeb_DM)
_GUICtrlDynamicMenu_Destroy($hAutoItForums_DM)
_GUICtrlDynamicMenu_Destroy($hOther_DM)
_GUICtrlDynamicMenu_Destroy($hSelfHandled_DM)
EndIf
;Since it's standard gui menu, should be created only once
If Not $hAutoItOnWeb_Menu Then
$hAutoItOnWeb_Menu = _GUICtrlDynamicMenu_Create($iAutoItOnWeb_Menu)
EndIf
$hAutoItForums_Menu = _GUICtrlDynamicMenu_Create()
$hOther_Menu = _GUICtrlDynamicMenu_Create()
$hSelfHandled_Menu = _GUICtrlDynamicMenu_Create()
$hAutoItOnWeb_DM = _GUICtrlDynamicMenu_Load($hGUI, $hAutoItOnWeb_Menu, $sMenu_File, 'AutoIt On The Web Menu')
$hAutoItForums_DM = _GUICtrlDynamicMenu_Load($hGUI, $hAutoItForums_Menu, $sMenu_File, 'AutoIt Forums Menu')
$hOther_DM = _GUICtrlDynamicMenu_Load($hGUI, $hOther_Menu, $sMenu_File, 'Other Menu')
$hSelfHandled_DM = _GUICtrlDynamicMenu_Load($hGUI, $hSelfHandled_Menu, $sMenu_File, 'Self Handled Menu')
EndFunc
Файл: GUIDynamicMenu
Снимок:
История версий:
0.3
* Исправлена проблема с передачей аргументов виде "" при использовании команды Execute.
* Улучшена проверка на ошибки в _GUICtrlDynamicMenu_Destroy.
* Пример изменён.
0.2
+ Добавлена функция _GUICtrlDynamicMenu_SetIconSize для изменения размера иконки у пункта меню (требуется перезагрузка меню для применения изменений, в случае если используется после загрузки меню).
+ Добавлена функция _GUICtrlDynamicMenu_SetHotKeysGlobal для определения того, будут ли горячие клавиши распознаваться глобально или только для текущего GUI (переопределяется пунктом меню, см. описание ini-структуры в заголовке библиотеки или выше в описании).
+ Добавлена пользовательская переменная $GDM_INFO_HK_ISGLOBAL для использования в _GUICtrlDynamicMenu_GetInfo.
* Исправлена проблема с глобальным назначением горячими клавиш, они блокировались для остальных приложений даже если не использовались меню.
* Исправлена проблема с пустым параметром (в кавычках) в пункте меню.
* Исправлена проблема с относительными путями (устанавливался неправильный рабочий каталог).
* Исправлена проблема с командой "Execute Line" в меню.
* Пример изменён.
0.1
Первая публичная версия.
* Исправлена проблема с передачей аргументов виде "" при использовании команды Execute.
* Улучшена проверка на ошибки в _GUICtrlDynamicMenu_Destroy.
* Пример изменён.
0.2
+ Добавлена функция _GUICtrlDynamicMenu_SetIconSize для изменения размера иконки у пункта меню (требуется перезагрузка меню для применения изменений, в случае если используется после загрузки меню).
+ Добавлена функция _GUICtrlDynamicMenu_SetHotKeysGlobal для определения того, будут ли горячие клавиши распознаваться глобально или только для текущего GUI (переопределяется пунктом меню, см. описание ini-структуры в заголовке библиотеки или выше в описании).
+ Добавлена пользовательская переменная $GDM_INFO_HK_ISGLOBAL для использования в _GUICtrlDynamicMenu_GetInfo.
* Исправлена проблема с глобальным назначением горячими клавиш, они блокировались для остальных приложений даже если не использовались меню.
* Исправлена проблема с пустым параметром (в кавычках) в пункте меню.
* Исправлена проблема с относительными путями (устанавливался неправильный рабочий каталог).
* Исправлена проблема с командой "Execute Line" в меню.
* Пример изменён.
0.1
Первая публичная версия.
Источник: autoit-script.ru
Автор(ы): G.Sandler (CreatoR)