LINUX.ORG.RU

tcl/tk - как сделать гипертекст с управлением клавиатурой?

 ,


1

1

Вообще гипертекст есть, например вот

http://wiki.tcl.tk/1194

Но он управляется только мышью. В tkcon тоже есть «hoterrors» - и там тоже только мышь. Есть ли что-то для управления с клавиатуры? Типа стою я в определённом месте текста, нажимаю Enter и вызывается мой код.

★★★★★

А самому никак не сделать?)

Virtuos86 ★★★★★
()

wiki.tcl.tk/1194

Эта, например, штука поверх обычного Tk. Управление клавиатурой делай как всегда в Tk. http://wiki.tcl.tk/1401

Да в самом A little hypertext system есть управление с клавиатуры с bind.

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Да в самом A little hypertext system есть управление с клавиатуры с bind.

Где? В самом коде нет ничего. Пример запустил, кнопки потыкал.

Управление клавиатурой делай как всегда в Tk.

«Как всегда» - это не для меня, я неделю назад первую строчку на tcl написал. Попробовал привязать событие к тегу - не получается. Привязать к самому виджету text? А как узнать, в каком теге стоит курсор?

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Всё, вопрос решён.

http://wiki.tcl.tk/1402

https://groups.google.com/forum/#!msg/comp.lang.tcl/hHb-dmjjQAs/plWGb9V4E8EJ

pack [text .txt] -fill both
.txt insert end "aaaaa\nbbbbb\nccccc\nddddd\eeeeee"
.txt tag add cc 3.0 "3.0 lineend"
.txt tag configure cc -background pink
bind .txt <Key> { helper_proc %W }

.txt tag bind cc <Button> { puts BUTTON-EVENT }

proc helper_proc {wid} {
  if {{cc} ni [$wid tag names insert]} {return -code continue}
  puts KEY-EVENT
  # следующую строчку я добавил - den73
  return -code break 
}

#This one has a slight problem, that 
#when insertion cursor is on the right
#side of last tagged character, event 
#doesn't fire. Making that happen (if
#it is needed) is left as exercise, 
#just as converting this to work with
#8.4 series (hint: knights say so).
den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Где? В самом коде нет ничего.

$w.t tag bind link <Enter> "$w.t config -cursor hand2"
$w.t tag bind link <Leave> "$w.t config -cursor {}"
$w.t tag bind link <1> "[namespace current]::click $w.t %x %y"
bind $w.e <Return> "htext::dosearch $w"

Где $w.t - это text, а $w.e - строка поиска, как я понял (не запускал).

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Enter, Leave и 1 - это события мыши. dosearch - это вообще не про то. Я нашёл решение и уже опробовал, см. мой предыдущий коммент.

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

посмотри Tkhtml и оттуда браузер hv3

код простой, понятный, написан одним человеком. поддерживает CSS,HTML4.

читай paper про то, как оно внутри устроено.

anonymous
()

скриптованное управление в виджетах Tk (на tcl/tk, но не tcl, а другие — аналогично) : клавиатура мышка

anonymous
()

Типа стою я в определённом месте текста, нажимаю Enter и вызывается мой код.

в hv3 внизу биндинг к кнопке Search text in page посмотри, как устроен

anonymous
()

посмотри как в Xanadu сделано unadax green, open source, на питоне

после 2012 случился конец света — домен развоплотился.

но какие-то сорцы проекта Xanadu можно добыть из вебархива

например, описание протокола

интересует скорее всего в археологическом смысле.

сейчас хипсторы на жабоскрипте пишут. имхо, питоновый прототип более рабочий — жабоскрипт версия работает не во всех браузерах, и глючит при движении мышкой, что вообще ппц.

лучше бы взяли тот же Nimrod/Nim (оно почти как питон, только компилируемый), и эту вот питоновую версию до ума довели.

anonymous
()
Ответ на: комментарий от anonymous

хотя Xanadu просто не хватает юзабилити:

1. адресация xanadocs трансфинитными числами, а не по URL.

2. есть сервер (udanax gold) с доисторическими сорцами на С++ и SmallTalk (! занятные обвязки C++/SmallTalk !), но нет браузера. есть браузер (udanax green), но нет сервера.

3. даже если и будет это всё, до уровня CSS/HTML4 оно не дотягивает. хотя потенциально *можнозделоть* что угодно: протокол-то расширяемый. и вообще, встроенная в документ разметка — зло.

:-)))

anonymous
()
Ответ на: комментарий от anonymous

вообще читаешь описание FeBe прототокола, или папочку doc из udanax gold, или например FAQ и умиляешься — просто средство от всех болезней предлагают: тут и САПР (ау, CALS?), и гипертекст, и мультимедия, и 3D MMO с ZigZag и Applitudes.

где-то там, в несбывшемся грядущем

anonymous
()
Ответ на: комментарий от anonymous

кстати, в какой-то из статей Нельсон прямо пишет, что zzCells, клетки в ZigZag должны были быть программируемыми.

как conscells лиспа.

anonymous
()
Ответ на: комментарий от anonymous

в итоге мы сейчас имеем Emacs org-mode babel + GNU Skribilo на Guile, где можно распарсить .org из CL либо самим Skribilo:

«блоки кода» и «блоки данных» .org документа выделить в S-выражения и преобразовать в AST макросы Guile (как простые макросы Skribilo).

а Xanadu и zzCells и ныне там.

anonymous
()
Ответ на: комментарий от anonymous

хотя Дональд Кнут ещё когда свой WEB предложил.

и примеры привёл, например, вот во что может превратиться исходник одной из первых Interactive Fiction, adventure: грамотный исходник

переписать грамотный исходник на любой другой язык программирования — тривиальная задача.

(может, и автомагически когда-то будет возможно? :)

anonymous
()

в общем, гипертекст — это Вавилонская библиотека Борхеса (рассказ 1941 года, если чо).

хотя вот и про бложики с фотками еды в инстаграмме ЕМНИП ещё Одоевский писал.

вещий лес (знаний) из сказок, с селфи русалок и котеками, опять же.

или кто там с зеркальцом чатился (прекрасная?или премудрая?), в однокласнеках, лолъ.

так что архетип очень древний.

anonymous
()
Ответ на: комментарий от anonymous

(udanax gold) с доисторическими сорцами на С++ и SmallTalk (! занятные обвязки C++/SmallTalk !)

блин, если бы не выпендривались с с++ и смоллтоком, а просто купили бы лисп-машину, взлетело бы ещё в 1980х (опять же, на Genera в 90х бы перенеслось без проблем... а так найди ещё тот смоллток, где эти сорцы собрать можно.. любителей на squeak портануть как бы нет :(( )

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