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 collection
Goto page Previous  1, 2, 3 ... 11, 12, 13 ... 17, 18, 19  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
KDJ



Joined: 06 Mar 2010
Posts: 1395
Location: Poland

PostPosted: Wed May 25, 2011 6:43 pm    Post subject: Reply with quote

Interface language files for Translator.js.
File name should have such structure: ScriptNameWithoutExtension_LanguageName.lng

Translator_English.lng

Code:
/********************************
Translator.js - ver. 2014-07-28
Interface language
Language:      English
Translated by: KDJ
********************************/
sTxtCaption    = "Translator";
sTxtUse        = "Use";
sTxtFromLang   = "From language";
sTxtToLang     = "To language";
sTxtAutoDetect = "Auto detect language";
sTxtListen     = "Listen";
sTxtTranslate  = "&Translate";
sTxtTranslateP = "Translate+";
sTxtOptions    = "&Options";
sTxtSource     = "Source text";
sTxtTarget     = "Translated text";
sTxtSettings   = "Settings";
sTxtUndo       = "&Undo";
sTxtRedo       = "&Redo";
sTxtCut        = "&Cut";
sTxtCopyCB     = "C&opy to clipboard";
sTxtInsertAP   = "&Insert to AkelPad";
sTxtPasteCB    = "&Paste from clipboard";
sTxtPasteAP    = "Pa&ste from AkelPad";
sTxtDelete     = "&Delete";
sTxtSelectAll  = "Select &all";
sTxtEntireText = "&Entire text";
sTxtInterface  = "Interface language";
sTxtSourceInCB = "Source text from Clipboard";
sTxtSourceWnd  = "Show panel with source text";
sTxtLoadText   = "Load source text to panel at start";
sTxtImmediate  = "Start immediately translate";
sTxtWordWrap   = "Wrap lines";
sTxtFontAP     = "Font from AkelPad";
sTxtFontGUI    = "GUI font";
sTxtSortLang   = "Languages sort";
sTxtSortCode   = "By code";
sTxtSortName   = "By name";
sTxtOwnKey     = "own key";
sTxtRegister   = "Registration:";
sTxtOK         = "OK";
sTxtCancel     = "Cancel";
sTxtError      = "Error";
sTxtNoText     = "There is no text to translate.";
sTxtNoSupport  = "Your system does not support XMLHttpRequest.";
sTxtNoInternet = "There was a problem with internet connection.";
sTxtWait       = "Wait...";
sTxtUndefined  = "Undefined";
sTxtChooseLang = "You need to choose the language.";
sTxtNoSpeech   = "No support for speech in this language.";
sTxtRegScripts = "You must register library: Scripts.dll";
sTxtNoLibrary  = "Can not load library: ";

aLangs[ 0][1] = "Afrikaans";
aLangs[ 1][1] = "Arabic";
aLangs[ 2][1] = "Azerbaijani";
aLangs[ 3][1] = "Belarusian";
aLangs[ 4][1] = "Bulgarian";
aLangs[ 5][1] = "Bosnian";
aLangs[ 6][1] = "Catalan";
aLangs[ 7][1] = "Czech";
aLangs[ 8][1] = "Welsh";
aLangs[ 9][1] = "Danish";
aLangs[10][1] = "German";
aLangs[11][1] = "Greek";
aLangs[12][1] = "English";
aLangs[13][1] = "Esperanto";
aLangs[14][1] = "Spanish";
aLangs[15][1] = "Estonian";
aLangs[16][1] = "Persian";
aLangs[17][1] = "Finnish";
aLangs[18][1] = "French";
aLangs[19][1] = "Irish";
aLangs[20][1] = "Galician";
aLangs[21][1] = "Hindi";
aLangs[22][1] = "Croatian";
aLangs[23][1] = "Haitian Creole";
aLangs[24][1] = "Hungarian";
aLangs[25][1] = "Armenian";
aLangs[26][1] = "Indonesian";
aLangs[27][1] = "Icelandic";
aLangs[28][1] = "Italian";
aLangs[29][1] = "Hebrew";
aLangs[30][1] = "Japanese";
aLangs[31][1] = "Georgian";
aLangs[32][1] = "Korean";
aLangs[33][1] = "Latin";
aLangs[34][1] = "Lithuanian";
aLangs[35][1] = "Latvian";
aLangs[36][1] = "Macedonian";
aLangs[37][1] = "Malay";
aLangs[38][1] = "Maltese";
aLangs[39][1] = "Dutch";
aLangs[40][1] = "Norwegian";
aLangs[41][1] = "Polish";
aLangs[42][1] = "Portuguese";
aLangs[43][1] = "Romanian";
aLangs[44][1] = "Russian";
aLangs[45][1] = "Slovak";
aLangs[46][1] = "Slovenian";
aLangs[47][1] = "Albanian";
aLangs[48][1] = "Serbian";
aLangs[49][1] = "Swedish";
aLangs[50][1] = "Swahili";
aLangs[51][1] = "Thai";
aLangs[52][1] = "Filipino";
aLangs[53][1] = "Turkish";
aLangs[54][1] = "Ukrainian";
aLangs[55][1] = "Urdu";
aLangs[56][1] = "Vietnamese";
aLangs[57][1] = "Yiddish";
aLangs[58][1] = "Chinese";
aLangs[59][1] = "Chinese Simplified";
aLangs[60][1] = "Chinese Traditional";
- template for translation

Translator_Chinese-Simplified.lng

Code:
/********************************
Translator.js - ver. 2014-07-28
Interface language
Language:      Chinese-Simplified
Translated by: cnnnc
********************************/
sTxtCaption    = "翻译器";
sTxtUse        = "使用";
sTxtFromLang   = "源语言";
sTxtToLang     = "目标语言";
sTxtAutoDetect = "自动检测语言";
sTxtListen     = "朗读";
sTxtTranslate  = "翻译(&T)";
sTxtTranslateP = "翻译+";
sTxtOptions    = "选项(&O)";
sTxtSource     = "来源文本";
sTxtTarget     = "已译文本";
sTxtSettings   = "设置";
sTxtUndo       = "撤消(&U)";
sTxtRedo       = "恢复(&R)";
sTxtCut        = "剪切(&C)";
sTxtCopyCB     = "复制到剪贴板(&O)";
sTxtInsertAP   = "插入到 AkelPad(&I)";
sTxtPasteCB    = "粘贴自剪贴板(&P)";
sTxtPasteAP    = "粘贴自 AkelPad(&S)";
sTxtDelete     = "删除(&D)";
sTxtSelectAll  = "全选(&A)";
sTxtEntireText = "整个文本(&E)";
sTxtInterface  = "界面语言";
sTxtSourceInCB = "源文本来自剪贴板";
sTxtSourceWnd  = "显示源文本的面板";
sTxtLoadText   = "启动时加载源文本到面板";
sTxtImmediate  = "启动时立即翻译";
sTxtWordWrap   = "自动换行";
sTxtFontAP     = "来自 AkelPad 的字体";
sTxtFontGUI    = "GUI 字体";
sTxtSortLang   = "语言排序";
sTxtSortCode   = "按代码";
sTxtSortName   = "按名称";
sTxtOwnKey     = "自定义键";
sTxtRegister   = "登记:";
sTxtOK         = "确定";
sTxtCancel     = "取消";
sTxtError      = "错误";
sTxtNoText     = "无文本可译。";
sTxtNoSupport  = "您的系统不支持 XMLHttpRequest。";
sTxtNoInternet = "因特网连接有问题。";
sTxtWait       = "请稍候...";
sTxtUndefined  = "未定义";
sTxtChooseLang = "您需要选择语言。";
sTxtNoSpeech   = "不支持这种语言的朗读。";
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] = "乌尔都语";
aLangs[56][1] = "越南语";
aLangs[57][1] = "意第绪语";
aLangs[58][1] = "中文";
aLangs[59][1] = "中文(简体)";
aLangs[60][1] = "中文(繁体)";
- by cnnnc

Translator_Polish.lng

Code:
/********************************
Translator.js - ver. 2014-07-28
Interface language
Language:      Polish
Translated by: KDJ
********************************/
sTxtCaption    = "Tłumacz";
sTxtUse        = "Używaj";
sTxtFromLang   = "Z języka";
sTxtToLang     = "Na język";
sTxtAutoDetect = "Auto detekcja języka";
sTxtListen     = "Słuchaj";
sTxtTranslate  = "Przetłumac&z";
sTxtTranslateP = "Przetłumacz+";
sTxtOptions    = "&Opcje";
sTxtSource     = "Tekst źródłowy";
sTxtTarget     = "Tłumaczenie";
sTxtSettings   = "Ustawienia";
sTxtUndo       = "&Cofnij";
sTxtRedo       = "&Powtórz";
sTxtCut        = "&Wytnij";
sTxtCopyCB     = "&Kopiuj do schowka";
sTxtInsertAP   = "Ws&taw do AkelPad'a";
sTxtPasteCB    = "Wkl&ej ze schowka";
sTxtPasteAP    = "Wkle&j z AkelPad'a";
sTxtDelete     = "&Usuń";
sTxtSelectAll  = "Zaznacz w&szystko";
sTxtEntireText = "C&ały tekst";
sTxtInterface  = "Język interfejsu";
sTxtSourceInCB = "Tekst źródłowy ze schowka";
sTxtSourceWnd  = "Pokaż panel z tekstem źródłowym";
sTxtLoadText   = "Wczytaj tekst źródłowy do panela przy starcie";
sTxtImmediate  = "Zacznij od razu tłumaczyć";
sTxtWordWrap   = "Zawijaj wiersze";
sTxtFontAP     = "Czcionka z AkelPad'a";
sTxtFontGUI    = "Czcionka interfejsu GUI";
sTxtSortLang   = "Sortowanie języków";
sTxtSortCode   = "Wg kodu";
sTxtSortName   = "Wg nazwy";
sTxtOwnKey     = "własny klucz";
sTxtRegister   = "Rejestracja:";
sTxtOK         = "OK";
sTxtCancel     = "Anuluj";
sTxtError      = "Błąd";
sTxtNoText     = "Brak tekstu do tłumaczenia.";
sTxtNoSupport  = "Twój system nie obsługuje XMLHttpRequest.";
sTxtNoInternet = "Wystąpił problem z połączeniem internetowym.";
sTxtWait       = "Czekaj...";
sTxtUndefined  = "Niezdefiniowany";
sTxtChooseLang = "Musisz wybrać język.";
sTxtNoSpeech   = "Brak obsługi wymowy dla tego języka.";
sTxtRegScripts = "Musisz zarejestrować bibliotekę: Scripts.dll";
sTxtNoLibrary  = "Nie można załadować biblioteki: ";

aLangs[ 0][1] = "Afrykanerski";
aLangs[ 1][1] = "Arabski";
aLangs[ 2][1] = "Azerski";
aLangs[ 3][1] = "Białoruski";
aLangs[ 4][1] = "Bułgarski";
aLangs[ 5][1] = "Bośniacki";
aLangs[ 6][1] = "Kataloński";
aLangs[ 7][1] = "Czeski";
aLangs[ 8][1] = "Walijski";
aLangs[ 9][1] = "Duński";
aLangs[10][1] = "Niemiecki";
aLangs[11][1] = "Grecki";
aLangs[12][1] = "Angielski";
aLangs[13][1] = "Esperanto";
aLangs[14][1] = "Hiszpański";
aLangs[15][1] = "Estoński";
aLangs[16][1] = "Perski";
aLangs[17][1] = "Fiński";
aLangs[18][1] = "Francuski";
aLangs[19][1] = "Irlandzki";
aLangs[20][1] = "Galicyjski";
aLangs[21][1] = "Hindi";
aLangs[22][1] = "Chorwacki";
aLangs[23][1] = "Haitański Kreolski";
aLangs[24][1] = "Węgierski";
aLangs[25][1] = "Armeński";
aLangs[26][1] = "Indonezyjski";
aLangs[27][1] = "Islandzki";
aLangs[28][1] = "Włoski";
aLangs[29][1] = "Hebrajski";
aLangs[30][1] = "Japoński";
aLangs[31][1] = "Gruziński";
aLangs[32][1] = "Koreański";
aLangs[33][1] = "Łacina";
aLangs[34][1] = "Litewski";
aLangs[35][1] = "Łotewski";
aLangs[36][1] = "Macedoński";
aLangs[37][1] = "Malajski";
aLangs[38][1] = "Maltański";
aLangs[39][1] = "Holenderski";
aLangs[40][1] = "Norweski";
aLangs[41][1] = "Polski";
aLangs[42][1] = "Portugalski";
aLangs[43][1] = "Rumuński";
aLangs[44][1] = "Rosyjski";
aLangs[45][1] = "Słowacki";
aLangs[46][1] = "Słoweński";
aLangs[47][1] = "Albański";
aLangs[48][1] = "Serbski";
aLangs[49][1] = "Szwedzki";
aLangs[50][1] = "Suahili";
aLangs[51][1] = "Tajski";
aLangs[52][1] = "Filipiński";
aLangs[53][1] = "Turecki";
aLangs[54][1] = "Ukraiński";
aLangs[55][1] = "Urdu";
aLangs[56][1] = "Wietnamski";
aLangs[57][1] = "Jidysz";
aLangs[58][1] = "Chiński";
aLangs[59][1] = "Chiński Uproszczony";
aLangs[60][1] = "Chiński Tradycyjny";


Translator_Russian.lng

Code:
/********************************
Translator.js - ver. 2014-07-28
Interface language
Language:      Russian
Translated by: Infocatcher
********************************/
sTxtCaption    = "Переводчик";
sTxtUse        = "Использовать";
sTxtFromLang   = "С языка";
sTxtToLang     = "На язык";
sTxtAutoDetect = "Автоопределение языка";
sTxtListen     = "Прослушать";
sTxtTranslate  = "&Перевести";
sTxtTranslateP = "Перевести+";
sTxtOptions    = "Па&раметры";
sTxtSource     = "&Исходный текст";
sTxtTarget     = "&Переведенный текст";
sTxtSettings   = "Настройки";
sTxtUndo       = "&Отменить";
sTxtRedo       = "Пов&торить";
sTxtCut        = "&Вырезать";
sTxtCopyCB     = "&Копировать в буфер обмена";
sTxtInsertAP   = "В&ставить в AkelPad";
sTxtPasteCB    = "Вст&авить из буфера обмена";
sTxtPasteAP    = "Вставить &из AkelPad'а";
sTxtDelete     = "&Удалить";
sTxtSelectAll  = "В&ыделить все";
sTxtEntireText = "В&есь текст";
sTxtInterface  = "Язык интерфейса";
sTxtSourceInCB = "Исходный текст из буфера обмена";
sTxtSourceWnd  = "Показывать панель с исходным текстом";
sTxtLoadText   = "Загружать исходный текст при запуске";
sTxtImmediate  = "Переводить при запуске";
sTxtWordWrap   = "Перенос строк";
sTxtFontAP     = "Шрифт из AkelPad'а";
sTxtFontGUI    = "Шрифт интерфейса";
sTxtSortLang   = "Сортировка языков";
sTxtSortCode   = "По коду";
sTxtSortName   = "По названию";
sTxtOwnKey     = "свой ключ";
sTxtRegister   = "Регистрация:";
sTxtOK         = "ОК";
sTxtCancel     = "Отмена";
sTxtError      = "Ошибка";
sTxtNoText     = "Нет текста для перевода.";
sTxtNoSupport  = "Ваша система не поддерживает XMLHttpRequest.";
sTxtNoInternet = "Проблема с подключением к Интернету.";
sTxtWait       = "Подождите...";
sTxtUndefined  = "Неизвестный";
sTxtChooseLang = "Вы должны выбрать язык.";
sTxtNoSpeech   = "Прослушивание для данного языка не поддерживается.";
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] = "Урду";
aLangs[56][1] = "Вьетнамский";
aLangs[57][1] = "Идиш";
aLangs[58][1] = "Китайский";
aLangs[59][1] = "Китайский Упрощенный";
aLangs[60][1] = "Китайский Традиционный";
- by Infocatcher

Translator_Ukrainian.lng

Code:
/********************************
Translator.js - ver. 2014-07-28
Interface language
Language:      Ukrainian
Translated by: FeyFre
********************************/
sTxtCaption    = "Перекладач";
sTxtUse        = "Використати";
sTxtFromLang   = "Із мови";
sTxtToLang     = "Мовою";
sTxtAutoDetect = "Автовизначення мови";
sTxtListen     = "Прослухати";
sTxtTranslate  = "&Перекласти";
sTxtTranslateP = "Перекласти+";
sTxtOptions    = "&Опції";
sTxtSource     = "Вхідний текст";
sTxtTarget     = "Переклад";
sTxtSettings   = "Налаштовування";
sTxtUndo       = "&Повернути";
sTxtRedo       = "&Повторити";
sTxtCut        = "&Вирізати";
sTxtCopyCB     = "&Копіювати до кишені";
sTxtInsertAP   = "&Вставити у AkelPad";
sTxtPasteCB    = "В&ставити із кишені";
sTxtPasteAP    = "Вс&тавити із AkelPad";
sTxtDelete     = "В&идалити";
sTxtSelectAll  = "Ви&ділити все";
sTxtEntireText = "&Увесь текст";
sTxtInterface  = "Мова інтерфейсу";
sTxtSourceInCB = "Вихідний текст із Кишені";
sTxtSourceWnd  = "Показати вікно з джерелом";
sTxtLoadText   = "Завантажити виділений текст при запуску";
sTxtImmediate  = "Одразу розпочати переклад";
sTxtWordWrap   = "Переносити стрічки";
sTxtFontAP     = "Шрифт із AkelPad";
sTxtFontGUI    = "Інтерфейсний шрифт";
sTxtSortLang   = "Упорядкування мов";
sTxtSortCode   = "За кодом";
sTxtSortName   = "За іменем";
sTxtOwnKey     = "власний ключ";
sTxtRegister   = "Реєстрація:";
sTxtOK         = "Добре";
sTxtCancel     = "Скасувати";
sTxtError      = "Помилка";
sTxtNoText     = "Нічого перекладати.";
sTxtNoSupport  = "Ваша система не підтримує XMLHttpRequest.";
sTxtNoInternet = "Виявлено проблему із підключення до Інтернету.";
sTxtWait       = "Зачекайте...";
sTxtUndefined  = "Невизначено";
sTxtChooseLang = "Ви маєте обрати мову.";
sTxtNoSpeech   = "Вимова у цій мові не підтримується.";
sTxtRegScripts = "Ви повинні зареєструвати бібліотеку: Scripts.dll";
sTxtNoLibrary  = "Не можу завантажити бібліотеку: ";

