class Gtk::UserList

Attributes

double_clicked[RW]

Public Class Methods

new() click to toggle source
# 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

Public Instance Methods

active() click to toggle source
# 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
add(user) click to toggle source

リストに user を追加する。既にある場合は何もしない。

Args

  • user Userのインスタンスか、Userの配列(Enumerable)

Return

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
all_id() click to toggle source

リストに入っているユーザのIDを配列にして返す

Return

リスト内の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
block_add(user) click to toggle source

リストに _user) を追加する

Args

Return

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
block_add_all(users) click to toggle source

Userの配列を受け取って、それら全てを追加する

Args

Return

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
clear() click to toggle source

リスト内のユーザを全て削除する

Return

self

# File core/mui/gtk_userlist.rb, line 103
def clear
  if defined? @treeview
      @treeview.clear
      @users.clear end
  self end
each() { |user| ... } click to toggle source

Userクラスのインスタンスを引数に繰り返すイテレータ

# File core/mui/gtk_userlist.rb, line 32
def each(&iter) # :yields: user
  @users.each(&iter)
end
remove_if_exists_all(users) click to toggle source

Userの配列を受け取って、リストに入っているユーザは削除する

Args

Return

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