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 

Scripts plugin
Goto page Previous  1, 2, 3, 4 ... 53, 54, 55  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: Mon Jul 23, 2007 4:05 pm    Post subject: + Reply with quote

Ждём-ждём!!! Arrow
Похоже в новой версии намечается много вкусненького Smile
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Tue Jul 24, 2007 7:34 am    Post subject: ИДЕЯ Reply with quote

Instructor wrote:
По пункту 5: когда вкладка очистится, после IDM_NONMENU_FILECLOSE, то затем можно открыть файл через WshShell.Exec (пока нет специальных методов).

Idea Посмотрел действие меню "Переоткрыть", оно подходит почти полностью (переоткрывает в той же закладке). Может можно использовать его функционал? Добавить опциональный параметр - имя файла (новое для открытия из скрипта)... Smile
Это только идея - не более того.
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 25, 2007 10:04 am    Post subject: Ещё немного по окну скриптов Reply with quote

Понял, отсюда перешёл в соотв. тему.

Instructor wrote:
VladSh
Quote:
Похоже, что кнопки "ОК" и "Отмена" выполняют одно и то же действие - "Закрыть" (окно скриптов). Или я чего недопонял.
"ОК" - сохранить и закрыть, "Отмена" - выйти без сохранения.
Да.
Я хотел сказать, что кнопка "Назначить" вполне могла бы справиться с сохранением изменений, т.е. комбинаций клавиш либо сброса их. Что ещё может сохранить "OK"?
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Thu Jul 26, 2007 10:13 pm    Post subject: Reply with quote

Now with script you can execute any windows function and even create your own dialog.

Changed: AkelPad 3.3.5 required.

Added: SystemFunction, SystemFunction.AddParameter, SystemFunction.Call, SystemFunction.GetLastError, MemAlloc, MemCopy, MemRead, MemFree, WindowRegisterClass, WindowUnregisterClass, WindowGetMessage, GetInstanceDll, IsOldWindows, ReadFile methods.
Added: hotkey's names.

Fixed: enter key didn't execute script.


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


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Fri Jul 27, 2007 4:30 am    Post subject: Reply with quote

VladSh
Quote:
Очень часто требуется переименовать текущий файл (открытый в текущей закладке или окне), такой функции к огромному сожалению в AkelPad'е нет, поэтому приходится писать самому...
см. RenameFileDialog.js в дистрибутиве плагина.
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Fri Jul 27, 2007 11:38 am    Post subject: Комментарии вообще по последним изменениям плагина Reply with quote

Глянул на перечень добавленных методов. Это конечно же вроде бы и хорошо, что так их много добавилось...
Но методы все "низкоуровневые" (для работы с памятью и т.д.), что сразу же сужает круг тех, кто будет писать, т.к. это уже не просто JavaScript, - это специальные знания. Если человек знал как работать на низком уровне, то он то же самое мог бы написать в своих плагинах!

Взять к примеру SetClipboardText. Ведь тоже можно было это сделать на низком уровне, но почему-то метод такой добавили? Думаю, потому что это удобно.
По аналогии, как мне кажется, можно было бы сделать 1 метод: OpenFileDialog, тем более внутри AkelPad'а он есть. Я так понимаю это он и есть в выложеных скриптах... куча кода - придётся, если что, постоянно копировать его по файлам скриптов - имхо не удобно!
Если же делать OpenFileDialog, то, я предполагаю, что есть проблема с передачей данных (пути выбранного файла) в скрипт. Но это можно нормально решить:
1). Для простых данных (скаляров) можно сделать как в Нотесах, т.е. передавать/получать данные через *.ini.
2). Для более сложных типов можно через Clipboard:
а). сначала сохранять имеющиеся данные в Clipboard, потом записывать туда имя файла, считывать его в скрипте, а затем возвращать в Clipboard старое значение;
б). использовать для этого отдельную ячейку памяти Clipboard, как это делается в менеджерах буфера обмена.
Т.е. написать ещё одну функцию по получению результата, и, в плане получения данных от главной программы, она была бы универсальной для работы из любого скрипта/плагина. Т.е. в итоге всего пара-тройка методов.
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Fri Jul 27, 2007 1:28 pm    Post subject: По окну скриптов Reply with quote

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

п.2 тоже был бы очень важен для удобства. Если, к примеру, я использую какой-то скрипт в данный момент очень часто, то при вызове окна скриптов (у меня Alt+S) останется нажать Enter, т.к. на последнем вызываемом скрипте уже стоит (запомнился) фокус.
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Sat Jul 28, 2007 3:18 am    Post subject: Reply with quote

