Re: SOF: Tcl/Tk
>>>>> 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!
Reply to: