| View previous topic :: View next topic |
| Author |
Message |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Wed Jul 25, 2007 9:53 am Post subject: Тогда идея подробно |
|
|
| Fr0sT wrote: | | VladSh wrote: |
Ну, визуальная правка меню - это уже следующий этап, думаю, сейчас надо решить с названиями. |
| Хотя и ругают такой подход, но иногда лучше чтобы функционал зависел от интерфейса!
Рассмотрим ACAD'овский принцип построения меню; пример:
IDH_COPY [Копирование объектов] ^C^C _copy
где:
IDH_... - это у них идентификатор подсказки, которая отображается в статусбаре при наведении на опред. позицию меню курсора мыши. Эти идентификаторы хранятся в том же файле, только в другом разделе. Такой подход может пригодиться.
В квадратных скобках указывается перевод, т.е. наименование команды для пользователя.
^C^C означает, что любая предыдущая команда сбрасывается, т.е. сначала делается Esc, а потом выполняется следующая команда.
_copy - имя команды; у них не номера, а имена, т.к. имеется командная строка и набирать команды можно из неё по первым буквам - это удобно, профи так только и работают - отключают все тулбары, переходят в FullScreen-mode и вперёд...
Теперь какие идеи для AkelPad'а, примеры:
| Code: | | COMMAND IDN_COMMAND_0 ExecuteType Flag Path Parameters Disable | , где:
COMMAND - числовой/буквенный код команды (для команд Akel'а) или имя файла плагина/скрипта.
IDN_COMMAND_0 - наименование позиции меню, выводимое для пользователя. 0 - значение, подставляемое по умолчанию из справочника - это ComboBox; если для некоторого меню значение по умолчанию не подходит, то оно редактируется, при этом для команды с номером COMMAND создаются новый IDN_COMMAND_1. При дальнейшем использовании этой команды в др. меню в ComboBox'е будет уже 2 значения - можно будет выбирать или точно также редактировать любой из выбранных.
ExecuteType - запуск чего: команды Akel'а (Command), плагина или скрипта; соответственно возможные значения: "a", "p" или "s" - ComboBox.
Flag - использовать/не использовать галку в меню, отображающую загрузку плагина ("Использовать" актуально для плагинов, в которых одна и та же функция загружает/выгружает плагин), в зависимости от этого при программной генерации кода меню (а если писать такой интерфейс, то программная генерация будет необходима!) подставляется Call (использовать) или Exec (не использовать).
Path - путь к файлу запуска:
- для запуска команды AkelPad'а это значение игнорируется;
- для запуска плагинов, если не указывать, то автоматом при генерации использовать "%a\AkelFiles\Plugs\";
- для запуска скриптов аналогично "%a\AkelFiles\Plugs\Scripts".
Если используются пути по умолчанию, то я бы ничего в эту колонку не писал. Если же это внапряг, то можно добавить доп. упр. символы, соответственно: "%a" - путь для AkelPad.exe (уже есть и используется), "%p" (= "%a" + "\AkelFiles\Plugs\"), и по такому же принципу "%s".
Если же путь другой, т.е. запускаемый файл находится не в стандартных дирректориях - добавить кнопку "..." для выбора пути.
Parameters - параметры запуска скриптов, плагинов... для команд AkelPad'а это было бы тоже полезно! Отделять параметры через любой удобный для разработчика разделитель, думаю лучше всего для этого подходит "; " или ", " ну или просто пробел (это если в самих параметрах не планируется пробелов).
Если же сделать этот интерфейс в виде таблички, то в нужные ячейки можно было бы встроить соотв. ComboBox'ы, кнопочки и т.п.
Готовые строки (блоки строк) запуска можно было бы сохранять как шаблоны, а потом для пользователей давать выбор уже готовых настроеных позиций/блоков меню.
Так было бы гораздо удобнее для пользователя - ненужно писать в меню программный код.
UPDATED (25.07.2007): если указывать значения в ячейках таблицы, то соответственно отпадает необходимость использования скобок, как в функциях и кавычек для указания строковых значений, что также "упрощает жизнь" обычным пользователям
----------------------------------------------------------------
UPDATED (26.07.2007): ещё несколько мыслей.
1. Можно при добавлении новой строки меню сразу заполнять (выбирать) ExecuteType, где на OnChange инициировать вывод диалога, если выбрано:
- "a" - отображать перечень внутренних команд AkelPad'а;
- "p" - перечень плагинов с функциями;
- "s" - перечень скриптов.
При выборе автоматом заполнять COMMAND и IDN_COMMAND_0, а для плагинов и скриптов ещё и Path.
2. При табличной структуре отличать вложенные подменю можно анализируя 1-ю колонку на наличие тех же "фигуристых" скобк; т.е.:
| Code: | {
табличная строка подменю 1
табличная строка подменю 2
табличная строка подменю n
} |
3. Для хранения блоков/строк меню необходимо отдельное хранилище. Именовать блоки можно по аналогии с SEPARATOR и указывать имя блока в первой колонке таблицы. Если остальные колонки (хотя бы вторая) не заполнены, это означает, что указанный идентификатор есть наименование блока меню, который нужно подставить при автоматической генерации.
4. По аналогии с ACAD'ом можно сделать отдельный раздел или файл для хранения соответствий горячих клавиш (ACCELERATORS) командам или строкам меню.
При проверках/назначениях информацию нужно брать/сохранять в этом разделе. Достоинства такого подхода:
1). В меню напротив команды справа (как это сделано практически во всех прогах) можно будет отображать зарезервированную комбинацию клавиш.
2). Не придётся для переопределения пользоваться "реусурсохакером".
----------------------------------------------------------------
UPDATED (29.07.2007): В формат добавил Disable - когда делать недоступным данный пункт меню; множественное поле.
Для этого нужно разработать "условные обозначения". Во всяком случае четверть или вообще треть пунктов меню не работает для нового документа; возможно будут и другие случаи.
Last edited by VladSh on Mon Aug 06, 2007 4:38 pm; edited 10 times in total |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 855
|
Posted: Wed Jul 25, 2007 2:56 pm Post subject: |
|
|
| Поддерживаю обеими руками! Формат идеален. |
|
| Back to top |
|
 |
