>>>>> 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!