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 ... 41, 42, 43  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: 2615
Location: Киев, Русь

PostPosted: Wed Jul 18, 2007 2:01 pm    Post subject: Reply with quote

DV wrote:
А где описание всех его функций и параметров?

Всё начиналось отсюда.
О командах можно почитать в AkelDLL.h и вызывать с помощью Command(номер).
Кроме ст. команд можно вызывать скрипты (перечень скриптов) и плагины.
Гляньте тему сначала, на первой странице я выкладывал свои контекстные менюхи, по ним почти всё понятно.
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Wed Jul 18, 2007 2:21 pm    Post subject: ОГРОМНАЯ ПРОСЬБА Reply with quote

Всвязи с появлением нового функционала (плагина ContextMenu) с тем, что многие одинаковые действия приходится делать по 2 раза (пример: OpenFileDirectory.js и OpenFileDirectoryArg.js) прошу в ActiveX AkelPad'а добавить:
1. Возможность определять где я сейчас нахожусь, т.е. на вкладке или в окне редактирования или в менюшке последних файлов. Тогда можно было бы делать общие скриптовые файлы, а внутри select case, где в зависимости от места, - свой скрипт получения имени файла с которым дальше работать.
2. Idea У Akel'а есть метод GetEditFile, который возвращает имя редактируемого файла, было бы просто здорово если бы был метод (GetSelectFile), который возвращал бы имя файла, с которым нужно работать с учётом того, что в п.1! Тогда бы в скриптах не нужно было бы постоянно ставить одни и те же обработчики! Т.е. было бы гораздо легче!!! Smile


Last edited by VladSh on Wed Jul 18, 2007 6:38 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Wed Jul 18, 2007 2:41 pm    Post subject: Reply with quote

Если речь о ContextMenu, то:

ShowFileArg.js:
Quote:
var WshShell=new ActiveXObject("WScript.Shell");

var szFile=WScript.Arguments(0);

WScript.Echo(szFile);


Пункт меню (любого меню):
Code:
"ShowFileArg" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\ShowFileArg.js" "%f"`)
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Wed Jul 18, 2007 3:24 pm    Post subject: Да, это понятно, этот кусок был в OpenFileDirectoryArg.js Reply with quote

Я имел ввиду, что как нам пришлось для разных меню писать разные скрипты OpenFileDirectory.js и OpenFileDirectoryArg.js, так то же самое приходится делать каждый раз - количество файлов растёт, становится труднее их поддерживать.
Хочется писать один файл скрипта, чтобы его использовать в разных менюхах. Поэтому и хотелось такую функцейку, которая бы возвращала - если я в меню вкладок или окна редактирования - GetEditFile, а если я в меню последних файлов, то имя файла, на котором вызвал контекстное меню.
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Wed Jul 18, 2007 3:30 pm    Post subject: Reply with quote

Quote:
Я имел ввиду, что как нам пришлось для разных меню писать разные скрипты OpenFileDirectory.js и OpenFileDirectoryArg.js...
Для ContextMenu достаточно только OpenFileDirectoryArg.js. Имя файла содержится в %f переменной.
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Wed Jul 18, 2007 3:41 pm    Post subject: ДЕЙСТВИТЕЛЬНО РАБОТАЕТ!!!!!!!! Reply with quote

А зачем в OpenFileDirectoryArg.js нужен цикл по аргументам?

Last edited by VladSh on Fri Jul 27, 2007 1:44 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Wed Jul 18, 2007 3:50 pm    Post subject: Reply with quote

VladSh wrote:
А зечем в OpenFileDirectoryArg.js нужен цикл по аргументам?
Для полноты. Количество файлов передаваемых через аргументы может быть более одного.
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Wed Jul 18, 2007 4:02 pm    Post subject: ещё вопрос Reply with quote

Ясно, т.е. "на будущее", т.к. в контекстном меню вряд ли сейчас можно выделить несколько позиций сразу Smile
Я вообще думал, что это перебор аргументов, т.е. %f - это 1-й аргумент, ну и т.д... вот что значит незнание.

Гляньте пожалуйста одним глазком, а то мы здесь ТА-А-АКОЕ сочиняем, может можно как-то проще?
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Wed Jul 18, 2007 4:11 pm    Post subject: Reply with quote

Quote:
Гляньте пожалуйста одним глазком..
Глядел уже (не думал, что есть сиюминутное решение, но wisgest предложил оригинальный путь).
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Wed Jul 18, 2007 6:49 pm    Post subject: ИДЕЯ Reply with quote

Instructor
Я пожалуй поддержу эту идею, но в немного изменённом виде:
wisgest wrote:
Было бы удобно иметь возможность, не переопределять меню объекта целиком, а дополнять имеющееся, добавив в синтаксис описания ключевое слово "DEFAULT" (или другое).
Чтобы можно было сделать, например для окна редактирования так:
Code:
DEFAULT
SEPARATOR
"Lines" {
  ...
}


Idea Можно было бы где-то в ContextMenu-плагине сделать хранилище "кусков" своих менюх с опред. названиями, а потом вызывать их по названиям, по аналогии как вызывается SEPARATOR.

Пример: если глянуть мои менюхи:
Code:
"CopyToClipboard"
{
  "FileName" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\CopyToCBFileName.js" "%f"`)
  "FileNameFull" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\CopyEditFile.js" "%f"`)
  "DateTurn" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\CopyToCBDateTurn.js"`)
}