aLangs[ 0][1] = "Африкаанс";
aLangs[ 1][1] = "Арабська";
aLangs[ 2][1] = "Azerbaijani";              //new
aLangs[ 3][1] = "Білоруська";
aLangs[ 4][1] = "Болгарська";
aLangs[ 5][1] = "Bosnian";                  //new
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] = "Armenian";                 //new
aLangs[26][1] = "Індонезійська";
aLangs[27][1] = "Ісландська";
aLangs[28][1] = "Італійська";
aLangs[29][1] = "Іврит";
aLangs[30][1] = "Японська";
aLangs[31][1] = "Georgian";                 //new
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] = "Урду";
aLangs[56][1] = "В'єтнамська";
aLangs[57][1] = "Їдиш";
aLangs[58][1] = "Китайська";
aLangs[59][1] = "Китайська спрощена";
aLangs[60][1] = "Китайська Традиційна";
- by FeyFre


Last edited by KDJ on Wed Oct 01, 2014 5:37 pm; edited 27 times in total
Back to top
View user's profile Send private message
Infocatcher



Joined: 06 Aug 2007
Posts: 1629

PostPosted: Sat May 28, 2011 11:13 pm    Post subject: Reply with quote

alignWithSpaces.js
Code:
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13096#13096
// http://infocatcher.ucoz.net/js/akelpad_scripts/alignWithSpaces.js
// https://github.com/Infocatcher/AkelPad_scripts/blob/master/alignWithSpaces.js

// (c) Infocatcher 2011, 2014
// version 0.2.2.1 - 2014-05-06

//===================
// Align selected code with spaces to user defined string

// Hotkeys:
//   Enter                    - Ok
//   Ctrl+Enter, Shift+Enter  - Align
//   Escape                   - Cancel
//   F1                       - Select next align option
//   F2                       - Select next spaces option
//   Ctrl+Z                   - Undo
//   Ctrl+Shift+Z             - Redo
//   Ctrl+C, Ctrl+Insert      - Copy
//   Ctrl+V, Shift+Insert     - Paste
//   Ctrl+X, Shift+Del        - Cut
//   Delete                   - Delete selection
//   Ctrl+A                   - Select all
//   Ctrl+S                   - Save file

// Argumens:
//   -dialog=true        - show dialog
//   -sepAtStart=false   - -> [separator][text]
//              =true    - [separator] -> [text]
//   -minimize=0         - leave all spaces
//            =1         - leave only one space (if exist)
//            =2         - remove all spaces
//   -sep="="            - don't ask separator
//   -history=10         - set history length
//   -saveOptions=0      - don't store options
//               =1      - (default) save options after them usage
//               =2      - save options on exit
//   -savePosition=true  - allow store last window position

// Usage:
//   Call("Scripts::Main", 1, "alignWithSpaces.js")
//   Call("Scripts::Main", 1, "alignWithSpaces.js", '-dialog=false -sep="=" -sepAtStart=true')
//===================

function _localize(s) {
   var strings = {
      "No text selected!": {
         ru: "Отсутствует выделенный текст!"
      },
      "Only one line selected!": {
         ru: "Выделена только одна строка!"
      },
      "Invalid regular expression!": {
         ru: "Неверное регулярное выражение!"
      },
      "Separator “%S” not found!": {
         ru: "Разделитель «%S» не найден!"
      },
      "Found only one separator “%S”!": {
         ru: "Найден только один разделитель «%S»!"
      },

      "&Separator:": {
         ru: "&Разделитель:"
      },

      "&Alignement": {
         ru: "&Выравнивание"
      },
      "-> [separator][text]": {
         ru: "-> [разделитель][текст]"
      },
      "[separator] -> [text]": {
         ru: "[разделитель] -> [текст]"
      },

      "&Spaces": {
         ru: "&Пробелы"
      },
      "Leave all": {
         ru: "Оставить все"
      },
      "Leave only one": {
         ru: "Оставить только один"
      },
      "Remove all": {
         ru: "Удалить все"
      },

      "OK": {
         ru: "ОК"
      },
      "Align": {
         ru: "Выровнять"
      },
      "Cancel": {
         ru: "Отмена"
      }
   };
   var lng;
   switch(AkelPad.GetLangId(1 /*LANGID_PRIMARY*/)) {
      case 0x19: lng = "ru"; break;
      default:   lng = "en";
   }
   _localize = function(s) {
      return strings[s] && strings[s][lng] || s;
   };
   return _localize(s);
}

// Read arguments:
// getArg(argName, defaultValue)
var dialog        = getArg("dialog", true);
var sepAtStart    = getArg("sepAtStart", false);
var minimize      = getArg("minimize", 0);
var separator     = getArg("sep");
var historyLength = getArg("history", 10);
var saveOptions   = getArg("saveOptions", 1);
var savePosition  = getArg("savePosition", true);

var hMainWnd = AkelPad.GetMainWnd();
var hWndEdit = AkelPad.GetEditWnd();
var oSys = AkelPad.SystemFunction();
var oSet = AkelPad.ScriptSettings();
var dialogTitle = WScript.ScriptName.replace(/^[!-\-_]+/, "");
dialogTitle = dialogTitle.charAt(0).toUpperCase() + dialogTitle.substr(1);

if(hMainWnd) {
   if(dialog || !separator)
      alignWithSpacesDialog();
   else
      alignWithSpaces(separator);
}

function alignWithSpaces(sep, hWnd) {
   if(AkelPad.GetEditReadOnly(hWndEdit))
      return false;
   var sel = AkelPad.GetSelText();
   if(!sel) {
      AkelPad.MessageBox(hWnd || hMainWnd, _localize("No text selected!"), dialogTitle, 48 /*MB_ICONEXCLAMATION*/);
      return false;
   }
   var lines = sel.split("\r");
   var linesCnt = lines.length;
   if(linesCnt == 1) {
      AkelPad.MessageBox(hWnd || hMainWnd, _localize("Only one line selected!"), dialogTitle, 48 /*MB_ICONEXCLAMATION*/);
      return false;
   }
   if(!sep) {
      if(!hWnd)
         alignWithSpacesDialog();
      return false;
   }
   var pattern;
   var isRegExp = false;
   if(/^\/(.+)\/(i?)$/.test(sep)) { // /RegExp/ and /RegExp/i
      try {
         pattern = new RegExp(RegExp.$1, RegExp.$2);
         isRegExp = true;
      }
      catch(e) {
         AkelPad.MessageBox(
            hWnd || hMainWnd,
            _localize("Invalid regular expression!")
               + "\n" + e.name + "\n" + e.message,
            dialogTitle,
            16 /*MB_ICONERROR*/
         );
         if(!hWnd) {
            separator = sep;
            alignWithSpacesDialog();
         }
         return false;
      }
   }
   //else if(/^("|')(.+)\1$/.test(sep))
   else {
      pattern = new RegExp(escapeRegExp(sep));
   }
   var maxPos = -1;
   var indexes = [];
   var startOffset = 0;
   var found = 0;
   for(var i = 0; i < linesCnt; ++i) {
      var line = lines[i];
      var indx = line.search(pattern);
      indexes[i] = indx;
      if(indx == -1)
         continue;
      ++found;
      //~ todo: calculate real tab width
      if(sepAtStart) {
         indx += RegExp.lastMatch.length;
         var lineEnd = line.substr(indx);
         if(minimize) {
            var lineEnd = lineEnd.replace(/^[ \t]+/, minimize == 1 ? " " : "");
            line = lines[i] = line.substr(0, indx) + lineEnd;
         }
         indx += lineEnd.match(/^[ \t]*/)[0].length;
         indexes[i] = indx;
      }
      else if(minimize) {
         var lineStart = line.substr(0, indx);
         var lineEnd = line.substr(indx);
         var lineStartNew = lineStart.replace(/[ \t]+$/, minimize == 1 ? " " : "");
         indx = indexes[i] = lineStartNew.length;
         line = lines[i] = lineStartNew + lineEnd;
      }
      if(i == 0 && !AkelPad.SendMessage(hWndEdit, 3127 /*AEM_GETCOLUMNSEL*/, 0, 0)) {
         var ss = AkelPad.GetSelStart();
         var lineStart = getOffset(hWndEdit, 18 /*AEGI_WRAPLINEBEGIN*/, ss);
         startOffset = ss - lineStart;
         indx += startOffset;
      }
      if(indx > maxPos)
         maxPos = indx;
   }
   if(found <= 1) {
      AkelPad.MessageBox(
         hWnd || hMainWnd,
         _localize(found ? "Found only one separator “%S”!" : "Separator “%S” not found!")
            .replace("%S", isRegExp ? pattern : sep),
         dialogTitle,
         48 /*MB_ICONEXCLAMATION*/
      );
      if(!hWnd) {
         separator = sep;
         alignWithSpacesDialog();
      }
      return false;
   }
   for(var i = 0; i < linesCnt; ++i) {
      var line = lines[i];
      var indx = indexes[i];
      if(indx == -1/* || indx == maxPos*/)
         continue;
      var spaces = new Array(maxPos - indx - (i == 0 ? startOffset : 0) + 1).join(" ");
      var lineStart = line.substr(0, indx);
      lineStart = lineStart.replace(/[\t ]*$/, "") + new Array(RegExp.lastMatch.length + 1).join(" ");
      var lineEnd = line.substr(indx);
      lineEnd = lineEnd.replace(/^[\t ]*/, "") + new Array(RegExp.lastMatch.length + 1).join(" ");
      lines[i] = lineStart + spaces + lineEnd;
   }
   var res = lines.join("\r");
   if(res != sel)
      insertNoScroll(res);
   return true;
}

