AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

ContextMenu plugin
Goto page Previous  1, 2, 3, 4, 5 ... 40, 41, 42  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
VladSh



Joined: 29 Nov 2006
Posts: 2584
Location: Киев, Русь

PostPosted: Wed Jul 25, 2007 9:53 am    Post subject: Тогда идея подробно Reply with quote

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): если указывать значения в ячейках таблицы, то соответственно отпадает необходимость использования скобок, как в функциях и кавычек для указания строковых значений, что также "упрощает жизнь" обычным пользователям Smile
----------------------------------------------------------------

UPDATED (26.07.2007): ещё несколько мыслей.

1. Можно при добавлении новой строки меню сразу заполнять (выбирать) ExecuteType, где на OnChange инициировать вывод диалога, если выбрано:
- "a" - отображать перечень внутренних команд AkelPad'а;
- "p" - перечень плагинов с функциями;
- "s" - перечень скриптов.
При выборе автоматом заполнять COMMAND и IDN_COMMAND_0, а для плагинов и скриптов ещё и Path.

2. При табличной структуре отличать вложенные подменю можно анализируя 1-ю колонку на наличие тех же "фигуристых" Very Happy скобк; т.е.:
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
View user's profile Send private message Visit poster's website
Fr0sT



Joined: 24 Jul 2007
Posts: 875

PostPosted: Wed Jul 25, 2007 2:56 pm    Post subject: Reply with quote

Поддерживаю обеими руками! Формат идеален.
Back to top
View user's profile Send private message
wisgest



Joined: 24 Jun 2007
Posts: 63
Location: Belorussia

PostPosted: Sat Aug 25, 2007 10:23 pm    Post subject: Работа с диалогом настройки с пом. клавиатуры Reply with quote

1) При перемещении по элементам и нажатии на кнопки с помощью клавиатуры очень часто диалог закрывается при повторном нажатии на кнопку "Показать".
Уточнение: Закрывается при нажатии клавишей "Ввод", при нажатии через "Пробел" всё в порядке.
2) При получении областью редактирования фокуса по клавише Tab выделяяется всё её содержимое. Если это можно исправить, то это нужно исправить, - как правило, не требуется каждай раз полностью переделывать редактируемое меню.
3) Мне кажется, что удобней было бы, если фокус ввода при открытии получала область редактирования (лучше с запоминанием последнего редактировавшегося меню), а не список, - сколько раз ловил себя на том, что сразу после открытия диалога хотел прокрутить/переместиться по области редактирования, а вместо этого начинали перещёлкиваться пункты списка.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Sun Aug 26, 2007 2:05 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Tue Sep 25, 2007 1:48 pm    Post subject: Reply with quote

Changed: AkelPad 3.4.0 required


ContextMenu plugin v1.5
Back to top
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Sat Sep 29, 2007 1:18 pm    Post subject: Reply with quote

Fixed: ignored non-URL items in URL menu.


ContextMenu plugin v1.6
Back to top
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Sat Oct 27, 2007 9:43 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Sat Oct 27, 2007 10:02 pm    Post subject: Reply with quote

Чтобы получить меню "Кодировки", аналогичное тому, которое присутствует во втором 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
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Sun Oct 28, 2007 6:21 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Sun Oct 28, 2007 9:29 am    Post subject: Reply with quote

Fixed: double message when trying to call non-existed plugin with "+Call" method.


ContextMenu plugin v1.9
Back to top
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Mon Oct 29, 2007 5:02 pm    Post subject: Reply with quote

Fixed: if root item of "Main menu" isn't submenu, then item ignored.


ContextMenu plugin v2.0
Back to top
View user's profile Send private message Send e-mail
VladSh



Joined: 29 Nov 2006
Posts: 2584
Location: Киев, Русь

PostPosted: Thu Nov 01, 2007 12:12 pm    Post subject: Reply with quote

Можно добавлять менюхи в главное меню - это хорошо; Idea возможно в последствиис помощью этого функционала можно будет корректировать главное меню целиком Smile
Но дело не в этом.

Call("ContextMenu::Main", 1, N)
где N БЫЛО:
1 - меню окна редактирования;
2 - меню вкладок;
3 - меню ссылок;
4 - меню последних файлов.

Сейчас при добавлении "Главного меню" всё сдвинулось - это ИМХО некорректно.
Может для "Главного меню" можно сделать не 1, а 0?
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5167

PostPosted: Thu Nov 01, 2007 2:25 pm    Post subject: Reply with quote

Переменная N не привязана к конкретным меню, а соответствует индексу элемента в ComboBox'е.
Back to top
View user's profile Send private message Send e-mail
VladSh



Joined: 29 Nov 2006
Posts: 2584
Location: Киев, Русь

PostPosted: Fri Nov 02, 2007 12:28 pm    Post subject: Reply with quote

Instructor
Хорошо, откорректирую менюхи.
Но было бы неплохо впоследствии их не корректировать. Или предупреждать о необходимости - тоже пойдёт.


UPDATED:

Idea Идея: сделать так, чтобы комбинации клавиш, которые можно дописывать в конце в менюхах
Code:
Новый    Ctrl+N
чтобы в контекстных менюхах отображались так же справа, как и в основном меню.
Для этого можно использовать какой-нибудь разделитель, например вертикальную палку "|" или решётку "#".
К примеру такая запись:
Code:
Новый|Ctrl+N

Просьба: если RightClick'нуть на позиции меню, в которой используется скрипт, то чтобы открывался этот скрипт на редактирование, а то сейчас выполняется действие как и по LeftClick.
Back to top
View user's profile Send private message Visit poster's website
wisgest



Joined: 24 Jun 2007
Posts: 63
Location: Belorussia

PostPosted: Sat Nov 03, 2007 6:14 pm    Post subject: Reply with quote

VladSh wrote:
Idea Идея: сделать так, чтобы комбинации клавиш, которые можно дописывать в конце в менюхах
Code:
Новый    Ctrl+N
чтобы в контекстных менюхах отображались так же справа, как и в основном меню.
Для этого можно использовать какой-нибудь разделитель,..

Как я понял, такая возможность уже имеется: в качестве разделителя нужно использовать символ табуляции (для того, чтобы набрать символ табуляции в поле редактирования меню, нужно нажать Ctrl+Tab).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3, 4, 5 ... 40, 41, 42  Next
Page 4 of 42

 
Jump to:  
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group