Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

10 544 Posts in 5 919 Topics- by 1 216 Members - Latest Member: santini862

17 November 2019, 21:22
Select Language English | Russian ru | German
Main PageIRC Client KVIrc forumRussian talksСкриптингГотовые скрипты"Неправильная раскладка 2"
Pages: [1] 2 3
Print
Author Topic: "Неправильная раскладка 2"  (Read 75765 times)
0 Members and 1 Guest are viewing this topic.
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« on: 29 September 2007, 17:36 »

Я не помню кто первый скрипт писал, но вот по мотивам того скрипта и оператора =~ переделал вот так:
Code:
alias(reverse::en2ru)
{
//конвертируем из латинских символов в русские
%text = $0
%text =~ t/qwertyuiop[]asdfghjkl;'zxcvbnm,./йцукенгшщзхъфывапролджэячсмитьбю/
%text =~ t/QWERTYUIOP{}ASDFGHJKL;'ZXCVBNM,./ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/
return %text
}


alias(reverse::get)
{
// автоопределяем в какую сторону конвертировать
%text = $0
%ruChar = "йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"
%enChar = "qwertyuiop[]asdfghjkl;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL;'ZXCVBNM,."
%en = 0;
%ru = 0;
for(%i=0; %i < $str.len(%text); %i++)
{
%c = $str.mid(%text, %i, 1)
if($str.find(%ruChar, %c) >0)
%ru++
if($str.find(%enChar , %c) >0)
%en++
}
if(%en>%ru)
return "en2ru"
else
return "ru2en"
}


alias(reverse::ru2en)
{
//конвертируем из русских символов в латинские
%text = $0
%text =~ t/йцукенгшщзхъфывапролджэячсмитьбю/qwertyuiop[]asdfghjkl;'zxcvbnm,./
%text =~ t/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/QWERTYUIOP{}ASDFGHJKL;'ZXCVBNM,./
return %text
}


alias(reverse::start)
{
// работаем со строкой ввода. берем оттуда текст, определяем в какую сторону его конвертировать. конвертируем и результат подставляем в окно ввода
%text = $window.inputText($window)
%convert = $reverse::get(%text)
switch(%convert){
case("en2ru")
{
window.setInputText $window $reverse::en2ru(%text)
break
}
case("ru2en")
{
window.setInputText $window $reverse::ru2en(%text)
break
}
}
}

// кнопка конвертирования текста в другую раскладку. реагирует на ctrl+пробел
action.create -i -w=xcqd -t=generic -k="Ctrl+Space" ("reverse",$tr("reverse"),$tr("КОнвертирование введеного текста в другую раскладку"),"22","22")
{
$reverse::start
}


введеный текст в строку ввода, по нажатию ctrl+пробел, заменяется на соответствующий в другой раскладке.
Logged

runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #1 on: 6 October 2007, 14:31 »

Все таки скрипты оформленые в виде дополнений мне больше нравится. К сообщению прикрепил новое дополнение. Теперь конвертировать можно не только тект в окне ввода, но и последнее сказаное в канал сообщение (выводится в виде /me хотел сказать: %последенеесказаноеотконвертированое).
Еще думаю обработать настройку дополнения с возможностью добавления направлений конвертирования.

ЗЫ: перед установкой нового дополнения старый скрипт лучше удалить. можно выполнить в тестере вот этот код:
Code:
alias(reverse::en2ru){}
alias(reverse::get){}
alias(reverse::ru2en){}
alias(reverse::start){}
action.destroy reverse
« Last Edit: 6 October 2007, 14:37 by runkoff » Logged

noLove
Глобальный модератор
*****

Репутация: 17
Posts: 181



View Profile
« Reply #2 on: 6 October 2007, 21:21 »

Держи +1 в карму Wink
Logged

Fresh
Новичок
*

Репутация: 0
Gender: Male
Posts: 17


СвеЖая ИдеЯ


View Profile
« Reply #3 on: 7 October 2007, 00:53 »

Что то в приватах выдает такие сообщения:
[02:48:27] [KVS] Предупреждение: Текущее окно не является каналом
[02:48:27] [KVS]   в контексте скрипта "reverse2::currentID", Строка 2, около символа 8

или вот такое когда нажимаю стрл+шифт+пробел:
[02:52:17] [KVS] Предупреждение: Текущее окно не является каналом
[02:52:17] [KVS]   в контексте скрипта "reverse2::me", Строка 1, около символа 50

...все бы ничего но надоедают эти надписи выскакивающие после каждого набранного сообщения.. Что то может не так сделал??.. в каналах все нормально!
Logged

Interra - Kа4kaHap - IRC <- йа абитайу там.
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #4 on: 7 October 2007, 09:40 »

Fresh, спасибо за отчет. Ты все правильно сделал, есть недочет такой в скрипте, подправлю и сразу выложу ноую версию.
Logged

runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #5 on: 7 October 2007, 10:42 »

Немного исправил, теперь в окнах приватов нормально отрабатывает.

Сменил идентификатор, который определял для канала последнее сказаное сообщение, сменил его на простое $window
Добавил обработчик события OnMeNickChange, отрабатывает также как и OnMeJoin, забвыает последнее сказаное.
Кнопки остались все те же:
ctrl+пробел: сконвертировать строку ввода
ctrl+shift+пробел: последнее сказаное сообщение в канал или в приват отконвертировать и отправить в виде /me хотел сказать: "отконвертированное сообщение"
Logged

Fresh
Новичок
*

Репутация: 0
Gender: Male
Posts: 17


СвеЖая ИдеЯ


View Profile
« Reply #6 on: 7 October 2007, 23:29 »

вот теперь все работает Smiley Автору пасиба.
Logged

Interra - Kа4kaHap - IRC <- йа абитайу там.
envek
Новичок
*

Репутация: 0
Gender: Male
Posts: 3


258643259
View Profile
« Reply #7 on: 9 October 2007, 13:47 »

Quote
[19:33:21] <eNVeK> ghbdtn-ghbdtn
[19:33:28] Addon Reverse2: Защита от пустых сообщений и дубликатов. Сообщите автору если считаете что она сработала не правильно
вот, после отправки этого ghbdtn-ghbdtn вылезла такая бяка...
Сработала неверно почему-то...

Вообще не хочет переделывать мессаги повторно, если нет между ними других конвертаций (даже если отправлялись другие мессаги). Возможно подкорректировать (чтобы разрешало повторную конвертацию если прошло, допустим 10 минут или были отправлены мессаги)?
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #8 on: 9 October 2007, 18:03 »

Возможно подкорректировать (чтобы разрешало повторную конвертацию если прошло, допустим 10 минут или были отправлены мессаги)?
Можно. Сделаю опционально, т.е. будет меню "настройка" в следующей версии.
Logged

runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #9 on: 10 October 2007, 22:04 »

Немного изменений, теперь в управлениях дополнениями доступна кнопка "настроить". Заранее простите за мой английский, сделал опционально запрет вывода дубликатов, вывод уведомлений в случае дубликатов или пустых строк, ну и раскладки можно указать самостоятельно.
По поводу раскладок: нужно чтобы символы в первой строке не повторялись во второй (потом будет автопроверка этого условия), длина первой строки и второй должны быть одинаковые (автопроверка присутствует), и если указать не все символы из алфавита, то автоопределение направления конвертирования будет не коректно работать. Ну и надо все это потестить немного.

Родилась идея замутить "защиту от блондинки" которая не позволит вам выглядить блондинкой если вы забыли снять капс или случайно его нажали. Нужна функция определяющая в каком регистре указан символ, среди стандартных есть такая?
Logged

envek
Новичок
*

Репутация: 0
Gender: Male
Posts: 3


258643259
View Profile
« Reply #10 on: 11 October 2007, 11:50 »

Однозначный респект! Огромное спасибо!

Ну а буржуйский конечно да... крут Smiley
Я бы предложил вместо "Defence double" написать что-то вроде "Protection from repeating" или "Protection from duplicating". Оригинал звучит дико даже для моего английского Smiley
Да и к "Debug messages" имхо можно прибавить "Show" ("Show debug messages"), но это уже дело вкуса. Wink
Logged
upyx
Новичок
*

Репутация: 13
Gender: Male
Posts: 43


Маленький, махнатый и умный.


View Profile
« Reply #11 on: 26 October 2007, 21:14 »

Здрасти Smiley

Заранее прошу прощения, что пишу в чужой теме, по-хорошему нужно бы создать свою, но как уже заметил автор "Я не помню кто первый скрипт писал...". Из всевозможных скриптов для IRC, скрипт смены раскладки самый востребованный. Его существует огромное количество вариантов под разные клиенты, его написали и модифицировали  множество разных людей, и я один из них. Smiley

Когда-то давно, когда небо было голубое, а реках жила рыба... эээ это из другой сказки... Так о чем я? А. Когда я только узнал о том, что такое KVirc, мне захотелось поиметь данный скрипт (смены раскладки, если забыли). Я нашел пару вариантов, но они оба меня не удовлетворили, и через некоторое время я написал свой под (тогда новую) версию 3.2.4. Все было хорошо, пока не вышла верси 3.2.6 и мне не попался скрипт с GUI настройкой. Тогда я и вспомнил, что тоже не пальцем сделан. Smiley Добавил диалоговое окно с настройкой горячих клавиш (т.к. не придумал, что еще можно настроить), сделал инсталлятор и решил поделиться с людьми Smiley Но поделиться не получилось из-за глюков с форумом.
И вот спустя пол года я все же выкладываю свое творение, держите Cheesy

Основная фишка моего скрипта в том, что он не преобразует раскладку ников. Т.е. если вы напишите "upyx: ghbdtn!", то это преобразуется в "upyx: привет!", а не в "гзнчЖ привет!" Ники берутся с текущего канала, привата или DCC-привата, собственный ник присутствует в любом окне. Единственный замеченный косяк, это когда на канале сидят пользователи с очень короткими никами, например "me", "jo" и т.д. В таких случаях слова типа: "jdjom" будут преобразованы в "овjoь", а не в "овощь". Т.к. случай редкий, а простого решения не нашлось, да и  KVirc плохо работает со строками с пробелами по краям, проблема осталась не решенной.

P.S.
Огромный респект и увага автору темы. Только попробовав сделать что-то сам, понимаешь как это тяжело Smiley
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #12 on: 27 October 2007, 20:59 »

добавил в настройки шаблон текста для комбинации ctrl+shift+пробел.
опционально сделал отмену перекодировки ников
так же как и у upyx с маленькими никами могут быть проблемы.
вобщем надо потестировать

чуть не забыл. переключатель say me (на виджете настроек) пока не работает. я че то не пойму как два radiobutton объеденить в одну группу. неужто клики отлавливать?
« Last Edit: 27 October 2007, 21:33 by runkoff » Logged

runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #13 on: 28 October 2007, 20:27 »

такс. добавил кнопочку вызова настроек на панель инструментов
нахрен забил на radiobutton взял combobox, в настройках теперь можно выбрать способ конвертирования последнего сказаного сообщения. кстати пока писал это сообщения подумал что стоит добавить туда еще вариант "вставить в строку ввода", т.е. не сразу отсылать в канал, а после визуальной проверки.
Как обычно, надо тестировать. Предложения и багрепорты приветствуются.

Актуален вопрос по определению в верхнем или нижнем регистре проверяемый символ. Я в справке ни чего похожего не нашел, пока думаю это можно сделать указав для клавиатуры 4 текстовых поля в настройках, т.е. для каждого языка указывать отдельно в верхнем отдельно в нижнем регистре. Ну или предположить что используются только рус и инг, и проверять "блондинистость" текста по известным символам. Пока в раздумьях как ловчее.
Logged

runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #14 on: 29 October 2007, 23:38 »

Добавил еще один способ конвертирования последнего сказаного в канал или приват: "вставить в строку ввода"
С короткими никами будем бороться опционально, добавил галочку "не восстанавливать короткие ники". потом и длину опционально сделаю. А потом может как нить по другому обойдем проблему.

всплыл вопрос: а как то можно управлять системной раскладкой, чтоб при конвертировании текста заодно и раскладку сменить?
Logged

Pages: [1] 2 3
Print
Jump to:  

Theme orange-lt created by panic