function alignWithSpacesDialog(modal) {
   var hInstanceDLL = AkelPad.GetInstanceDll();
   var dialogClass = "AkelPad::Scripts::" + WScript.ScriptName + "::" + oSys.Call("kernel32::GetCurrentProcessId");

   var hWndDialog = oSys.Call("user32::FindWindowEx" + _TCHAR, 0, 0, dialogClass, 0);
   if(hWndDialog) {
      if(oSys.Call("user32::IsIconic", hWndDialog))
         oSys.Call("user32::ShowWindow", hWndDialog, 9 /*SW_RESTORE*/);
      AkelPad.SendMessage(hWndDialog, 7 /*WM_SETFOCUS*/, 0, 0);
      return;
   }

   if(
      !AkelPad.WindowRegisterClass(dialogClass)
      && ( // Previous script instance crashed
         !AkelPad.WindowUnregisterClass(dialogClass)
         || !AkelPad.WindowRegisterClass(dialogClass)
      )
   )
      return;

   var optionsUsed = false;
   var lastSeps = [];
   var savedSepsCount = 0;
   var dlgX, dlgY;
   if((saveOptions || savePosition) && oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/)) {
      if(saveOptions) {
         for(var i = 0; ; ++i) {
            var s = oSet.Read("lastSeparator" + i, 3 /*PO_STRING*/, "");
            if(!s)
               break;
            if(i < historyLength)
               lastSeps[lastSeps.length] = s;
         }
         savedSepsCount = i;
         if(getArg("sepAtStart") === undefined)
            sepAtStart = oSet.Read("sepAtStart", 1 /*PO_DWORD*/) || 0;
         if(getArg("minimize") === undefined)
            minimize = oSet.Read("minimize", 1 /*PO_DWORD*/) || 0;
      }
      if(savePosition) {
         dlgX = oSet.Read("windowLeft", 1 /*PO_DWORD*/);
         dlgY = oSet.Read("windowTop",  1 /*PO_DWORD*/);
      }
      oSet.End();
   }
   function saveSettings(rewrite) {
      if(!saveOptions && !savePosition)
         return;
      if(!oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/))
         return;
      if(saveOptions && (saveOptions == 2 || optionsUsed)) {
         if(readControlsState()) {
            oSet.Write("sepAtStart", 1 /*PO_DWORD*/, sepAtStart);
            oSet.Write("minimize",   1 /*PO_DWORD*/, minimize);
         }
         var histLen = Math.min(historyLength, lastSeps.length);
         for(var i = 0, l = Math.max(historyLength, savedSepsCount); i < l; ++i) {
            if(i < histLen)
               oSet.Write("lastSeparator" + i, 3 /*PO_STRING*/, lastSeps[i]);
            else
               oSet.Delete("lastSeparator" + i);
         }
      }
      if(savePosition && !oSys.Call("user32::IsIconic", hWndDialog)) {
         var rcWnd = getWindowRect(hWndDialog);
         if(rcWnd) {
            oSet.Write("windowLeft", 1 /*PO_DWORD*/, rcWnd.left);
            oSet.Write("windowTop",  1 /*PO_DWORD*/, rcWnd.top);
         }
      }
      oSet.End();
   }

   var IDC_STATIC         = -1;
   var IDC_COMBOBOX_LABEL = 1000;
   var IDC_COMBOBOX       = 1001;
   var IDC_SEP_AT_END     = 1002;
   var IDC_SEP_AT_START   = 1003;
   var IDC_SP_LEAVE       = 1004;
   var IDC_SP_LEAVE_ONE   = 1005;
   var IDC_SP_REMOVE      = 1006;
   var IDC_OK             = 1007;
   var IDC_ALIGN          = 1008;
   var IDC_CANCEL         = 1009;

   var hWndStatic;
   var hWndComboboxLabel, hWndCombobox;
   var hWndSepAtEnd, hWndSepAtStart;
   var hWndSpLeave, hWndSpLeaveOne, hWndSpRemove;
   var hWndOK, hWndAlign, hWndCancel;

   var scale = new Scale(0, hMainWnd);
   var sizeNonClientX = oSys.Call("user32::GetSystemMetrics", 7 /*SM_CXFIXEDFRAME*/)*2;
   var sizeNonClientY = oSys.Call("user32::GetSystemMetrics", 8 /*SM_CYFIXEDFRAME*/)*2
      + oSys.Call("user32::GetSystemMetrics", 4 /*SM_CYCAPTION*/);

   // Create dialog
   hWndDialog = oSys.Call(
      "user32::CreateWindowEx" + _TCHAR,
      0,                             //dwExStyle
      dialogClass,                   //lpClassName
      0,                             //lpWindowName
      0x90CA0000,                    //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
      scale.x(0),                    //x
      scale.y(0),                    //y
      scale.x(446) + sizeNonClientX, //nWidth
      scale.y(122) + sizeNonClientY, //nHeight
      hMainWnd,                      //hWndParent
      0,                             //ID
      hInstanceDLL,                  //hInstance
      dialogCallback                 //Script function callback. To use it class must be registered by WindowRegisterClass.
   );
   if(!hWndDialog)
      return;

   function dialogCallback(hWnd, uMsg, wParam, lParam) {
      switch(uMsg) {
         case 1: //WM_CREATE
            var hGuiFont = oSys.Call("gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/);
            function setWindowFontAndText(hWnd, hFont, pText) {
               AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/, hFont, true);
               windowText(hWnd, pText);
            }

            // Dialog caption
            oSys.Call("user32::SetWindowText" + _TCHAR, hWnd, dialogTitle);

            // Static window: combobox label
            hWndComboboxLabel = createWindowEx(
               0,                  //dwExStyle
               "STATIC",           //lpClassName
               0,                  //lpWindowName
               0x50000100,         //WS_VISIBLE|WS_CHILD|SS_NOTIFY
               12,                 //x
               15,                 //y
               78,                 //nWidth
               13,                 //nHeight
               hWnd,               //hWndParent
               IDC_COMBOBOX_LABEL, //ID
               hInstanceDLL,       //hInstance
               0                   //lpParam
            );
            setWindowFontAndText(hWndComboboxLabel, hGuiFont, _localize("&Separator:"));

            hWndCombobox = createWindowEx(
               0,            //dwExStyle
               "COMBOBOX",   //lpClassName
               0,            //lpWindowName
               0x50210042,   //WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_VSCROLL|CBS_DROPDOWN|CBS_AUTOHSCROLL
               90,           //x
               12,           //y
               254,          //nWidth
               160,          //nHeight
               hWnd,         //hWndParent
               IDC_COMBOBOX, //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            for(var i = 0, l = lastSeps.length; i < l; ++i) {
               //AkelPad.MemCopy(lpBuffer, lastSeps[i], _TSTR);
               //AkelPad.SendMessage(hWndCombobox, 0x143 /*CB_ADDSTRING*/, 0, lpBuffer);
               oSys.Call("user32::SendMessage" + _TCHAR, hWndCombobox, 0x143 /*CB_ADDSTRING*/, 0, lastSeps[i]);
            }
            setWindowFontAndText(hWndCombobox, hGuiFont, separator || "");
            !separator && AkelPad.SendMessage(hWndCombobox, 0x14E /*CB_SETCURSEL*/, 0, 0);

            // GroupBox alignement
            hWndStatic = createWindowEx(
               0,            //dwExStyle
               "BUTTON",     //lpClassName
               0,            //lpWindowName
               0x50000007,   //WS_VISIBLE|WS_CHILD|BS_GROUPBOX
               12,           //x
               38,           //y
               160,          //nWidth
               56,           //nHeight
               hWnd,         //hWndParent
               IDC_STATIC,   //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            setWindowFontAndText(hWndStatic, hGuiFont, _localize("&Alignement"));

            // Radiobutton separator at end
            hWndSepAtEnd = createWindowEx(
               0,              //dwExStyle
               "BUTTON",       //lpClassName
               0,              //lpWindowName
               0x50000004,     //WS_VISIBLE|WS_CHILD|BS_RADIOBUTTON
               20,             //x
               54,             //y
               144,            //nWidth
               16,             //nHeight
               hWnd,           //hWndParent
               IDC_SEP_AT_END, //ID
               hInstanceDLL,   //hInstance
               0               //lpParam
            );
            setWindowFontAndText(hWndSepAtEnd, hGuiFont, _localize("-> [separator][text]"));
            checked(hWndSepAtEnd, !sepAtStart);

            // Radiobutton separator at start
            hWndSepAtStart = createWindowEx(
               0,                //dwExStyle
               "BUTTON",         //lpClassName
               0,                //lpWindowName
               0x50000004,       //WS_VISIBLE|WS_CHILD|BS_RADIOBUTTON
               20,               //x
               72,               //y
               144,              //nWidth
               16,               //nHeight
               hWnd,             //hWndParent
               IDC_SEP_AT_START, //ID
               hInstanceDLL,     //hInstance
               0                 //lpParam
            );
            setWindowFontAndText(hWndSepAtStart, hGuiFont, _localize("[separator] -> [text]"));
            checked(hWndSepAtStart, sepAtStart);


            // GroupBox spaces
            hWndStatic = createWindowEx(
               0,            //dwExStyle
               "BUTTON",     //lpClassName
               0,            //lpWindowName
               0x50000007,   //WS_VISIBLE|WS_CHILD|BS_GROUPBOX
               184,          //x
               38,           //y
               160,          //nWidth
               72,           //nHeight
               hWnd,         //hWndParent
               IDC_STATIC,   //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            setWindowFontAndText(hWndStatic, hGuiFont, _localize("&Spaces"));

            // Radiobutton leave all spaces
            hWndSpLeave = createWindowEx(
               0,            //dwExStyle
               "BUTTON",     //lpClassName
               0,            //lpWindowName
               0x50000004,   //WS_VISIBLE|WS_CHILD|BS_RADIOBUTTON
               192,          //x
               54,           //y
               144,          //nWidth
               16,           //nHeight
               hWnd,         //hWndParent
               IDC_SP_LEAVE, //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            setWindowFontAndText(hWndSpLeave, hGuiFont, _localize("Leave all"));
            checked(hWndSpLeave, minimize == 0);

            // Radiobutton leave only one space
            hWndSpLeaveOne = createWindowEx(
               0,                //dwExStyle
               "BUTTON",         //lpClassName
               0,                //lpWindowName
               0x50000004,       //WS_VISIBLE|WS_CHILD|BS_RADIOBUTTON
               192,              //x
               71,               //y
               144,              //nWidth
               16,               //nHeight
               hWnd,             //hWndParent
               IDC_SP_LEAVE_ONE, //ID
               hInstanceDLL,     //hInstance
               0                 //lpParam
            );
            setWindowFontAndText(hWndSpLeaveOne, hGuiFont, _localize("Leave only one"));
            checked(hWndSpLeaveOne, minimize == 1);

            // Radiobutton remove all spaces
            hWndSpRemove = createWindowEx(
               0,             //dwExStyle
               "BUTTON",      //lpClassName
               0,             //lpWindowName
               0x50000004,    //WS_VISIBLE|WS_CHILD|BS_RADIOBUTTON
               192,           //x
               88,            //y
               144,           //nWidth
               16,            //nHeight
               hWnd,          //hWndParent
               IDC_SP_REMOVE, //ID
               hInstanceDLL,  //hInstance
               0              //lpParam
            );
            setWindowFontAndText(hWndSpRemove, hGuiFont, _localize("Remove all"));
            checked(hWndSpRemove, minimize == 2);


            // OK button window
            hWndOK = createWindowEx(
               0,            //dwExStyle
               "BUTTON",     //lpClassName
               0,            //lpWindowName
               0x50010001,   //WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_DEFPUSHBUTTON
               355,          //x
               11,           //y
               80,           //nWidth
               23,           //nHeight
               hWnd,         //hWndParent
               IDC_OK,       //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            setWindowFontAndText(hWndOK, hGuiFont, _localize("OK"));

            // Apply button window
            hWndAlign = createWindowEx(
               0,            //dwExStyle
               "BUTTON",     //lpClassName
               0,            //lpWindowName
               0x50010000,   //WS_VISIBLE|WS_CHILD|WS_TABSTOP
               355,          //x
               38,           //y
               80,           //nWidth
               23,           //nHeight
               hWnd,         //hWndParent
               IDC_ALIGN,    //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            setWindowFontAndText(hWndAlign, hGuiFont, _localize("Align"));

            // Cancel button window
            hWndCancel = createWindowEx(
               0,            //dwExStyle
               "BUTTON",     //lpClassName
               0,            //lpWindowName
               0x50010000,   //WS_VISIBLE|WS_CHILD|WS_TABSTOP
               355,          //x
               65,           //y
               80,           //nWidth
               23,           //nHeight
               hWnd,         //hWndParent
               IDC_CANCEL,   //ID
               hInstanceDLL, //hInstance
               0             //lpParam
            );
            setWindowFontAndText(hWndCancel, hGuiFont, _localize("Cancel"));

            //centerWindow(hWnd, hMainWnd);
            restoreWindowPosition(hWnd, hMainWnd);
         break;
         case 7: //WM_SETFOCUS
            oSys.Call("user32::SetFocus", hWndCombobox);
         break;
         case 256: //WM_KEYDOWN
            var ctrl = oSys.Call("user32::GetAsyncKeyState", 162 /*VK_LCONTROL*/)
               || oSys.Call("user32::GetAsyncKeyState", 163 /*VK_RCONTROL*/);
            var shift = oSys.Call("user32::GetAsyncKeyState", 160 /*VK_LSHIFT*/)
               || oSys.Call("user32::GetAsyncKeyState", 161 /*VK_RSHIFT*/);
            if(wParam == 27 /*VK_ESCAPE*/)
               oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDC_CANCEL, 0);
            else if(wParam == 13 /*VK_RETURN*/) {
               if(ctrl || shift) // Ctrl+Enter, Shift+Enter
                  oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDC_ALIGN, 0);
               else // Enter
                  oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDC_OK, 0);
            }
            else if(wParam == 112 /*VK_F1*/) // F1
               navigate(hWndSepAtEnd, hWndSepAtStart);
            else if(wParam == 113 /*VK_F2*/) // F2
               navigate(hWndSpLeave, hWndSpLeaveOne, hWndSpRemove);
            else if(wParam == 90 /*Z*/) {
               if(ctrl && shift) // Ctrl+Shift+Z
                  !comboboxFocused() && AkelPad.Command(4152); //IDM_EDIT_REDO
               else if(ctrl) // Ctrl+Z
                  !comboboxFocused() && AkelPad.Command(4151); //IDM_EDIT_UNDO
            }
            else if(ctrl && wParam == 67 /*C*/ || ctrl && wParam == 45 /*VK_INSERT*/) // Ctrl+C, Ctrl+Insert
               !comboboxFocused() && AkelPad.Command(4154); //IDM_EDIT_COPY
            else if(ctrl && wParam == 86 /*V*/ || shift && wParam == 45 /*VK_INSERT*/) // Ctrl+V, Shift+Insert
               !comboboxFocused() && noScroll(function() {
                  AkelPad.Command(4155); //IDM_EDIT_PASTE
               });
            else if(ctrl && wParam == 88 /*X*/ || shift && wParam == 46 /*VK_DELETE*/) // Ctrl+X, Shift+Del
               !comboboxFocused() && AkelPad.Command(4153); //IDM_EDIT_CUT
            else if(wParam == 46 /*VK_DELETE*/) // Delete
               !comboboxFocused() && AkelPad.Command(4156); //IDM_EDIT_CLEAR
            else if(ctrl && wParam == 65 /*A*/) // Ctrl+A
               !comboboxFocused() && noScroll(function() {
                  AkelPad.Command(4157); //IDM_EDIT_SELECTALL
               });
            else if(ctrl && wParam == 83 /*S*/) // Ctrl+S
               AkelPad.Command(4105); // IDM_FILE_SAVE

            //else if(wParam != 16 /*VK_SHIFT*/ && wParam != 17 /*VK_CONTROL*/ && wParam != 18 /*VK_MENU*/)
            //   AkelPad.MessageBox(hWnd, wParam, dialogTitle, 0 /*MB_OK*/);
         break;
         case 273: //WM_COMMAND
            var idc = wParam & 0xffff;
            switch(idc) {
               case IDC_OK:
               case IDC_ALIGN:
                  if(!readControlsState())
                     break;
                  var curSep = windowText(hWndCombobox);
                  if(!curSep)
                     break;
                  hWndEdit = AkelPad.GetEditWnd();
                  if(!alignWithSpaces(curSep, hWnd))
                     break;
                  addToHistory(curSep);
                  optionsUsed = true;
                  if(idc == IDC_OK)
                     closeDialog();
               break;
               case IDC_CANCEL:
                  closeDialog();
               break;
               case IDC_COMBOBOX_LABEL:
                  oSys.Call("user32::SetFocus", hWndCombobox);
               break;
               case IDC_COMBOBOX:
                  var ok = false;
                  if(wParam >> 16 == 1 /*CBN_SELCHANGE*/) {
                     var i = AkelPad.SendMessage(hWndCombobox, 0x147 /*CB_GETCURSEL*/, 0, 0);
                     ok = AkelPad.SendMessage(hWndCombobox, 0x149 /*CB_GETLBTEXTLEN*/, i, 0) > 0;
                  }
                  else {
                     ok = oSys.Call("user32::GetWindowTextLength" + _TCHAR, hWndCombobox) > 0;
                  }
                  enabled(hWndAlign, ok);
                  enabled(hWndOK,    ok);
               break;
               case IDC_SEP_AT_END:
               case IDC_SEP_AT_START:
                  checked(hWndSepAtEnd,   idc == IDC_SEP_AT_END);
                  checked(hWndSepAtStart, idc == IDC_SEP_AT_START);
                  if((wParam >> 16 & 0xFFFF) == 5 /*BN_DOUBLECLICKED*/)
                     oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDC_ALIGN, 0);
               break;
               case IDC_SP_LEAVE:
               case IDC_SP_LEAVE_ONE:
               case IDC_SP_REMOVE:
                  checked(hWndSpLeave,    idc == IDC_SP_LEAVE);
                  checked(hWndSpLeaveOne, idc == IDC_SP_LEAVE_ONE);
                  checked(hWndSpRemove,   idc == IDC_SP_REMOVE);
                  if((wParam >> 16 & 0xFFFF) == 5 /*BN_DOUBLECLICKED*/)
                     oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDC_ALIGN, 0);
            }
         break;
         case 16: //WM_CLOSE
            saveSettings();
            modal && enabled(hMainWnd, true); // Enable main window
            oSys.Call("user32::DestroyWindow", hWnd); // Destroy dialog
         break;
         case 2: //WM_DESTROY
            oSys.Call("user32::PostQuitMessage", 0); // Exit message loop
      }
      return 0;
   }

   function comboboxFocused() {
      //typedef struct tagCOMBOBOXINFO {
      //  DWORD cbSize;
      //  RECT  rcItem;
      //  RECT  rcButton;
      //  DWORD stateButton;
      //  HWND  hwndCombo;
      //  HWND  hwndItem;
      //  HWND  hwndList;
      //} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
      var sizeofCBI = 4 + 16*2 + 4*4;
      var pcbi = AkelPad.MemAlloc(sizeofCBI);
      if(!pcbi)
         return false;
      AkelPad.MemCopy(pcbi, sizeofCBI, 3 /*DT_DWORD*/);
      if(!oSys.Call("user32::GetComboBoxInfo", hWndCombobox, pcbi))
         return false;
      var hWndComboboxEdit = AkelPad.MemRead(pcbi + 4 + 16*2 + 4*2, 3 /*DT_DWORD*/);
      comboboxFocused = function() {
         return oSys.Call("user32::GetFocus") == hWndComboboxEdit;
      };
      return comboboxFocused();
   }
   function readControlsState() {
      if(checked(hWndSepAtStart))
         sepAtStart = true;
      else if(checked(hWndSepAtEnd))
         sepAtStart = false;
      else
         return false;

      if(checked(hWndSpLeave))
         minimize = 0;
      else if(checked(hWndSpLeaveOne))
         minimize = 1;
      else if(checked(hWndSpRemove))
         minimize = 2;
      else
         return false;

      return true;
   }
   function navigate() {
      for(var i = 0, len = arguments.length; i < len; ++i) {
         var hWndRadio = arguments[i];
         if(!checked(hWndRadio))
            continue;
         checked(hWndRadio, false);
         checked(arguments[i == len - 1 ? 0 : i + 1], true);
         break;
      }
   }
   function addToHistory(str) {
      var histLen = lastSeps.length;
      for(var i = 0; i < histLen;) {
         if(lastSeps[i] != str) {
            ++i;
            continue;
         }
         AkelPad.SendMessage(hWndCombobox, 0x144 /*CB_DELETESTRING*/, i, 0);
         if(lastSeps.splice)
            lastSeps.splice(i, 1);
         else {
            for(var j = i + 1; j < histLen; ++j)
               lastSeps[j - 1] = lastSeps[j];
            lastSeps.length--;
         }
         histLen--;
      }
      //AkelPad.SendMessage(hWndCombobox, 0x14A /*CB_INSERTSTRING*/, 0, lpBuffer);
      oSys.Call("user32::SendMessage" + _TCHAR, hWndCombobox, 0x14A /*CB_INSERTSTRING*/, 0, str);
      AkelPad.SendMessage(hWndCombobox, 0x14E /*CB_SETCURSEL*/, 0, 0);
      if(lastSeps.unshift)
         lastSeps.unshift(str);
      else {
         for(var j = histLen; j > 0; j--)
            lastSeps[j] = lastSeps[j - 1];
         lastSeps[0] = str;
      }
      if(lastSeps.length > historyLength) {
         AkelPad.SendMessage(hWndCombobox, 0x144 /*CB_DELETESTRING*/, histLen - 1, 0);
         lastSeps.length = historyLength;
      }
   }

   function restoreWindowPosition(hWnd, hWndParent) {
      if(dlgX == undefined || dlgY == undefined) {
         centerWindow(hWnd, hWndParent);
         return;
      }

      var rcWnd = getWindowRect(hWnd);
      if(!rcWnd)
         return;

      var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
      if(!lpRect)
         return;
      AkelPad.MemCopy(lpRect,      dlgX,                              3 /*DT_DWORD*/);
      AkelPad.MemCopy(lpRect + 4,  dlgY,                              3 /*DT_DWORD*/);
      AkelPad.MemCopy(lpRect + 8,  dlgX + (rcWnd.right - rcWnd.left), 3 /*DT_DWORD*/);
      AkelPad.MemCopy(lpRect + 12, dlgY + (rcWnd.top - rcWnd.bottom), 3 /*DT_DWORD*/);
      var hMonitor = oSys.Call("user32::MonitorFromRect", lpRect, 0x2 /*MONITOR_DEFAULTTONEAREST*/);

      if(hMonitor) {
         //typedef struct tagMONITORINFO {
         //  DWORD cbSize;
         //  RECT  rcMonitor;
         //  RECT  rcWork;
         //  DWORD dwFlags;
         //} MONITORINFO, *LPMONITORINFO;
         var sizeofMonitorInfo = 4 + 16 + 16 + 4;
         var lpMi = AkelPad.MemAlloc(sizeofMonitorInfo);
         if(lpMi) {
            AkelPad.MemCopy(lpMi, sizeofMonitorInfo, 3 /*DT_DWORD*/);
            oSys.Call("user32::GetMonitorInfo" + _TCHAR, hMonitor, lpMi);
            var rcWork = parseRect(lpMi + 4 + 16);
            AkelPad.MemFree(lpMi);
         }
      }
      else { //?
         oSys.Call("user32::SystemParametersInfo" + _TCHAR, 48 /*SPI_GETWORKAREA*/, 0, lpRect, 0);
         var rcWork = parseRect(lpRect);
      }
      AkelPad.MemFree(lpRect);

      if(rcWork) {
         var edge = Math.max(
            16,
            oSys.Call("user32::GetSystemMetrics", 8 /*SM_CYFIXEDFRAME*/)
               + oSys.Call("user32::GetSystemMetrics", 4 /*SM_CYCAPTION*/)
         );

         var minX = rcWork.left - (rcWnd.right - rcWnd.left) + edge;
         var minY = rcWork.top;
         var maxX = rcWork.right - edge;
         var maxY = rcWork.bottom - edge;

         dlgX = Math.max(minX, Math.min(maxX, dlgX));
         dlgY = Math.max(minY, Math.min(maxY, dlgY));
      }

      oSys.Call("user32::SetWindowPos", hWnd, 0, dlgX, dlgY, 0, 0, 0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
   }
   function centerWindow(hWnd, hWndParent) {
      var rcWnd = getWindowRect(hWnd);
      var rcWndParent = getWindowRect(hWndParent || oSys.Call("user32::GetDesktopWindow"));
      if(!rcWndParent || !rcWnd)
         return;
      var x = rcWndParent.left + ((rcWndParent.right  - rcWndParent.left) / 2 - (rcWnd.right  - rcWnd.left) / 2);
      var y = rcWndParent.top  + ((rcWndParent.bottom - rcWndParent.top)  / 2 - (rcWnd.bottom - rcWnd.top)  / 2);
      oSys.Call("user32::SetWindowPos", hWnd, 0, x, y, 0, 0, 0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
   }
   function getWindowRect(hWnd, hWndParent) {
      var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
      if(!lpRect)
         return null;
      oSys.Call("user32::GetWindowRect", hWnd, lpRect);
      hWndParent && oSys.Call("user32::ScreenToClient", hWndParent, lpRect);
      var rcWnd = parseRect(lpRect);
      AkelPad.MemFree(lpRect);
      return rcWnd;
   }
   function parseRect(lpRect) {
      return {
         left:   AkelPad.MemRead(lpRect,      3 /*DT_DWORD*/),
         top:    AkelPad.MemRead(lpRect +  4, 3 /*DT_DWORD*/),
         right:  AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/),
         bottom: AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/)
      };
   }

   function windowText(hWnd, pText) {
      if(arguments.length > 1)
         return oSys.Call("user32::SetWindowText" + _TCHAR, hWnd, pText);
      var len = oSys.Call("user32::GetWindowTextLength" + _TCHAR, hWnd);
      var lpText = AkelPad.MemAlloc((len + 1)*_TSIZE);
      if(!lpText)
         return "";
      oSys.Call("user32::GetWindowText" + _TCHAR, hWnd, lpText, len + 1);
      pText = AkelPad.MemRead(lpText, _TSTR);
      AkelPad.MemFree(lpText);
      return pText;
   }
   function checked(hWnd, val) {
      return arguments.length == 1
         ? AkelPad.SendMessage(hWnd, 240 /*BM_GETCHECK*/, 0, 0)
         : AkelPad.SendMessage(hWnd, 241 /*BM_SETCHECK*/, val ? 1 /*BST_CHECKED*/ : 0, 0);
   }
   function enabled(hWnd, val) {
      oSys.Call("user32::EnableWindow", hWnd, val);
   }
   function closeDialog() {
      oSys.Call("user32::PostMessage" + _TCHAR, hWndDialog, 16 /*WM_CLOSE*/, 0, 0);
   }
   function Scale(hDC, hWnd) {
      var hNewDC = hDC || oSys.Call("user32::GetDC", hWnd);
      if(hNewDC) {
         this._x = oSys.Call("gdi32::GetDeviceCaps", hNewDC, 88 /*LOGPIXELSX*/);
         this._y = oSys.Call("gdi32::GetDeviceCaps", hNewDC, 90 /*LOGPIXELSY*/);

         //Align to 16 pixel
         this._x += (16 - this._x % 16) % 16;
         this._y += (16 - this._y % 16) % 16;

         !hDC && oSys.Call("user32::ReleaseDC", hWnd, hNewDC);

         this.x = function(x) {
            return oSys.Call("kernel32::MulDiv", x, this._x, 96);
         };
         this.y = function(y) {
            return oSys.Call("kernel32::MulDiv", y, this._y, 96);
         };
      }
      else {
         this.x = this.y = function(n) {
            return n;
         };
      }
   }
   function createWindowEx(
      dwExStyle, lpClassName, lpWindowName, dwStyle,
      x, y, w, h,
      hWndParent, id, hInstance, callback
   ) {
      return oSys.Call(
         "user32::CreateWindowEx" + _TCHAR,
         dwExStyle,
         lpClassName,
         lpWindowName,
         dwStyle,
         scale.x(x),
         scale.y(y),
         scale.x(w),
         scale.y(h),
         hWndParent,
         id,
         hInstance,
         callback || 0
      );
   }

   modal && enabled(hMainWnd, false); // Disable main window, to make dialog modal

   AkelPad.ScriptNoMutex(); // Allow other scripts running
   AkelPad.WindowGetMessage(); // Message loop

   AkelPad.WindowUnregisterClass(dialogClass);
}

