Scripts discussion (2)
- Author
- Message
-
Offline
- Posts: 173
- Joined: Mon Dec 06, 2010 9:53 am
- Location: г.Харьков, Русь
ScreenView.js
KDJ, Можно ли в плагине ScreenView.js ввести окно выбора и чекбокс влючения для изменения оконного режима - SDI-MDI-PMDI ? (как сделано для Font, ColorTheme, ColorCoderTheme)
Использую так-же плагин LineBoardRClickPanel.js Совместное использование позволяет создавать очень гибкие еонфигурации, например такую, когда для текста отводится все место, остается только панель нумерации строк и возможность вызвать два контекстных меню - меню поля редактирования и меню, вызываемое скриптом LineBoardRClickPanel.js. Здесь нужен режим PMDI - иначе есть риск остаться без всяких меню закрыв последнюю вкладку. А вот, например режим совместной прокрутки двух документов в одном окне для визуального сравнения ( Call("Scripts::Main", 1, "tileTabs.js")) - требует режим MDI... это я навскидку назвал пару примеров, когда нужно менять режим работы окна, есть и другие.
Использую так-же плагин LineBoardRClickPanel.js Совместное использование позволяет создавать очень гибкие еонфигурации, например такую, когда для текста отводится все место, остается только панель нумерации строк и возможность вызвать два контекстных меню - меню поля редактирования и меню, вызываемое скриптом LineBoardRClickPanel.js. Здесь нужен режим PMDI - иначе есть риск остаться без всяких меню закрыв последнюю вкладку. А вот, например режим совместной прокрутки двух документов в одном окне для визуального сравнения ( Call("Scripts::Main", 1, "tileTabs.js")) - требует режим MDI... это я навскидку назвал пару примеров, когда нужно менять режим работы окна, есть и другие.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Небольшое дополнение.
Версии AkelPad'а и Scripts, напоминаю, по-прежнему тестовые.
У меня еще и на стареньком VersionInfo.js периодически падает.
Только этот под отладкой ни в какую не падает, тогда как tileTabs.js стабильно падает как раз при подключении отладчика (а в нормальных условиях – только периодически).
Если сделать «Run To Cursor» к концу файла, то падает, но ничего интересного не показывает. Даже переменные все почему-то в undefined стоят – кроме функций и объектов AkelPad, WScript и Constants.
Версии AkelPad'а и Scripts, напоминаю, по-прежнему тестовые.
У меня еще и на стареньком VersionInfo.js периодически падает.
Только этот под отладкой ни в какую не падает, тогда как tileTabs.js стабильно падает как раз при подключении отладчика (а в нормальных условиях – только периодически).
Если сделать «Run To Cursor» к концу файла, то падает, но ничего интересного не показывает. Даже переменные все почему-то в undefined стоят – кроме функций и объектов AkelPad, WScript и Constants.
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Re: ScreenView.js
It seems to me that the script ScreenView.js is no right place for the function switching window mode.San_dr wrote:Можно ли в плагине ScreenView.js ввести окно выбора и чекбокс влючения для изменения оконного режима - SDI-MDI-PMDI ?
For fast switching, you can assign shortcut keys or put icons on the toolbar and use the script restart.js.
Example for toolbar:
Code: Select all
"SDI" Call("Scripts::Main", 1, "EvalCmd.js", `if (AkelPad.IsMDI() != 0) {AkelPad.Command(4261); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
"MDI" Call("Scripts::Main", 1, "EvalCmd.js", `if (AkelPad.IsMDI() != 1) {AkelPad.Command(4262); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
"PMDI" Call("Scripts::Main", 1, "EvalCmd.js", `if (AkelPad.IsMDI() != 2) {AkelPad.Command(4263); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Даже? Это первое, что надо было сделатьInfocatcher wrote:Я даже на всякий случай проверил без
У тестовых файлов отличающаяся архитектура, поэтому не используйте их в рабочей папке: 4.8.8 Dev + Scripts плагин.
Добрался до Win7 падения действительно есть на winMergeTabs.js и tileTabs.js, где используется "AkelPad.WindowSubClass(hMainWnd". Стоило поменять на "AkelPad.WindowSubClass(1 /*WSC_MAINPROC*/", как падений больше не было.
-
Offline
- Posts: 173
- Joined: Mon Dec 06, 2010 9:53 am
- Location: г.Харьков, Русь
KDJ, помоги, не хватает ума - как мне слить в одной кнопке или пункте меню такие действия (если это возможно):
Call("Scripts::Main", 1, "ScreenView.js", '-View="Default" -FullScreen=0') + Call("Scripts::Main", 1, "EvalCmd.js", `if (AkelPad.IsMDI() != 1) {AkelPad.Command(4262); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
Call("Scripts::Main", 1, "ScreenView.js", '-View="Default" -FullScreen=0') + Call("Scripts::Main", 1, "EvalCmd.js", `if (AkelPad.IsMDI() != 1) {AkelPad.Command(4262); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
San_dr
Code: Select all
"MDI" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="Default" -FullScreen=0'); if (AkelPad.IsMDI() != 1) {AkelPad.Command(4262); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
-
Offline
- Posts: 173
- Joined: Mon Dec 06, 2010 9:53 am
- Location: г.Харьков, Русь
Dziękujemy! Udało się.KDJ wrote:Code: Select all
"MDI" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="Default" -FullScreen=0'); if (AkelPad.IsMDI() != 1) {AkelPad.Command(4262); AkelPad.Call("Scripts::Main", 1, "restart.js");}`)
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Ммм... а, возможно, и нет.Instructor wrote:Даже? Это первое, что надо было сделатьInfocatcher wrote:Я даже на всякий случай проверил без
Я снова убрал autoSaveSession.js из автозагрузки (пока что на старых версиях), так пока что tileTabs.js падает только при отладке. Во всяком случае, выходит, что с autoSaveSession.js частота падений выше.
Хм, с autoSaveSession.js уже не проверить.Instructor wrote:У тестовых файлов отличающаяся архитектура, поэтому не используйте их в рабочей папке: 4.8.8 Dev + Scripts плагин.
Под отладкой tileTabs.js по-прежнему падает, без отладки пока ни разу не упал.
А нельзя ли в oSys.RegisterCallback() проверять тип первого аргумента, чтобы все старые скрипты по-прежнему работали?
Или как можно из самого скрипта проверить, не запущен ли он на старой версии?
Upd:
Более того, если в autoSaveSession.js закомментировать собственно сохранение:
Code: Select all
//AkelPad.Call("Sessions::Main", 2, sessionName);
Даже вот такого достаточно в автозагрузке, чтобы увеличить частоту падений:
Upd #2:
Вообще, логично предположить, что и скрипт в автозагрузке, и отладка влияют на «производительность» обработки сообщений. То есть что-то начинает работать медленнее, а другое что-то некорректно ожидает окончания предыдущей операции.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Для проверки подключил AutoScript-Sample1.js, так и с ним tileTabs.js падает, хотя и, кажется, пореже...
Причем с последними тестовыми версиями AkelPad'а и Scripts тоже воспроизводится.
P.S. Использовались tileTabs-test.js + timer.js
Причем с последними тестовыми версиями AkelPad'а и Scripts тоже воспроизводится.
P.S. Использовались tileTabs-test.js + timer.js
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Если попробовать добавить?Infocatcher wrote:Все, кроме вот этогоу меня в наличии.Code: Select all
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{51973C2F-CB0C-11D0-B5C9-00A0244A0E7A}] @="IProcessDebugManager"
А нельзя ли в oSys.RegisterCallback() проверять тип первого аргумента, чтобы все старые скрипты по-прежнему работали?
Code: Select all
try
{
oSys.RegisterCallback(timerProc);
}
catch ()
{
oSys.RegisterCallback("timerProc");
}
Как будет возможность, проверю на Win7.Причем с последними тестовыми версиями AkelPad'а и Scripts тоже воспроизводится.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Добавил.Instructor wrote:Если попробовать добавить?Infocatcher wrote:Все, кроме вот этогоу меня в наличии.Code: Select all
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{51973C2F-CB0C-11D0-B5C9-00A0244A0E7A}] @="IProcessDebugManager"
После перезагрузки (пока не перезагрузился, изменений не было) при запуске AkelPad'а стало выводиться вот такое сообщение:
Выводит егоMicrosoft Visual Studio Debugger
---------------------------
An exception occurred. Process will be terminated. (Exception address is 00413E6C)
---------------------------
ОК
"C:\Program Files\Common Files\Microsoft Shared\VS7Debug\VS7JIT.EXE" -Embedding
И через какое-то время (секунд через 50) вылезает еще вот такое:
Кстати, без этого ключа в реестре еще и AkelPad при запуске падал.Just-In-Time Debugging
---------------------------
An exception 'Runtime Error' has occurred in Script.
However, no debuggers are registered that can debug this exception. Unable to JIT debug.
---------------------------
ОК
Если убрать галочку «с начала», то, вроде, вообще ничего визуально не меняется.
Если запускать с правами администратора, то результат точно такой же, только окошко с сообщением об ошибке уже не может перехватить фокус.
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
FileAndStream_functions.js
Added ability to call IsSupportStreams() function without a parameter or with empty string, for checking the current drive.
Added ability to call IsSupportStreams() function without a parameter or with empty string, for checking the current drive.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Instructor
А на работе уже Visual Studio 2005 на борту, при падении предлагает отладку.
Upd: Отладка скриптов тут запускается без проблем (но только с галочкой «с начала»), при этом падает там же. Информации о падении не видать, а если в окошке о том, что программа упала, выбрать «Отладка», то выдает
Upd #2:
А на работе уже Visual Studio 2005 на борту, при падении предлагает отладку.
Upd: Отладка скриптов тут запускается без проблем (но только с галочкой «с начала»), при этом падает там же. Информации о падении не видать, а если в окошке о том, что программа упала, выбрать «Отладка», то выдает
Система, в принципе, такая же: Windows 7 x86 SP1, только корпоративная версия и есть VS 2005.Microsoft Visual Studio
---------------------------
Unable to attach to the crashing process. A debugger is already attached.
---------------------------
ОК
Upd #2:
Я что-то туплю, без галочки надо было «AkelPad.DebugJIT();» в коде добавить?(но только с галочкой «с начала»)