1 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:52:44 ] 【英語サイト】 プロジェクト本拠地 tcl.sourceforge.net/ 最新版ソースコード ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/ The Tcler's Wiki wiki.tcl.tk/ The comp.lang.tcl Newsgroup groups.google.com/group/comp.lang.tcl/ ActiveTcl www.activestate.com/products/activetcl/ 【日本語サイト】 もっとTcl/Tk www.interq.or.jp/japan/s-imai/tcltk/ Tcl/Tk Scripting Laboratory www.geocities.jp/urano343/tcltk.html Tcl/Tk Primer mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/ Tcl 8.4.1 Manual Command Reference www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm CategoryTclTk - mynote reddog.s35.xrea.com/wiki/CategoryTclTk.html 【前スレ】 ●●●●TCL/TKなら俺に聞け●●●● pc11.2ch.net/test/read.cgi/tech/1033628416/
452 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 23:29:22 ] >>451 ズバリこれですね感謝です ddeコマンドとやらで代用できるぽいのでちょっと試してみます
453 名前:本田 [2009/04/26(日) 19:36:30 ] The Tcl UDP extension provides a simple library to support UDP socket in Tcl. sourceforge.net/projects/tcludp
454 名前:本田 [2009/04/29(水) 00:21:55 ] >>452 dde wiki.tcl.tk/996 tcom wiki.tcl.tk/1821 optcl wiki.tcl.tk/1822 activex controlを使うにはtcomではなくoptclを使う。
455 名前:デフォルトの名無しさん [2009/04/29(水) 22:24:57 ] Active Tcl/Tk ver.8.5.7 になった。
456 名前:デフォルトの名無しさん [2009/05/09(土) 20:09:14 ] John Ousterhout博士インタビュー www.computerworld.com.au/article/301772/a-z_programming_languages_tcl 「やっぱOO入れときゃよかったかもね」的発言も。
457 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 20:14:56 ] >>456 それはooを取り込もうとがんばってるCoreTeamの 活動を支援するリップサービスでは・・・
458 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:41:38 ] plplotをWindows上のTCL/TKで使いたいのですが、すぐに動くバイナリは無いものでしょうか? 探した限りは無いようですが…
459 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 09:09:34 ] ちょっと見てみたが、そもそもソースコードしか配布されて無いように見える。 素直に自分でビルドしてみたら?
460 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 21:19:57 ] >>459 やはりソースだけですか… LinuxだとRPMがあるみたいですが… コンパイルとなると敷居が高そうなので、ちょっと他を探してみます ありがとうございました。
461 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 22:39:19 ] ttp://dishaw.org/plplot/
462 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 09:24:34 ] >>461 ありがとうございます! 早速見てみます
463 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:51:13 ] ちょっと相談に乗ってくください Windowsでdqkitを使ってexeにラッピングしてるのですが set cmd "wish C:/tcl/main.exe/sub.tcl $args &" eval exec $cmd 例えばですが ↑みたいな感じでsubプロセスを動かしたいのですが動かないんですよね ttp://www.interq.or.jp/japan/s-imai/tcltk/tclkit2.html > Starpackにラップした実行形式(.exe)は、execコマンドあるいはパイプで実行できない。 これに引っかかってるのかなーと思うのですが 別の書き方でどうにか出来ないでしょうか? スレッドって使ったこと無いのですがスレッドで出来るのかな
464 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:12:18 ] Tclのexe化ツールは複数あるけど、基本的にはTcl側に仮想的なパスを見せ、 実際のファイルアクセスまでにそれを書き換えるという方法だからね。 外部プログラムを実行するのは最終的にシステムコールをとおしてTclの外に行っちゃうから、 システム(この場合はWindows)から見えているパスじゃないといけなくなるだろう。 で、さっきも言ったようにexe化ツールは複数あるから、共通の土台で話ができないよ。 exe化ツールのドキュメントやフォーラムの漁ってみるべし。
465 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:35:31 ] どもです いくつか比較して今のdqkitが一番適してる感じだったのですが 他の方法も検討してみます とりあえず現状で思いついた案としてはsub側も.exeにラッピングして exeを2個体制で・・・スマートじゃないなぁ
466 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:41:14 ] 一次情報に当たれと言ってるんだ。 自分の頭の中だけじゃ解決しない問題だろ。
467 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:18:33 ] ActiveStateのツールじゃだめなのかいな?
468 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:50:12 ] BLTと日本語を使いたいのでなるべくならdqkitが良かったんですよね Freewrap日本語化版とかTclPro1.3じゃBLTを使うのが大層面倒っぽかったので。 ActiveStateのってTclDevKitでしょうか? とりあえずBLT使えるか心配なのと仕事でも使いたいのでライセンスも心配ですが ちょっと試してみます ありがとうございました
469 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 00:50:29 ] wishをサブプロセスで動かすの前提なら別にexeにしなくてもいいんじゃないの?とか言ってみる
470 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:33:01 ] >>468 ちょっと話が変わって申し訳ないんだけど、BLTってまだメンテされてるんでしょうか? 自分も使おうかと思ってたんですけど、どっかでメンテされてないって読んだので、 躊躇している次第です。
471 名前:本田 [2009/06/10(水) 20:26:49 ] >>470 CVSはまだメンテナンスされてる様だ。 blt.cvs.sourceforge.net/viewvc/blt/blt/
472 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:22:33 ] 躊躇って何を躊躇すんの?使ったら何かを失うわけでもないのに
473 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:03:07 ] >>472 業務用のシステムなので、継続的なメンテナンスが見込めそうなのはやはり使いにくい のですよ。
474 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 19:55:17 ] SolarisのCDEでwish使ってるんですが、 Tkのウィンドウだけマウスポインタが通過するだけで 最前面にraiseされてしまいます。 他のウィンドウは大丈夫なのに、なんでだろ。 CDEの設定では 『ポインタでウィンドウをアクティブにするけど、 ウィンドウ順は変えない』 としているので、Tk以外のウィンドウはクリックしない限り raiseはされないんですが、Tkだけマウスが通っただけで ウィンドウの前後関係が変わってしまいます。
475 名前:デフォルトの名無しさん [2009/06/14(日) 11:09:44 ] ->465 ご本家のTclkitのページ(www.equi4.com/tclkit/docs.html )に Don't expect exec and popen to work on files in VFS と書いてあるので、execはイモ筋(dqkitでも多分ダメ) やりたいことがよくわからないがdqkitはMT版があるので、 複数のプログラムを同時に別のスレッドで走らせる筈。
476 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 17:31:59 ] TclOOで自分が作ったクラスのサブクラスって、どうやって作るんでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 21:51:18 ] oo::class create mobile { method bell {} {puts PURURURU} } oo::class create softbank { superclass mobile }
478 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 10:09:49 ] >>477 ありがとうございました。理解できました。 検索しても見つけられなかったので助かりました。
479 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 05:40:16 ] なんか最近tcllibがあわただしいと思ってたら、 GSoC 2009のプロジェクトでgraph操作の実装をやってるところだったのね。 wiki.tcl.tk/23203
480 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 12:51:03 ] 印刷サポートもやるみたいね
481 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 16:42:13 ] ttp://wiki.tcl.tk/17158の{*}を使いたいのですが、 set l [list a b c [list e d]] puts {*}$l とやると、 wrong # args: should be "puts ?-nonewline? ?channelId? string" というエラーが返ってきます。Tclのバージョンは8.5.7なのですが、 {*}の使い方が間違っているのでしょうか?どなたかご教示下さい。
482 名前:デフォルトの名無しさん [2009/06/25(木) 21:05:19 ] いちいちeval使うのタリーから、リストを引き数に展開するようなコマンドとか欲しくなくね? たとえば{*}$stdargとか ってことを書いてるんであって、どこかにそんな実装があるという話じゃないです
483 名前:デフォルトの名無しさん [2009/06/25(木) 21:48:00 ] えっ、これTcl8.5の新機能だよ。しかも新コマンドでもなくて正真正銘Tclの「文法」に対する拡張。
484 名前:デフォルトの名無しさん [2009/06/25(木) 22:00:23 ] で、481が間違っているのはputsコマンドの使い方のほうですね。シェルのechoとかとは違います。 % puts a b c {e d} wrong # args: should be "puts ?-nonewline? ?channelId? string" % puts $l a b c {e d}
485 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:21:46 ] >>481 puts {*}$l は puts a b c [list e d] として実行されるからエラーになってあたりまえだ! >>480 印刷ってなに?グラフの印刷?
486 名前:481 mailto:sage [2009/06/25(木) 22:26:27 ] >>484 >>485 ありがとうございました。 根本的に間違っていました。死にたいorz
487 名前:デフォルトの名無しさん [2009/06/30(火) 22:18:47 ] ns-2でシミュレーションやりたいんでtcl覚えたいんだが、 オヌヌメの参考書とかあるのかよ?
488 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:14:21 ] Tcl/Tkデスクトップリファレンス Effective Tcl/Tk 今となってはちょっと古いがわしはこれでおぼえた。
489 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 11:48:26 ] 俺は言語の設計者が書いた本で勉強(日本語版)。 オヌヌメだけど、今では入手できないかも。
490 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 23:04:24 ] オレはggrksだけでなんとかしてる。 だから進歩が中途半端なのか。
491 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 00:53:29 ] 俺の場合は具具って最初に出てきたもっとTcl/Tkってサイトで感触つかんで、 文法の意味が理解できればあとはマニュアルで十分って感じ。 ActiveTclのマニュアルで桶。 意味さえわかればdllやshared libraryで拡張するのも簡単だし。 ただ、Tclは印刷できないのがなぁ。
492 名前:デフォルトの名無しさん [2009/07/04(土) 01:19:23 ] ns-2は確かにotclだが、次期バージョンのns-3はpythonになるそうな。 さよならotcl
493 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 16:50:59 ] 流れ豚切りますが、 昔、tcl/tk8.0.5+日本語パッチ というバージョンでは、kinput2 での日本語入力の制御ができました。 変換の開始・終了とか、入力モードの変更とか。 kinput_start などというコマンドがあったりします。 最近のバージョンはできるんでしょうか?
494 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:49:44 ] どんだけ昔の話だよ・・・。
495 名前:デフォルトの名無しさん [2009/08/01(土) 14:27:22 ] 切り出したい関数を必要な関数;サブ関数をインライン展開してくれるツール があれば教えて下さい。変数名も可能なかぎり縮められたらと思います。 シェルに依存しないバイナリ化擬きが意図です
496 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:55:51 ] >>495 複数のTclスクリプトを1つのスクリプトにまとめる仕組みはあるようだけどな。 tcltest-2.3.0.tmとかにまとめられてるよね。 たぶんそういうツールで十分そうな気がする。
497 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:52:47 ] >>495 何がしたいか全然理解できない。インライン展開ってC++のインライン関数みたいなことを 言ってるのか?ていうか関数を切り出すってどういう意味?サブ関数はTclには無いし、 サブって何をさして言ってるの?それにシェルに依存しないって意味もわからない。 execコマンド使わずにTclで完結させればいいだけのことじゃないのか?なんなの? ていうかバイナリ化もどきって要するに難読化したいってこと?ていうかそれが、関数の 切り出しとかいうのとどういう関係が?もうはっきり言って日本語で頼む。
498 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:08:59 ] TCL インタプリタのない環境でも動くスタンドアロンなアプリを作りたい、 でさらにサイズも最適化したい、ということでわ?
499 名前:デフォルトの名無しさん [2009/08/02(日) 15:45:35 ] 関数ライブラリから欲しいコマンドだけパッケージ化して切り出したい。 イメージ的にはinfo proc bodyですが関数の依存関係をトレースして必要十分な関数群も抜き出す。 関数をfalt化したり、冗長性を除去し、サイズ縮小化、難読化、再利用防止もしたい。 TCLインタプリタに依存したくないのでpure tclのパッケージ化したい。(見た目普通のテキストの関数定義) ソースは1元管理してアプリ毎に合成したい。
500 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 21:23:26 ] Tclインタプリタに依存したくない、といった時点でTclインタプリタの実行ファイルにマージすることを意味するから、 シェル(OS)に依存するようになると思うんだがどうか?
501 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 21:53:14 ] ていうか変数名を短くしてサイズ縮小化とか、どんだけカツカツの環境なんだお
502 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 22:55:40 ] >>499 きっと8bitマイコンにでも乗せたいんだお。 PC-8001とかMZ-80で変数名削るのに苦労したお!!
503 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:50:56 ] テキストウィジェットにU+9FA6以上のUnicodeの文字を 張り付けようとすると反応が返ってこなくなるのですが これはTkのバグでしょうか。 Tcl/Tk 8.5.7を Windows XPで使っています。 pack [text .t] .t insert end \u9FA6 上のコードを実行するとWISH85.EXEがものすごい勢いでメモリを 消費します(´・ω・`)
504 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:38:42 ] >>503 vistaの8.5.6と8.6b1で試したけど、火編の常みたいなのが出てきた。
505 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:13:24 ] >>504 ありがとうございます。 Vistaの8.5.6と8.6b1では動くのですね。 XP機しかないのですが、とりあえず8.6b1で試してみます。
506 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:42:03 ] Windows VistaでClearTypeのメイリオを使っています。 その環境でTk 8.6のmenuを試してみたところ、メニュー・バーのフォントはClearTypeの効いた ものになるのですが、メニュー・アイテムについてはそうなりません。 まぁ、メニュー・アイテムにClearTypeのフォントを設定すれば一応は解決できそうな感じはする のですが、システムが使っているフォントを取得するようなコマンドはありますでしょうか?
507 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:13:43 ] >>506 メイリオを使っていたらcanvasをpostscriptに変換できないので、 if {[font configure TkDefaultFont -family] == "メイリオ"} とかしてデフォで使用されるフォントの判別をしてメイリオだったらarialにするとかやってます(windowsとLinux両方で動かすためにこんなことしてます)。 ただ、メニューバーがメイリオになっているのにメニューアイテムのフォントだけ違うのという現象にこれで対処できるかどうかは不明ですが。
508 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:16:32 ] 名前空間がどうしてもよくわからない 俺様かんたんに猿でも分かるように教えてください
509 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:53:49 ] >>508 あらら、名前空間なんて導入されたんだ。 C++では前からあったけど。
510 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:53:17 ] モジュール空間のことを言ってるんじゃないのかね。 確かに独特だわな。
511 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:07:57 ] namespace だから名前空間じゃないの?
512 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:13:13 ] >>511 モジュール書くときくらいしかほとんど用事がないんだがな。
513 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:59:54 ] 初心者です。便乗質問(?)なのですが、自分で作ったライブラリは皆さん パッケージ(モジュール?)にしてるのでしょうか? 自分はその方法が良く分からないので、とりあえずsourceコマンドで読むという 方法で凌いでます。 ところで、amazon.comによると、Tcl言語の設計者が書いた本の改訂版が出る ようですね。Tcl/tk 8.5に対応した内容に書き改めたとのこと。 Tclが日本でも再度注目されたりしないでしょうか。
514 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:17:45 ] >>513 パッケージも結局内部ではloadやらsourceやらで読み込んでたと思います。 利点は、パスを書かずにパッケージ名だけで呼び出せるから、 位置関係を気にしなくてよくなることぐらいでしょうか。 書き方は >>1 の日本語サイトの1つめと2つめにそれぞれ解説があります。
515 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:44:21 ] >>514 ありがとうございます。参考になりました。 ただ、開発途上のモジュールについても、皆さんパッケージ化されているのでしょうか? それなりの手順を踏まないとパッケージ化はできないようなので、モジュールの開発途上では、 やはり単にsource とかで読み込むのが普通なのでしょうかね?
516 名前:本田 [2009/09/13(日) 00:13:43 ] >Tcl言語の設計者が書いた本の改訂版が出るようですね。 90円台/ドルの円高なので今が廉く買うチャンスかも。
517 名前:本田 [2009/09/13(日) 00:42:31 ] package - パッケージのロードとバージョン制御機能。 www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/TclCmd/package_jp.htm
518 名前:本田 [2009/09/13(日) 02:48:50 ] >>515 ウェルチさんの本によると、 packageは複数のアプリケーションから利用する時に使うそうです。
519 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 11:47:25 ] >>508 変数名が名前だとすると、名前空間は苗字・・・。 >>509 10年前の8.0から導入されました・・・。 >>510 全然独特じゃないと思うけど・・・。名前空間がある言語ない言語あるけど、 変数名とかにprefixを付けてバッティングしないようにするという意味での 名前空間は汎用的なプログラミング概念だと思う。 >>511-512 8.5からはnamespace ensembleが入ったので名前空間にコマンド群を まとめあげてサブコマンドを作ることも出来るようになった。。。 たしかにサブコマンドは名前空間の一種のような気もする・・・。 >>513 とりあえずsourceでいい。他人に配るときはpackageにするけど。 pacakgeなんて名前空間とそのバージョンを書いて、pkg_mkIndexするだけ。 大して難しいしくみでもない。
520 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:36:11 ] >>518 >>519 packageの件、ありがとうございました。開発が一段落するまではsourceでやってみます。
521 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:40:11 ] うむ。そうするがよい
522 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 13:33:42 ] >>519 (Tclのnamespaceが) >全然独特じゃないと思うけど・・・。 普通、よくあるnamespaceの使い方は宣言的なものが多いんだけど、 Tclのnamespaceはただのコマンドなので、実行文的な書き方になる。 namespace eval { } の中でnamespace export ... とか呼び出すのとか、かなり変に感じる。
523 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 14:23:14 ] 変に感じるのはそれだけじゃないだろう?(笑) 深く考えないのが吉。
524 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:25:51 ] >>521 審議中
525 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:38:09 ] >>522 それを言い出すとTclは制御文もコマンドだし・・・
526 名前:デフォルトの名無しさん [2009/09/22(火) 16:44:34 ] すいません。Perl質問スレでも書きましたが、 こちらのほうが適切そうだったので、こちらで質問させてもらいます。 Perl TkのTextウィジェットを使って 文字列の入出力をする方法はどのようにするのでしょうか? Entryウィジェットを使ったサンプルはWeb上から見つけたのですが、 Textウィジェットを用いたものはないもので。。。
527 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 18:09:24 ] >>526 Perl/Tkは触ったこと無いけど、 確かオライリーからまさにその本が出版されていたと思った。 それを購入するのが最終的には早いと思う。 日本でPerl/Tkは、ひどくマイナーだから。 あるいは、Ruby/Tkなら日本語の書籍が何冊か出版されているし、 Web/MLなどで情報の収集が容易だから、そちらに乗り換えるとか。 もちろんTcl/Tkでもオケー ゴメン、これくらいしかレスできねえヨ # いいレス返してあげておくれ > 他の住人さん達
528 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 07:29:32 ] Perl/Tkでググれ、としか
529 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 08:48:16 ] だな。一発でこんなん出たけど www.geocities.jp/m_hiroi/perl_tk/perltk07.html
530 名前:本田 [2009/09/23(水) 18:19:46 ] Mastering Perl/Tk oreilly.com/catalog/9781565927162 examples.oreilly.com/9781565927162/ examples.oreilly.com/9781565927162/mastperltk_examples.tar.gz mastperltk_examples.tar.gz の中にサンプルプログラム有り。
531 名前:本田 [2009/09/23(水) 18:23:42 ] Past, present and future of Tcl virtual filesystems Steve Huntley www.tcl.tk/community/tcl2007/papers/Stephen_Huntley/tcl2006_slides_huntley.pdf 。
532 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 19:10:25 ] >>530 一瞬、「サンプルプログラム祭り」に見えたw Tcl/TKはいつまで経ってもマイナー言語のままだから、 簡単にこんなことができますよーって紹介はもっとあってもいいと思うけどね。
533 名前:本田 mailto:sage [2009/09/23(水) 19:12:57 ] P2P A Metafile System over P2P File-sharing Network spa.jssst.or.jp/WIT/2005/papers/05013.pdf 。
534 名前:本田 mailto:sage [2009/09/23(水) 21:51:59 ] >>531 The FILTR: (File Inventory for Loading, Transfer and Recovery) filtr.sourceforge.net/ The FILTR is a program intended to be useful over the course of my lifetime. It combines the features of a backup utility, an archiving/version-control utility and a document management utility to create an effective and simple-to-use personal document management system. Author: Stephen Huntley (stephen.huntley@alum.mit.edu) License: Tcl license
535 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 11:04:56 ] 流れを読まずに質問ッス Text Widget で ・「文字単位」でTAB幅?TABインデント幅?を設定するにはどしたらええのん? ・一般的なエディタ(秀丸とかemacsとか)みたいなタブ文字でのインデントを実現できないのん? TAB幅4文字で書かれたCのソースを、Text widgetで表示して色々する作業用スクリプトを書いてる最中なんですが、 hogehoge(); // ほげほげ 的なコメントが、エディタ上ではインデントぴったりで綺麗に並んで書いてあるのに、Text Widgetではガタガタにずれて表示され 視認性がチョー悪く、作業効率も落ちるので、なんとかしたいのです TkのText Widgetは、デフォルトでTAB幅8文字、tabsオプションで指定はできる、 というところまでは判って、要はTAB幅4文字に変更できれば解決かなと思ったのですが… homepage3.nifty.com/kaku-chan/tcl_tk/chapter_230.html によると、「ピクセル」「mm」「inch」「cm」の4種類でしかtab stopsは設定できないと書いてあるし、 無理矢理ピクセルで指定してみても、TAB文字がそのまま「4文字相当の幅を常時取って」行の中に入ってしまうしで…
536 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 21:03:35 ] package require Tk text .txt -font {"MS Gothic" 12} button .b1 -text 4tab -command {settab 4} button .b2 -text 8tab -command {settab 8} pack .txt -side bottom pack .b1 .b2 -side left proc settab {n} { set font [.txt cget -font] .txt configure \ -tabstyle wordprocessor \ -tabs "[expr {$n * [font measure $font 0]}] left" } .txt insert 0.0 { 12345678901234567890123456789012345678901234567890 #include <stdio.h> int main(int argc, const char** argv) { printf(); return 0; } }
537 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 21:09:22 ] コピペ失敗した・・・前はタブは自動でスペースに置き換えてくれてた 木が刷るのにどういうことだ・・・・ package require Tk text .txt -font {"MS Gothic" 12} -tabstyle wordprocessor button .b1 -text 4tab -command {settab 4} button .b2 -text 8tab -command {settab 8} pack .txt -side bottom pack .b1 .b2 -side left proc settab {n} { set font [.txt cget -font] .txt configure -tabs "[expr {$n * [font measure $font 0]}] left" } .txt insert 0.0 { 12345678901234567890123456789012345678901234567890 #include <stdio.h> int main(int argc, const char** argv) { printf(); return 0; } }
538 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 10:00:31 ] >>536-537 ありがとうございます! 動かしてみたらたしかにTAB幅4文字っぽくなりました Tcl/Tkは全く詳しくないので自信がないですが、おそらく ・ -tabstyle wordprocessor 指定 ・ font measure でフォント1文字の横幅ドット数を取得 →TAB幅の文字数を掛けたピクセル数にして指定 が肝なのですかね… 実はTcl/TkじゃなくてPerl/Tkでスクリプトを書いてるんですが Tcl/Tkのtext widgetで実現できているなら Perl/Tkでも実現できるだろう…という前提で作業してみます
539 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 10:19:09 ] うーん… Perl/Tkには-tabstyleが実装されてないみたいですね… 指定すると「そんな指定は知らねえよ」とエラーが出る… cpansearch.perl.org/src/SREZIC/Tk-804.028_501/t/text.t ↑「XXX not yet implemented?」とか書いてあるし… www.tkdocs.com/tutorial/text.html ↑ここには、指定できる文字列としてtabstyleが書いてあるんだけどなあ… 勉強も兼ねてTcl/Tkで書き直してみるかな… それとも Python + Tkinter も試してみるか…
540 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 19:17:49 ] Tk使うならTclが一番安心だよね。やっぱり
541 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 21:12:37 ] Tcl/TkじゃなくてPerl/Tkの話だから スレ違いな気もしますが一応報告だけ * text widgetにtabstyleが実装されたのは8.0.5から、らしい * Perl/Tk(ActivePerl+Tk)は8.0.4相当。よって実装されてない * Perl/TkでもTkxを使えばtabstyleが使える(TkxはTcl/Tkのコア部分をそのまま使ってるそうで…) * Tkxを使うとパッと見でTcl/Tkそっくりの記述もできる(Tkx::text(".txt", ) * ActivePerlでTkxを使うとPARでexe化したときにActiveTclを要求されるので、exe化の意味なし * Perl+Tkxでfont measureをどう記述するかが謎 ←今ココ Tcl/Tkにも正規表現とハッシュ(連想配列)があるらしいから、書き直すのもアリかな… GUIの見た目も、Tcl/Tkのほうが綺麗だし
542 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 21:52:01 ] tkのデバッグってどうしてます? 10時間くらいで落ちたり、処理速度が低下します。
543 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 22:29:37 ] >>542 ??? tk4.2の頃は、そういうことあったけど…… 8.3以上では直ってるはずだと聞いてるお? ちなみに、 落ちると言っても、「tkが動かなくなる」だけ。 原因と対処法は自分で見つけた。もちろん、報告した。 処理速度の低下は、Xサーバーに問題があったので、ちょっと弄った。
544 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 23:38:25 ] 変数に入っている値が整数(として扱える)かどうか調べる方法はありますか。
545 名前:デフォルトの名無しさん [2009/10/02(金) 23:44:20 ] string is integer $x
546 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 23:31:56 ] >>545 やりたいことができた!他にも色々調べられるのね。ありがとうです(>_<)
547 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 18:16:08 ] >>545-546 まあその場合そのとおりなんだが、 Tcl/Tkの各コマンドのヘルプページはちょっと読みづらいよね。 PHPのヘルプ並みに使いやすく整備してくれるといいんだが……。
548 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 19:52:40 ] >>547 tclshでstring is って打つとコマンドの文法が出る。 string is a b って適当に打つと、クラスの一覧が ズラズラ表示される。これで十分。
549 名前:デフォルトの名無しさん [2009/10/27(火) 11:40:30 ] TCLスクリプトを自前アプリに実装したいのですが、 なにかお勧めの書籍(web)を紹介頂けませんか?
550 名前:デフォルトの名無しさん [2009/10/30(金) 17:03:22 ] c++builder6で下記コードを実行するとstdoutが見つからないというエラーが表示されます。 >>301 のログでTcl_SetStdChannel()で標準出力をトラップする見たいな事が記載されていますが、 どうやって行うのでしょうか? strcpy( buf, "puts \"TEST!!\""); Tcl_Eval( interp, buf ); エラーメッセージ:can not find channel named "stdout"
551 名前:本田 [2009/10/30(金) 22:58:47 ] >>549 C言語からTclを呼び出すには www.geocities.co.jp/SiliconValley/4137/dir4/namo.html
552 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:03:10 ] CでTclを使えるようにする Tcl_FindExecutable Tcl_Interp Tcl_Init Tkも使えるようにする(MainWindow破棄でTk_MainLoopから戻る) Tcl_FindExecutable Tcl_Interp Tcl_Init Tk_Init Tk_MainWindow ... Tk_MainLoop tclshみたいなプログラムにする(スクリプト終了でプログラム終了) Tcl_Main Tcl_AppInit中でコマンドの設定など wishみたいなプログラムにする(スクリプト終了でプログラム終了) Tk_Main Tcl_AppIniti中でコマンドの設定など 拡張DLL(shared library) dll名_Initという関数の中でコマンドの定義など