wisgest
Joined: 24 Jun 2007 Posts: 63 Location: Belorussia
|
Posted: Sat Aug 25, 2007 10:23 pm Post subject: Работа с диалогом настройки с пом. клавиатуры |
|
|
1) При перемещении по элементам и нажатии на кнопки с помощью клавиатуры очень часто диалог закрывается при повторном нажатии на кнопку "Показать".
Уточнение: Закрывается при нажатии клавишей "Ввод", при нажатии через "Пробел" всё в порядке.
2) При получении областью редактирования фокуса по клавише Tab выделяяется всё её содержимое. Если это можно исправить, то это нужно исправить, - как правило, не требуется каждай раз полностью переделывать редактируемое меню.
3) Мне кажется, что удобней было бы, если фокус ввода при открытии получала область редактирования (лучше с запоминанием последнего редактировавшегося меню), а не список, - сколько раз ловил себя на том, что сразу после открытия диалога хотел прокрутить/переместиться по области редактирования, а вместо этого начинали перещёлкиваться пункты списка. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Sun Aug 26, 2007 2:05 pm Post subject: |
|
|
Changed: tab doesn't select all contents of edit control.
Fixed: double Enter pressing on "Show" button cause dialog closing.
ContextMenu plugin v1.4 |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Sat Oct 27, 2007 9:43 pm Post subject: |
|
|
Changed: AkelPad 3.4.2 required.
Changed: algorithm optimized.
Added: configure main menu.
Added: "-" before menu item name, means that item will not be checked or disabled.
Added: "+" before "Call" method, means that plugin will be called with autoload modification.
Added: context menu for edit control in dialog.
ContextMenu plugin v1.7 |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Sat Oct 27, 2007 10:02 pm Post subject: |
|
|
Чтобы получить меню "Кодировки", аналогичное тому, которое присутствует во втором AkelPad'е, можно воспользоваться следующим кодом "Главного меню":
| Code: | "&Кодировки" Index(4)
{
"Открыть как Windows-1251 Alt+W" Command(4409)
"Открыть как DOS-866 Alt+D" Command(4410)
"Открыть как КОИ8-Р Alt+K" Command(4414)
"Открыть как Unicode"
{
"UCS-2 little endian (стандартная) Alt+L" Command(4411)
"UCS-2 big endian Alt+B" Command(4412)
"UTF-8 Alt+U" Command(4413)
}
SEPARATOR
"Сохранить как Windows-1251 Ctrl+Alt+W" Command(4415)
"Сохранить как DOS-866 Ctrl+Alt+D" Command(4416)
"Сохранить как КОИ8-Р Ctrl+Alt+K" Command(4420)
"Сохранить как Unicode"
{
"UCS-2 little endian (стандартная) Ctrl+Alt+L" Command(4417)
"UCS-2 big endian Ctrl+Alt+B" Command(4418)
"UTF-8 Ctrl+Alt+U" Command(4419)
}
SEPARATOR
"Определить кодировку Alt+F5" Command(4408)
} |
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Sun Oct 28, 2007 6:21 am Post subject: |
|
|
Fixed: recent files menu incorrectly filled "%f" variable.
Fixed: "Index" attribute in "Main menu" now correctly handle positive index with maximized MDI.
ContextMenu plugin v1.8 |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Sun Oct 28, 2007 9:29 am Post subject: |
|
|
Fixed: double message when trying to call non-existed plugin with "+Call" method.
ContextMenu plugin v1.9 |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Mon Oct 29, 2007 5:02 pm Post subject: |
|
|
Fixed: if root item of "Main menu" isn't submenu, then item ignored.
ContextMenu plugin v2.0 |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Thu Nov 01, 2007 12:12 pm Post subject: |
|
|
Можно добавлять менюхи в главное меню - это хорошо; возможно в последствиис помощью этого функционала можно будет корректировать главное меню целиком
Но дело не в этом.
Call("ContextMenu::Main", 1, N)
где N БЫЛО:
1 - меню окна редактирования;
2 - меню вкладок;
3 - меню ссылок;
4 - меню последних файлов.
Сейчас при добавлении "Главного меню" всё сдвинулось - это ИМХО некорректно.
Может для "Главного меню" можно сделать не 1, а 0? |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Thu Nov 01, 2007 2:25 pm Post subject: |
|
|
| Переменная N не привязана к конкретным меню, а соответствует индексу элемента в ComboBox'е. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Fri Nov 02, 2007 12:28 pm Post subject: |
|
|
Instructor
Хорошо, откорректирую менюхи.
Но было бы неплохо впоследствии их не корректировать. Или предупреждать о необходимости - тоже пойдёт.
UPDATED:
Идея: сделать так, чтобы комбинации клавиш, которые можно дописывать в конце в менюхах
чтобы в контекстных менюхах отображались так же справа, как и в основном меню.
Для этого можно использовать какой-нибудь разделитель, например вертикальную палку "|" или решётку "#".
К примеру такая запись:
Просьба: если RightClick'нуть на позиции меню, в которой используется скрипт, то чтобы открывался этот скрипт на редактирование, а то сейчас выполняется действие как и по LeftClick. |
|
| Back to top |
|
 |
wisgest
Joined: 24 Jun 2007 Posts: 63 Location: Belorussia
|
Posted: Sat Nov 03, 2007 6:14 pm Post subject: |
|
|
| VladSh wrote: | Идея: сделать так, чтобы комбинации клавиш, которые можно дописывать в конце в менюхах
чтобы в контекстных менюхах отображались так же справа, как и в основном меню.
Для этого можно использовать какой-нибудь разделитель,.. |
Как я понял, такая возможность уже имеется: в качестве разделителя нужно использовать символ табуляции (для того, чтобы набрать символ табуляции в поле редактирования меню, нужно нажать Ctrl+Tab). |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|