| View previous topic :: View next topic |
| Author |
Message |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Mon Jul 23, 2007 4:05 pm Post subject: + |
|
|
Ждём-ждём!!!
Похоже в новой версии намечается много вкусненького  |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 24, 2007 7:34 am Post subject: ИДЕЯ |
|
|
| Instructor wrote: | | По пункту 5: когда вкладка очистится, после IDM_NONMENU_FILECLOSE, то затем можно открыть файл через WshShell.Exec (пока нет специальных методов). |
Посмотрел действие меню "Переоткрыть", оно подходит почти полностью (переоткрывает в той же закладке). Может можно использовать его функционал? Добавить опциональный параметр - имя файла (новое для открытия из скрипта)...
Это только идея - не более того. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Wed Jul 25, 2007 10:04 am Post subject: Ещё немного по окну скриптов |
|
|
Понял, отсюда перешёл в соотв. тему.
| Instructor wrote: | VladSh
| Quote: | | Похоже, что кнопки "ОК" и "Отмена" выполняют одно и то же действие - "Закрыть" (окно скриптов). Или я чего недопонял. | "ОК" - сохранить и закрыть, "Отмена" - выйти без сохранения. | Да.
Я хотел сказать, что кнопка "Назначить" вполне могла бы справиться с сохранением изменений, т.е. комбинаций клавиш либо сброса их. Что ещё может сохранить "OK"? |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
Posted: Thu Jul 26, 2007 10:13 pm Post subject: |
|
|
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 |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
Posted: Fri Jul 27, 2007 4:30 am Post subject: |
|
|
VladSh
| Quote: | | Очень часто требуется переименовать текущий файл (открытый в текущей закладке или окне), такой функции к огромному сожалению в AkelPad'е нет, поэтому приходится писать самому... | см. RenameFileDialog.js в дистрибутиве плагина. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Fri Jul 27, 2007 11:38 am Post subject: Комментарии вообще по последним изменениям плагина |
|
|
Глянул на перечень добавленных методов. Это конечно же вроде бы и хорошо, что так их много добавилось...
Но методы все "низкоуровневые" (для работы с памятью и т.д.), что сразу же сужает круг тех, кто будет писать, т.к. это уже не просто JavaScript, - это специальные знания. Если человек знал как работать на низком уровне, то он то же самое мог бы написать в своих плагинах!
Взять к примеру SetClipboardText. Ведь тоже можно было это сделать на низком уровне, но почему-то метод такой добавили? Думаю, потому что это удобно.
По аналогии, как мне кажется, можно было бы сделать 1 метод: OpenFileDialog, тем более внутри AkelPad'а он есть. Я так понимаю это он и есть в выложеных скриптах... куча кода - придётся, если что, постоянно копировать его по файлам скриптов - имхо не удобно!
Если же делать OpenFileDialog, то, я предполагаю, что есть проблема с передачей данных (пути выбранного файла) в скрипт. Но это можно нормально решить:
1). Для простых данных (скаляров) можно сделать как в Нотесах, т.е. передавать/получать данные через *.ini.
2). Для более сложных типов можно через Clipboard:
а). сначала сохранять имеющиеся данные в Clipboard, потом записывать туда имя файла, считывать его в скрипте, а затем возвращать в Clipboard старое значение;
б). использовать для этого отдельную ячейку памяти Clipboard, как это делается в менеджерах буфера обмена.
Т.е. написать ещё одну функцию по получению результата, и, в плане получения данных от главной программы, она была бы универсальной для работы из любого скрипта/плагина. Т.е. в итоге всего пара-тройка методов. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Fri Jul 27, 2007 1:28 pm Post subject: По окну скриптов |
|
|
| Fr0sT wrote: | Классный плагин! Только вот немного бы доработать интерфейс:
1) При открытии окна со списком скриптов ставить фокус на первый элемент листбокса
2) При повторном открытии окна запоминать последний вызванный скрипт и выделять его
3) Нажатие Enter в то время как фокус у листбокса подразумевает запуск скрипта, а не закрытие окна... вообще, полезность двух кнопок для закрытия именно этого окна представляется мне сомнительной. | В последнем релизе сделан 3-й пункт.
п.2 тоже был бы очень важен для удобства. Если, к примеру, я использую какой-то скрипт в данный момент очень часто, то при вызове окна скриптов (у меня Alt+S) останется нажать Enter, т.к. на последнем вызываемом скрипте уже стоит (запомнился) фокус. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
Posted: Sat Jul 28, 2007 3:40 am Post subject: |
|
|
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 |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Sat Jul 28, 2007 1:29 pm Post subject: Ошибка |
|
|
Так вот он какой северный олень!!!
Идея очень неплоха!
НО: скрипт вылетает на строке enum... (я её целиком скопировал у Вас): "Синтаксическая ошибка!"...
help me! |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
Posted: Sat Jul 28, 2007 1:41 pm Post subject: |
|
|
| Ой. enum -> eval. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Sat Jul 28, 2007 2:14 pm Post subject: |
|
|
О! А я уже по инету обыскался, что такое за enum в JavaScript
Теперь не может собрать путь к файлу (ошибка!). Вылетает сообщение между путём проги и прибавляемым какой-то прям "любовный" значок - кружочек со стрелкой вверх-вправо
убирал слэши - не помогает...
Так и думал... попробуйте вывести:
| Code: | | WScript.Echo(AkelPad.GetAkelDir()); |
|
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
Posted: Sat Jul 28, 2007 2:30 pm Post subject: |
|
|
| Да, в XP функция GetWindowModuleFileNameW не работает для другого процесса. Прийдется добавлять новое сообщение в AkelPad. Т.е. метод AkelPad.GetAkelDir() пока не работает в XP. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Sat Jul 28, 2007 3:13 pm Post subject: Всё-таки идея (+) |
|
|
Понял, буду ждать.
А всё-таки, как Вы относитесь к передаче параметров и получению результата через ini?
Сделать раздельчик в ini-файле и туда писать в таком формате:
| Code: | [Temp]
№команды_№вкладки=значение |
Допустим мне нужно открыть файл, я вызываю из AkelPad'а эту функцию, в которой анализируется, если я вызываю её извне, то результат пишется в ini одной функцией, а потом в скрипте другой функцией я считываю этот результат и вытираю его в ini.
Допустим нужно переименовать файл. Я его переименовываю на диске (или создаю такой же файл рядом, только с нужным именем, в конце удаляю старый). Функцией передачи параметров пишу наименование открываемого (нового) файла по вышеуказанному шаблону в ini. Дальше в скрипте вызываю по номеру функцию "Переоткрыть", которая анализирует, если вызов был извне, то с помощью стандартной функции смотрит ini, если там для неё есть имя файла, то значит после закрытия текущего файла нужно открывать тот, что указан в ini; эта же функция после получения результата чистит свою запись в ini.
Анализ на запуск извне у Вас наверное и так делается с помощью WinMessage...
Идея полностью рабочая; в Нотесах и др. ЙиБэЭмовских продуктах встроено по несколько языков программирования (каждый для своих задач) именно так они обмениваются простыми данными, т.е. работают в связке. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4646
|
Posted: Sat Jul 28, 2007 3:25 pm Post subject: |
|
|
VladSh
Страшно даже подумать, что я такое буду реализовывать  |
|
| 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
|