Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-22 Пенетрантность Кабанов Евгений Константинович
Здравствуйте!

 Переменная устанавливалась с помощью set, попробовал и variable,
 unset не используется:
 …
 (file tk.tcl line 1750)
 Мммм, а остальные 1747 строчек надо угадать? В столь большом файле
 очень много ошибок сделать можно. И поставленная не туда фигурная
 скобка, к сожалению, может запортить разбор всего файла.
 Постеснялся засорять письмо - вот ссылка на файлик
 44: pack [button .button1 -text Считать -command {
 45: variable jd [exec swetest -b$date -ut$time -fJ -head -p0]
 46: variable jd1 [expr [exec swetest -b$date -ut$time -fJ -head
 -p0]-1.0/86400.0] 47: variable jd2 [expr [exec swetest -b$date -ut
 $time -fJ -head -p0]+1.0/86400.0] …
 1745: }]  [expr {$h1 - 0.0}]  $ma2  $ma3} {lappend ma9 12}}]
 С 44 по 1745 строку идёт команда [button .button1 …], а конкретнее
 скрипт в параметре -command у неё. Дальнейший код, на котором и
 вылетает ошибка, исполняется *до* исполнения скрипта, навешенного на
 кнопку, потому он и не видит значения переменной h1, задаваемого
 внутри скрипта на кнопке.
 Совет: используйте функции, форматируйте код отступами. Будет гораздо
 легче читать код и искать ошибки.

Александр! Благодарю за добрый совет! Сделаю всё более аккуратно и
внутри кнопки.

-- 
Кабанов Евгений Константинович - http://kabanov.tel


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150123104540.325b2f6b329033846002b...@kabanov.tel



Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-21 Пенетрантность Alexander Galanin
On Wed, 21 Jan 2015 20:56:40 +0300
Кабанов Евгений Константинович evg...@kabanov.tel wrote:

 Здравствуйте!
 
  Переменная устанавливалась с помощью set, попробовал и variable,
  unset не используется:
  …
  (file tk.tcl line 1750)
  Мммм, а остальные 1747 строчек надо угадать? В столь большом файле
  очень много ошибок сделать можно. И поставленная не туда фигурная
  скобка, к сожалению, может запортить разбор всего файла.
 
 Постеснялся засорять письмо - вот ссылка на файлик
 
   44: pack [button .button1 -text Считать -command {
   45: variable jd  [exec swetest -b$date -ut$time -fJ -head -p0]
   46: variable jd1 [expr [exec swetest -b$date -ut$time -fJ -head 
 -p0]-1.0/86400.0]
   47: variable jd2 [expr [exec swetest -b$date -ut$time -fJ -head 
 -p0]+1.0/86400.0]
 …
 1745: }]  [expr {$h1  - 0.0}]  $ma2  $ma3}  {lappend ma9 12}}]

С 44 по 1745 строку идёт команда [button .button1 …], а конкретнее
скрипт в параметре -command у неё. Дальнейший код, на котором и
вылетает ошибка, исполняется *до* исполнения скрипта, навешенного на
кнопку, потому он и не видит значения переменной h1, задаваемого внутри
скрипта на кнопке.

Совет: используйте функции, форматируйте код отступами. Будет гораздо
легче читать код и искать ошибки.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150121215200.094a1f2ae42e932b31168...@galanin.nnov.ru



Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-21 Пенетрантность Кабанов Евгений Константинович
Здравствуйте!

 Переменная устанавливалась с помощью set, попробовал и variable,
 unset не используется:
 …
 (file tk.tcl line 1750)
 Мммм, а остальные 1747 строчек надо угадать? В столь большом файле
 очень много ошибок сделать можно. И поставленная не туда фигурная
 скобка, к сожалению, может запортить разбор всего файла.
 Постеснялся засорять письмо - вот ссылка на файлик
 https://yadi.sk/d/S_QjPK4Be9LTZ

Tcl в этом скрипте обрабатывает данные, формируемые программой
swe-basic-data и swe-standard-data; используется библиотека libswe0 и
libswe-dev.

-- 
Кабанов Евгений - http://kabanov.tel


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150121211032.e66ee4618d008e944ee80...@kabanov.tel



Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-21 Пенетрантность Кабанов Евгений Константинович
Здравствуйте!

 Переменная устанавливалась с помощью set, попробовал и variable,
 unset не используется:
 …
 (file tk.tcl line 1750)
 Мммм, а остальные 1747 строчек надо угадать? В столь большом файле
 очень много ошибок сделать можно. И поставленная не туда фигурная
 скобка, к сожалению, может запортить разбор всего файла.

Постеснялся засорять письмо - вот ссылка на файлик

https://yadi.sk/d/S_QjPK4Be9LTZ

-- 
Кабанов Евгений - http://kabanov.tel



-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150121205640.3e5b098c00fd6a56959ce...@kabanov.tel



Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-21 Пенетрантность Alexander Galanin
On Wed, 21 Jan 2015 18:05:22 +0300
Кабанов Евгений Константинович evg...@kabanov.tel wrote:

 Переменная устанавливалась с помощью set, попробовал и variable, unset
 не используется:
…
 (file tk.tcl line 1750)

Мммм, а остальные 1747 строчек надо угадать? В столь большом файле
очень много ошибок сделать можно. И поставленная не туда фигурная
скобка, к сожалению, может запортить разбор всего файла.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150121204301.1669a555a6087dee38414...@galanin.nnov.ru



Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-21 Пенетрантность Кабанов Евгений Константинович
Здравствуйте!

 Вопрос возник по результатам сбоя в работе скрипта (can't read
 h1: no such variable while executing). Это самое h1 неоднократно
 участвует в
 Ошибка тут no such variable, а while executing значит, что дальше
 будет напечатан стек вызовов.
 Возможно, переменной чуть ранее кто-то сделал unset. Или она не видна:
 импортирована из неправильного пространства имён или просто задана в
 одной функции, а читается в другой, но при этом они не помещены в
 общее пространство имён вызовом variable h1.

Переменная устанавливалась с помощью set, попробовал и variable, unset
не используется:

variable h1 [exec swetest -b$date -house$longitude,$latitude4,k -ut
$time -head -p -fPl | grep  house  1 | sed s/house  1//g | sed
s/\ //g]

всё равно пишет

can't read h1: no such variable
while executing
if {$h1   $h2   $h1   $ve1  $ve1  $h2}  {lappend ve9 1} elseif {
$h2   $h1   $h1   $ve1  $ve1  360.0} {lappend ve9 1} elseif {
$...
(file tk.tcl line 1750)

Ошибиться конечно же мог, но не могу понять, почему сбой не сразу, а
только на 8-ом или 9-ом расчёте - всё идентично в коде, код для
следующего расчёта берётся от предыдущего и первые восемь расчётов
безупречны...

-- 
Кабанов Евгений - http://kabanov.tel


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150121180522.f7d70dfeb66ad4d4eade7...@kabanov.tel



Re: Ограничения в Tcl/Tk - существуют-ли?

2015-01-20 Пенетрантность Alexander Galanin
On Tue, 20 Jan 2015 18:38:09 +0300
Кабанов Евгений Константинович evg...@kabanov.tel wrote:

 Вопрос возник по результатам сбоя в работе скрипта (can't read h1: no
 such variable while executing). Это самое h1 неоднократно участвует в

Ошибка тут no such variable, а while executing значит, что дальше
будет напечатан стек вызовов.

Возможно, переменной чуть ранее кто-то сделал unset. Или она не видна:
импортирована из неправильного пространства имён или просто задана в
одной функции, а читается в другой, но при этом они не помещены в общее
пространство имён вызовом variable h1.

-- 
Alexander Galanin


Ограничения в Tcl/Tk - существуют-ли?

2015-01-20 Пенетрантность Кабанов Евгений Константинович
Здравствуйте!

Существуют-ли в Tcl/Tk какие-либо ограничения на размер строк, число
строк кода, количество переменных и т.д. и т.п.?

Вопрос возник по результатам сбоя в работе скрипта (can't read h1: no
such variable while executing). Это самое h1 неоднократно участвует в
расчётах и вдруг такая ошибка. Особенно непонятно это потому, что
абсолютно идентичные куски кода использовали эту переменную много раз
до этого и всё было в порядке.

Прошу направить в нужном направлении.

-- 
Кабанов Евгений - http://kabanov.tel


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20150120183809.a12e3cfa955c2c28fbdfa...@kabanov.tel



tcl/tk

2006-04-07 Пенетрантность Sergey Jusupov

Плз. пните в нужную сторону.

Задача такая, мне нужно что-либо выполнить, посмотреть результат, 
записать в лог, вывести на экран (графически). Все это можно реализовать.
Например, пингануть тачку, посмотреть результат, показать, что она 
пингуется и записать в лог.


Не охота писать с нуля. Может уже кто-то видел нечто готовое?

ЗЫ Т.к. сейчас упорно изучаю tcl/tk, то именно на нем хочу реализовать.

--
Saludos! Sergio




Re: tcl/tk

2006-04-07 Пенетрантность Mikolaj Golub

On Fri, 07 Apr 2006 10:59:53 +0400 Sergey Jusupov wrote:

 SJ Плз. пните в нужную сторону.

 SJ Задача такая, мне нужно что-либо выполнить, посмотреть результат,
 SJ записать в лог, вывести на экран (графически). Все это можно
 SJ реализовать.
 SJ Например, пингануть тачку, посмотреть результат, показать, что она
 SJ пингуется и записать в лог.

 SJ Не охота писать с нуля. Может уже кто-то видел нечто готовое?

 SJ ЗЫ Т.к. сейчас упорно изучаю tcl/tk, то именно на нем хочу реализовать.

Package: scotty
Description: The Scotty and Tkined Network Management Tools.
 Scotty is a set of Tcl extensions to retrieve status information about
 TCP/IP networks.  The extensions include commands to send icmp packets
 a la ping, to lookup hostnames, to query the portmapper and mount
 daemons.  Also included are generic tcp/udp extensions as well as
 commands to query the domain name service for a, ptr, hinfo, mx and soa
 records and commands to query ntp server. log messages can be written
 by using the syslog command.  The perhaps most interesting extension is
 an interface to the SNMPv1, SNMPv2C and SNMPv3 protocols. Tkined is a
 small but nice network management station.

Правда, в sarge его уже нет. Есть в  oldstable.

Ну, а если не tcl/tk, то наверное nagios.

-- 
to my, trociny


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: tcl/tk

2006-04-07 Пенетрантность Dmitry Mikheev
On Fri, 07 Apr 2006 10:59:53 +0400
Sergey Jusupov [EMAIL PROTECTED] wrote:

Глянь на tkined.

 Плз. пните в нужную сторону.
 
 Задача такая, мне нужно что-либо выполнить, посмотреть результат, 
 записать в лог, вывести на экран (графически). Все это можно реализовать.
 Например, пингануть тачку, посмотреть результат, показать, что она 
 пингуется и записать в лог.
 
 Не охота писать с нуля. Может уже кто-то видел нечто готовое?
 
 ЗЫ Т.к. сейчас упорно изучаю tcl/tk, то именно на нем хочу реализовать.
 
 -- 
 Saludos! Sergio
 



Re: tcl/tk

2006-04-07 Пенетрантность Kirill Kuvaldin

Sergey Jusupov [EMAIL PROTECTED] writes:

 Плз. пните в нужную сторону.

 Задача такая, мне нужно что-либо выполнить, посмотреть результат,
 записать в лог, вывести на экран (графически). Все это можно
 реализовать.
 Например, пингануть тачку, посмотреть результат, показать, что она
 пингуется и записать в лог.

 Не охота писать с нуля. Может уже кто-то видел нечто готовое?

 ЗЫ Т.к. сейчас упорно изучаю tcl/tk, то именно на нем хочу реализовать.

expect? (http://expect.nist.gov/)

Cheers
Kirill


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: tcl/tk

2006-04-07 Пенетрантность Alexander Danilov
Sergey Jusupov wrote:
 Плз. пните в нужную сторону.
 
 Задача такая, мне нужно что-либо выполнить, посмотреть результат,
 записать в лог, вывести на экран (графически). Все это можно реализовать.
 Например, пингануть тачку, посмотреть результат, показать, что она
 пингуется и записать в лог.
 
 Не охота писать с нуля. Может уже кто-то видел нечто готовое?
 
 ЗЫ Т.к. сейчас упорно изучаю tcl/tk, то именно на нем хочу реализовать.
 

Там писать нечего,

# возвращает 1 в случае успешного выполнения, иначе - 0
proc ping {address} {
catch {[exec ping -q -c 5 $address]}
return [expr {[lindex $::errorCode 0] eq NONE ? 1 : 0}]
}

proc makePing {address timeout} {
if {[ping $address]} {
# отпинговать удалось
} else {
# отпинговать не удалось
}
after $timeout [info level 0] $address $timeout
}

а остальное интерфейс :)

Но это не вопрос данного списка рассылки, правильный список рассылки
находился на 45.free.net, не уверен что он еще жив.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: fonts in tcl/tk

2006-02-10 Пенетрантность Artem Chuprina
Sergey Jusupov - debian-russian@lists.debian.org  @ Fri, 10 Feb 2006 10:56:39 
+0300:

   SJ Что нужно сделать, чтобы в tk программах шрифт нормальный
   SJ отображался?  У меня он кривой до невозможности :(
 
  Показать им недефолтный через ресурсы.  Иногда - не через ресурсы :-(
 
 SJ Сорри, а это как?
 SJ Где конфиг этого tcl/tk? :(

Ресурсы - это конфиг X-сервера.  man X.

-- 
Artem Chuprina
RFC2822: ran{}ran.pp.ru Jabber: [EMAIL PROTECTED]

Praemonitus premunitus


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



fonts in tcl/tk

2006-02-09 Пенетрантность Sergey Jusupov

Привет!

Что нужно сделать, чтобы в tk программах шрифт нормальный отображался?
У меня он кривой до невозможности :(

--
Hasta luego! Sergio




Re: fonts in tcl/tk

2006-02-09 Пенетрантность Artem Chuprina
Sergey Jusupov - debian-russian@lists.debian.org  @ Thu, 09 Feb 2006 18:47:09 
+0300:

 SJ Что нужно сделать, чтобы в tk программах шрифт нормальный
 SJ отображался?  У меня он кривой до невозможности :(

Показать им недефолтный через ресурсы.  Иногда - не через ресурсы :-(

-- 
Artem Chuprina
RFC2822: ran{}ran.pp.ru Jabber: [EMAIL PROTECTED]

If it's there and you can see it---it's real
If it's not there and you can see it---it's virtual
If it's there and you can't see it---it's transparent
If it's not there and you can't see it---you erased it!
IBM poster explaining virtual memory, circa 1978


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: fonts in tcl/tk

2006-02-09 Пенетрантность Sergey Jusupov

Artem Chuprina пишет:

Sergey Jusupov - debian-russian@lists.debian.org  @ Thu, 09 Feb 2006 18:47:09 
+0300:

 SJ Что нужно сделать, чтобы в tk программах шрифт нормальный
 SJ отображался?  У меня он кривой до невозможности :(

Показать им недефолтный через ресурсы.  Иногда - не через ресурсы :-(

  

Сорри, а это как?
Где конфиг этого tcl/tk? :(

--
Hasta luego! Sergio




Re: TCL/TK

2003-06-29 Пенетрантность Victor B. Wagner
On 2003.06.26 at 13:04:11 -0700, Curtis Vaughan wrote:

  Is there something that needs to be done to have tcl/tk support Russian?
 
 Что надо делать чтобы tcl/tk поддерживал русский шрифт?

Уже очень давно ничего специального делать не надо. 
Разве что локаль правильно выставить.

Даже в potato tcl8.2 понимал русские локали самостоятельно.
У tk8.2 и tk8.3 были некоторые проблемы с обменом через клипборд и
генерацией постскрипта. Первую из них очень красиво обошел автор alicq.

В tk8.4 пофиксены и они. В woody этого пакета нет, но есть пакет для
woody, cобранный Антоном Коваленко на deb http://ftp.45.free.net/debian tcl

Если вы продолжаете по каким-то причинам пользоваться tcl/tk 8.0,
то здесь могу посоветовать только указаывать XLFD-имена шрифтов и не
пользоваться tk-шными шрифтовыми объектами СОВСЕМ.


Кстати постановка вопроса что делать чтобы софтина имярек поддерживала
русский шрифт - как правило, неправильная. Софтина должна поддерживать
русский ЯЗЫК, куда включается не только шрифт, но и ввод с клавиатуры,
преобразование регистра, сортировка.



TCL/TK

2003-06-26 Пенетрантность Curtis Vaughan

Is there something that needs to be done to have tcl/tk support Russian?
Что надо делать чтобы tcl/tk поддерживал русский шрифт?

--
Curtis Vaughan





TCL/TK

2003-06-26 Пенетрантность Curtis Vaughan

 Is there something that needs to be done to have tcl/tk support Russian?

Что надо делать чтобы tcl/tk поддерживал русский шрифт?

--
Curtis Vaughan





Re: fonts in tcl/tk

2003-01-26 Пенетрантность Denis Dzyubenko
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Sat Jan 25, 2003 at 20:53:36 +0200, Aleksej Kolga wrote:
AK Здравствуйте!
AK Почему-то во всех приложениях, написанных на tcl/tk (напр. lprngtool, 
AK xsmbrowser) размер шрифта меню, текста и др. стал очень маленьким.
AK Может быть кто знает где это регулируется? В скриптах шрифт явно не 
AK указан вроде, то есть это default font size. Что покрутить чтобы 
AK увеличить его?
в ~/.Xresources прописать
*Menu.Font: -rfx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r
*Font: нужный шрифт

Либо только для указанных приложений:
Lprngtool.Font: щрифт
где Lprngtool - имя класса приложения (узнается через xprop, xwininfo)

- -- 
Denis
Пропала несущая? Заплати налоги...
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+M4s7+zH7vYeuVKsRAsK6AKCDN0qbkl1opQNJIKp8dLkhV1UpkACgjCJF
2Tmat22XDzJbEHad2G7X83E=
=CLmZ
-END PGP SIGNATURE-



Re: fonts in tcl/tk

2003-01-26 Пенетрантность Kolga, Aleksej
- Original Message - 
From: Denis Dzyubenko [EMAIL PROTECTED]
To: debian-russian@lists.debian.org
Sent: Sunday, January 26, 2003 9:16 AM
Subject: Re: fonts in tcl/tk


 в ~/.Xresources прописать
 *Menu.Font: -rfx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r
 *Font: нужный шрифт

Спасибо. Хотя это помогает лишь отчасти, в xsmbrowser шрифт все равно не 
изменился.

 
 Либо только для указанных приложений:
 Lprngtool.Font: щрифт
 где Lprngtool - имя класса приложения (узнается через xprop, xwininfo)
 
 - -- 
 Denis



fonts in tcl/tk

2003-01-25 Пенетрантность Aleksej Kolga

Здравствуйте!
Почему-то во всех приложениях, написанных на tcl/tk (напр. lprngtool, 
xsmbrowser) размер шрифта меню, текста и др. стал очень маленьким.
Может быть кто знает где это регулируется? В скриптах шрифт явно не 
указан вроде, то есть это default font size. Что покрутить чтобы 
увеличить его?


Спасибо.
С уважением, Алексей Кольга.



SOF: Tcl/Tk

2002-12-26 Пенетрантность Denis Dzyubenko
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Приветствую,

Сегодня написал свою первую программу на tcl и Tk, и появилось куча
вопросов, а где их можно задавать я не знаю.
Можно я тут поспрашиваю ? спасибо ;)

Как идеологически правильнее обращаться в widget'ам - в каждой процедуре
обращаться к виджету по его имени, или объявить глобальную переменную в
которую поместить название виджета и обращаться к глобальной переменно,
или в качестве параметра процедуре передавать путь к виждету ?

Как обработать закрытие окна - т.е. я нажимаю на кнопку закрытия окна (в
titlebar'е) и хочу чтобы появилось окно Save?Ok:Cancel

Как писать портируемые программы - в Linux'е я в качестве начального
пути к файлам использую $env(HOME), но в windows нет такой переменной
окружения?

Хочу изменить шрифт у одного Text виджета, и чтобы этот шрифт хранился 
в каком-нибудь конфигурационном файле - можно использовать 
option readfile, но в windows нет такого понятия как XRDB. Откуда
брать нужные мне настройки?

Как изменить класс моего окна? Обычно класс = имя приложения, но можно
ли сделать по другому? 
toplevel -class ClassName создает новое окно с указанным класом. А как
изменить класс у главного (т.е. самого первого) окна приложения?

Для чего существует команда option get и как ее использовать?

- -- 
Denis
Windows 98 испугалась и наложила в своп.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+CvlW+zH7vYeuVKsRApE9AKC8PF0ix12aDkBFwqt2mCoQAJVsYgCgsKmc
VPts5MthdJfkyR1ObMU9zoI=
=d5fD
-END PGP SIGNATURE-



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Victor Wagner
On 2002.12.26 at 15:43:03 +0300, Denis Dzyubenko wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Приветствую,
 
 Сегодня написал свою первую программу на tcl и Tk, и появилось куча
 вопросов, а где их можно задавать я не знаю.

mailto:[EMAIL PROTECTED]


 Можно я тут поспрашиваю ? спасибо ;)



 Как идеологически правильнее обращаться в widget'ам - в каждой процедуре
 обращаться к виджету по его имени, или объявить глобальную переменную в
 которую поместить название виджета и обращаться к глобальной переменно,
 или в качестве параметра процедуре передавать путь к виждету ?

Идеологически правильнее последний вариант. Глобальных переменных
следует избегать. А хард-кодед имена неудобны тем, что когда тебе
потребуется обвесить теми же процедурами другой виджет, их придется
переписывать.

 Как обработать закрытие окна - т.е. я нажимаю на кнопку закрытия окна (в
 titlebar'е) и хочу чтобы появилось окно Save?Ok:Cancel

wm protocol . WM_DELETE_WINDOW обработчик

 Как писать портируемые программы - в Linux'е я в качестве начального
 пути к файлам использую $env(HOME), но в windows нет такой переменной
 окружения?

if {$tcl_platform(platform) == unix } {
  set initial_path $env(HOME)
} elseif {$tcl_platform(platform) == windows } {
  set initial_path $env(USERPROFILE)
} else {
  tk_messageBox -type ok -title error -message Don't know where to\
  search for files on your platform $tcl_platform(platform)
  exit
}


 Хочу изменить шрифт у одного Text виджета, и чтобы этот шрифт хранился 
 в каком-нибудь конфигурационном файле - можно использовать 
 option readfile, но в windows нет такого понятия как XRDB. Откуда
 брать нужные мне настройки?

По-моему option все равно есть и работает. Эмулируя XRDB там, где ее
нету.

Но вообще-то никто не мешает задать шрифт при создании виджета явно,
или даже позже сказать
$widget configure -font что-надо


 Как изменить класс моего окна? Обычно класс = имя приложения, но можно
 ли сделать по другому? 
 toplevel -class ClassName создает новое окно с указанным класом. А как
 изменить класс у главного (т.е. самого первого) окна приложения?

Хорошего способа не знаю. В принципе wish -class дает требуемый
результат, но мне не удавалось засунуть это в строчку с #!

 Для чего существует команда option get и как ее использовать?

Для того, чтобы получить значение опции из option database. Там
можно хранить не только те опции виджетов, которые виджеты подбирают
автоматически, но и любые другие конфигурационные данные.

Например, если ты пользуешься тэгами в текстовом виджете, то цвета 
шрифта помеченного тэгом автоматически из optiondb не подберутся.
А с помощью $widget tag configure -fg [option get $widget mytagfont TagFont]
ты ее оттуда добудешь.
-- 
Victor Wagner   [EMAIL PROTECTED]
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Denis Dzyubenko
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Thu Dec 26, 2002 at 16:12:44 +0300, Victor Wagner wrote:
 Сегодня написал свою первую программу на tcl и Tk, и появилось куча
 вопросов, а где их можно задавать я не знаю.
VW mailto:[EMAIL PROTECTED]
спасибо

VW Идеологически правильнее последний вариант. Глобальных переменных
VW следует избегать. А хард-кодед имена неудобны тем, что когда тебе
VW потребуется обвесить теми же процедурами другой виджет, их придется
VW переписывать.
понятно

 Как обработать закрытие окна - т.е. я нажимаю на кнопку закрытия окна (в
 titlebar'е) и хочу чтобы появилось окно Save?Ok:Cancel
VW wm protocol . WM_DELETE_WINDOW обработчик
понятно. Поиск destroy в хэлпе я делал а поискать слово delete не
догадался :(

 Как писать портируемые программы - в Linux'е я в качестве начального
 пути к файлам использую $env(HOME), но в windows нет такой переменной
 окружения?
VW 
VW if {$tcl_platform(platform) == unix } {
VW   set initial_path $env(HOME)
VW } elseif {$tcl_platform(platform) == windows } {
VW   set initial_path $env(USERPROFILE)
насколько я понимаю это только для NT? в 98 вроде не определен 
USERPROFILE

 Как изменить класс моего окна? Обычно класс = имя приложения, но можно
 ли сделать по другому? 
 toplevel -class ClassName создает новое окно с указанным класом. А как
 изменить класс у главного (т.е. самого первого) окна приложения?
VW 
VW Хорошего способа не знаю. В принципе wish -class дает требуемый
VW результат, но мне не удавалось засунуть это в строчку с #!
О, точно! вот так работает:
=+==
#!/bin/sh 
# the next line restarts using wish \
exec wish $0 -class wndclass $@
=+==
Это из хэлпа, хотя я не понимаю почему такая конструкция работает.

 Для чего существует команда option get и как ее использовать?
VW 
VW Для того, чтобы получить значение опции из option database. Там
VW можно хранить не только те опции виджетов, которые виджеты подбирают
VW автоматически, но и любые другие конфигурационные данные.
т.е. option db != xrdb ?  даже optiondb  xrdb ?

VW Например, если ты пользуешься тэгами в текстовом виджете, то цвета 
VW шрифта помеченного тэгом автоматически из optiondb не подберутся.
VW А с помощью $widget tag configure -fg [option get $widget mytagfont TagFont]
VW ты ее оттуда добудешь.
вот так не работает
option readfile ~/.Xdefaults
puts [option get . myfont font]

В ~/.Xdefaults
*myfont*font: sdssd

- -- 
Denis
Пришел на работу, включил компьютер, к интернету подключиться не смог...
пришлось работать
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+CyQb+zH7vYeuVKsRAsTAAJ9qSDaQW4+SsbldNlINcsupYlF4CACcDsM9
ZNG/Rs+s6lMoiJSmtq599LQ=
=06o3
-END PGP SIGNATURE-



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Victor Wagner
On 2002.12.26 at 18:45:32 +0300, Denis Dzyubenko wrote:

  Как писать портируемые программы - в Linux'е я в качестве начального
  пути к файлам использую $env(HOME), но в windows нет такой переменной
  окружения?
 VW 
 VW if {$tcl_platform(platform) == unix } {
 VW   set initial_path $env(HOME)
 VW } elseif {$tcl_platform(platform) == windows } {
 VW   set initial_path $env(USERPROFILE)
 насколько я понимаю это только для NT? в 98 вроде не определен 
 USERPROFILE

Ну, дальнейшее разбирательство с tcl_platform или просто фаллбэк
поможет. Фаллбэк может быть такой

if { [info exists env(USERPROFILE)]} {
   set intitial_path $env(USERPROFILE) 
} else {
   set initial_path {c:\\WINDOWS\Мои документы}
   # Лучше конечно воспользоваться какой-то переменной. Но кто ж их
   # знает, какие они в DOS-based виндах бывают.
}

  Как изменить класс моего окна? Обычно класс = имя приложения, но можно
  ли сделать по другому? 
  toplevel -class ClassName создает новое окно с указанным класом. А как
  изменить класс у главного (т.е. самого первого) окна приложения?
 VW 
 VW Хорошего способа не знаю. В принципе wish -class дает требуемый
 VW результат, но мне не удавалось засунуть это в строчку с #!
 О, точно! вот так работает:
 =+==
 #!/bin/sh 
 # the next line restarts using wish \
 exec wish $0 -class wndclass $@
 =+==

 Это из хэлпа, хотя я не понимаю почему такая конструкция работает.

Конструкцмя работает потому что

1. Сначала эту штуку интерпретирует shell. Для него \ в конце строки
комментария не является признаком продолжения комментария на следующую
строку. Поэтому он выполняет команду exec wish

2. Команда exec приводит к тому, что выполнение shell-а прекращается,
поэтому все что дальше в этом файле написано на tcl он за синтаксические
ошибки не считает.

3. wish начинает интерпретировать файл и видит в нем комментарий,
который продолжается на следующую строчку. Он этот комментарий
пропускает, и exec wish  пропускается как его часть.


  Для чего существует команда option get и как ее использовать?
 VW 
 VW Для того, чтобы получить значение опции из option database. Там
 VW можно хранить не только те опции виджетов, которые виджеты подбирают
 VW автоматически, но и любые другие конфигурационные данные.
 т.е. option db != xrdb ?  даже optiondb  xrdb ?
 
 VW Например, если ты пользуешься тэгами в текстовом виджете, то цвета 
 VW шрифта помеченного тэгом автоматически из optiondb не подберутся.
 VW А с помощью $widget tag configure -fg [option get $widget mytagfont 
 TagFont]
 VW ты ее оттуда добудешь.
 вот так не работает
 option readfile ~/.Xdefaults
 puts [option get . myfont font]

Видимо, потому что название класса обязано начинаться с большой буквы.

 В ~/.Xdefaults
 *myfont*font: sdssd

Эта команда get
ищет либо
myapp.myfont
Myapp.myfont
*myfont

Еще искала бы 
myapp.Font
Myapp.Font
и *Font, 

если бы класс был прописан с большой буквы.




-- 
Victor Wagner   [EMAIL PROTECTED]
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Anton Kovalenko
 Denis Dzyubenko writes:

VW if {$tcl_platform(platform) == unix } {
VW set initial_path $env(HOME)
VW } elseif {$tcl_platform(platform) == windows } {
VW set initial_path $env(USERPROFILE)
 насколько я понимаю это только для NT? в 98 вроде не определен 
 USERPROFILE

Проверяйте  платформу, а  затем, если  это windows  -- бегом  в реестр
(package require registry), и оттуда берём всё нужное.

Если вы пишете кросс-платформенное приложение, то для windows советую
хранить настройки в реестре, а не в каком-нибудь $env(USERPROFILE)/.mydotfile.
Ну не принято это в виндах. Не положено.

VW Хорошего способа не знаю. В принципе wish -class дает требуемый
VW результат, но мне не удавалось засунуть это в строчку с #!
 О, точно! вот так работает:
 =+==
 #!/bin/sh 
 # the next line restarts using wish \
 exec wish $0 -class wndclass $@
 =+==
 Это из хэлпа, хотя я не понимаю почему такая конструкция работает.

С точки  зрения /bin/sh, здесь  закомментированы две первые  строки, а
третью нужно  выполнить. С  точки зрения tclsh  и wish,  третья строка
является продолжением второй, то есть частью комментария.

VW Для того,  чтобы получить  значение опции из  option database.
VW Там можно хранить не только те опции виджетов, которые виджеты
VW подбирают  автоматически, но  и любые  другие конфигурационные
VW данные.

 т.е. option db != xrdb ?  даже optiondb  xrdb ?

Ну, в xrdb частенько кладут не только свойства виджетов, но и настройки
самого приложения. Для такого случая xrdb и пригождается.

Кроме того, частенько пишутся мегавиджеты на основе чистого Tcl и Tk.
Прочитать из option db умолчания для мегавиджета тоже бывает нужно.

VW Например, если ты пользуешься тэгами в текстовом виджете, то цвета 
VW шрифта помеченного тэгом автоматически из optiondb не подберутся.
VW А с помощью $widget tag configure -fg [option get $widget mytagfont 
TagFont]
VW ты ее оттуда добудешь.

 вот так не работает
 option readfile ~/.Xdefaults
 puts [option get . myfont font]

Во-первых, синтаксис  option get  window _name_ _class_  означает не
то, что вы  подумали. В данном случае window  должно быть сопоставлено
шаблону *myfont. А name и class -- это имя опции и класс опции.

Сиречь
   option readfile .Xdefaults
   frame .myfont 
   puts [option get .myfont font Font]
будет работать на вашем примере.

 В ~/.Xdefaults
 *myfont*font: sdssd

Во-вторых, читать файл .Xdefaults  -- странное занятие для приложения.
Вам  следует   либо  довольствоваться  ресурсами   xrdb,  которые  уже
определены для данного дисплея (в debian они читаются из ~/.Xresources
при   запуске   X-сервера);   либо   написать   корректную   обработку
XENVIRONMENT  и XFILESEARCHPATH  (см.  man X),  чтобы  вести себя  как
классическое иксовое приложение. Либо, на худой конец, подчитывать
какой-нибудь ~/.myapprc и /etc/myapp.conf, но _не_ .Xdefaults или .Xresources.

-- 
With Best Wishes, Anton Kovalenko /* http://kovalenko.webzone.ru */
#!/usr/bin/wish - best wish I have for you!



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Denis Dzyubenko
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Thu Dec 26, 2002 at 19:28:11 +0300, Anton Kovalenko wrote:
AK Кроме того, частенько пишутся мегавиджеты на основе чистого Tcl и Tk.
AK Прочитать из option db умолчания для мегавиджета тоже бывает нужно.
что такое 'мегавиджет'?

- -- 
Denis
Unix is user friendly. It's just selective about who it's friends are.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+C1gn+zH7vYeuVKsRAhnGAKCnlkRCYw5ywK6yZFJHztLLxReekACdG0H2
X7KcDFDM0rOugGnPx6K+7co=
=Sz+9
-END PGP SIGNATURE-



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Denis Dzyubenko
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Thu Dec 26, 2002 at 19:26:26 +0300, Victor Wagner wrote:
 Это из хэлпа, хотя я не понимаю почему такая конструкция работает.
VW Конструкцмя работает потому что
[ skipped ]

понятно, спасибо!


- -- 
Denis
Press Ctrl-Alt-Del for more fun!
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+C1Vd+zH7vYeuVKsRAtZuAKCZzXyieH7GJblN82LyAqZNfDl2RwCgnHja
tHzkak8nDqI1l+gwBhIatRI=
=2//m
-END PGP SIGNATURE-



Re: SOF: Tcl/Tk

2002-12-26 Пенетрантность Anton Kovalenko
 Denis Dzyubenko writes:

AK Кроме того, частенько пишутся мегавиджеты на основе чистого Tcl и Tk.
AK Прочитать из option db умолчания для мегавиджета тоже бывает нужно.
 что такое 'мегавиджет'?

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

Примеры реализации мегавиджетов для Tcl/Tk см. в библиотеке tix (на Си + Tcl),
библиотеках bwidget, two, ctext и мн. др. (на чистом tcl)

-- 
With Best Wishes, Anton Kovalenko /* http://kovalenko.webzone.ru */
#!/usr/bin/wish - best wish I have for you!



tcl/tk

2001-10-15 Пенетрантность dim
Hello Debian-Russian!

  Извиняюсь за оффтопик, но может кому не влом подсказать...

  Существует ли лучший способ засечь закрытие основного окна в сабже
(учитывая что его подэлементы могут уничтожаться в процессе работы, без
уничтожения его самого) чем:

bind . Destroy {if ![string compare %W .] {чего_надо_сделать}}

Спасибо!
Всего интересного!
-- 
Best regards,
 dim  mailto:[EMAIL PROTECTED]


_
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com




Re: tcl/tk

2001-10-15 Пенетрантность Victor Wagner
On Mon, 15 Oct 2001, dim wrote:

 Hello Debian-Russian!

   Извиняюсь за оффтопик, но может кому не влом подсказать...

   Существует ли лучший способ засечь закрытие основного окна в сабже
 (учитывая что его подэлементы могут уничтожаться в процессе работы, без
 уничтожения его самого) чем:

 bind . Destroy {if ![string compare %W .] {чего_надо_сделать}}

Вообще-то правильнее вешать обработчик на протокол WM_DELETE_WINDOW

wm protocol . WM_DELETE_WINDOW {что надо сделать}

В отличие от события Destroy из обработчика wm protocol
юзера можно послать. Кроме того в отличие от обработчиков событий,
обработчики протоколов срабатывают на том, куда их повесили, и никем
не наследуются.

Впрочем  можно поступить следующим образом
1. Повесить обработчик на какой-нибудь левый тэг
2. Поместить этот тэг в bindtags главного окна, и только в него.



-- 
Victor Wagner   [EMAIL PROTECTED]
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



Re: tcl/tk

2001-10-02 Пенетрантность Victor Wagner
On Tue, 2 Oct 2001, dim wrote:

 From: dim [EMAIL PROTECTED]
 Subject: tcl/tk
 X-Mailer: The Bat! (v1.53d)

 Hello Debian-Russian!

   Очень нужна учебная/справочная литература по сабжу.
   А также сам сабж под всякие там оффтопики (98,2K).

По моему, сабж занимает несколько больше, чем девяносто восемь и две
десятых килобайта ;-)

Ряд полезных ссылок на Tcl-ресурсы (в том числе и на русском)
есть на http://www.ice.ru/~vitus/tcl

Страница давно не обновлялась. За дистрибутивами рекомендуется
лазить на http://tcl.activestate.com/


-- 
Victor Wagner   [EMAIL PROTECTED]
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus