# File core/mui/gtk_userlist.rb, line 18 def initialize() @users = Set.new @double_clicked = ret_nth super() @evbox, @ul, @treeview = gen_userlist scrollbar = Gtk::VScrollbar.new(@treeview.vadjustment) pack_start(@evbox).closeup(scrollbar).show_all end
# File core/mui/gtk_userlist.rb, line 27 def active window = get_ancestor(Gtk::Window) window.set_focus(@treeview) if window and window.realized? end
リストに user を追加する。既にある場合は何もしない。
user Userのインスタンスか、Userの配列(Enumerable)
self
# File core/mui/gtk_userlist.rb, line 41 def add(user) if user.is_a?(Array) then self.block_add_all(user) else self.block_add(user) end self.show_all end
リストに入っているユーザのIDを配列にして返す
リスト内のUserのidの配列
# File core/mui/gtk_userlist.rb, line 94 def all_id if defined? @ul @users.map{ |x| x[:id].to_i } else [] end end
リストに _user) を追加する
Object user
self
# File core/mui/gtk_userlist.rb, line 53 def block_add(user) if user[:rule] == :destroy remove_if_exists_all([user]) elsif not @users.include?(user) iter = @ul.prepend iter[0] = Gdk::WebImageLoader.pixbuf(user[:profile_image_url], 24, 24){ |pixbuf| iter[0] = pixbuf } iter[1] = user[:idname] iter[2] = user[:name] iter[3] = user @users << user end end
Userの配列を受け取って、それら全てを追加する
Object users
self
# File core/mui/gtk_userlist.rb, line 70 def block_add_all(users) removes, appends = *users.partition{ |m| m[:rule] == :destroy } remove_if_exists_all(removes) appends.each(&method(:block_add)) end
リスト内のユーザを全て削除する
self
# File core/mui/gtk_userlist.rb, line 103 def clear if defined? @treeview @treeview.clear @users.clear end self end
Userクラスのインスタンスを引数に繰り返すイテレータ
# File core/mui/gtk_userlist.rb, line 32 def each(&iter) # :yields: user @users.each(&iter) end
Userの配列を受け取って、リストに入っているユーザは削除する
Object users
self
# File core/mui/gtk_userlist.rb, line 81 def remove_if_exists_all(users) if defined? @ul users_idname = users.map{ |user| user[:idname] }.freeze @ul.each{ |model, path, iter| remove_user_name = iter[1].to_s if users_idname.include?(remove_user_name) @ul.remove(iter) @users.delete_if{ |user| user[:idname] == remove_user_name } end } end self end