function escapeRegExp(str) {
   return str.replace(/[\\\/.^$+*?|()\[\]{}]/g, "\\$&");
}

function insertNoScroll(str, selectAll) {
   noScroll(function() {
      selectAll && AkelPad.SetSel(0, -1);
      //var ss = AkelPad.GetSelStart();
      AkelPad.ReplaceSel(str, true);
      //if(ss != AkelPad.GetSelStart())
      //   AkelPad.SetSel(ss, ss + str.length);
   });
}
function noScroll(func, hWndEdit) {
   if(!hWndEdit)
      hWndEdit = AkelPad.GetEditWnd();
   var lpPoint = AkelPad.MemAlloc(8 /*sizeof(POINT)*/);
   if(!lpPoint)
      return;
   setRedraw(hWndEdit, false);
   AkelPad.SendMessage(hWndEdit, 1245 /*EM_GETSCROLLPOS*/, 0, lpPoint);

   func();

   AkelPad.SendMessage(hWndEdit, 1246 /*EM_SETSCROLLPOS*/, 0, lpPoint);
   setRedraw(hWndEdit, true);
   AkelPad.MemFree(lpPoint);
}
function setRedraw(hWnd, bRedraw) {
   AkelPad.SendMessage(hWnd, 11 /*WM_SETREDRAW*/, bRedraw, 0);
   bRedraw && oSys.Call("user32::InvalidateRect", hWnd, 0, true);
}

function getOffset(hWndEdit, nType /*AEGI_*/, nOffset) {
   // Based on Instructor's code
   // http://akelpad.sourceforge.net/forum/viewtopic.php?p=11382#11382
   var lpIndex = AkelPad.MemAlloc(_X64 ? 24 : 12 /*sizeof(AECHARINDEX)*/);
   if(!lpIndex)
      return 0;
   if(nOffset != -1)
      AkelPad.SendMessage(hWndEdit, 3137 /*AEM_RICHOFFSETTOINDEX*/, nOffset, lpIndex);
   AkelPad.SendMessage(hWndEdit, 3130 /*AEM_GETINDEX*/, nType, lpIndex);
   nOffset = AkelPad.SendMessage(hWndEdit, 3136 /*AEM_INDEXTORICHOFFSET*/, 0, lpIndex);
   AkelPad.MemFree(lpIndex);
   return nOffset;
}

function getArg(argName, defaultVal) {
   var args = {};
   for(var i = 0, argsCount = WScript.Arguments.length; i < argsCount; ++i)
      if(/^[-\/](\w+)(=(.+))?$/i.test(WScript.Arguments(i)))
         args[RegExp.$1.toLowerCase()] = RegExp.$3 ? eval(RegExp.$3) : true;
   getArg = function(argName, defaultVal) {
      argName = argName.toLowerCase();
      return typeof args[argName] == "undefined" // argName in args
         ? defaultVal
         : args[argName];
   };
   return getArg(argName, defaultVal);
}
<download | mirror | development version>
Align selected code with spaces to user defined string.
Use column selection in complex cases.

Example

Before:
Code:
var x = 0;
var someVar = 2;
var someAnotherVar = 4;
After (used "=" character):
Code:
var x              = 0;
var someVar        = 2;
var someAnotherVar = 4;

Example with regular expression

Before:
Code:
switch(e.type) {
   case "mousedown": f(); break;
   case "mouseup": someFunction(); break;
   case "click": someAnotherFunction(); break;
}
After "/\w+\(/" (or ":" and -sepAtStart=true):
Code:
switch(x) {
   case "mousedown": f(); break;
   case "mouseup":   someFunction(); break;
   case "click":     someAnotherFunction(); break;
}
After "break":
Code:
switch(x) {
   case "mousedown": f();                   break;
   case "mouseup":   someFunction();        break;
   case "click":     someAnotherFunction(); break;
}


Screenshots



Last edited by Infocatcher on Wed May 07, 2014 11:25 am; edited 10 times in total
Back to top
View user's profile Send private message Visit poster's website
Andrey_A_A



Joined: 03 Jun 2010
Posts: 579
Location: Сочи, Хоста

PostPosted: Sat May 28, 2011 11:47 pm    Post subject: Reply with quote

InsertMsgBox.vbs

Code:
' InsertMsgBox.vbs
'========================   Описание   =====================================
' В файлах скриптинга (Vbs, Js, Au3...) вставляет соответствующую функцию MsgBox...
' выводящую информацию для проверяемой выделенной переменной или вычисляемых выражений
' Если проверяемая переменная не выделена, она выделяется
' Необходимо курсор поставить либо на переменную либо справа от неё
' Для отображения MsgBox для выражения - необходимо его выделить
'========================  Параметр ========================================
' 1 - вставка после переменной
' 2 - вставка до переменной
' 3 - вставка до и после переменной
'========================    Примеры    ====================================
' -"Вставить MsgBox после переменной" Call("Scripts::Main", 1, "InsertMsgBox.vbs", "1")  Icon("%a\AkelPadImage.dll",627)
' -"Вставить MsgBox до переменной" Call("Scripts::Main", 1, "InsertMsgBox.vbs", "2")  Icon("%a\AkelPadImage.dll",626)
' -"Вставить MsgBox до и после переменной" Call("Scripts::Main", 1, "InsertMsgBox.vbs", "3")  Icon("%a\AkelPadImage.dll",625)

' используется Functions.vbs, который следует положить ...AkelFiles\Plugs\Scripts\Include\

' Автор:           Аверин Андрей
' Версия:          1.5 (11.01.2011 - 01.09.2012)
' Mail:            Averin-And@yandex.ru
' Site:            http://tc-image.3dn.ru/forum/9-382-1157-16-1333712982
' Site:            http://akelpad.sourceforge.net/forum/viewtopic.php?p=13098#13098
'===========================================================================
If AkelPad.GetEditWnd() = 0 Then WScript.Quit
N = 1 : k = Chr(34)
if WScript.Arguments.Length > 0 Then n = CInt(WScript.Arguments(0))
With AkelPad  Call .Include("Functions.vbs") : pName = .GetSelText() : Curs = .GetSelStart()
  If Len(pName) = 0 Then pName = GetWordLeft
  If Len(pName) = 0 Then WScript.Quit
  Call SetRedraw(.GetEditWnd(), False) : Call .SendMessage(.GetEditWnd(), 3185, 3, True)

  pExt = UCase(GetExtFile)
  If InStr("VBS;JS;AU3", pExt) = 0 Then Call EndRedraw
  Exx = ExtLine(pExt, pName)
  Select Case N
    Case 1 Text = vbNewLine & Exx : poz = PosEndLine
    Case 2 Text = Exx & vbNewLine : poz = PosBegLine
    Case 3 Text = vbNewLine & Exx : poz = PosEndLine : Text2 = Exx & vbNewLine : poz2 = PosBegLine
  End Select
  If N > 1 Then Curs = Curs + Len(Exx) + 1
  Call .SetSel(poz, poz)
  Call .ReplaceSel(Text)
  If Len(Text2) > 0 Then : Call .SetSel(poz2, poz2) : Call .ReplaceSel(Text2) : End If
 
  Call .SetSel(Curs, Curs)
  Call .SendMessage(.GetEditWnd(), 3185, 3, False)
  Call SaveEditFile : Call EndRedraw
  Call .SendMessage(.GetEditWnd(), 3376, 3, 0)
End With

