|
[ruby-list:43065] GTK2のListStoreとTreeViewについての質問: msg#00052lang.ruby.japanese
はじめまして、本日登録いたしました佐藤と申します。 Ruby/Gtk2について困っております。 WindowsにGtk+をインストールすると付いてくるGtk-demoなるサンプルプログラム集があります。 それのTreeView->ListStoreというサンプルのC言語で書かれたソースがあったので、Ruby/Gtk2サイトの リファレンスを見ながら自分なりにRubyに書き換えて移植してみました。 しかし、とりあえずエラーが出ないで実行できるところまでこぎつけたものの、実行してもリストビュ ーに何も表示されないのです。 困ったことに、デバッグのやり方が思いつかないため、頓挫しております。 内部データは変更されているが、ビューが更新されてないため表示されないのではないか?という疑惑 があるのですが、何かビューの更新の仕組みを書き足すだけで表示されるようになるのでしょうか? 一応自分なりにリファレンスを調べて見ましたが、更新するシグナルも発見できずにあきらめている状 態です。 もし、こうしたら表示されるというのをご存知の方がいましたら教えて頂けないでしょうか。 よろしくお願いします。こういうサンプルがあるから見たらわかるよというのでも結構です。 ソースは以下のようになっております。よろしくお願いします。 require 'gtk2' COLUMN_FIXED = 0 COLUMN_NUMBER = 1 COLUMN_SEVERITY = 2 COLUMN_DESCRIPTION = 3 NUM_COLUMNS = 4 $data = [ [ false, 60482, "Normal", "scrollable notebooks and hidden tabs" ], [ false, 60620, "Critical", "gdk_window_clear_area (gdkwindow-win32.c) is not thread-saf e" ], [ false, 50214, "Major", "Xft support does not clean up correctly" ], [ true, 52877, "Major", "GtkFileSelection needs a refresh method. " ], [ false, 56070, "Normal", "Can't click button after setting in sensitive" ], [ true, 56355, "Normal", "GtkLabel - Not all changes propagate correctly" ], [ false, 50055, "Normal", "Rework width/height computations for TreeView" ], [ false, 58278, "Normal", "gtk_dialog_set_response_sensitive () doesn't work" ], [ false, 55767, "Normal", "Getters for all setters" ], [ false, 56925, "Normal", "Gtkcalender size" ], [ false, 56221, "Normal", "Selectable label needs right-click copy menu" ], [ true, 50939, "Normal", "Add shift clicking to GtkTextView" ], [ false, 6112, "Enhancement","netscape-like collapsable toolbars" ], [ false, 1, "Normal", "First bug :=)" ], ] def create_model() # /* create list store */ store = Gtk::ListStore.new(Object,Integer,String,String) # /* add data to the list store */ for data in $data do iter = store.append store.set_value(iter,COLUMN_FIXED, data[COLUMN_FIXED]). set_value(iter,COLUMN_NUMBER, data[COLUMN_NUMBER]). set_value(iter,COLUMN_SEVERITY, data[COLUMN_SEVERITY]). set_value(iter,COLUMN_DESCRIPTION, data[COLUMN_DESCRIPTION]) end store end def fixed_toggled(cell,path_str,data) model = data path = Gtk::TreePath.new(path_str) iter = model.get_iter(path) model.set_value(iter,COLUMN_FIXED,!model.get_value(iter,COLUMN_FIXED)) end def add_columns(treeview) model = treeview.model renderer = Gtk::CellRendererToggle.new renderer.signal_connect("toggled"){|w,e| fixed_toggled(w,e,model) } column = Gtk::TreeViewColumn.new("Fixed?",renderer,"active",COLUMN_FIXED,nil) # /* set this column to a fixed sizing (of 50 pixels) */ column.set_sizing(Gtk::TreeViewColumn::FIXED) column.set_fixed_width(50) treeview.append_column(column) # /* column for bug numbers */ renderer = Gtk::CellRendererText.new column = Gtk::TreeViewColumn.new("Bug number",renderer,"text",1,nil) column.set_sort_column_id(COLUMN_NUMBER) treeview.append_column(column) # /* column for severities */ renderer = Gtk::CellRendererText.new column = Gtk::TreeViewColumn.new("Severity",renderer,"text",2,nil) column.set_sort_column_id(COLUMN_SEVERITY) treeview.append_column(column) # /* column for description */ renderer = Gtk::CellRendererText.new column = Gtk::TreeViewColumn.new("Description",renderer,"text",3,nil) column.set_sort_column_id(COLUMN_DESCRIPTION) treeview.append_column(column) end window = Gtk::Window.new window.set_title("GtkListStore demo") window.signal_connect("destroy"){Gtk.main_quit} window.set_border_width(8) vbox = Gtk::VBox.new(false,8) window.add(vbox) label = Gtk::Label.new("This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though).") vbox.pack_start(label,false,false,0) sw = Gtk::ScrolledWindow.new(nil,nil) sw.set_shadow_type(Gtk::SHADOW_ETCHED_IN) sw.set_policy(Gtk::POLICY_NEVER,Gtk::POLICY_AUTOMATIC) vbox.pack_start(sw,true,true,0) model = create_model() treeview = Gtk::TreeView.new(model) treeview.set_rules_hint(true) treeview.set_search_column(COLUMN_DESCRIPTION) sw.add(treeview) add_columns(treeview) window.set_default_size(280,250) window.show_all Gtk.main 以上がソースです。 ソースをそのまま貼り付けて良いのかわかりませんでしたが、これしか方法が無いため貼り付けさせて いただきます。もし、この様なことは避けた方が良い、他に良い方法があるというのであればご教授く ださい。よろしくお願いします。
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:43064] soap4rでの送信フォーマット変更, 中田雅美 |
|---|---|
| Next by Date: | [ruby-list:43066] Re: GTK2のListStoreとTreeViewについての質問, Kouhei Sutou |
| Previous by Thread: | [ruby-list:43064] soap4rでの送信フォーマット変更, 中田雅美 |
| Next by Thread: | [ruby-list:43066] Re: GTK2のListStoreとTreeViewについての質問, Kouhei Sutou |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |