kons_font 11 ## graphviz/dot2tk # + skrypt rysujacy graf na canvasie .c # + jest mozliwosc modyfikowania wierzcholkow, krawedzi itp # mozna np. zmieniac napisy w wierzcholkach, # kolor wierzcholkow, grubosc krawedzi itp # ... patrz przyklady nizej # package re http # webserwis obudowany w proc dot2tk... proc dot2tk kod { set q [http::formatQuery dot $kod] # parametr "dot" powinien sie nazywac troche inaczej... # (pelni role hasla; prosze sie zwrocic do prowadzacego) set h [http::geturl http://faculty.wmi.amu.edu.pl:20002/acs01d2?$q] set r [http::data $h] http::cleanup $h set r } destroy .c; canvas .c eval [dot2tk {digraph mojgraf1 { node [width=1] 1 -> 2 -> 3 2 -> "3a" 2 -> "3b" "3b" -> "4a" "3b" -> "4b" "3b" -> "4c" "3b" -> "4d" }}] pack .c -fill both -expand 1 .c conf -bg pink # metadane w zmiennch .c_* ... array unset node edge array set node ${.c_nodes} array set edge ${.c_edges} # zmiana czcionek przesuwanie obrazu i zoom foreach e [array names node] { .c itemconf 0$node($e) -font {Helvetica 14} } set bb 0 bind .c {set bb 1; set xx %x; set yy %y} bind .c {set bb 0} bind .c { if {!$bb} continue .c move all [expr %x-$xx] [expr %y-$yy] set xx %x; set yy %y } bind .c {.c scale all %x %y .9 .9} bind .c {.c scale all %x %y 1.1 1.1} # ... do tego miejsca wykonac !!!!!!!!!!!!!!!!!!!!!!! # modyfikowanie rysunku: .c itemconf 0$node(3b) -text "??? 213" -fill red .c itemconf 1$node(4a) -fill yellow # przedrostek: 0 - text, 1 - oval .c itemconf 1$edge(3b->4d) -width 1 .c itemconf 1$edge(3b->4c) -width 3 array names edge 2->* #% 2->3 2->3a 2->3b array names edge 3b->* #% 3b->4d 3b->4a 3b->4b 3b->4c