From: Masao M. <mu...@hi...> - 2007-10-14 00:41:45
|
むとうです。 On Fri, 12 Oct 2007 22:14:24 +0900 nob...@ya... wrote: > Fukuoka です。 > GTK のクリップボードから文字列を出し入れしたくて、次のようなスクリプトを書いてみました。クリップボードから文字列を出力して、次にクリップボードに "hoge" を書き込んで、もう一度クリップボードから文字列を出力するつもりなのですが、思ったような動作をしません。 > > #!/usr/bin/env ruby > require 'gtk2' > puts Gtk::Clipboard.get(Gdk::Selection::PRIMARY).wait_for_text > Gtk::Clipboard.get(Gdk::Selection::PRIMARY).text = "hoge" > puts Gtk::Clipboard.get(Gdk::Selection::PRIMARY).wait_for_text > > クリップボードが "GTK" の状態で一回目の実行。 > GTK > hoge > > 続けて二回目の実行. > nil > hoge > > となります.私が求めている動作は、二回目が > hoge > hoge > となることです。 > > どうするのが正しいのでしょうか。 Gdk::Selection::PRIMARYではなく、Gdk::Selection::CLIPBOARDを 使って、かつ明示的にstoreするというのではどうでしょうか。 #Gtk.mainを呼び出した後ならstoreは不要かもしれません #(main_quitの際に保存処理が走る)が、念のため。 #!/usr/bin/env ruby require 'gtk2' clipboard = Gtk::Clipboard.get(Gdk::Selection::CLIPBOARD) puts clipboard.wait_for_text clipboard.text = "foo" clipboard.store 蛇足ですが、上記をPRIMARYに代えたとしてもご希望の動作には なりません。 -- .:% Masao Mutoh<mu...@hi...> |