LINUX.ORG.RU

Tcl/Tk и i18n


0

0

Hi, All!

Решил Tcl/Tk заняться. И сразу вопрос.

Как можно заставить приложение на Tcl/Tk вводить не только латинские символы? Есть ли тут что-то наподобие setlocale()?

А то получается следующее: делаем, например, виджет text (по большому счету неважно, какой виджет, гланое, чтобы поле ввода было), по умолчанию содержащий текст на русском. Отлично, все отображается, но вот при редактировании можно вводить только латинские символы. Иначе классический симптом неустановленной локали -- стоЯщий на месте курсор.

XFree86 русифицирована классическим методом через XKB. Во всех остальных приложениях проблем с русским нет.

P.S. Нутром чую, что что-то я забыл вызвать. Либо какой пакет надо дополнительно было подключить.

★★★★★

encoding system koi8-r

Только хреновато оно работает.
Пример из словарика :

if { [ catch { encoding system koi8-r }  error] == 0} {
   ;# No chance to keep  a control under X fonts!
   set versionmsg "Unfortunately, this vesion of Tcl/Tk has a
problem with multilanguage fonts. This script can
be used correctly only for Russian-English
dictionaries without transcription and save/read
facilities. Use Tcl/Tk < 8.1. Many thanks to Tcl/Tk team!"
} else {
   set versionmsg ""
}

Die-Hard ★★★★★
()

Мда. Неутешительные выводы следуют из этого. Но все равно спасибо. Будем думать дальше в плане смены инструментария.

Obidos ★★★★★
() автор топика

2Obidos. А какая версия TCL/TK? Под каким дистром? Я пользовал от Mandrake 7.2 и Slackware 8.0 -- проблем не замечал с Уникодом и русским в частности.

Пишу XML редактор, так там использую перекодирование из разных кодировок в текущую системную. И все работает.

Возможно у тебя проблема в том, что TCL не правильно определяет тукущую локаль поэтому Die-Hard предложил насильно указать ее как koi8-r (encoding system koi8-r).

Если не разберешься можешь писать мне на ящик: dederer-a собака mail.ru

Korwin ★★★
()

2Korwin:

Дистр самосборный на основе Peanut (который, в свою очередь, основан на Slackware). Локаль вкручивал сам, руками, работает. Русский есть во всех приложениях.

Tcl/Tk 8.3 собранный из tar.gz.

Кстати, с Projman (IDE для разработки, написанное на Tcl/Tk) абсолютно та же проблема. И насильное указание encoding system -- что мертвому припарки. Еще раз повторюсь: не работает НЕ ВЫВОД русскоязычного текста (тут как раз все гладко), а именно ВВОД с клавиатуры в Tcl/Tk приложение под X. Сидение на tcl.activestate.com ничего нового не просветлило, увы.

Кстати, вопрос программиста к программисту. ;-))) Какой инструметарий (C/C++ и GTK, Python + GTK или что еще) наиболее подходит для решения задачи гуепрограммирования? Просто не имею опыта писания графических приблуд (кроме как под досом, OS/2 и unix console ничего не писал). Почему я начал с Tcl/Tk -- мне он показался наиболее понятным для написания того, что мне нужно. Вот только i18n все испортило.

Obidos ★★★★★
() автор топика

Не очень понимаю что за любовь к собиранию всего и вся из исходнников.
Чем это кончается видно из текущего треда.
В Слаке 7.1-8.0 прекрасный набор пакетов tcl/tk/expеct/tclx -
Самое интересное что все работает "из коробки" включая локаль.
Проблемы Odidos'a видимо связаны с тем что ./configure какой-то ключ хотел получить либо локаль не распознал
(тем более что дистрибутив самособранный).
A лучше tk/tcl, чтобы побыстрому интерфейс нарисовать, ничего нет.
geekkoo

anonymous
()

2Obidos. Действительно. Тут видимо проблема в сборке. Т.к. у TCL/TK хоть и есть проблемы с i18n, но точно не такие.

Есть проблемы перекодирования на лету - это когда вместо одной заявленной функции приходится пользоваться другой (но это ведь не беда).

По поводу GUI. Смотря что и для чего. Если интерфейс к какой-либо финкции (библиотеке, консольному приложению), то быстрее и удобнее TCL/TK нет. Если самостоятельное приложение, то уже все зависит от специфики приложения.

Вообще-то TCL медленный язык. Хотя если использовать TCL и TK либы в C/C++ проекте, то скорость получается офигительная и автоматом поддержка уникода.

Korwin ★★★
()

2Obidos.

Tcl/Tk можно заставить работать только с одним "иностранным" языком,
или с юникодом. Он Xовые фонты перелопачивает по имманентным законам :)
и не дает программисту ВООБЩЕ никакого контроля над енкодингом.

Твои проблемы, видимо, в опциях при сборке. Я такого не замечал.
После encoding system koi8-r оно у меня с koi8-r без проблем (Tcl/Tk 8.3),
но я предпочитаю использовать старую версию, до 8.0 заморочек с локалью не было.

На основании личного опыта ( подчеркиваю, личного и интимного:) ) могу сказать,
что единственная область приложения Tcl/Tk - написание мелких графических менюшечек,
в основном системного назначения, исключительно для себя. Действительно,
круто, за 10 минут ваяется готовая красивая функциональная аппликуха...

Главное - абсолютная несовместимось версий. Последние 2 года это не проявлялось,
вот Korwin и подсел на Tcl/Tk :). Думаю, вскорости он об этом пожалеет
(2Korwin : искренне надеюсь ошибиться).

Далее, как и все высокоуровневые интерпретаторы, этот зверь предоставляет
обманчивое ощущение легкости разработки. Это так только для действительно
не сложных программ. Как только ты начнешь пытаться сделать что-либо серьезное,
сразу обнаружишь, что его возможностей просто катастрофически не хватает, а
код становится удивительно невнятным, неуклюжим, громоздким и медлительным.

Насчет гуепрограммирования - я сам подсел на Qt (НЕНАВИЖУ C++, но - что поделаешь!
Уже года 3, как в основном на нем писАть приходится). Преимущества Qt -
простой, мощный, с исходниками. Я работаю под Qt 1.4x и не имею ни малейшего
желания переползать под 2-3 и т.д. Хотя я их щупал, и они мне понравились,
хорошо с локалью, BTW, можно писАть мультиязычные приложения безо всяких юникодов.
Впрочем, под Qt 1.4x это делать легче.

Недостатки - несовместимость версий, плюсатость и, как следствие, некоторая
тормознутость.

А конкурент реальный только один - GTK Остальные либо умерли/умирают, либо
слишком ограниченны.

Насчет GTK - это же GIMP toolkit! Если ваять нечто типа Фотожопа, то - в самый
раз! Но, извиняюсь, для простого гуя оно несколько тяжеловато. Это - как из пушки
по воробьям.

А вообще, конечно, все зависит от специфики разрабатываемых задач.
Если требуется быстренько наваять итерфейс к консольному приложению,
то для себя я бы Tcl/Tk заюзал, а на широкую публику - нечто типа
wxWindows. Для сложной растровой графики - GTK, для 3D анимации -
openGL под Qt, - разумеется, это я так, к примеру. Приперло бы, первым
делом почитал бы литературу.

ВСЕ ВЫШЕСКАЗАННОЕ - МОЕ ЛИЧНОЕ МНЕНИЕ, КОТОРОЕ Я НИКОМУ НЕ НАВЯЗЫВАЮ
И СПОРИТЬ НЕ СОБИРАЮСЬ.

Die-Hard ★★★★★
()

Всем огромное спасибо за участие. Насчет Tcl/Tk -- дома как раз Slackware 8.0. В выходные попробую. Если заработает -- значит, я криво собрал tcl/tk.

Насчет проекта -- планируется написание приблуды для облегчения составления договоров/калплана/ТЗ/акта сдачи-приемки. Если кто видел софт подобного плана (Дофин или Актин), тот поймет, о чем я. К сожалению, указанные мной приблуды -- win32.

А тут видится довольно простая структура: форма документа жесткая, довольно много константной информации, посему предполагается просто сделать форму, после заполнения которой собирается LaTeX исходник, компилящийся в PS/PDF. Как мне кажется, Tcl/Tk здесь оптимален (кроме как отрисовки гуя, полей ввода, нескольких чекбоксов, списков выбора да отработки нажатий на соответствующие кнопки практически ничего не требуется).

Честно говоря, если выбирать между QT и GTK, я более склоняюсь к последнему (сишник я). Тем более, что начал читать GTK Tutorial.

В понедельник ожидается отчет о моей криворукости в сборке Tcl/Tk или о некриворукости. ;-)))

Obidos ★★★★★
() автор топика

2Die-Hard Все ты пишешь правильно и про то, что подсел я на TCL/TK. Да вот беда под поставленные требования к своей программе я не нашел другого языка для себя.

Но не жалуюсь. Мне TCL/TK нравится. Я по жизни писал "для себя" небольшие приблуды|программы. Так что тут выбор просто идеален. А для серьезных вещей конечно C + либа в зависимости от специфики (та же tk).

Кстати ведь X-конфигурялка кернела использует TK интерфейс...

Korwin ★★★
()

2Obidos (*) (2002-02-07 15:20:49.0):
> Как мне кажется, Tcl/Tk здесь оптимален
Пожалуй, соглашусь.

Die-Hard ★★★★★
()

Обещанный отчет: криворук либо я, либо авторы Peanut Linux. ;-) Ибо под Slackware 8.0 никаких проблем нет.

Obidos ★★★★★
() автор топика
19 декабря 2002 г.

TCL

Подскажите, можно ли в С-программе определить, присутствует ли в TCL-интерпретаторе та или иная команда? У меня получилось только с помощью TCL_Eval, но при этом на экран выводится и сама команда (а это нежелательно).

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.