Added: GetAkelDir method.


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


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Sat Jul 28, 2007 3:40 am    Post subject: Reply with quote

VladSh
Quote:
По аналогии, как мне кажется, можно было бы сделать 1 метод: OpenFileDialog, тем более внутри AkelPad'а он есть.
Вся прелесть добавленных методов заключается в том, что из скрипта можно вызвать практически любую системную функцию, не прибегая к компиляции своего dll. И диалог выбора файла вызывается не из AkelPad'а, а прямиком из comdlg32.dll.
Quote:
куча кода - придётся, если что, постоянно копировать его по файлам скриптов - имхо не удобно!

CommonFunctions.js
Code:

function FileOpenDialogA(pInitialFile, pFilter)
{
//...
}
function FileOpenDialogW(pInitialFile, pFilter)
{
//...
}

MyScript1.js
Code:
var AkelPad=new ActiveXObject("AkelPad.document");

//Include common functions
eval(AkelPad.ReadFile(AkelPad.GetAkelDir() + "\\AkelFiles\\Plugs\\Scripts\\CommonFunctions.js", 0xD, 0, 0));

//Your MyScript1 code
FileOpenDialogA(...);


MyScript2.js
Code:
var AkelPad=new ActiveXObject("AkelPad.document");

//Include common functions
eval(AkelPad.ReadFile(AkelPad.GetAkelDir() + "\\AkelFiles\\Plugs\\Scripts\\CommonFunctions.js", 0xD, 0, 0));

//Your MyScript2 code
FileOpenDialogA(...);


Last edited by Instructor on Sat Jul 28, 2007 1:42 pm; edited 2 times in total
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Sat Jul 28, 2007 1:29 pm    Post subject: Ошибка Reply with quote

Так вот он какой северный олень!!! Laughing
Идея очень неплоха! Cool

НО: скрипт вылетает на строке enum... (я её целиком скопировал у Вас): "Синтаксическая ошибка!"...
help me!
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Sat Jul 28, 2007 1:41 pm    Post subject: Reply with quote

Ой. enum -> eval.
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Sat Jul 28, 2007 2:14 pm    Post subject: Reply with quote

О! А я уже по инету обыскался, что такое за enum в JavaScript Smile

Теперь не может собрать путь к файлу (ошибка!). Вылетает сообщение между путём проги и прибавляемым какой-то прям "любовный" значок - кружочек со стрелкой вверх-вправо Very Happy
убирал слэши - не помогает...

Так и думал... попробуйте вывести:
Code:
WScript.Echo(AkelPad.GetAkelDir());
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Sat Jul 28, 2007 2:30 pm    Post subject: Reply with quote

Да, в XP функция GetWindowModuleFileNameW не работает для другого процесса. Прийдется добавлять новое сообщение в AkelPad. Т.е. метод AkelPad.GetAkelDir() пока не работает в XP.
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Sat Jul 28, 2007 3:13 pm    Post subject: Всё-таки идея (+) Reply with quote

Понял, буду ждать.

А всё-таки, как Вы относитесь к передаче параметров и получению результата через ini?
Сделать раздельчик в ini-файле и туда писать в таком формате:
Code:
[Temp]
№команды_№вкладки=значение

Допустим мне нужно открыть файл, я вызываю из AkelPad'а эту функцию, в которой анализируется, если я вызываю её извне, то результат пишется в ini одной функцией, а потом в скрипте другой функцией я считываю этот результат и вытираю его в ini.

Допустим нужно переименовать файл. Я его переименовываю на диске (или создаю такой же файл рядом, только с нужным именем, в конце удаляю старый). Функцией передачи параметров пишу наименование открываемого (нового) файла по вышеуказанному шаблону в ini. Дальше в скрипте вызываю по номеру функцию "Переоткрыть", которая анализирует, если вызов был извне, то с помощью стандартной функции смотрит ini, если там для неё есть имя файла, то значит после закрытия текущего файла нужно открывать тот, что указан в ini; эта же функция после получения результата чистит свою запись в ini.

Анализ на запуск извне у Вас наверное и так делается с помощью WinMessage...

Идея полностью рабочая; в Нотесах и др. ЙиБэЭмовских продуктах встроено по несколько языков программирования (каждый для своих задач) именно так они обмениваются простыми данными, т.е. работают в связке.
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Sat Jul 28, 2007 3:25 pm    Post subject: Reply with quote

VladSh
Страшно даже подумать, что я такое буду реализовывать Smile
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 ... 53, 54, 55  Next
Page 3 of 55

 
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