class Gdk::SubPartsMessageBase

ナウい引用っぽく Cairo::MiraclePainter のSubPartsとして別の Message を表示するSubPartsを作るときの基底クラス。

使い方

このクラスを継承しましょう。 そして、以下のドキュメントを参考に、必要なメソッドをオーバライドします。

Constants

DEFAULT_ICON_SIZE

Public Instance Methods

background_color(message) click to toggle source

SubParts内の Message の背景色を返す

Args

message

Message

Return

Array

red, green, blueの配列。各要素は0.0..1.0の範囲。

# File core/mui/cairo_sub_parts_message_base.rb, line 108
def background_color(message)
  color = Plugin.filtering(:message_background_color, helper, nil).last
  if color.is_a? Array and 3 == color.size
    color.map{ |c| c.to_f / 65536 }
  else
    [1.0]*3 end end
badge(message) click to toggle source

SubParts内の Message の左上に表示するバッジ。 サブクラスで処理を実装すること。

Args

message

Message

Return

以下の値のいずれか一つ

GdkPixbuf::Pixbuf

message の左上に表示するバッジ画像

nil

バッジを表示しない

# File core/mui/cairo_sub_parts_message_base.rb, line 92
def badge(message)
  nil end
edge_color(message) click to toggle source

SubParts内の Message の枠の色を返す

Args

message

Message

Return

Array

red, green, blueの配列。各要素は0.0..1.0の範囲。

# File core/mui/cairo_sub_parts_message_base.rb, line 120
def edge_color(message)
  [0.5]*3 end
header_left_content(message) click to toggle source

ヘッダの左の、Screen name、名前が表示されている場所に表示するテキスト。 オーバライドしなければ、 message の投稿者のscreen nameと名前が表示される。 nilを返した場合、ヘッダは表示されない。この場合、ヘッダ右も表示されない。

Args

message

Message 表示するMessage

Return

次の3つの値またはnil(ヘッダ左を使用しない場合)

String

表示する文字列

Pango::FontDescription

フォント情報

Pango::Attribute

マークアップ情報

# File core/mui/cairo_sub_parts_message_base.rb, line 34
def header_left_content(message)
  attr_list, text = Pango.parse_markup("<b>#{Pango.escape(message[:user][:idname])}</b> #{Pango.escape(message[:user][:name] || '')}")
  return text, header_left_font(message), attr_list end
header_left_font(message) click to toggle source

ヘッダ左に使用するフォントを返す

Args

message

Message 表示するMessage

Return

Pango::FontDescription

フォント情報

# File core/mui/cairo_sub_parts_message_base.rb, line 43
def header_left_font(message)
  default_font end
header_right_content(message) click to toggle source

#header_right_text にマークアップを足した文字列を返す。 通常は #header_right_text をオーバライドするようにし、 テキストがエスケープされるのが問題になる場合は、こちらをオーバライドする。 nilを返した場合、ヘッダ右は表示されない。この場合、ヘッダ左のみが表示される。 ヘッダ自体を消す方法については、 Gdk::SubPartsMessageBase#header_left_text を参照

Args

message

Message 対象のMessage

Return

次の3つの値またはnil(ヘッダ右を使用しない場合)

String

表示する文字列

Pango::FontDescription

フォント情報

Pango::Attribute

マークアップ情報

# File core/mui/cairo_sub_parts_message_base.rb, line 72
def header_right_content(message)
  attr_list, text = Pango.parse_markup("<span foreground=\"#999999\">#{Pango.escape(header_right_text(message))}</span>")
  return text, header_right_font(message), attr_list end
header_right_font(message) click to toggle source

ヘッダ右に使用するフォントを返す

Args

message

Message 表示するMessage

Return

Pango::FontDescription

フォント情報

# File core/mui/cairo_sub_parts_message_base.rb, line 81
def header_right_font(message)
  default_font end
header_right_text(message) click to toggle source

ヘッダの右の、タイムスタンプが表示されているところに表示するテキスト。 オーバーライドしなければ、 message のタイムスタンプが表示される。 表示される時に、 Pango.escape を通るので、この戻り値がエスケープを考慮する必要はないが、装飾を指定することはできない。

Args

message

Message 対象のMessage

Return

String

表示する文字列。

# File core/mui/cairo_sub_parts_message_base.rb, line 53
def header_right_text(message)
  now = Time.now
  if message[:created].year == now.year && message[:created].month == now.month && message[:created].day == now.day
    message[:created].strftime('%H:%M:%S'.freeze)
  else
    message[:created].strftime('%Y/%m/%d %H:%M:%S'.freeze) end end
icon_size() click to toggle source

アイコンのサイズを返す。

Return

Gdk::Rectangle

サイズ(px)。xとyは無視され、widthとheightのみが利用される

nil

アイコンを表示しない

# File core/mui/cairo_sub_parts_message_base.rb, line 127
def icon_size
  Gdk::Rectangle.new(0, 0, DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE) end
main_text_color(message) click to toggle source

message の本文のテキスト色を返す

Args

message

Message

Return

Array

red, green, blueの配列。各要素は0.0..1.0の範囲。

# File core/mui/cairo_sub_parts_message_base.rb, line 135
def main_text_color(message)
  ([0,0,0]).map{ |c| c.to_f / 65536 } end
main_text_font(message) click to toggle source

本文使用するフォントを返す

Args

message

Message 表示するMessage

Return

Pango::FontDescription

フォント情報

# File core/mui/cairo_sub_parts_message_base.rb, line 143
def main_text_font(message)
  default_font end
messages() click to toggle source

SubPartsに表示する Message 。 複数表示可能なので、それらを上に表示されるものから順番に返す。 サブクラスで処理を実装すること。 このメソッドはサブパーツの描画中に何回も呼ばれるので、キャッシュなどで高速化に努めること。

Return

Array

このSubParts上に表示する Message

# File core/mui/cairo_sub_parts_message_base.rb, line 21
def messages
  [] end
on_click(e, message) click to toggle source

表示している Message がクリックされた時、その Message を引数に呼ばれる。 サブクラスで処理を実装すること。

Args

e

Gdk::EventButton クリックイベント

message

Message クリックされた Message

# File core/mui/cairo_sub_parts_message_base.rb, line 100
def on_click(e, message)
end
text_max_line_count(message) click to toggle source

本文の最大表示行数を返す。 この行数を超えた行は表示されない

Args

message

Message 表示するMessage

Return

Fixnum 行数

# File core/mui/cairo_sub_parts_message_base.rb, line 152
def text_max_line_count(message)
  3 end