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