Scripts discussion (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Translator.js
Added:
- ability to run from command line (ActiveX),
- loading source text from Clipboard,
- settings any font,
- Alt+S - settings dialog.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

KDJ
Please increase width for "Show panel with source text" – Russian "Показывать панель с исходным текстом" doesn't fit the width.

If I call Translator.js directly, I receive an empty message:
Windows Script Host
---------------------------

---------------------------
ОК
Updated:

Code: Select all

/*********************************************
Translator.js for AkelPad - Interface language
Version:       2012-09-02
Language:      Russian
Translated by: Infocatcher
*********************************************/
sTxtCaption    = "Переводчик";
sTxtUse        = "Использовать";
sTxtFromLang   = "С языка";
sTxtToLang     = "На язык";
sTxtAutoDetect = "Автоопределение языка";
sTxtTranslate  = "&Перевести";
sTxtTranslateP = "Перевести+";
sTxtOptions    = "Па&раметры";
sTxtSource     = "&Исходный текст";
sTxtTarget     = "&Переведенный текст";
sTxtSettings   = "&Настройки";
sTxtUndo       = "&Отменить";
sTxtRedo       = "Пов&торить";
sTxtCut        = "&Вырезать";
sTxtCopyCB     = "&Копировать в буфер обмена";
sTxtInsertAP   = "В&ставить в AkelPad";
sTxtPasteCB    = "Вст&авить из буфера обмена";
sTxtPasteAP    = "Вставить &из AkelPad'а";
sTxtDelete     = "&Удалить";
sTxtSelectAll  = "В&ыделить все";
sTxtEntireText = "В&есь текст";
sTxtInterface  = "Язык интерфейса";
sTxtSourceInCB = "Исходный текст из буфера обмена";
sTxtSourceWnd  = "Показывать панель с исх. текстом";
sTxtLoadText   = "Загружать исходный текст при запуске";
sTxtImmediate  = "Переводить при запуске";
sTxtWordWrap   = "Перенос строк";
sTxtUseFontAP  = "Использовать Шрифт из AkelPad'а";
sTxtFontAP     = "Шрифт из AkelPad'а";
sTxtFontGUI    = "Шрифт интерфейса";
sTxtSortLang   = "Сортировка языков";
sTxtSortCode   = "По коду";
sTxtSortName   = "По названию";
sTxtOwnKey     = "свой ключ";
sTxtRegister   = "Регистрация:";
sTxtOK         = "ОК";
sTxtCancel     = "Отмена";
sTxtError      = "Ошибка";
sTxtNoText     = "Нет текста для перевода.";
sTxtNoSupport  = "Ваша система не поддерживает XMLHttpRequest.";
sTxtNoInternet = "Проблема с подключением к Интернету.";
sTxtWait       = "Подождите...";
sTxtUndefined  = "Неизвестный";
sTxtRegScripts = "Вы должны зарегистрировать библиотеку: Scripts.dll";
sTxtNoLibrary  = "Не удалось загрузить библиотеку: ";

aLangs[ 0][1] = "Африкаанс";
aLangs[ 1][1] = "Арабский";
aLangs[ 2][1] = "Белорусский";
aLangs[ 3][1] = "Болгарский";
aLangs[ 4][1] = "Каталонский";
aLangs[ 5][1] = "Чешский";
aLangs[ 6][1] = "Валлийский";
aLangs[ 7][1] = "Датский";
aLangs[ 8][1] = "Немецкий";
aLangs[ 9][1] = "Греческий";
aLangs[10][1] = "Английский";
aLangs[11][1] = "Эсперанто";
aLangs[12][1] = "Испанский";
aLangs[13][1] = "Эстонский";
aLangs[14][1] = "Персидский";
aLangs[15][1] = "Финский";
aLangs[16][1] = "Французский";
aLangs[17][1] = "Ирландский";
aLangs[18][1] = "Галисийский";
aLangs[19][1] = "Хинди";
aLangs[20][1] = "Хорватский";
aLangs[21][1] = "Гаитянский креольский";
aLangs[22][1] = "Венгерский";
aLangs[23][1] = "Индонезийский";
aLangs[24][1] = "Исландский";
aLangs[25][1] = "Итальянский";
aLangs[26][1] = "Еврейский";
aLangs[27][1] = "Японский";
aLangs[28][1] = "Корейский";
aLangs[29][1] = "Латынь";
aLangs[30][1] = "Литовский";
aLangs[31][1] = "Латышский";
aLangs[32][1] = "Македонский";
aLangs[33][1] = "Малайский";
aLangs[34][1] = "Мальтийский";
aLangs[35][1] = "Голландский";
aLangs[36][1] = "Норвежский";
aLangs[37][1] = "Польский";
aLangs[38][1] = "Португальский";
aLangs[39][1] = "Румынский";
aLangs[40][1] = "Русский";
aLangs[41][1] = "Словацкий";
aLangs[42][1] = "Словенский";
aLangs[43][1] = "Албанский";
aLangs[44][1] = "Сербский";
aLangs[45][1] = "Шведский";
aLangs[46][1] = "Суахили";
aLangs[47][1] = "Тайский";
aLangs[48][1] = "Филиппинский";
aLangs[49][1] = "Турецкий";
aLangs[50][1] = "Украинский";
aLangs[51][1] = "Вьетнамский";
aLangs[52][1] = "Идиш";
aLangs[53][1] = "Китайский";
aLangs[54][1] = "Китайский Упрощенный";
aLangs[55][1] = "Китайский Традиционный";

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Infocatcher wrote:If I call Translator.js directly, I receive an empty message:
Probably you don't have registered library Scripts.dll.
Thank you for the translation.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher wrote:узнать текущую синтаксическую тему. Или все же можно?
...:
VladSh wrote:Для определения типа файла можно было бы использовать getExtBySyntaxFile из CommonFunctions.js.
По предложению F. Phoenix функция переименована в getActiveSyntax.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh
Так толку от нее?
Если там может быть _html.coder, html_ext.coder или еще чего.

KDJ wrote:Probably you don't have registered library Scripts.dll.
Yes. But can you show correct error message in this case?

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Infocatcher wrote:But can you show correct error message in this case?
Yes, bugs will be corrected.

Can you change "&Настройки" -> "Настройки" in translation.
It is also the title of dialog box.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher wrote:Так толку от нее?
Если там может быть _html.coder, html_ext.coder или еще чего.
Можно договориться, что расширение (псевдоним) у всех будет идти впереди, а разные "уточнения" через символ подчёркивания, т.е. такой формат: html_ext.coder. Толк будет.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

KDJ wrote:Can you change "&Настройки" -> "Настройки" in translation.
It is also the title of dialog box.
Oh, I missed this.
Should be "Настройки" of course.


VladSh
Да как-то универсальность теряется, всех же не договоришь. Лучше бы GetAlias.js доработать. :?

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

VladSh wrote:При запуске в откорректированном chm'нике ветки «Объекты» -> «Стандартные объекты» -> «Array» COMODO выдал сообщение "Приложение JavaScript-Fixed.chm пытается изменить защищённый ключ реестра ...", можно ли как-то убрать из chm'ника записи чего бы то ни было в реестр?
Ниче особенного в Array.html не нашел, и RegFromApp никаких изменений не видит, хотя hh.exe и довольно активно с реестром работает (скрин). Хз, че там Комодо не нравится. На оригинальный не орал? На вот проектик под HTML Help Workshop, может получше разберешься: архив, git-репа.

Infocatcher wrote:Да как-то универсальность теряется, всех же не договоришь. Лучше бы GetAlias.js доработать. :?
Ну если чисто скриптами, то наверн проще таки от 16го вызова плясать: реализовать считывание всех расширений в массив. Там, кстати, еще 12й вызов был на проверку алиаса, но без примера использования. А в идеале, конечно, лучше трясти Инструктора, чтоб побольше функций сделал :D Наверняка же все эти данные в памяти лежат, а так каждый раз по новой парсить. (по теме)

Набросок:

Code: Select all

// Возвращает имя используемого coder-файла.
function GetSyntaxFile(hWndEdit)
{
	if (arguments.length == 0) hWndEdit = AkelPad.GetEditWnd();
	if (!hWndEdit) return "";
	
	var pFile="", lpFile;
	if (lpFile=AkelPad.MemAlloc(256))
	{
		AkelPad.Call("Coder::Settings", 16, hWndEdit, lpFile, 256);
		pFile=AkelPad.MemRead(lpFile, 1  /*DT_UNICODE*/);
		AkelPad.MemFree(lpFile);
	}
	return pFile;
}

// Возвращает псевдоним синтаксической темы, установленной вручную (расширение, по которому та была установлена).
function GetSyntaxAlias()
{
	var hWndEdit = AkelPad.GetEditWnd(), hDocEdit = AkelPad.GetEditDoc();
	if (!hWndEdit || !hDocEdit) return "";
	
	var pAlias="", lpAlias;
	if (lpAlias=AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/))
	{
		AkelPad.CallW("Coder::Settings", 18 /*DLLA_CODER_GETALIAS*/, hWndEdit, hDocEdit, lpAlias, 0);
		pAlias=AkelPad.MemRead(lpAlias, 1 /*DT_UNICODE*/);
		AkelPad.MemFree(lpAlias);
	}
	return pAlias;
}

// Возвращает массив расширений текущей синтаксической темы.
function GetSyntaxExtensions(hWndEdit)
{
	var pText = AkelPad.ReadFile(AkelPad.GetAkelDir(4) + "\\Coder\" + GetSyntaxFile(hWndEdit), 0xD).replace(/\r\n?/g, "\n");
	var mSection = pText.match(/^Files:\n((?:(?:\*\..*?|;.*?|\s*?)\n)+)/m);
	return mSection[1].match(/^\*\.\w+/gmi);
	// тут, как вариант, можно все это поместить в try-catch с возвратом null, но в данном контексте лучше уж пусть исключения вылетают
}



PS: Чет и в плагинной запускалке скриптов нет функции завершения, а RunScript.js вообще зависает, пока скрипт не завершится. Приходится после каждого косяка с зацикливанием Акел закрывать :(

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher wrote:Да как-то универсальность теряется, всех же не договоришь. Лучше бы GetAlias.js доработать.
Я не против, только, по моему, это те же коки, только вид с боку. Одна функция с расширением .coder возвращает имя файла, а другая без, и, к тому же, недопиленная.
F. Phoenix wrote:Ниче особенного в Array.html не нашел, и RegFromApp никаких изменений не видит, хотя hh.exe и довольно активно с реестром работает (скрин). Хз, че там Комодо не нравится. На оригинальный не орал?
На оригинальный - нет.
Думаю, что это hh.exe, но COMODO кричит на JavaScript-Fixed.chm, т.к. я же его пытаюсь открыть (хотя это походу неправильно). Попробую дома оригинальный переименовать и посмотреть что получится.
Ну и понять бы, что hh.exe пишет.. предполагаю, что можно его забанить его записи в реестр, т.к. при нажатии в Комоде запрета всё отлично открылось, а значит не сильно и надо.
F. Phoenix wrote:Набросок: CoderFunctions.js
Когда добьём, то можно будет из CommonFunctions.js этот кусок вырубить и всем скриптописателям юзать этот скрипт.
Я вообще за то, чтобы так писать скрипты-"библиотеки", чтобы все ими пользовались.
F. Phoenix wrote:PS: Чет и в плагинной запускалке скриптов нет функции завершения, а RunScript.js вообще зависает, пока скрипт не завершится. Приходится после каждого косяка с зацикливанием Акел закрывать :(
Это уже просили, ждём. Кнопка "Остановить" или "Завершить" была бы в самый раз.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Translator.js
Fixed minor bugs.
Updated Russian translation.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

F. Phoenix
VladSh wrote:На оригинальный - нет.
Думаю, что это hh.exe, но COMODO кричит на JavaScript-Fixed.chm, т.к. я же его пытаюсь открыть (хотя это походу неправильно). Попробую дома оригинальный переименовать и посмотреть что получится.
На оригинальной всё ещё хуже - 2 раза пыталось подключиться к инету. Раньше этого не замечали, т.к. использовали для открытия ChmKw.exe, а тут скачал пофиксеный chm'ник и запустил.

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Ну вот и я заметил только когда без инета остался - и вырезал собсно, что нашел :lol:

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

KDJ wrote:CaretOptionsSwitch.js
Adapted for ContextMenu.
The disadvantage is that if you call script from menu then button with the same script on the toolbar displayed as not pressed.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

VladSh
I think it is not possible to make it work both in the menu and on the toolbar.
Locked