' функция присваивает, расширению соответствующую функцию MsgBox ...
' есть возможность добавить своё или исправить имеющееся
Function ExtLine(Ext, Name)
  SName = Name : Slovo = "Переменная "

  if Instr(SName, """") > 0 Then
    SName = Replace(SName, k, k & " & Chr(34) & " & k) : JSName = Replace(SName, k, k & " + Chr(34) + " & k)
  End if

  Stroka = "(,&+-*^/"
  For nn = 1 To Len(Stroka)
    if Instr(SName, Mid(Stroka, nn, 1)) > 0 Then Slovo = "Выражение "
  Next
  Select Case Ext
    Case "VBS"
      Line = "MsgBox " & k & Slovo & SName & " =" & k & " & vbNewLine & " & k & "<" & k & " & " & Name & " & " & k & ">" & k
    Case "JS"
      Line = "AkelPad.MessageBox(0," & k & JSName & " =>" & k & " + " & Name & " + " & k & "<=" & k & ", " & k & Slovo & Name & k & ", 64);"
    Case "AU3"
      if Left(Name,1) <> "$" Then Name = "$" & Name
      Line = "MsgBox(4096, " & k & Slovo & k & " & " & SName & " , " & k & Name & " =>" & k & " & " & Name & " & " & k & "<=" & k & ")"
  End Select
  ExtLine = Line
End Function


Используется: Functions.vbs


Last edited by Andrey_A_A on Thu Sep 13, 2012 2:22 am; edited 4 times in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website
VladSh



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

PostPosted: Fri Jun 03, 2011 12:08 pm    Post subject: Reply with quote

DownloadMaster.js

Code:
///Downloading a file by URL using Download Master
///Передача URL на закачку в Download Master; работает из контекстного меню ссылок
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13156#13156
// Version: 1.2 (2011.08.22)
//
// -"Закачать при помощи DM" Call("Scripts::Main", 1, "DownloadMaster.js", `-url="%u" -cmdline="hidden=1"`);      parameters of the comandLine see: http://www.westbyte.com/dm/help/tutorial_commandline.htm
// -"Добавление закачки в DM..." Call("Scripts::Main", 1, "DownloadMaster.js", `-url="%u"`)
// -"Добавление закачки в DM..." Call("Scripts::Main", 1, "DownloadMaster.js", `-url="%u" -dmpath="%COMMANDER_PATH%\Programs\Internet\Download_Master\dmaster.exe"`)
// -"Добавление закачки в DM..." Call("Scripts::Main", 1, "DownloadMaster.js", `-url="%u" -dmpath="%ProgramFiles%\Download Master\dmaster.exe"`)

var WshShell = new ActiveXObject("WScript.Shell");

var url = AkelPad.GetArgValue("url", "");      //URL
if (!url)
   showErrorMessage('Параметр (-url="%u") отсутствует в аргументах.', true);

var pProgram = AkelPad.GetArgValue("dmpath", "");      //ПУТЬ К ПРОГРАММЕ; сначала берём из агрументов

if (pProgram)
{
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   if (fso.FileExists(pProgram) == false)
      showErrorMessage("Приложение Download Master не найдено." + "\r" + "Путь: '" + pProgram + "'.", true);
}
else
{
   pProgram = RegRead("HKCR\\Applications\\dmaster.exe\\shell\\open\\command\\");      //читаем значение по умолчанию
   if (!pProgram)
      showErrorMessage("Приложение Download Master не зарегистрировано в системе.", true);   
   pProgram = pProgram.replace('"%L"', "");
}

var commandLine = AkelPad.GetArgValue("cmdline", "");      //КОМАНДНАЯ СТРОКА
if (commandLine)
   commandLine = " " + commandLine;

WshShell.Exec(pProgram + " " + url + commandLine);


function showErrorMessage(pText, bQuit)
{
   AkelPad.MessageBox(AkelPad.GetEditWnd(), pText, WScript.ScriptName, 48);
   if (bQuit) WScript.Quit();
}

function getPath(paths)
{
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   var path = WshShell.ExpandEnvironmentStrings(paths);
   if (fso.FileExists(path))
      return path;
   return "";
}

function RegRead(pPath)
{
   try
      { return WshShell.RegRead(pPath) }
   catch(e)
      { return null }
}



Last edited by VladSh on Mon Aug 22, 2011 12:08 pm; edited 3 times in total
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Wed Jun 15, 2011 3:42 pm    Post subject: Reply with quote

Merge contents of all opened documents in one file.

MergeDocuments.js
Code:
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13246#13246
// Version v1.0
//
//
//// Merge contents of all opened documents in one file.

var hMainWnd=AkelPad.GetMainWnd();
var pText="";
var nIndex=0;

if (hMainWnd)
{
  while (lpFrame=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 8 /*FWF_BYTABINDEX*/, nIndex++))
  {
    AkelPad.SendMessage(hMainWnd, 1285 /*AKD_FRAMEACTIVATE*/, 0, lpFrame);
    pText+=AkelPad.GetTextRange(0, -1);
  }
  if (pText)
  {
    AkelPad.Command(4101 /*IDM_FILE_NEW*/);
    AkelPad.ReplaceSel(pText);
    AkelPad.Command(4106 /*IDM_FILE_SAVEAS*/);
  }
}
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Thu Jun 16, 2011 12:22 pm    Post subject: Reply with quote

CutFormattingText.js

Code:
///Cutting text with formatting
///Вырезает текст с "форматированием" (с подсветкой "синтаксиса" для текущего файла, установленной с помощью плагина Coder)
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13256#13256
// Version: 1.4 (2011.07.21)
// -"Вырезать (с форматированием)" Call("Scripts::Main", 1, "CutFormattingText.js")


var nFLAGS = AkelPad.GetArgLine() || 48;      //по умолчанию "копировать с форматированием и заполнять текстовый буфер обмена" (16+32)

var pText = AkelPad.GetSelText() || AkelPad.SetSel(0, -1) || AkelPad.GetSelText();
if (pText)
{
   if (AkelPad.Call("Coder::Settings", 4, nFLAGS) >= 0)
      AkelPad.ReplaceSel("");
}



Last edited by VladSh on Thu Jul 21, 2011 4:02 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
KDJ



Joined: 06 Mar 2010
Posts: 1395
Location: Poland

PostPosted: Tue Jun 21, 2011 8:12 pm    Post subject: Reply with quote

Inserts folder name using SHBrowseForFolder function.

InsertFolderName.js

Code:
// InsertFolderName.js - ver. 2014-04-12 (x86/x64)
//
// Inserts folder name using SHBrowseForFolder function.
//
// Usage:
// Call("Scripts::Main", 1, "InsertFolderName.js")

var hWndOwn = AkelPad.GetEditWnd();
if (! hWndOwn) WScript.Quit();

var oSys       = AkelPad.SystemFunction();
var sFile      = AkelPad.GetEditFile(0);
var sDir       = (sFile) ? sFile.substr(0, sFile.lastIndexOf("\\") + 1) : "";
var sText      = "Choose folder:";
var lpCallback = oSys.RegisterCallback(BFFCallback);
var lpText     = AkelPad.MemAlloc((sText.length + 1) * 2);
var lpDir      = AkelPad.MemAlloc(260 * 2); //sizeof(MAX_PATH)
var lpBrowse   = AkelPad.MemAlloc(_X64 ? 64 : 32); //sizeof(BROWSEINFO)
var lpIDL;

AkelPad.MemCopy(lpText, sText, 1 /*DT_UNICODE*/);
AkelPad.MemCopy(lpDir, sDir, 1 /*DT_UNICODE*/);

AkelPad.MemCopy(lpBrowse,                       hWndOwn, 2 /*DT_QWORD*/); //hwndOwner
AkelPad.MemCopy(lpBrowse + (_X64 ?  8 :  4),          0, 2 /*DT_QWORD*/); //pidlRoot
AkelPad.MemCopy(lpBrowse + (_X64 ? 16 :  8),      lpDir, 2 /*DT_QWORD*/); //pszDisplayName
AkelPad.MemCopy(lpBrowse + (_X64 ? 24 : 12),     lpText, 2 /*DT_QWORD*/); //lpszTitle
AkelPad.MemCopy(lpBrowse + (_X64 ? 32 : 16), 0x00000041, 3 /*DT_DWORD*/); //ulFlags = BIF_NEWDIALOGSTYLE|BIF_RETURNONLYFSDIRS
AkelPad.MemCopy(lpBrowse + (_X64 ? 40 : 20), lpCallback, 2 /*DT_QWORD*/); //lpfn
AkelPad.MemCopy(lpBrowse + (_X64 ? 48 : 24),          0, 2 /*DT_QWORD*/); //lParam
AkelPad.MemCopy(lpBrowse + (_X64 ? 56 : 28),          0, 3 /*DT_DWORD*/); //iImage

oSys.Call("Ole32::CoInitialize", 0);
lpIDL = oSys.Call("Shell32::SHBrowseForFolderW", lpBrowse);

if (lpIDL)
{
  oSys.Call("Shell32::SHGetPathFromIDListW", lpIDL, lpDir);

  sDir = AkelPad.MemRead(lpDir, 1 /*DT_UNICODE*/);

  if (sDir)
  {
    if (! /\\$/.test(sDir)) sDir += "\\";
    AkelPad.ReplaceSel(sDir, 1);
  }
}

oSys.Call("Ole32::CoTaskMemFree, lpIDL");
oSys.Call("Ole32::CoUninitialize");

oSys.UnregisterCallback(lpCallback);
AkelPad.MemFree(lpText);
AkelPad.MemFree(lpDir);
AkelPad.MemFree(lpBrowse);

function BFFCallback(hWnd, uMsg, lParam, lpData)
{
  if (uMsg == 1 /*BFFM_INITIALIZED*/)
  {
    var hWndDesk = oSys.Call("User32::GetDesktopWindow");
    var lpRect   = AkelPad.MemAlloc(16); //sizeof(RECT)
    var hWnd1;
    var hWnd2;
    var nWndX, nWndY, nWndW, nWndH;
    var nOwnX, nOwnY, nOwnW, nOwnH;
    var nDeskW, nDeskH;

    oSys.Call("User32::SetWindowTextW", hWnd, "Insert folder name");

    oSys.Call("User32::SendMessageW", hWnd, 0x0467 /*BFFM_SETSELECTIONW*/, 1, lpDir);

    //set focus to TreeView
    if (hWnd1 = oSys.Call("User32::FindWindowExW", hWnd, 0, "SHBrowseForFolder ShellNameSpace Control", 0))
    {
      if (hWnd2 = oSys.Call("User32::FindWindowExW", hWnd1, 0, "SysTreeView32", 0))
      {
        WScript.Sleep(50);
        oSys.Call("User32::PostMessageW", hWnd, 0x0028 /*WM_NEXTDLGCTL*/, hWnd2, 1);
        oSys.Call("User32::PostMessageW", hWnd2, 0x1114 /*TVM_ENSUREVISIBLE*/, 0, oSys.Call("User32::SendMessageW", hWnd2, 0x110A /*TVM_GETNEXTITEM*/, 0x0009 /*TVGN_CARET*/, 0));
      }
    }

    //center dialog
    oSys.Call("User32::GetWindowRect", hWnd, lpRect);
    nWndX = AkelPad.MemRead(lpRect,      3 /*DT_DWORD*/);
    nWndY = AkelPad.MemRead(lpRect +  4, 3 /*DT_DWORD*/);
    nWndW = AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/) - nWndX;
    nWndH = AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/) - nWndY;

    oSys.Call("User32::GetWindowRect", hWndOwn, lpRect);
    nOwnX = AkelPad.MemRead(lpRect,      3 /*DT_DWORD*/);
    nOwnY = AkelPad.MemRead(lpRect +  4, 3 /*DT_DWORD*/);
    nOwnW = AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/) - nOwnX;
    nOwnH = AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/) - nOwnY;

    oSys.Call("User32::GetWindowRect", hWndDesk, lpRect);
    nDeskW = AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/);
    nDeskH = AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/);
    AkelPad.MemFree(lpRect);

    nWndX = nOwnX + (nOwnW - nWndW) / 2;
    nWndY = nOwnY + (nOwnH - nWndH) / 2;

    if ((nWndX + nWndW) > nDeskW)
      nWndX = nDeskW - nWndW;
    if (nWndX < 0)
      nWndX = 0;
    if ((nWndY + nWndH) > nDeskH)
      nWndY = nDeskH - nWndH;
    if (nWndY < 0)
      nWndY = 0;

    oSys.Call("User32::SetWindowPos", hWnd, 0, nWndX, nWndY, 0, 0, 0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
  }

  return 0;
}


Last edited by KDJ on Sat Apr 12, 2014 9:58 pm; edited 2 times in total
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1395
Location: Poland

PostPosted: Wed Jun 22, 2011 7:49 pm    Post subject: Reply with quote

Inserts folder name using SHBrowseForFolder function.
Alternative version with AkelPad.Include("BrowseForFolder_function.js").

InsertFolderName_alternative.js

Code:
// InsertFolderName_alternative.js - ver. 2013-08-07 (x86/x64)
//
// Inserts folder name using SHBrowseForFolder function.
// Alternative version with AkelPad.Include("BrowseForFolder_function.js").
// Script BrowseForFolder_function.js must be placed in directory ...\AkelPad\AkelFiles\Plugs\Scripts\Include\
//
// Usage:
// Call("Scripts::Main", 1, "InsertFolderName_alternative.js")

var hEditWnd = AkelPad.GetEditWnd();
var sFile    = AkelPad.GetEditFile(0);
var sText    = "Choose folder:";
var sDir     = "";
var sTitle   = "Insert folder name";

if ((hEditWnd) && AkelPad.Include("BrowseForFolder_function.js"))
{
  if (sFile)
    sDir = sFile.substr(0, sFile.lastIndexOf("\\") + 1);

  sDir = BrowseForFolder(hEditWnd, sText, sDir, sTitle);

  if (sDir)
    AkelPad.ReplaceSel(sDir, 1);
}


BrowseForFolder_function.js

Code:
// BrowseForFolder_function.js - ver. 2014-10-05 (x86/x64)
//
// Call in script:
//   if (! AkelPad.Include("BrowseForFolder_function.js")) WScript.Quit();
//   sDir = BrowseForFolder(hWndOwn, sText, sIniDir, sTitle, bFiles, nPosX, nPosY);
//
// All arguments are optional:
//   hWndOwn - handle to the owner window for the dialog box, default is desktop window
//   sText   - text that is displayed above the tree view control in the dialog box, default is ""
//   sIniDir - folder/file to be selected, after calling the function, default is ""
//   sTitle  - dialog box title, default is standard title
//   bFiles  - if true, dialog box displays also files
//   nPosX   - horizontal position of the dialog in screen coordinates
//   nPosY   - vertical position of the dialog in screen coordinates
//
// Function returns string - selected folder/file name or "" if you press Cancel button

function BrowseForFolder(hWndOwn, sText, sIniDir, sTitle, bFiles, nPosX, nPosY)
{
  var sDir     = "";
  var oSys     = AkelPad.SystemFunction();
  var hWndDesk = oSys.Call("User32::GetDesktopWindow");

  try
  {
    oSys.RegisterCallback(BFFCallback);
  }
  catch (oError)
  {
    WScript.Echo("Unable to register callback function.");
    return sDir;
  }

  if (! oSys.Call("User32::IsWindow", hWndOwn))
    hWndOwn = hWndDesk;
  if (typeof sText != "string")
    sText = "";
  if (typeof sIniDir != "string")
    sIniDir = "";

  var lpText   = AkelPad.MemAlloc((sText.length + 1) * 2);
  var lpDir    = AkelPad.MemAlloc(260 * 2); //sizeof(MAX_PATH)
  var lpBrowse = AkelPad.MemAlloc(_X64 ? 64 : 32); //sizeof(BROWSEINFO)
  var nFlags   = 0x00000041 /*BIF_NEWDIALOGSTYLE|BIF_RETURNONLYFSDIRS*/ | (bFiles ? 0x00004000 /*BIF_BROWSEINCLUDEFILES*/ : 0);
  var lpIDL;

  AkelPad.MemCopy(lpText, sText, 1 /*DT_UNICODE*/);
  AkelPad.MemCopy(lpDir, sIniDir, 1 /*DT_UNICODE*/);

  AkelPad.MemCopy(lpBrowse,                        hWndOwn, 2 /*DT_QWORD*/); //hWndOwner
  AkelPad.MemCopy(lpBrowse + (_X64 ?  8 :  4),           0, 2 /*DT_QWORD*/); //pidlRoot
  AkelPad.MemCopy(lpBrowse + (_X64 ? 16 :  8),       lpDir, 2 /*DT_QWORD*/); //pszDisplayName
  AkelPad.MemCopy(lpBrowse + (_X64 ? 24 : 12),      lpText, 2 /*DT_QWORD*/); //lpszTitle
  AkelPad.MemCopy(lpBrowse + (_X64 ? 32 : 16),      nFlags, 3 /*DT_DWORD*/); //ulFlags
  AkelPad.MemCopy(lpBrowse + (_X64 ? 40 : 20), BFFCallback, 2 /*DT_QWORD*/); //lpfn
  AkelPad.MemCopy(lpBrowse + (_X64 ? 48 : 24),           0, 2 /*DT_QWORD*/); //lParam = lpData in callback function
  AkelPad.MemCopy(lpBrowse + (_X64 ? 56 : 28),           0, 3 /*DT_DWORD*/); //iImage

  if (lpIDL = oSys.Call("Shell32::SHBrowseForFolderW", lpBrowse))
  {
    oSys.Call("Shell32::SHGetPathFromIDListW", lpIDL, lpDir);
    oSys.Call("Ole32::CoTaskMemFree", lpIDL);
    sDir = AkelPad.MemRead(lpDir, 1 /*DT_UNICODE*/);
  }

  oSys.UnregisterCallback(BFFCallback);
  AkelPad.MemFree(lpText);
  AkelPad.MemFree(lpDir);
  AkelPad.MemFree(lpBrowse);

  return sDir;

  function BFFCallback(hWnd, uMsg, lParam, lpData)
  {
    if (uMsg == 1 /*BFFM_INITIALIZED*/)
    {
      var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
      var hWnd1;
      var hWnd2;
      var nPosW, nPosH;
      var nOwnX, nOwnY, nOwnW, nOwnH;
      var nDeskW, nDeskH;

      if (typeof sTitle == "string")
        oSys.Call("User32::SetWindowTextW", hWnd, sTitle);

      AkelPad.SendMessage(hWnd, 0x0467 /*BFFM_SETSELECTIONW*/, 1, lpDir);

      //set focus to TreeView
      if (hWnd1 = oSys.Call("User32::FindWindowExW", hWnd, 0, "SHBrowseForFolder ShellNameSpace Control", 0))
      {
        if (hWnd2 = oSys.Call("User32::FindWindowExW", hWnd1, 0, "SysTreeView32", 0))
        {
          WScript.Sleep(50);
          oSys.Call("User32::PostMessageW", hWnd, 0x0028 /*WM_NEXTDLGCTL*/, hWnd2, 1);
          oSys.Call("User32::PostMessageW", hWnd2, 0x1114 /*TVM_ENSUREVISIBLE*/, 0, AkelPad.SendMessage(hWnd2, 0x110A /*TVM_GETNEXTITEM*/, 0x0009 /*TVGN_CARET*/, 0));
        }
      }

      if ((typeof nPosX != "number") || (typeof nPosY != "number"))
      {
        //center dialog
        oSys.Call("User32::GetWindowRect", hWnd, lpRect);
        nPosX = AkelPad.MemRead(lpRect,      3 /*DT_DWORD*/);
        nPosY = AkelPad.MemRead(lpRect +  4, 3 /*DT_DWORD*/);
        nPosW = AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/) - nPosX;
        nPosH = AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/) - nPosY;

        oSys.Call("User32::GetWindowRect", hWndOwn, lpRect);
        nOwnX = AkelPad.MemRead(lpRect,      3 /*DT_DWORD*/);
        nOwnY = AkelPad.MemRead(lpRect +  4, 3 /*DT_DWORD*/);
        nOwnW = AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/) - nOwnX;
        nOwnH = AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/) - nOwnY;

        oSys.Call("User32::GetWindowRect", hWndDesk, lpRect);
        nDeskW = AkelPad.MemRead(lpRect +  8, 3 /*DT_DWORD*/);
        nDeskH = AkelPad.MemRead(lpRect + 12, 3 /*DT_DWORD*/);
        AkelPad.MemFree(lpRect);

        nPosX = nOwnX + (nOwnW - nPosW) / 2;
        nPosY = nOwnY + (nOwnH - nPosH) / 2;

        if ((nPosX + nPosW) > nDeskW)
          nPosX = nDeskW - nPosW;
        if (nPosX < 0)
          nPosX = 0;
        if ((nPosY + nPosH) > nDeskH)
          nPosY = nDeskH - nPosH;
        if (nPosY < 0)
          nPosY = 0;
      }

      oSys.Call("User32::SetWindowPos", hWnd, 0, nPosX, nPosY, 0, 0, 0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
    }

    return 0;
  }
}


Last edited by KDJ on Sun Oct 05, 2014 4:02 pm; edited 8 times in total
Back to top
View user's profile Send private message
Andrey_A_A



Joined: 03 Jun 2010
Posts: 579
Location: Сочи, Хоста

PostPosted: Thu Jun 23, 2011 10:05 pm    Post subject: Reply with quote

Descript.vbs

Code:
' Descript.vbs
'========================   Описание   =====================================
' Внесение выделенного текста в файл комментариев Descript.ion
' если ничего не выделено, в комментарий вносится часть строки, от курсора вправо
'=======================   Параметры  ======================================
' Один параметр:
'    0 - (или ничего) - открыть файл Descript.ion (если его нет - создать и открыть)
'    1 - внести выделенный текст в комментарии (если коммент. есть для этого файла - заменить)
'    2 - внести выделенный текст в комментарии и открыть файл
'    3 - Удалить комментарии несуществующих файлов\папок
'    4 - Дать полную информацию:
'       - открыть файл
'       - отобразить в новой вкладке каким файлам\папкам присвоены комментарии
'       - отобразить в новой вкладке каким файлам\папкам не присвоены комментарии
'       - отобразить в новой вкладке лишние комментарии (оставшиеся после удаления файла\папки)
' (если документ не имеет имени ничего не происходит)
'========================   Примеры   ======================================
'  "&Комментарии..." Icon("%a\AkelPadImage.dll",557)
'  {
'   -"Открыть файл Descript.ion" Call("Scripts::Main", 1, "Descript.vbs")
'   -"Внести выделенный текст в комментарии Shift+Alt+C" Call("Scripts::Main", 1, "Descript.vbs", `"1"`)
'   -"Внести выделенный текст в комментарии +" Call("Scripts::Main", 1, "Descript.vbs", `"2"`)
'   -"Удалить комментарии несуществующих ф\п" Call("Scripts::Main", 1, "Descript.vbs", `"3"`)
'   -"Дать полную информацию о Descript.ion" Call("Scripts::Main", 1, "Descript.vbs", `"4"`)
'  }

' используется Functions.vbs, который следует положить .в ..AkelFiles\Plugs\Scripts\Include\

' Автор:           Аверин Андрей
' Версия:          1.5 (28.04.2011 - 08.09.2012)
' Mail:            Averin-And@yandex.ru
' Site:            http://tc-image.3dn.ru/forum/9-421-1208-16-1333826782
' Site:            http://akelpad.sourceforge.net/forum/viewtopic.php?p=13346#13346
'===========================================================================
File = AkelPad.GetEditFile(0)
If Len(File) = 0 Then WScript.Quit ' если документ не имеет имени

Set FSO = CreateObject("Scripting.FileSystemObject")
Call AkelPad.Include("Functions.vbs")

dPath = FSO.GetParentFolderName(File)
dFile = dPath & "\descript.ion" : pText = ""

If Not FSO.FileExists(DFile) Then
  Call FSO.CreateTextFile(DFile)
  With FSO.GetFile(DFile) .Attributes = .Attributes Or 38 End With
End If

fName = FSO.GetFileName(File) : nS = 0

If WScript.Arguments.Count = 0 Then
  k = 0
Else
  k = WScript.Arguments(0)
End If

Select Case k
  Case 0 Call AkelPad.OpenFile(dFile)
  Case 1 Call WriteFile(dFile, fName)
  Case 2 Call WriteFile(dFile, fName) : Call AkelPad.OpenFile(dFile)
  Case 3 Call ClearFile(dFile, dPath, 1)
  Case 4 Call ClearFile(dFile, dPath, 2) : Call AkelPad.OpenFile(dFile)
End Select

' функция записи выделенного (или части строки) комментария
Sub WriteFile(fDesc, Name) tText = AkelPad.GetSelText()
  If Len(tText) = 0 Then tText = GetLineRight ' если ничего не выделено, выделяется строка вправо от курсора
  If Len(tText) = 0 Then WScript.Quit ' если ничего не выделено
  If InStr(tText, chr(13)) > 0 Then
    Txt = Split(tText, chr(13))
    iTxt = Name & " ' " & Join(Txt, "\n") & "\nВ"
  Else
    iTxt = Name & " ' " & tText & "\nВ" ' уберите из строки  & "\nВ"   если не нужен перенос в комментарии
  End If
  On Error Resume Next
  pText =  FSO.OpenTextFile(fDesc).ReadAll
  If Len(pText) > 0 Then
    List = Split(pText, vbNewLine)
    For i = 1 To Ubound(List) + 1
      If UCase(Name & Chr(32)) = UCase(Left(List(i - 1), Len(Name) + 1)) Then
        nS = i : Exit For
      End If
    Next
    If nS > 0 Then
      List(nS - 1) = iTxt : Text = Join(List, vbNewLine)
    Else
      Text = Join(List, vbNewLine)  & vbNewLine & iTxt
    End If
    Text = Selecting(Text)
  Else
    Text = iTxt & vbNewLine
  End If
  Text = Replace(Text, vbNewLine & vbNewLine, vbNewLine)
  FSO.OpenTextFile(fDesc, 2).Write Text
End Sub

Sub ClearFile(fD, dP, s)
  cList = Split(FSO.OpenTextFile(fD).ReadAll, vbNewLine)
  On Error Resume Next
  Set Folder = FSO.GetFolder(dP)
  For Each Files In Folder.Files
    nList = nList & Files.Name & " ;"
  Next

  For Each Folder In Folder.SubFolders
    nList = nList & Folder.Name & " ;"
  Next

  sLst = Split(nList, ";") : n = 0
  For i = 0 To Ubound(sLst) ' массив папок и файлов
    For j = 0 To Ubound(cList) ' массив комментариев
      If Len(cList(j)) > 0 And Len(sLst(i)) > 0Then
        if UCase(sLst(i)) = UCase(Left(cList(j), Len(sLst(i)))) Then
          n = 1 : oText = oText & cList(j)  & vbNewLine : cList(j) = "" : Exit For
        End If
      End If
    Next
    If n = 0 Then noText = noText & sLst(i) & vbNewLine : n = 0
  Next

  oText = Selecting(oText)
  If s = 1 Then
    FSO.OpenTextFile(fD, 2).Write oText
  Else
    For i = 0 To Ubound(cList)
      If Len(cList(i)) > 0 Then mText = mText & cList(i) & vbNewLine
    Next
    noText = "Для этих файлов\папок комментарии не установлены" & vbNewLine & String(90, "-") & vbNewLine & Selecting(noText)
    mText = "Комментарии для этих файлов\папок установлены, но файлов\папок нет" & vbNewLine & String(90, "-") & vbNewLine & Selecting(mText)

    Call ReplSel(oText) : Call ReplSel(noText) : Call ReplSel(mText)
  End If
End Sub

Sub ReplSel(xText)
    With AkelPad
      Call .SendMessage(.GetMainWnd(), 273, 4101, 0)
      Call SetRedraw(.GetEditWnd(), False)
      Call .ReplaceSel(Replace(xText, vbNewLine & vbNewLine, vbNewLine))
      Call .SendMessage(.GetEditWnd(), 3087, False, 0)
      Call .SendMessage(.GetEditWnd(), 3079, 0, 0)
      Call .SetSel(0, 0)
      Call SetRedraw(.GetEditWnd(), True)
    End With
End Sub


Используется: Functions.vbs

Значки для скрипта:
Descript.b64

Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="Descript.dll"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Descript.dll"

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAsAAAAA4fug4AtAnNIbgBTM0hVGhpcyBpcyAzMi1iaXQgcmVzb3VyY2UgZGxsLg0NCgAAAAAA
AAAAAAAAJAAAAAAAAAAp5wHbbYZviG2Gb4hthm+IqoBpiGyGb4gypGWIbIZviFJpY2hthm+IAAAA
AAAAAABQRQAATAEBAAyj6DoAAAAAAAAAAOAADwELAQYAAAAAAJAYAAAAAAAAAAAAAAACAAAAAgAA
AABAABAAAAAQAAAABAAAAAAAAAAEAAAAAAAAAJAaAAAAAgAAAAAAAAIAAAAAABAAABAAAAAAEAAA
EAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAIwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5yc3JjAAAAjBgAAAACAACQGAAAAAIAAAAAAAAAAAAA
AAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAQAAAAAAAIAAwAAACAAAIAOAAAAWAAAgAAAAAAAAAAABAAAAAAABQABAAAAkAAAgAIA
AACoAACAAwAAAMAAAIAEAAAA2AAAgAUAAADwAACAAAAAAAAAAAAEAAAAAAAFAAEAAAAIAQCAAgAA
ACABAIADAAAAOAEAgAQAAABQAQCABQAAAGgBAIAAAAAAAAAAAAQAAAAAAAEAAAAAAIABAAAAAAAA
AAAAAAQAAAAAAAEAAAAAAJABAAAAAAAAAAAAAAQAAAAAAAEAAAAAAKABAAAAAAAAAAAAAAQAAAAA
AAEAAAAAALABAAAAAAAAAAAAAAQAAAAAAAEAAAAAAMABAAAAAAAAAAAAAAQAAAAAAAEAAAAAANAB
AAAAAAAAAAAAAAQAAAAAAAEAAAAAAOABAAAAAAAAAAAAAAQAAAAAAAEAAAAAAPABAAAAAAAAAAAA
AAQAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAQAAAAAAAEAAAAAABACAAAgBAAAaAQAAOQEAAAAAAAA
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
wtyI/7/ZiP/E3In/xdqJ/8Xaif/E3In/wdmI/8HZh//I54f/7u78/wAAAKYAAAALtbPQmm+mAP9v
gAD/gZMA/5GkAP+asAD/o7oA/6a8AP+iuAD/nbMA/5OpAP+HmgD/dIcA/4CSAP/1+P//AAAAPcbC
6MtfbwD/eowA/4ygAP+asAD/qsEA/4SYAP9ijAD/n7QA/6rBAP+itwD/laoA/4eaAP9cbAD/1fGW
/wAAAFvQy/HLX28A/2+AAP+AkgD/jqIA/2JxAP/x6P///////22ICv+TqQD/kaQA/4SYAP93iQD/
WGcA/9fun/8AAABa2tb7y19vAP9ldgD/dIcA/1tqAP/58v//////////////////YHAA/4eaAP96
jAD/b4AA/1RiAP/j+6T/AAAAWuHe/8tldgD/X28A/1RjAP/g1fL/2cje//Ls+f/NxMn/7OXv/9rP
4P9bagD/b4AA/2V0AP9UYwD/5/+r/wAAAFrq5v/Lb4AA/05cAP/Qxsz/uqrC/+7o/f92hwD/WGcA
//Hq/f/i2en/o6dg/1ZmAP9ldgD/X28A/+//sf8AAABa5OP/y3SHAP9gcAD///////////+YpBj/
gZMA/4SYAP+4wmL///////////+EkwD/gJIA/21+AP/t/67/AAAAWt7c/8uOsAD/qrgA/5GiAP+R
ogD/n7AA/6S0AP+ktAD/gZMA////9f///////////4GSAP+ktwD/7f+p/wAAAFrV0vLLlsEA/7/L
HP+7yxf/u8sX/7jIGP+4yBj/uMgY/7zMF/+RoAD////////////r7cj/sMIA/+7/pP8AAABayMbn
y6vSAP/X5EP/1eM+/9XjPv/V4z7/1eM+/9XjPv/V4z7/2ecv/6m0Q///////0Nef/9LkIf/g+5j/
AAAAWre32cvE7QD/8fxl/+r4XP/q+Fz/6vhc/+r4XP/q+Fz/6vhc/+r4XP/t+1T/yNU2/+b0Tf/1
/1z/3PSR/wAAAFy3tNDFs9cG////kv///4n///+J////if///4n///+J////if///4n///+J////
iP///4z///96/8bejP8AAABFq6u4Y2Z3PP+kvBX/q8Qe/6nCHv+pwh7/qcIe/6nCHv+pwh7/qcIe
/6nCHv+qwh7/rsUe/22MAf+EfZjuAAAAAAAAAACwrrdjqanBxKSgt8yioLfLoqC3y6Kgt8uioLfL
oqC3y6Kgt8uioLfLoqC3y6Siusu1s8SZAAAAAwAAAADAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACAAQAAKAAAABAAAAAgAAAAAQAgAAAA
AABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAFwAAABaAAAAWgAAAFoAAABaAAAA
WgAAAFoAAABaAAAAWgAAAFsAAAA9AAAACwAAAAAAAAADoIN67qDV7v+Dvtn/hsHc/4i+2P+Iw9v/
h8Pa/4fD2v+Iw9v/iMHY/4bA2P+GyOb/++3t/wAAAKYAAAAL0LWzmgBvpv8Ab4D/AIGT/wCSpP8A
mbD/AKO6/wClvP8Aobj/AJ2z/wCSqf8Ah5r/AHSH/wCBkv//9fj/AAAAPejEwMsAYG//AHqM/wCM
oP8AmbD/AKrB/wCDmP8AYoz/AKC0/wCqwf8Aorf/AJWq/wCHmv8AXGz/lNPx/wAAAFvx0cvLAGBv
/wBvgP8AgZL/AI6i/wBhcf//8Ob//////whriP8Akqn/AJKk/wCDmP8Adon/AFdn/5/Y7v8AAABa
+9jUywBgb/8AZXb/AHSH/wBbav//+fL/////////////////AGFw/wCHmv8Aeoz/AG+A/wBVYv+k
4/v/AAAAWv/h3ssAZXb/AGBv/wBUY//y39P/3dnH//jx6//JzcT/7+zl/+Dbz/8AW2r/AG+A/wBl
dP8AVGP/qeb//wAAAFr/6eTLAG+A/wBPXP/M0Mb/wrmo//3s5v8Adof/AFdn//3w6P/o4dj/YKKl
/wBWZv8AZXb/AGBv/7Hv//8AAABa/+PjywB0h/8AYXD///////////8YmKT/AIGT/wCDmP9ht8H/
//////////8AhZP/AIGS/wBtfv+u7v//AAAAWv/e3MsAjrD/AKq4/wCRov8AkaL/AJ+w/wCltP8A
pbT/AIGT//X//////////////wCBkv8Apbf/p+v//wAAAFry1NLLAJbB/xq+y/8XvMv/F7zL/xi3
x/8Yt8f/GLfH/xe8zP8AkaD////////////I6+3/ALHC/6Pu//8AAABa5sbFywCq0v9C1eP/PtPh
/z7T4f8+0+H/PtPh/z7T4f8+0+H/L9jl/0OptP//////n9DX/yHS4v+Y3/n/AAAAWte3t8sAxO3/
ZPD7/1rp+P9a6fj/Wun4/1rp+P9a6fj/Wun4/1rp+P9U7vv/NMjV/0vm9P9c9P//j9z0/wAAAFzQ
tbPFBrPX/5L9/f+H////h////4f///+H////h////4f///+H////h////4b///+M/f3/ev///4zG
3v8AAABFuKurYztldv8Torz/HqvE/x2pwv8dqcL/HanC/x2pwv8dqcL/HanC/x2pwv8dqcL/Hq7F
/wBtjP+Yg3vuAAAAAAAAAAC2r61jwaenxLekoMy3oqDLt6Kgy7eioMu3oqDLt6Kgy7eioMu3oqDL
t6Kgy7qkosvEtbOZAAAAAwAAAADAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAABAACAAQAAAAABAAEAEBAAAAEAIABoBAAAAQAAAAEAAQAQEAAA
AQAgAGgEAAACAAAAAQABABAQAAABACAAaAQAAAMAAAABAAEAEBAAAAEAIABoBAAABAAAAAEAAQAQ
EAAAAQAgAGgEAAAFAFBBREQ=



Last edited by Andrey_A_A on Thu Sep 13, 2012 2:18 am; edited 6 times in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website
VladSh



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

PostPosted: Tue Jul 19, 2011 2:42 pm    Post subject: Reply with quote

ScriptNameCopyAsBBCode.js

Code:
///Copies the name of the script in BBCode, substituting in URL is first found the link in edit window
///Копирует название скрипта в BBCode, подставляя в URL первую найденную в окне редактирования ссылку
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13573#13573
// Version: 1.2 (2011.07.26)
//
// -"Имя как BBCode" Call("Scripts::Main", 1, "ScriptNameCopyAsBBCode.js", `"%f"`)      - для контекстного меню вкладок, но можно вызывать и из окна скриптов

var pFileName = AkelPad.GetEditFile(0) || AkelPad.GetArgLine();

if (pFileName)
{
   var pURL = AkelPad.GetTextRange(0, -1);      //берём до конца файла
   if (pURL)
      pURL = getSubString(pURL, "http://", "\r");
   pFileName = GetFileName(pFileName);
   AkelPad.SetClipboardText("[b][url=" + pURL + "]" + pFileName + "[/url][/b]");
}
else
   AkelPad.MessageBox(AkelPad.GetEditWnd(), "Имя файла не задано. Сохраните файл и попробуйте снова...", WScript.ScriptName, 0 /*MB_OK*/ + 48);


function getSubString(pText, pStartSmbs, pEnd)
{
   var pResult = "";
   var nIndex = pText.indexOf(pStartSmbs);
   if (nIndex != -1)
   {
      pResult = pText.slice(nIndex);
      nIndex = pResult.indexOf(pEnd);
      pResult = pResult.slice(0, nIndex);
   }
   return pResult;
}

function GetFileName(pFile)
{
   return pFile.slice(pFile.lastIndexOf('\\') + 1);
}


ScriptCopyToBlock.js

Code:
///Копирует содержимое файла в определённую структуру [] для выкладки на форум
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13573#13573
// Version: 1.2 (2012.09.14)
//
// Аргументы:
//    -file="%f" - ссылка на файл
//    -block - наименование тэга контейнера
//    -bold ([0]/1) - "жирное" наименование скрипта
//
// Примеры:
// -"Содержимое файла в [more]..."  Call("Scripts::Main", 1, "ScriptCopyToBlock.js", `-file="%f"`)
// -"Содержимое файла в [spoiler]..."  Call("Scripts::Main", 1, "ScriptCopyToBlock.js", `-file="%f" -block="spoiler"`)

var pFileName = GetFileName(AkelPad.GetArgValue("file", ""));
var pBlockName = AkelPad.GetArgValue("block", "more");
var bOpen = ""; var bClose = "";
var b = AkelPad.GetArgValue("bold", 0);
if (b) {
   bOpen = "[b]";
   bClose = "[/b]";
}
var pScript = bOpen + '[' + pBlockName + '="' + pFileName + '"]' + bClose + '\r[code]' + AkelPad.GetTextRange(0, -1) + '[/code][/' + pBlockName + ']';
if (pScript)
   AkelPad.SetClipboardText(pScript);

function GetFileName(pFile) {
   return pFile.slice(pFile.lastIndexOf('\\') + 1);
}


Last edited by VladSh on Fri Sep 14, 2012 8:23 am; edited 7 times in total
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Thu Jul 21, 2011 6:26 pm    Post subject: Reply with quote

Insert.js
Code:
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13628#13628
// Version v1.2
//
//
//// This script is replacement for the Insert() plugin's method.
//
// Escape-sequences:
//   \\ - \ character;
//   \t - Tabulation;
//   \r\n - New line;
//   \r - New line;
//   \n - New line;
//   \s - Selection;
//   \c - Clipboard;
//   \| - Caret position after insertion;
//   \[ - Selection start position after insertion;
//   \] - Selection end position after insertion.
//
// Usage:
// -"Insert URL" Call("Scripts::Main", 1, "Insert.js", `<a href="\c">\[\s\]</a>`)

var hMainWnd=AkelPad.GetMainWnd();
var pArgLine=AkelPad.GetArgLine(0);
var nInsertPos;
var nSelStart;
var nSelEnd;

pArgLine=pArgLine.replace(/\\\\/g, "\0");
if (pArgLine.search(/\\[^rntsc\\\|\[\]]/g) != -1)
{
  AkelPad.MessageBox(hMainWnd, "Syntax error", WScript.ScriptName, 16 /*MB_ICONERROR*/);
  WScript.Quit();
}
pArgLine=pArgLine.replace(/\\r\\n|\\r|\\n/g, "\n");
pArgLine=pArgLine.replace(/\\t/g, "\t");
if (pArgLine.search(/\\s/g) != -1)
  pArgLine=pArgLine.replace(/\\s/g, AkelPad.GetSelText());
if (pArgLine.search(/\\c/g) != -1)
  pArgLine=pArgLine.replace(/\\c/g, AkelPad.GetClipboardText());

//Selection after insertion
if ((nSelStart=pArgLine.search(/\\\|/g)) != -1)
{
  pArgLine=pArgLine.replace(/\\\|/g, "");
  nSelEnd=nSelStart;
}
else if ((nSelStart=pArgLine.search(/\\\[/g)) != -1)
{
  pArgLine=pArgLine.replace(/\\\[/g, "");
  if ((nSelEnd=pArgLine.search(/\\\]/g)) != -1)
    pArgLine=pArgLine.replace(/\\\]/g, "");
}
pArgLine=pArgLine.replace(/\0/g, "\\");

//Replace selection
nInsertPos=AkelPad.GetSelStart();
AkelPad.ReplaceSel(pArgLine);
if (nSelStart != -1)
  AkelPad.SetSel(nInsertPos + nSelStart, nInsertPos + (nSelEnd != -1?nSelEnd:nSelStart));


This script is replacement for the Insert() plugin's method.
Back to top
View user's profile Send private message Send e-mail
Andrey_A_A



Joined: 03 Jun 2010
Posts: 579
Location: Сочи, Хоста

PostPosted: Sun Jul 24, 2011 12:59 pm    Post subject: Reply with quote

CreateLink.vbs

Code:
' CreateLink.vbs
'========================   Описание   =====================================
' Создание ярлыка папки/файла открытого на редактирование
'========================  Параметры =======================================
' 1-й параметр: Путь\где\создавать\ярлык (по умолчанию Рабочий стол) (можно использовать относительные пути)
' 2-й параметр:
'    0 - для файла
'    1 - для папки
' любой 3-й параметр создаст ярлык для AkelPad.exe
'========================    Примеры    ====================================
'  "&Ярлыки..." Icon("a%\AkelFiles\Plugs\Link.dll",2)
'   {
' -"Создать ярлык файла на Рабочем столе" Call("Scripts::Main", 1, "CreateLink.vbs", `"" "0"`) Icon("a%\AkelFiles\Plugs\Link.dll",1)
' -"Создать ярлык файла в панели ''Быстрого запуска''" Call("Scripts::Main", 1, "CreateLink.vbs", `"%%APPDATA%%\Microsoft\Internet Explorer\Quick Launch" "0"`) Icon("a%\AkelFiles\Plugs\Link.dll",3)
'   SEPARATOR
' -"Создать ярлык папки на Рабочем столе" Call("Scripts::Main", 1, "CreateLink.vbs", `"" "1"`) Icon("a%\AkelFiles\Plugs\Link.dll",529)
' -"Создать ярлык папки в панели ''Быстрого запуска''" Call("Scripts::Main", 1, "CreateLink.vbs", `"%%APPDATA%%\Microsoft\Internet Explorer\Quick Launch" "1"`) Icon("a%\AkelFiles\Plugs\Link.dll",0)
' -"Создать ярлык папки в панели ''Отправить в...''" Call("Scripts::Main", 1, "CreateLink.vbs", `"%%APPDATA%%\Microsoft\Windows\SendTo" "1"`) Icon("a%\AkelFiles\Plugs\Link.dll",0)
' -"Создать ярлык папки в панели ''Ссылки на папки''" Call("Scripts::Main", 1, "CreateLink.vbs", `"%%USERPROFILE%%\Links" "1"`) Icon("a%\AkelFiles\Plugs\Link.dll",0)
'   }

' используется Functions.vbs, который следует положить в ...AkelFiles\Plugs\Scripts\Include\

' Автор:           Аверин Андрей
' Версия:          1.1 (18.07.2011 - 12.08.2012)
' Mail:            Averin-And@yandex.ru
' Site:            http://tc-image.3dn.ru/forum/9-345-1067-16-1333460103
' Site:            http://akelpad.sourceforge.net/forum/viewtopic.php?p=13649#13649
'===========================================================================
File = AkelPad.GetEditFile(0)
With WScript
  Cnt = .Arguments.Count
  If Cnt > 0 Then
    Path = .Arguments(0)
    If Cnt > 1 Then
      Param = .Arguments(1) : If Cnt > 2 Then File = AkelPad.GetAkelDir(0) & "\AkelPad.exe"
    End If 
  End If
End With

If Len(File) = 0 Then WScript.Quit
Call AkelPad.Include("Functions.vbs")
Set WSH = CreateObject("WScript.Shell")

If Len(Path) = 0 Then
  Path = WSH.SpecialFolders("Desktop")
Else
  If InStr(Path, "%") > 0 Then Path = GetPath(Path)
End If
If Len(Param) = 0 Then Param = 0

With CreateObject("Scripting.FileSystemObject")
  If Param = 1 Then File = .GetParentFolderName(File)
  Name = .GetBaseName(File)
  Dir = .GetParentFolderName(File)
End With

With WSH.CreateShortcut( Path & "\" & Name & ".lnk")
  .Arguments = ""
  .Description = ""
  .IconLocation = ",0"
  .TargetPath = File
  .WindowStyle = 1
  .WorkingDirectory = Dir
  .Save
End With

Set WSH = Nothing : WScript.Quit


Значки для скритпта:
Link.b64

Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="Link.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Link.zip"

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
bFBLBQYAAAAAAQABADYAAAAICAAAAAA=


Last edited by Andrey_A_A on Thu Sep 13, 2012 2:13 am; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5399

PostPosted: Mon Aug 01, 2011 4:00 pm    Post subject: Reply with quote

Get composition number members. For example: 0x7 is expaned to 0x1|0x2|0x4 and 7 expaned to 1+2+4.

GetNumberMembers.js
Code:
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=13770#13770
// Version v1.0
//
//
//// Get composition number members. For example: 0x7 is expaned to 0x1|0x2|0x4 and 7 expaned to 1+2+4.

var pSelText=AkelPad.GetSelText();
var dwInitNumber=parseInt(pSelText);

if (dwInitNumber)
{
  var pResult10="" + dwInitNumber.toString(10) + "=";
  var pResult16="0x" + dwInitNumber.toString(16) + "=";
  var dwNumber=dwInitNumber;
  var dwCount;

  for (dwCount=0x00000001; dwCount <= 0x80000000; dwCount*=2)
  {
    if (dwNumber & dwCount)
    {
      pResult10+=(dwNumber == dwInitNumber?"":"+") + dwCount.toString(10);
      pResult16+=(dwNumber == dwInitNumber?"0x":"|0x") + dwCount.toString(16);
      if (!(dwNumber=dwNumber & ~dwCount))
        break;
    }
  }
  AkelPad.ReplaceSel(pResult16 + "\n" + pResult10);
}
Back to top
View user's profile Send private message Send e-mail
KDJ



Joined: 06 Mar 2010
Posts: 1395
Location: Poland

PostPosted: Mon Aug 01, 2011 7:54 pm    Post subject: Reply with quote

Mapping network drives:
- in local network,
- in web site via http and WebDAV protocols.

This script can be run in AkelPad window or directly, in the command line.

MapNetDrive.js

Code:
// MapNetDrive.js - ver. 2012-07-21
//
// Mapping network drives.
//
// Run in AkelPad:
//   Call("Scripts::Main", 1, "MapNetDrive.js")
// Run from command line (after registration: regsvr32.exe Scripts.dll):
//   wscript.exe MapNetDrive.js
//
// Shortcut keys in dialog box:
// Enter     - Map drive
// Del       - Disconnect network drive (Remove)
// Shift+Del - Delete mapping parameter from the list
// Alt+1     - focus to Drives list box
// Alt+2     - focus to Parameters list box

GetAkelPadObject();

var oSys         = AkelPad.SystemFunction();
var hInstanceDLL = AkelPad.GetInstanceDll();
var sClassName   = "AkelPad::Scripts::" + WScript.ScriptName + "::" + hInstanceDLL;
var hWndDlg;

if (hWndDlg = oSys.Call("User32::FindWindowEx" + _TCHAR, 0, 0, sClassName, 0))
{
  if (! oSys.Call("User32::IsWindowVisible", hWndDlg))
    oSys.Call("User32::ShowWindow", hWndDlg, 8 /*SW_SHOWNA*/);
  if (oSys.Call("User32::IsIconic", hWndDlg))
    oSys.Call("User32::ShowWindow", hWndDlg, 9 /*SW_RESTORE*/);

  oSys.Call("User32::SetForegroundWindow", hWndDlg);
}
else
{
  if (oSys.Call("kernel32::GetUserDefaultLangID") == 0x0415) //Polish
  {
    var sTxtCaption    = "Mapowanie dysków sieciowych";
    var sTxtDrive      = "Dysk";
    var sTxtResource   = "Zasób sieciowy";
    var sTxtServer     = "serwer";
    var sTxtShare      = "udział";
    var sTxtUser       = "Użytkownik";
    var sTxtPassword   = "Hasło";
    var sTxtMap        = "&Mapuj";
    var sTxtRemove     = "&Odłącz";
    var sTxtParams     = "Parametry mapowania";
    var sTxtNew        = "&Nowy";
    var sTxtEdit       = "&Edycja";
    var sTxtDelete     = "&Usuń";
    var sTxtWait       = "Czekaj...";
    var sTxtOK         = "OK";
    var sTxtCancel     = "Anuluj";
    var sTxtError      = "Błąd";
    var sTxtNoParams   = "Brak zdefiniowanych parametrów mapowania.";
    var sTxtDisconnect = "Odłączanie dysku sieciowego";
    var sTxtIsDiscon   = "Czy chcesz odłączyć od zasobu sieciowego dysk";
    var sTxtNewParam   = "Nowy parametr";
    var sTxtEditParam  = "Edycja parametru";
    var sTxtNoResource = "Musisz wpisać zasób sieciowy.";
    var sTxtIsDelete   = "Czy chcesz usunąć ten parametr z listy?";
  }
  else
  {
    var sTxtCaption    = "Mapping network drives";
    var sTxtDrive      = "Drive";
    var sTxtResource   = "Network resource";
    var sTxtServer     = "server";
    var sTxtShare      = "share";
    var sTxtUser       = "User";
    var sTxtPassword   = "Password";
    var sTxtMap        = "&Map";
    var sTxtRemove     = "&Remove";
    var sTxtParams     = "Mapping parameters";
    var sTxtNew        = "&New";
    var sTxtEdit       = "&Edit";
    var sTxtDelete     = "&Delete";
    var sTxtWait       = "Wait...";
    var sTxtOK         = "OK";
    var sTxtCancel     = "Cancel";
    var sTxtError      = "Error";
    var sTxtNoParams   = "There are no defined mapping parameters.";
    var sTxtDisconnect = "Disconnect network drive";
    var sTxtIsDiscon   = "Do you want disconnect from network resource drive";
    var sTxtNewParam   = "New parameter";
    var sTxtEditParam  = "Edit parameter";
    var sTxtNoResource = "You must type network resource.";
    var sTxtIsDelete   = "Do you want delete this parameter from the list?";
  }

  var DT_DWORD        = 3;
  var LB_ADDSTRING    = 0x0180;
  var LB_DELETESTRING = 0x0182;
  var LB_RESETCONTENT = 0x0184;
  var LB_SETCURSEL    = 0x0186;
  var LB_GETCURSEL    = 0x0188;
  var LB_GETTEXT      = 0x0189;
  var LB_SETTABSTOPS  = 0x0192;
  var LBN_SELCHANGE   = 1;
  var LBN_DBLCLK      = 2;

  var hIcon = oSys.Call("User32::LoadImage" + _TCHAR,
                        hInstanceDLL, //hinst
                        101,          //lpszName
                        1,            //uType=IMAGE_ICON
                        0,            //cxDesired
                        0,            //cyDesired
                        0x00000040);  //fuLoad=LR_DEFAULTSIZE

  var hGuiFont = oSys.Call("gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/);
  var hMainWnd = AkelPad.GetMainWnd();
  var nBufSize = 260;
  var lpBuffer = AkelPad.MemAlloc(nBufSize * _TSIZE);
  var nWndX    = 250;
  var nWndY    = 80;
  var aParam   = [];
  var hFocus;
  var hFocusEd;
  var bNewParam;

  var CLASS   = 0;
  var HWND    = 1;
  var EXSTYLE = 2;
  var STYLE   = 3;
  var X       = 4;
  var Y       = 5;
  var W       = 6;
  var H       = 7;
  var TXT     = 8;

  var aWnd      = [];
  var IDDRV     = 1000;
  var IDDRVRES  = 1001;
  var IDDRVUSER = 1002;
  var IDDRVLB   = 1003;
  var IDMAP     = 1004;
  var IDREMOVE  = 1005;
  var IDPARAM   = 1006;
  var IDPARRES  = 1007;
  var IDPARUSER = 1008;
  var IDPARLB   = 1009;
  var IDPARNEW  = 1010;
  var IDPAREDIT = 1011;
  var IDPARDEL  = 1012;
  var IDWAIT    = 1013;
  //0x50000000 - WS_VISIBLE|WS_CHILD
  //0x50000007 - WS_VISIBLE|WS_CHILD|BS_GROUPBOX
  //0x50010000 - WS_VISIBLE|WS_CHILD|WS_TABSTOP
  //0x50010080 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|ES_AUTOHSCROLL
  //0x50400001 - WS_VISIBLE|WS_CHILD|WS_DLGFRAME|SS_CENTER
  //0x50A10081 - WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_BORDER|WS_TABSTOP|LBS_USETABSTOPS|LBS_NOTIFY
  //Windows             CLASS,HWND,EXSTYLE,      STYLE,   X,   Y,   W,   H, TXT
  aWnd[IDDRV    ] = ["STATIC",   0,      0, 0x50000000,  10,  10, 100,  13, sTxtDrive];
  aWnd[IDDRVRES ] = ["STATIC",   0,      0, 0x50000000,  47,  10, 100,  13, sTxtResource];
  aWnd[IDDRVUSER] = ["STATIC",   0,      0, 0x50000000, 330,  10, 100,  13, sTxtUser];
  aWnd[IDDRVLB  ] = ["LISTBOX",  0,      0, 0x50A10081,  10,  25, 470, 200, ""];
  aWnd[IDMAP    ] = ["BUTTON",   0,      0, 0x50010000, 160, 215,  80,  23, sTxtMap];
  aWnd[IDREMOVE ] = ["BUTTON",   0,      0, 0x50010000, 250, 215,  80,  23, sTxtRemove];
  aWnd[IDPARAM  ] = ["BUTTON",   0,      0, 0x50000007,  10, 250, 470, 255, sTxtParams];
  aWnd[IDPARRES ] = ["STATIC",   0,      0, 0x50000000,  20, 270, 100,  13, sTxtResource];
  aWnd[IDPARUSER] = ["STATIC",   0,      0, 0x50000000, 303, 270, 100,  13, sTxtUser];
  aWnd[IDPARLB  ] = ["LISTBOX",  0,      0, 0x50A10081,  20, 285, 450, 200, ""];
  aWnd[IDPARNEW ] = ["BUTTON",   0,      0, 0x50010000, 115, 475,  80,  23, sTxtNew];
  aWnd[IDPAREDIT] = ["BUTTON",   0,      0, 0x50010000, 205, 475,  80,  23, sTxtEdit];
  aWnd[IDPARDEL ] = ["BUTTON",   0,      0, 0x50010000, 295, 475,  80,  23, sTxtDelete];
  aWnd[IDWAIT   ] = ["STATIC",   0,      0, 0x50400001, 130, 100, 240,  80, ""];

  var aWndEd     = [];
  var IDEDRES    = 1100;
  var IDEDRESE   = 1101;
  var IDEDUSER   = 1102;
  var IDEDUSERE  = 1103;
  var IDEDPASS   = 1104;
  var IDEDPASSE  = 1105;
  var IDEDOK     = 1106;
  var IDEDCANCEL = 1107;
  //Windows                CLASS,HWND,EXSTYLE,      STYLE,   X,   Y,   W,   H, TXT
  aWndEd[IDEDRES   ] = ["STATIC",   0,      0, 0x50000000,  10,  10, 200,  13, sTxtResource + " (\\\\" + sTxtServer + "\\" + sTxtShare + ")"];
  aWndEd[IDEDRESE  ] = ["EDIT",     0,  0x200, 0x50010080,  10,  25, 300,  20, ""];
  aWndEd[IDEDUSER  ] = ["STATIC",   0,      0, 0x50000000,  10,  55, 100,  13, sTxtUser];
  aWndEd[IDEDUSERE ] = ["EDIT",     0,  0x200, 0x50010080,  10,  70, 300,  20, ""];
  aWndEd[IDEDPASS  ] = ["STATIC",   0,      0, 0x50000000,  10, 100, 100,  13, sTxtPassword];
  aWndEd[IDEDPASSE ] = ["EDIT",     0,  0x200, 0x50010080,  10, 115, 300,  20, ""];
  aWndEd[IDEDOK    ] = ["BUTTON",   0,      0, 0x50010000,  75, 145,  80,  23, sTxtOK];
  aWndEd[IDEDCANCEL] = ["BUTTON",   0,      0, 0x50010000, 165, 145,  80,  23, sTxtCancel];

  ReadWriteIni(false);
  AkelPad.WindowRegisterClass(sClassName);

  hWndDlg = oSys.Call("user32::CreateWindowEx" + _TCHAR,
                      0,               //dwExStyle
                      sClassName,      //lpClassName
                      sTxtCaption,     //lpWindowName
                      0x90CA0000,      //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
                      nWndX,           //x
                      nWndY,           //y
                      495,             //nWidth
                      545,             //nHeight
                      hMainWnd,        //hWndParent
                      0,               //ID
                      hInstanceDLL,    //hInstance
                      DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass.

  //Allow other scripts running
  AkelPad.ScriptNoMutex();

  //Message loop
  AkelPad.WindowGetMessage();

  AkelPad.WindowUnregisterClass(sClassName);
  AkelPad.MemFree(lpBuffer);
  oSys.Call("user32::DestroyIcon", hIcon);
}

function DialogCallback(hWnd, uMsg, wParam, lParam)
{
  if (uMsg == 1) //WM_CREATE
  {
    var i;

    for (i = 1000; i < aWnd.length; ++i)
    {
      aWnd[i][HWND] =
        oSys.Call("user32::CreateWindowEx" + _TCHAR,
                  aWnd[i][EXSTYLE], //dwExStyle
                  aWnd[i][CLASS],   //lpClassName
                  0,                //lpWindowName
                  aWnd[i][STYLE],   //dwStyle
                  aWnd[i][X],       //x
                  aWnd[i][Y],       //y
                  aWnd[i][W],       //nWidth
                  aWnd[i][H],       //nHeight
                  hWnd,             //hWndParent
                  i,                //ID
                  hInstanceDLL,     //hInstance
                  0);               //lpParam
      //Set font and text
      SetWndFontAndText(aWnd[i][HWND], hGuiFont, aWnd[i][TXT]);
    }

    //Hide Wait window
    oSys.Call("user32::ShowWindow", aWnd[IDWAIT][HWND], 0);

    //Set TabStops in listboxes
    AkelPad.MemCopy(lpBuffer,      24, DT_DWORD);
    AkelPad.MemCopy(lpBuffer + 4, 212, DT_DWORD);
    AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_SETTABSTOPS, 2, lpBuffer);
    AkelPad.MemCopy(lpBuffer,     190, DT_DWORD);
    AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_SETTABSTOPS, 1, lpBuffer);

    //Fill listboxes
    FillDrivesLB();
    FillParamLB();
    AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_SETCURSEL, 0, 0);
    AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_SETCURSEL, 0, 0);

    //Check buttons
    CheckMapButtons();
    CheckParamButtons();

    AkelPad.SendMessage(hWnd, 0x0080 /*WM_SETICON*/, 0 /*ICON_SMALL*/, hIcon);

    hFocus = aWnd[IDDRVLB][HWND];
  }

  else if ((uMsg == 6 /*WM_ACTIVATE*/) && (! wParam))
    hFocus = oSys.Call("user32::GetFocus");

  else if (uMsg == 7) //WM_SETFOCUS
    oSys.Call("user32::SetFocus", hFocus);

  else if (uMsg == 256 /*WM_KEYDOWN*/)
  {
    if ((wParam == 13 /*VK_RETURN*/) &&
        oSys.Call("user32::IsWindowEnabled", aWnd[IDMAP][HWND]) &&
        ((oSys.Call("user32::GetFocus") == aWnd[IDDRVLB][HWND]) ||
         (oSys.Call("user32::GetFocus") == aWnd[IDPARLB][HWND])))
    {
      if (! oSys.Call("user32::PeekMessage" + _TCHAR, lpBuffer, hWnd, 0, 0, 0))
        oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDMAP, 0);
    }
    else if (wParam == 0x02E /*VK_DELETE*/)
    {
      if (oSys.Call("user32::GetKeyState", 0x10 /*VK_SHIFT*/) & 0x8000)
        oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDPARDEL, 0);
      else
        oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDREMOVE, 0);
    }
    else if (wParam == 27 /*VK_ESCAPE*/)
      oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
  }

  else if (uMsg == 260) //WM_SYSKEYDOWN
  {
    if (wParam == 0x31) //1 key
      oSys.Call("user32::SetFocus", aWnd[IDDRVLB][HWND]);
    if (wParam == 0x32) //2 key
      oSys.Call("user32::SetFocus", aWnd[IDPARLB][HWND]);
  }

  else if (uMsg == 273) //WM_COMMAND
  {
    var nLowParam = LoWord(wParam);
    var nHiwParam = HiWord(wParam);

    if ((nLowParam == IDDRVLB) && (nHiwParam == LBN_SELCHANGE))
      CheckMapButtons();
    else if ((nLowParam == IDMAP) ||
        ((nLowParam == IDDRVLB) && (nHiwParam == LBN_DBLCLK)))
      MapNetDrive(hWnd);
    else if (nLowParam == IDREMOVE)
      RemoveNetDrive(hWnd);
    else if (nLowParam == IDPARNEW)
    {
      bNewParam = 1;
      EditParamWindow();
    }
    else if ((nLowParam == IDPAREDIT) ||
             ((nLowParam == IDPARLB) && (nHiwParam == LBN_DBLCLK)))
    {
      bNewParam = 0;
      EditParamWindow();
    }
    else if (nLowParam == IDPARDEL)
      DeleteParam(hWnd);
  }

  else if (uMsg == 16) //WM_CLOSE
  {
    ReadWriteIni(true);
    oSys.Call("user32::DestroyWindow", hWnd);
  }

  else if (uMsg == 2) //WM_DESTROY
    //Exit message loop
    oSys.Call("user32::PostQuitMessage", 0);

  else
    oSys.Call("user32::DefDlgProc" + _TCHAR,
              hWnd,
              1025 /*DM_SETDEFID*/,
              oSys.Call("user32::GetDlgCtrlID", oSys.Call("user32::GetFocus")),
              0);

  return 0;
}

function LoWord(nParam)
{
  return (nParam & 0xffff);
}

function HiWord(nParam)
{
  return ((nParam >> 16) & 0xffff);
}

function GetWindowPos(hWnd, oRect)
{
  var lpRect = AkelPad.MemAlloc(16) //sizeof(RECT);

  oSys.Call("user32::GetWindowRect", hWnd, lpRect);

  oRect.X = AkelPad.MemRead(lpRect,      DT_DWORD);
  oRect.Y = AkelPad.MemRead(lpRect +  4, DT_DWORD);
  oRect.W = AkelPad.MemRead(lpRect +  8, DT_DWORD) - oRect.X;
  oRect.H = AkelPad.MemRead(lpRect + 12, DT_DWORD) - oRect.Y;

  AkelPad.MemFree(lpRect);
}

function SetWndFontAndText(hWnd, hFont, sText)
{
  var lpText;

  AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/, hFont, true);

  if (lpText = AkelPad.MemAlloc((sText.length + 1) * _TSIZE))
  {
    AkelPad.MemCopy(lpText, sText, _TSTR);
    oSys.Call("user32::SetWindowText" + _TCHAR, hWnd, lpText);
    AkelPad.MemFree(lpText);
  }
}

function FillDrivesLB()
{
  var oDrives     = {};
  var lpDriveName = AkelPad.MemAlloc(3 * _TSIZE);
  var lpName      = AkelPad.MemAlloc(260 * _TSIZE); //sizeof(MAX_PATH)
  var lpNameSize  = AkelPad.MemAlloc(4);
  var nDriveType;
  var sDrive;
  var i;

  for (i = "Z".charCodeAt(0); i >= "A".charCodeAt(0); --i)
  {
    sDrive     = String.fromCharCode(i) + ":";
    nDriveType = oSys.Call("Kernel32::GetDriveType" + _TCHAR, sDrive + "\\");
    if ((nDriveType == 1 /*DRIVE_NO_ROOT_DIR*/) || (nDriveType == 4 /*DRIVE_REMOTE*/))
    {
      oDrives[sDrive] = ["", ""];

      AkelPad.MemCopy(lpDriveName, sDrive, _TSTR);
      AkelPad.MemCopy(lpName, "", _TSTR);
      AkelPad.MemCopy(lpNameSize, 260, DT_DWORD);

      if (oSys.Call("Mpr.dll::WNetGetConnection" + _TCHAR, lpDriveName, lpName, lpNameSize) == 0) //NO_ERROR
        oDrives[sDrive][0] = AkelPad.MemRead(lpName, _TSTR);

      AkelPad.MemCopy(lpName, "", _TSTR);
      AkelPad.MemCopy(lpNameSize, 260, DT_DWORD);

      if (oSys.Call("Mpr.dll::WNetGetUser" + _TCHAR, lpDriveName, lpName, lpNameSize) == 0) //NO_ERROR
        oDrives[sDrive][1] = AkelPad.MemRead(lpName, _TSTR);
    }
  }

  AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_RESETCONTENT, 0, 0);
  for (i in oDrives)
  {
    AkelPad.MemCopy(lpBuffer, i  + "\t" + oDrives[i][0] + "\t" + oDrives[i][1], _TSTR);
    AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_ADDSTRING, 0, lpBuffer);
  }

  AkelPad.MemFree(lpDriveName);
  AkelPad.MemFree(lpName);
  AkelPad.MemFree(lpNameSize);
}

function FillParamLB()
{
  var i;

  AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_RESETCONTENT, 0, 0);

  for (i = 0; i < aParam.length; ++i)
  {
    AkelPad.MemCopy(lpBuffer, aParam[i][0] + "\t" + aParam[i][1], _TSTR);
    AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_ADDSTRING, 0, lpBuffer);
  }
}

function CheckMapButtons()
{
  var nDrvPos = AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_GETCURSEL, 0, 0);
  var sResource;

  AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_GETTEXT, nDrvPos, lpBuffer);
  sResource = AkelPad.MemRead(lpBuffer, _TSTR).substring(3, AkelPad.MemRead(lpBuffer, _TSTR).lastIndexOf("\t"));

  oSys.Call("user32::EnableWindow", aWnd[IDMAP   ][HWND], (sResource) ? 0 : 1);
  oSys.Call("user32::EnableWindow", aWnd[IDREMOVE][HWND], (sResource) ? 1 : 0);

  if (! oSys.Call("user32::IsWindowEnabled", oSys.Call("user32::GetFocus")))
    oSys.Call("user32::SetFocus", aWnd[IDDRVLB][HWND]);
}

function CheckParamButtons()
{
  oSys.Call("user32::EnableWindow", aWnd[IDPAREDIT][HWND], (aParam.length) ? 1 : 0);
  oSys.Call("user32::EnableWindow", aWnd[IDPARDEL ][HWND], (aParam.length) ? 1 : 0);

  if (! oSys.Call("user32::IsWindowEnabled", oSys.Call("user32::GetFocus")))
    oSys.Call("user32::SetFocus", aWnd[IDPARLB][HWND]);
}

function MapNetDrive(hWnd)
{
  var WshNetwork = new ActiveXObject("WScript.Network");
  var nDrvPos    = AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_GETCURSEL, 0, 0);
  var nParPos    = AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_GETCURSEL, 0, 0);
  var sDrive;
  var oError;

  if (nParPos < 0)
  {
    AkelPad.MessageBox(hWnd, sTxtNoParams, sTxtError, 48);
    return;
  }

  oSys.Call("user32::ShowWindow", aWnd[IDWAIT][HWND], 1);
  SetWndFontAndText(aWnd[IDWAIT][HWND], hGuiFont, "\n\n" + sTxtWait);

  AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_GETTEXT, nDrvPos, lpBuffer);
  sDrive = AkelPad.MemRead(lpBuffer, _TSTR).substring(0, 2);

  try
  {
    WshNetwork.RemoveNetworkDrive(sDrive, 1 /*bForce*/, 1 /*bUpdateProfile*/);
  }
  catch (oError)
  {
  }

  try
  {
    WshNetwork.MapNetworkDrive(sDrive, aParam[nParPos][0], 1 /*bUpdateProfile*/, aParam[nParPos][1], aParam[nParPos][2]);
  }
  catch (oError)
  {
    oSys.Call("user32::ShowWindow", aWnd[IDWAIT][HWND], 0);
    AkelPad.MessageBox(hWnd,
                       oError.description + ((oError.description != oError.message) ? "\n" + oError.message : ""),
                       sTxtError, 48);
  }

  oSys.Call("user32::ShowWindow", aWnd[IDWAIT][HWND], 0);
  FillDrivesLB();
  AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_SETCURSEL, nDrvPos, 0);
  CheckMapButtons();
}

function RemoveNetDrive(hWnd)
{
  var WshNetwork = new ActiveXObject("WScript.Network");
  var nDrvPos    = AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_GETCURSEL, 0, 0);
  var sDrive;
  var oError;

  if (oSys.Call("user32::IsWindowEnabled", aWnd[IDREMOVE][HWND]))
  {
    AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_GETTEXT, nDrvPos, lpBuffer);
    sDrive = AkelPad.MemRead(lpBuffer, _TSTR).substring(0, 2);

    if (AkelPad.MessageBox(hWnd,
                           sTxtIsDiscon + " " + sDrive + " ?",
                           sTxtDisconnect,
                           0x00000023 /*MB_DEFBUTTON1|MB_ICONQUESTION|MB_YESNOCANCEL*/) == 6 /*IDYES*/)
    {
      try
      {
        WshNetwork.RemoveNetworkDrive(sDrive, 1 /*bForce*/, 1 /*bUpdateProfile*/);
      }
      catch (oError)
      {
      }

      FillDrivesLB();
      AkelPad.SendMessage(aWnd[IDDRVLB][HWND], LB_SETCURSEL, nDrvPos, 0);
      CheckMapButtons();
    }
  }
}

function DeleteParam(hWnd)
{
  var nParPos = AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_GETCURSEL, 0, 0);

  if ((nParPos > -1) &&
      (AkelPad.MessageBox(hWnd,
                          sTxtResource + ": " + aParam[nParPos][0] + "\n" +
                          sTxtUser + ": " + aParam[nParPos][1] + "\n\n" +
                          sTxtIsDelete,
                          sTxtDelete.replace(/&/, ""),
                          0x00000023 /*MB_DEFBUTTON1|MB_ICONQUESTION|MB_YESNOCANCEL*/) == 6 /*IDYES*/))
  {
    aParam.splice(nParPos, 1);
    AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_DELETESTRING, nParPos, 0);

    if (nParPos == aParam.length)
      --nParPos;

    AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_SETCURSEL, nParPos, 0);
    CheckParamButtons();
  }
}

function EditParamWindow()
{
  var oRect = new Object();
  var sWndName;
  var nParPos;

  GetWindowPos(hWndDlg, oRect);

  if (bNewParam)
  {
    sWndName = sTxtNewParam;
    aWndEd[IDEDRESE ][TXT] = "";
    aWndEd[IDEDUSERE][TXT] = "";
    aWndEd[IDEDPASSE][TXT] = "";
  }
  else
  {
    sWndName = sTxtEditParam;
    nParPos  = AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_GETCURSEL, 0, 0);
    aWndEd[IDEDRESE ][TXT] = aParam[nParPos][0];
    aWndEd[IDEDUSERE][TXT] = aParam[nParPos][1];
    aWndEd[IDEDPASSE][TXT] = aParam[nParPos][2];
  }

  oSys.Call("user32::CreateWindowEx" + _TCHAR,
            0,                 //dwExStyle
            sClassName,        //lpClassName
            sWndName,          //lpWindowName
            0x90CA0000,        //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
            oRect.X + 90,      //x
            oRect.Y + 310,     //y
            325,               //nWidth
            210,               //nHeight
            hWndDlg,           //hWndParent
            0,                 //ID
            hInstanceDLL,      //hInstance
            DialogCallbackEd); //lpParam
       
  oSys.Call("user32::EnableWindow", hMainWnd, 0);
  oSys.Call("user32::EnableWindow", hWndDlg, 0);
}

function DialogCallbackEd(hWnd, uMsg, wParam, lParam)
{
  if (uMsg == 1) //WM_CREATE
  {
    var i;

    for (i = 1100; i < aWndEd.length; ++i)
    {
      aWndEd[i][HWND] =
        oSys.Call("user32::CreateWindowEx" + _TCHAR,
                  aWndEd[i][EXSTYLE], //dwExStyle
                  aWndEd[i][CLASS],   //lpClassName
                  0,                  //lpWindowName
                  aWndEd[i][STYLE],   //dwStyle
                  aWndEd[i][X],       //x
                  aWndEd[i][Y],       //y
                  aWndEd[i][W],       //nWidth
                  aWndEd[i][H],       //nHeight
                  hWnd,               //hWndParent
                  i,                  //ID
                  hInstanceDLL,       //hInstance
                  0);                 //lpParam
      //Set font and text
      SetWndFontAndText(aWndEd[i][HWND], hGuiFont, aWndEd[i][TXT]);
    }

    AkelPad.SendMessage(aWndEd[IDEDRESE ][HWND], 197 /*EM_SETLIMITTEXT*/, 128, 0);
    AkelPad.SendMessage(aWndEd[IDEDUSERE][HWND], 197 /*EM_SETLIMITTEXT*/, 128, 0);
    AkelPad.SendMessage(aWndEd[IDEDPASSE][HWND], 197 /*EM_SETLIMITTEXT*/, 128, 0);
    AkelPad.SendMessage(aWndEd[IDEDRESE ][HWND], 177 /*EM_SETSEL*/, 0, -1);

    AkelPad.SendMessage(hWnd, 0x0080 /*WM_SETICON*/, 0 /*ICON_SMALL*/, hIcon);

    hFocusEd = aWndEd[IDEDRESE][HWND];
  }

  else if ((uMsg == 6 /*WM_ACTIVATE*/) && (! wParam))
    hFocusEd = oSys.Call("user32::GetFocus");

  else if (uMsg == 7) //WM_SETFOCUS
    oSys.Call("user32::SetFocus", hFocusEd);

  else if (uMsg == 256 /*WM_KEYDOWN*/)
  {
    if ((wParam == 13 /*VK_RETURN*/) &&
        (oSys.Call("user32::GetFocus") != aWndEd[IDEDOK][HWND]))
    {
      if (! oSys.Call("user32::PeekMessage" + _TCHAR, lpBuffer, hWnd, 0, 0, 0))
        oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDEDOK, 0);
    }
    else if (wParam == 27 /*VK_ESCAPE*/)
      oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
  }

  else if (uMsg == 273) //WM_COMMAND
  {
    var nLowParam = LoWord(wParam);

    if (nLowParam == IDEDOK)
    {
      if (InsertChangeParam(hWnd))
        oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
    }
    else if (nLowParam == IDEDCANCEL)
      oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
  }

  else if (uMsg == 16) //WM_CLOSE
  {
    oSys.Call("user32::EnableWindow", hMainWnd, 1);
    oSys.Call("user32::EnableWindow", hWndDlg, 1);
    oSys.Call("user32::DestroyWindow", hWnd);
  }

  else
    oSys.Call("user32::DefDlgProc" + _TCHAR,
              hWnd,
              1025 /*DM_SETDEFID*/,
              oSys.Call("user32::GetDlgCtrlID", oSys.Call("user32::GetFocus")),
              0);

  return 0;
}

function InsertChangeParam(hWnd)
{
  var sResource;
  var sUser;
  var sPassword;
  var nParPos;
  var i;

  oSys.Call("user32::GetWindowText" + _TCHAR, aWndEd[IDEDRESE][HWND], lpBuffer, nBufSize);
  sResource = AkelPad.MemRead(lpBuffer, _TSTR);
  oSys.Call("user32::GetWindowText" + _TCHAR, aWndEd[IDEDUSERE][HWND], lpBuffer, nBufSize);
  sUser = AkelPad.MemRead(lpBuffer, _TSTR);
  oSys.Call("user32::GetWindowText" + _TCHAR, aWndEd[IDEDPASSE][HWND], lpBuffer, nBufSize);
  sPassword = AkelPad.MemRead(lpBuffer, _TSTR);

  if (! sResource)
  {
    AkelPad.MessageBox(hWnd, sTxtNoResource, sTxtError, 48);
    oSys.Call("user32::SetFocus", aWndEd[IDEDRESE][HWND]);
    return 0;
  }

  if (bNewParam)
    nParPos = aParam.push([]) - 1;
  else
    nParPos = AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_GETCURSEL, 0, 0);

  aParam[nParPos][0] = sResource;
  aParam[nParPos][1] = sUser;
  aParam[nParPos][2] = sPassword;

  aParam.sort(function(a, b)
    {
      if (a[0] < b[0])
        return -1;
      else if (a[0] > b[0])
        return  1;
      else if (a[1] < b[1])
        return -1;
      else if (a[1] > b[1])
        return 1;
      else
        return 0;
    });

  //Find in Param array
  for (i = 0; i < aParam.length; ++i)
  {
    if ((aParam[i][0] == sResource) && (aParam[i][1] == sUser) && (aParam[i][2] == sPassword))
    {
      nParPos = i;
      break;
    }
  }

  FillParamLB();
  AkelPad.SendMessage(aWnd[IDPARLB][HWND], LB_SETCURSEL, nParPos, 0);
  CheckParamButtons();

  return 1;
}

function GetAkelPadObject()
{
  if (typeof AkelPad == "undefined")
  {
    var oError;

    try
    {
      AkelPad = new ActiveXObject("AkelPad.Document");
      _TCHAR  = AkelPad.Constants._TCHAR;
      _TSTR   = AkelPad.Constants._TSTR;
      _TSIZE  = AkelPad.Constants._TSIZE;
    }
    catch (oError)
    {
      WScript.Echo("You need register Scripts.dll");
      WScript.Quit();
    }
  }
}

function ReadWriteIni(bWrite)
{
  var oRect    = new Object();
  var oFSO     = new ActiveXObject("Scripting.FileSystemObject");
  var sIniFile = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + ".ini";
  var sIniTxt;
  var oFile;
  var oError;
  var i;

  if (bWrite)
  {
    GetWindowPos(hWndDlg, oRect);

    sIniTxt = 'nWndX=' + oRect.X + ';\r\n' +
              'nWndY=' + oRect.Y + ';\r\n' +
              'aParam=[';

    for (i = 0; i < aParam.length; ++i)
      sIniTxt += '["' +
                 aParam[i][0].replace(/[\\"]/g, '\\$&') + '","' +
                 aParam[i][1].replace(/[\\"]/g, '\\$&') + '","' +
                 aParam[i][2].replace(/[\\"]/g, '\\$&') + '"]' +
                 ((i == aParam.length - 1) ? '' : ',');

    sIniTxt += '];';

    oFile = oFSO.OpenTextFile(sIniFile, 2, true, -1);
    oFile.Write(sIniTxt);
    oFile.Close();
  }

  else if (oFSO.FileExists(sIniFile))
  {
    oFile = oFSO.OpenTextFile(sIniFile, 1, false, -1);

    try
    {
      eval(oFile.ReadAll());
    }
    catch (oError)
    {
    }

    oFile.Close();
  }
}


Last edited by KDJ on Sat Jul 21, 2012 7:34 pm; edited 6 times in total
Back to top
View user's profile Send private message
Andrey_A_A



Joined: 03 Jun 2010
Posts: 579
Location: Сочи, Хоста

PostPosted: Sat Aug 06, 2011 8:44 pm    Post subject: Reply with quote

Скрипт с различными Функциями, которые можно использовать в других скриптах vbs для AkelPad

Выложить код не получается, более 1400 строк, да и не имеет смысла
Скрипт обновляется довольно часто, добавляются новые нужные функции, оптимизируются имеющиеся. Последнюю версию всегда можете найти по этой ссылке:

Скачать Functions.vbs


Last edited by Andrey_A_A on Thu Sep 13, 2012 2:53 am; edited 8 times in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 11, 12, 13 ... 17, 18, 19  Next
Page 12 of 19

 
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