, то видно, что одно и то же используется в разных меню, и как раз здесь было бы очень удобно вызвать этот "кусок" по имени из общего "хранилища"!
Back to top
View user's profile Send private message Visit poster's website
wisgest



Joined: 24 Jun 2007
Posts: 63
Location: Belorussia

PostPosted: Wed Jul 18, 2007 9:56 pm    Post subject: Reply with quote

Команда для открытия папки с уже отмеченным в ней файлом %f:
Code:
Exec("explorer /select,%f")
Источник: http://support.microsoft.com/kb/152457
Back to top
View user's profile Send private message
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Tue Jul 24, 2007 10:25 am    Post subject: Reply with quote

Классный плагин! Только вот немного бы доработать интерфейс:
1) При открытии окна со списком скриптов ставить фокус на первый элемент листбокса
2) При повторном открытии окна запоминать последний вызванный скрипт и выделять его
3) Нажатие Enter в то время как фокус у листбокса подразумевает запуск скрипта, а не закрытие окна... вообще, полезность двух кнопок для закрытия именно этого окна представляется мне сомнительной.

Как наглядный пример:
если плагину назначен хоткей, то сейчас для вызова первого в списке скрипта надо нажать:
Хоткей - Вниз - Таб - Энтер
а вот как хотелось бы:
Хоткей - Энтер Smile

И ещё по функционалу. В структуре меню жестко указываются названия пунктов, что означает либо использование в локализованной версии английских меню, либо самопальный перевод - свой для каждого языка, плюс ошибки, расхождения и т.п. Может, лучше реализовать подгрузку строковых ресурсов из самой программы? Например, возможность указывать не название пункта, а идентификатор, по которому плагин загрузит нужную локализованную строку.
Code:

...
UndoCmd Command(4151)
...

или
Code:

...
4151 Command(4151)
...


Либо же просто привязать все стандартные команды к стандартным меткам, т.е.
Code:

...
Command(4151)
...
.
Back to top
View user's profile Send private message
VladSh



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

PostPosted: Tue Jul 24, 2007 10:45 am    Post subject: +1 Reply with quote

Fr0sT
Похоже, что кнопки "ОК" и "Отмена" выполняют одно и то же действие - "Закрыть" (окно скриптов). Или я чего недопонял.

Действительно было бы удобно вместо 2-х сделать 1 кнопку "Закрыть", подсвечивать последний запущеный скрипт + фокус по умолчанию устанавливать на кнопку "Запустить".
+1!


UPDATED по меню и т.п.

По контекстным меню, да и по меню вообще я как-то предлагал использовать принцип построения/настройки из AutoCAD.
Как-то давненько пришлось заниматься локализацией его файлов меню (притом тоже бесплатно Smile), здесь выкладывал готовые менюхи для ACAD'а (51kb). В архиве можно посмотреть как организованы элементы интерфейса: все меню (в т.ч. контекстные), пиктограмы тулбаров, горячие клавиши (раздел "ACCELERATORS") и т.д. и т.п. - по моему этот вариант был бы очень удобен для обычных пользователей (не программистов). Ещё в ACAD'е есть спец. редактор меню для визуального формирования/редактирования перечисленных элементов интерфейса. Итого я не встречал системы, в которой настройка интерфейса была бы удобнее и прозрачнее.

Вопрос только один - как тогда поддерживать всю гибкость, которую нам даёт ContextMenu-плагин? Т.е. вызовы с параметрами/без параметров; вызовы с помощью Call, Exec или Command?
В ACAD'е это решается внутренним простеньким макро-языком.

В общем тема адаптации настройки интерфейса для обычных пользователей совместно с локализацией на самом деле очень интересна...

Fr0sT, Ваша идея тоже клас!
Но главное оставить возможность нескольких этих вариантов, т.к. я столкнулся с тем, что, к примеру, для меню последних файлов то же действие нужно называть немного иначе...
Back to top
View user's profile Send private message Visit poster's website
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Tue Jul 24, 2007 3:54 pm    Post subject: Re: +1 Reply with quote

VladSh wrote:

Вопрос только один - как тогда поддерживать всю гибкость, которую нам даёт ContextMenu-плагин? Т.е. вызовы с параметрами/без параметров; вызовы с помощью Call, Exec или Command?

Ну, визуальная правка меню - это уже следующий этап, думаю, сейчас надо решить с названиями.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Wed Jul 25, 2007 9:37 am    Post subject: Reply with quote

Fr0sT
Quote:
3) Нажатие Enter в то время как фокус у листбокса подразумевает запуск скрипта, а не закрытие окна... вообще, полезность двух кнопок для закрытия именно этого окна представляется мне сомнительной.
В последней версии уже было исправлено (будет доступна после релиза 3.3.5).
P.S. эти замечание лучше было написать в теме про Scripts плагин.

VladSh
Quote:
Похоже, что кнопки "ОК" и "Отмена" выполняют одно и то же действие - "Закрыть" (окно скриптов). Или я чего недопонял.
"ОК" - сохранить и закрыть, "Отмена" - выйти без сохранения.

Last edited by Instructor on Wed Jul 25, 2007 9:53 am; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
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 ... 41, 42, 43  Next
Page 3 of 43

 
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