KDJ, Можно ли в плагине ScreenView.js ввести окно выбора и чекбокс влючения для изменения оконного режима - SDI-MDI-PMDI ? (как сделано для Font, ColorTheme, ColorCoderTheme)
Использую так-же плагин LineBoardRClickPanel.js Совместное использование позволяет создавать очень гибкие еонфигурации, например такую, когда для текста отводится все место, остается только панель нумерации строк и возможность вызвать два контекстных меню - меню поля редактирования и меню, вызываемое скриптом LineBoardRClickPanel.js. Здесь нужен режим PMDI - иначе есть риск остаться без всяких меню закрыв последнюю вкладку. А вот, например режим совместной прокрутки двух документов в одном окне для визуального сравнения ( Call("Scripts::Main", 1, "tileTabs.js")) - требует режим MDI... это я навскидку назвал пару примеров, когда нужно менять режим работы окна, есть и другие.
Posted: Sat Apr 05, 2014 1:10 pm
by Skif_off
San_dr wrote:чекбокс влючения для изменения оконного режима - SDI-MDI-PMDI?
Для этого, вероятно, понадобится перезапуск AkelPad.
Posted: Sat Apr 05, 2014 1:20 pm
by San_dr
Skif_off wrote:
Для этого, вероятно, понадобится перезапуск AkelPad.
Скорее всего, но не думаю, чтоб это было проблемой, просто надо, чтобы возле чекбокса была предупреждающая надпись о необходимости рестарта.,
Posted: Sat Apr 05, 2014 6:56 pm
by Infocatcher
Небольшое дополнение.
Версии AkelPad'а и Scripts, напоминаю, по-прежнему тестовые.
У меня еще и на стареньком VersionInfo.js периодически падает.
Только этот под отладкой ни в какую не падает, тогда как tileTabs.js стабильно падает как раз при подключении отладчика (а в нормальных условиях – только периодически).
Если сделать «Run To Cursor» к концу файла, то падает, но ничего интересного не показывает. Даже переменные все почему-то в undefined стоят – кроме функций и объектов AkelPad, WScript и Constants.
Re: ScreenView.js
Posted: Sat Apr 05, 2014 8:26 pm
by KDJ
San_dr wrote:Можно ли в плагине ScreenView.js ввести окно выбора и чекбокс влючения для изменения оконного режима - SDI-MDI-PMDI ?
It seems to me that the script ScreenView.js is no right place for the function switching window mode.
For fast switching, you can assign shortcut keys or put icons on the toolbar and use the script restart.js.
Example for toolbar:
Infocatcher wrote:Я даже на всякий случай проверил без
Даже? Это первое, что надо было сделать
У тестовых файлов отличающаяся архитектура, поэтому не используйте их в рабочей папке: 4.8.8 Dev + Scripts плагин.
Добрался до Win7 падения действительно есть на winMergeTabs.js и tileTabs.js, где используется "AkelPad.WindowSubClass(hMainWnd". Стоило поменять на "AkelPad.WindowSubClass(1 /*WSC_MAINPROC*/", как падений больше не было.
Posted: Sun Apr 06, 2014 8:05 am
by San_dr
KDJ, помоги, не хватает ума - как мне слить в одной кнопке или пункте меню такие действия (если это возможно):
Infocatcher wrote:Я даже на всякий случай проверил без
Даже? Это первое, что надо было сделать
Ммм... а, возможно, и нет.
Я снова убрал autoSaveSession.js из автозагрузки (пока что на старых версиях), так пока что tileTabs.js падает только при отладке. Во всяком случае, выходит, что с autoSaveSession.js частота падений выше.
Instructor wrote:У тестовых файлов отличающаяся архитектура, поэтому не используйте их в рабочей папке: 4.8.8 Dev + Scripts плагин.
Хм, с autoSaveSession.js уже не проверить.
Под отладкой tileTabs.js по-прежнему падает, без отладки пока ни разу не упал.
А нельзя ли в oSys.RegisterCallback() проверять тип первого аргумента, чтобы все старые скрипты по-прежнему работали?
Или как можно из самого скрипта проверить, не запущен ли он на старой версии?
Upd:
Более того, если в autoSaveSession.js закомментировать собственно сохранение:
Upd #2:
Вообще, логично предположить, что и скрипт в автозагрузке, и отладка влияют на «производительность» обработки сообщений. То есть что-то начинает работать медленнее, а другое что-то некорректно ожидает окончания предыдущей операции.
Posted: Sun Apr 06, 2014 3:07 pm
by Infocatcher
Для проверки подключил AutoScript-Sample1.js, так и с ним tileTabs.js падает, хотя и, кажется, пореже...
Причем с последними тестовыми версиями AkelPad'а и Scripts тоже воспроизводится.
Добавил.
После перезагрузки (пока не перезагрузился, изменений не было) при запуске 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) вылезает еще вот такое:
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.
---------------------------
ОК
Кстати, без этого ключа в реестре еще и AkelPad при запуске падал.
Если убрать галочку «с начала», то, вроде, вообще ничего визуально не меняется.
Если запускать с правами администратора, то результат точно такой же, только окошко с сообщением об ошибке уже не может перехватить фокус.
Posted: Sun Apr 06, 2014 7:59 pm
by KDJ
FileAndStream_functions.js
Added ability to call IsSupportStreams() function without a parameter or with empty string, for checking the current drive.
Posted: Mon Apr 07, 2014 5:20 am
by Infocatcher
Instructor
А на работе уже Visual Studio 2005 на борту, при падении предлагает отладку.
Unhandled exception at 0x003e8b4c in AkelPad.exe: 0xC0000005: Access violation reading location 0x00000182.
No symbols are loaded for any call stack frame. The source code cannot be displayed.
003E8B10 call 003E2C6A
003E8B15 add esp,14h
003E8B18 mov dword ptr [edi],eax
003E8B1A jmp 003E8B20
003E8B1C and dword ptr [esi+28h],0
003E8B20 xor eax,eax
003E8B22 inc eax
003E8B23 jmp 003E8B2A
003E8B25 and dword ptr [edi],0
003E8B28 xor eax,eax
003E8B2A pop edi
003E8B2B pop esi
003E8B2C pop ebx
003E8B2D pop ebp
003E8B2E ret 18h
003E8B31 push ebp
003E8B32 mov ebp,esp
003E8B34 push esi
003E8B35 mov esi,dword ptr [ebp+8]
003E8B38 xor eax,eax
003E8B3A test esi,esi
003E8B3C push edi
003E8B3D mov edi,dword ptr [ebp+1Ch]
003E8B40 jne 003E8B4C
003E8B42 mov esi,dword ptr ds:[3EEF40h]
003E8B48 test esi,esi
003E8B4A je 003E8BAA
003E8B4C cmp dword ptr [esi+8],1 ; <-- падает вот тут
Так что неплохо бы сборку с отладочными символами и актуальный Sessions (потому как это было на последних тестовых AkelPad и Scripts со старой архитектурой).
Впрочем, можно и без Sessions, но на AutoScript-Sample1.js падает реже.
Upd: Отладка скриптов тут запускается без проблем (но только с галочкой «с начала»), при этом падает там же. Информации о падении не видать, а если в окошке о том, что программа упала, выбрать «Отладка», то выдает
Microsoft Visual Studio
---------------------------
Unable to attach to the crashing process. A debugger is already attached.
---------------------------
ОК
Система, в принципе, такая же: Windows 7 x86 SP1, только корпоративная версия и есть VS 2005.
Upd #2:
(но только с галочкой «с начала»)
Я что-то туплю, без галочки надо было «AkelPad.DebugJIT();» в коде добавить?