機能 #806 » 0001-Gdk-SubPartsQuote-SubPartsMessage.patch
core/mui/cairo_replyviewer.rb | ||
---|---|---|
34 | 34 |
def main_text_font(message) |
35 | 35 |
Pango::FontDescription.new(UserConfig[:reply_text_font]) end |
36 | 36 | |
37 |
def header_left_content(*args) |
|
38 |
if show_header? |
|
39 |
super end end |
|
40 | ||
41 |
def header_right_content(*args) |
|
42 |
if show_header? |
|
43 |
super end end |
|
44 | ||
45 | 37 |
def icon_size |
46 | 38 |
if show_icon? |
47 | 39 |
if UserConfig[:reply_icon_size] |
... | ... | |
52 | 44 |
def text_max_line_count(message) |
53 | 45 |
UserConfig[:reply_text_max_line_count] || super end |
54 | 46 | |
55 |
def render_outline(message, context, base_y) |
|
56 |
unless show_edge? |
|
57 |
@edge = 2 |
|
58 |
return end |
|
59 |
@edge = 8 |
|
60 |
case UserConfig[:reply_edge] |
|
61 |
when :floating |
|
62 |
render_outline_floating(message, context, base_y) |
|
63 |
when :solid |
|
64 |
render_outline_solid(message, context, base_y) |
|
65 |
when :flat |
|
66 |
render_outline_flat(message, context, base_y) end end |
|
67 | ||
68 |
def render_badge(message, context) |
|
69 |
return unless show_edge? |
|
70 |
case UserConfig[:reply_edge] |
|
71 |
when :floating |
|
72 |
render_badge_floating(message, context) |
|
73 |
when :solid |
|
74 |
render_badge_solid(message, context) |
|
75 |
when :flat |
|
76 |
render_badge_flat(message, context) end end |
|
47 |
def edge_type |
|
48 |
UserConfig[:reply_edge] end |
|
77 | 49 | |
78 | 50 |
def show_header? |
79 | 51 |
(UserConfig[:reply_present_policy] || []).include?(:header) end |
core/mui/cairo_sub_parts_message_base.rb | ||
---|---|---|
13 | 13 |
class Gdk::SubPartsMessageBase < Gdk::SubParts |
14 | 14 |
DEFAULT_ICON_SIZE = 32 |
15 | 15 | |
16 |
# ヘッダを表示するか? |
|
17 |
# ==== Return |
|
18 |
# [TrueClass] 表示する場合true |
|
19 |
def show_header? |
|
20 |
true end |
|
21 | ||
22 |
# アイコンを表示するか? |
|
23 |
# ==== Return |
|
24 |
# [TrueClass] 表示する場合true |
|
25 |
def show_icon? |
|
26 |
true end |
|
27 | ||
28 |
# 枠を表示するか? |
|
29 |
# ==== Return |
|
30 |
# [TrueClass] 表示する場合true |
|
31 |
def show_edge? |
|
32 |
true end |
|
33 | ||
16 | 34 |
# SubPartsに表示する _Message_ 。 |
17 | 35 |
# 複数表示可能なので、それらを上に表示されるものから順番に返す。 |
18 | 36 |
# サブクラスで処理を実装すること。 |
... | ... | |
33 | 51 |
# [Pango::FontDescription] フォント情報 |
34 | 52 |
# [Pango::Attribute] マークアップ情報 |
35 | 53 |
def header_left_content(message) |
36 |
attr_list, text = Pango.parse_markup("<b>#{Pango.escape(message[:user][:idname])}</b> #{Pango.escape(message[:user][:name] || '')}") |
|
37 |
return text, header_left_font(message), attr_list end |
|
54 |
if show_header? |
|
55 |
attr_list, text = Pango.parse_markup("<b>#{Pango.escape(message[:user][:idname])}</b> #{Pango.escape(message[:user][:name] || '')}") |
|
56 |
return text, header_left_font(message), attr_list end end |
|
38 | 57 | |
39 | 58 |
# ヘッダ左に使用するフォントを返す |
40 | 59 |
# ==== Args |
... | ... | |
71 | 90 |
# [Pango::FontDescription] フォント情報 |
72 | 91 |
# [Pango::Attribute] マークアップ情報 |
73 | 92 |
def header_right_content(message) |
74 |
attr_list, text = Pango.parse_markup("<span foreground=\"#999999\">#{Pango.escape(header_right_text(message))}</span>") |
|
75 |
return text, header_right_font(message), attr_list end |
|
93 |
if show_header? |
|
94 |
attr_list, text = Pango.parse_markup("<span foreground=\"#999999\">#{Pango.escape(header_right_text(message))}</span>") |
|
95 |
return text, header_right_font(message), attr_list end end |
|
76 | 96 | |
77 | 97 |
# ヘッダ右に使用するフォントを返す |
78 | 98 |
# ==== Args |
... | ... | |
113 | 133 |
else |
114 | 134 |
[1.0]*3 end end |
115 | 135 | |
136 |
# 枠のタイプを返す |
|
137 |
# ==== Return |
|
138 |
# 以下の値のいずれか一つ |
|
139 |
# :floating :: 影にblurを入れて、浮いているような感じに |
|
140 |
# :solid :: 細い線を入れる |
|
141 |
# :flat :: 枠線なし |
|
142 |
def edge_type |
|
143 |
:floating end |
|
144 | ||
116 | 145 |
# SubParts内の _Message_ の枠の色を返す |
117 | 146 |
# ==== Args |
118 | 147 |
# [message] Message |
... | ... | |
126 | 155 |
# [Gdk::Rectangle] サイズ(px)。xとyは無視され、widthとheightのみが利用される |
127 | 156 |
# [nil] アイコンを表示しない |
128 | 157 |
def icon_size |
129 |
Gdk::Rectangle.new(0, 0, DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE) end |
|
158 |
if show_icon? |
|
159 |
Gdk::Rectangle.new(0, 0, DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE) |
|
160 |
else |
|
161 |
nil end end |
|
130 | 162 | |
131 | 163 |
# _message_ の本文のテキスト色を返す |
132 | 164 |
# ==== Args |
... | ... | |
247 | 279 |
# ヘッダ(左)のための Pango::Layout のインスタンスを返す |
248 | 280 |
def header_left(message, context = dummy_context) |
249 | 281 |
text, font, attr_list = header_left_content(message) |
250 |
if text
|
|
282 |
if show_header?
|
|
251 | 283 |
layout = context.create_pango_layout |
252 | 284 |
layout.attributes = attr_list if attr_list |
253 | 285 |
layout.font_description = font if font |
... | ... | |
309 | 341 |
layout end |
310 | 342 | |
311 | 343 |
def render_outline(message, context, base_y) |
312 |
render_outline_floating(message, context, base_y) end |
|
344 |
unless show_edge? |
|
345 |
@edge = 2 |
|
346 |
return end |
|
347 |
@edge = 8 |
|
348 |
case edge_type |
|
349 |
when :floating |
|
350 |
render_outline_floating(message, context, base_y) |
|
351 |
when :solid |
|
352 |
render_outline_solid(message, context, base_y) |
|
353 |
when :flat |
|
354 |
render_outline_flat(message, context, base_y) end end |
|
313 | 355 | |
314 | 356 |
# エッジの描画。 |
315 | 357 |
# 影にblurを入れて、浮いているような感じに |
... | ... | |
347 | 389 |
context.rounded_rectangle(x,y,w,h, radius) } } end |
348 | 390 | |
349 | 391 |
def render_badge(message, context) |
350 |
render_badge_floating(message, context) end |
|
392 |
return unless show_edge? |
|
393 |
case edge_type |
|
394 |
when :floating |
|
395 |
render_badge_floating(message, context) |
|
396 |
when :solid |
|
397 |
render_badge_solid(message, context) |
|
398 |
when :flat |
|
399 |
render_badge_flat(message, context) end end |
|
351 | 400 | |
352 | 401 |
# バッジの描画。 |
353 | 402 |
# 影にblurを入れて、浮いているような感じに |
... | ... | |
395 | 444 |
context.paint end end |
396 | 445 | |
397 | 446 |
def render_icon(message, context) |
398 |
if icon_size
|
|
447 |
if show_icon?
|
|
399 | 448 |
context.set_source_pixbuf(main_icon(message)) |
400 | 449 |
context.paint end end |
401 | 450 | |
... | ... | |
403 | 452 |
Gdk::WebImageLoader.pixbuf(message[:user][:profile_image_url], icon_size){ |pixbuf| |
404 | 453 |
helper.on_modify } end |
405 | 454 |
end |
406 | ||
407 | ||
408 | ||
409 | ||
410 | ||
411 | ||
412 | ||
413 |
core/mui/cairo_sub_parts_quote.rb | ||
---|---|---|
46 | 46 |
def main_text_font(message) |
47 | 47 |
Pango::FontDescription.new(UserConfig[:quote_text_font]) end |
48 | 48 | |
49 |
def header_left_content(*args) |
|
50 |
if show_header? |
|
51 |
super end end |
|
52 | ||
53 |
def header_right_content(*args) |
|
54 |
if show_header? |
|
55 |
super end end |
|
56 | ||
57 | 49 |
def icon_size |
58 | 50 |
if show_icon? |
59 | 51 |
if UserConfig[:quote_icon_size] |
... | ... | |
64 | 56 |
def text_max_line_count(message) |
65 | 57 |
UserConfig[:quote_text_max_line_count] || super end |
66 | 58 | |
67 |
def render_outline(message, context, base_y) |
|
68 |
unless show_edge? |
|
69 |
@edge = 2 |
|
70 |
return end |
|
71 |
@edge = 8 |
|
72 |
case UserConfig[:quote_edge] |
|
73 |
when :floating |
|
74 |
render_outline_floating(message, context, base_y) |
|
75 |
when :solid |
|
76 |
render_outline_solid(message, context, base_y) |
|
77 |
when :flat |
|
78 |
render_outline_flat(message, context, base_y) end end |
|
79 | ||
80 |
def render_badge(message, context) |
|
81 |
return unless show_edge? |
|
82 |
case UserConfig[:quote_edge] |
|
83 |
when :floating |
|
84 |
render_badge_floating(message, context) |
|
85 |
when :solid |
|
86 |
render_badge_solid(message, context) |
|
87 |
when :flat |
|
88 |
render_badge_flat(message, context) end end |
|
59 |
def edge_type |
|
60 |
UserConfig[:quote_edge] end |
|
89 | 61 | |
90 | 62 |
def show_header? |
91 | 63 |
(UserConfig[:quote_present_policy] || []).include?(:header) end |
... | ... | |
96 | 68 |
def show_edge? |
97 | 69 |
(UserConfig[:quote_present_policy] || []).include?(:edge) end |
98 | 70 |
end |
99 | ||
100 | ||
101 | ||
102 |