@@ -55,10 +55,10 @@ def terminate(message = nil, &message_generator)
message = message_generator.call(e) if message_generator
if(message)
if(e.is_a?(Net::HTTPResponse))
Plugin.call(:update, nil, [Message.new(:message => "#{message} (#{e.code} #{e.body})", :system => true)])
Plugin.activity :error, "#{message} (#{e.code} #{e.body})"
else
e = 'error' if not e.respond_to?(:to_s)
Plugin.call(:update, nil, [Message.new(:message => "#{message} (#{e})", :system => true)]) end end
Plugin.activity :error, "#{message} (#{e})", exception: e end end
rescue Exception => inner_error
error inner_error end
Deferred.fail(e) } end
@@ -225,7 +225,9 @@ def self.define_source_getter(key, condition=ret_nth, &onfound)
result = get(key, (force_retrieve ? -1 : 1))
if result.is_a?(Message)
onfound.call(self, result)
result end end } end
result end end }
define_method("#{key}_source_d"){ |*args|
Thread.new{ __send__("#{key}_source", *args) } } end

# Message#receive_message と同じ。ただし、リプライ元のみをさがす。
define_source_getter(:replyto, /@[a-zA-Z0-9_]/){ |this, result|
@@ -130,9 +130,8 @@ def clicked(x, y, e)
l = message.links.segment_by_index(index)
l[:callback].call(l) if l end end
when 3
menu_pop(e)
end
end
@tree.get_ancestor(Gtk::Window).set_focus(@tree)
menu_pop(e) end end

# 座標 ( _x_ , _y_ ) にマウスオーバーイベントを発生させる
def point_moved(x, y)
@@ -187,11 +187,9 @@ def openurl(url)
if(command)
bg_system(command, url)
else
Plugin.call(:update, nil, [Message.new(:message => "この環境で、URLを開くためのコマンドが判別できませんでした。設定の「表示→URLを開く方法」で、URLを開く方法を設定してください。",
:system => true)]) end end
Plugin.activity :system, "この環境で、URLを開くためのコマンドが判別できませんでした。設定の「表示→URLを開く方法」で、URLを開く方法を設定してください。" end end
rescue => e
Plugin.call(:update, nil, [Message.new(:message => "コマンド \"#{command}\" でURLを開こうとしましたが、開けませんでした。設定の「表示→URLを開く方法」で、URLを開く方法を設定してください。",
:system => true)]) end
Plugin.activity :system, "コマンド \"#{command}\" でURLを開こうとしましたが、開けませんでした。設定の「表示→URLを開く方法」で、URLを開く方法を設定してください。" end

# URLを開くことができるコマンドを返す。
def url_open_command
@@ -205,8 +203,7 @@ def url_open_command
throw :urlopen end }
wellknown_browsers.each{ |o|
if command_exist?(o)
Plugin.call(:update, nil, [Message.new(:message => "この環境で、URLを開くためのコマンドが判別できなかったので、\"#{command}\"を使用します。設定の「表示→URLを開く方法」で、URLを開く方法を設定してください。",
:system => true)])
Plugin.activity :system, "この環境で、URLを開くためのコマンドが判別できなかったので、\"#{command}\"を使用します。設定の「表示→URLを開く方法」で、URLを開く方法を設定してください。"
command = o
throw :urlopen end } end
command end
@@ -49,15 +49,14 @@ def self.openurl(url)
# open.call(url, gen_openurl_proc(url, way_of_open_link[(index+1)..(way_of_open_link.size)]))
# break end } } end

def initialize(msg, default_fonts = {}, *args)
assert_type(String, msg)
def initialize(msg = nil, default_fonts = {}, *args)
@fonts = default_fonts
@get_background = lambda{ parent.style.bg(Gtk::STATE_NORMAL) }
super(*args)
self.editable = false
self.cursor_visible = false
self.wrap_mode = Gtk::TextTag::WRAP_CHAR
gen_body(msg)
gen_body(msg) if msg
end

# TODO プライベートにする
@@ -73,6 +72,16 @@ def bg_modifier(color = @get_background.call)
queue_draw
false end

# 新しいテキスト _msg_ に内容を差し替える。
# ==== Args
# [msg] 表示する文字列
# ==== Return
# self
def rewind(msg)
set_buffer(Gtk::TextBuffer.new)
gen_body(msg)
end

private

def fonts2tags(fonts)
@@ -85,13 +94,12 @@ def fonts2tags(fonts)

def gen_body(msg, fonts={})
tags = fonts2tags(fonts)
Gtk::Lock.synchronize{
tag_shell = buffer.create_tag('shell', fonts2tags(fonts))
buffer.insert(buffer.start_iter, msg, 'shell')
apply_links
apply_inner_widget
set_events(tag_shell)
self }
tag_shell = buffer.create_tag('shell', fonts2tags(fonts))
buffer.insert(buffer.start_iter, msg, 'shell')
apply_links
apply_inner_widget
set_events(tag_shell)
self
end


@@ -342,8 +342,7 @@ def plugin_fault(plugintag, event_name, event_kind, e)
if abort_on_exception?
abort
else
Plugin.call(:update, nil, [Message.new(:message => "プラグイン #{plugintag}#{event_kind} #{event_name} 処理中にクラッシュしました。プラグインの動作を停止します。\n#{e.to_s}",
:system => true)])
Plugin.activity :system, "プラグイン #{plugintag}#{event_kind} #{event_name} 処理中にクラッシュしました。プラグインの動作を停止します。\n#{e.to_s}"
plugintag.stop! end end

alias :newSAyTof :new
@@ -51,7 +51,7 @@ def color(r, g, b)
def version_check(name, require, now)
if((now <=> require) < 0)
if Mopt.skip_version_check
Plugin.call(:update, nil, [Message.new(:message => "#{name}のバージョンが古すぎます(#{require.join('.')}以降が必要、現在#{now.join('.')})。\n問題が起こるかもしれません。更新してください。", :system => true)])
Plugin.activity :system, "#{name}のバージョンが古すぎます(#{require.join('.')}以降が必要、現在#{now.join('.')})。\n問題が起こるかもしれません。更新してください。"
else
chi_fatal_alert("#{name}のバージョンが古すぎます"+
"(#{require.join('.')}以降が必要、現在#{now.join('.')})。\n"+
@@ -350,8 +350,7 @@ def post(args)
plugin.add_event(:mui_tab_active, &gui.method(:on_mui_tab_active))

plugin.add_event(:apilimit, &tclambda(Time){ |time|
Plugin.call(:update, nil, [Message.new(:message => "Twitter APIの制限数を超えたので、#{time.strftime('%H:%M')}までアクセスが制限されました。この間、タイムラインの更新などが出来ません。",
:system => true)])
Plugin.activity :system, "Twitter APIの制限数を超えたので、#{time.strftime('%H:%M')}までアクセスが制限されました。この間、タイムラインの更新などが出来ません。"
gui.statusbar.push(gui.statusbar.get_context_id('system'), "Twitter APIの制限数を超えました。#{time.strftime('%H:%M')}に復活します") })

plugin.add_event(:apifail){ |errmes|
@@ -113,7 +113,10 @@ class UserConfig
'delete_favorite',
'delete'],

:subparts_order => ["Gdk::ReplyViewer", "Gdk::SubPartsFavorite", "Gdk::SubPartsRetweet"]
:subparts_order => ["Gdk::ReplyViewer", "Gdk::SubPartsFavorite", "Gdk::SubPartsRetweet"],

:activity_mute_kind => ["error"],
:activity_show_timeline => ["system"]

}

@@ -39,6 +39,12 @@ def initialize(value)
super(value)
end

# リストを所有しているユーザを返す
# ==== Return
# リストの所有者(User)
def user
self[:user] end

def member
atomic{ self[:member] = Set.new } if not self[:member]
self[:member] end
@@ -86,7 +86,7 @@ def gen_counter(count=0, increment=1)

# ファイルの内容を文字列に読み込む
def file_get_contents(fn)
open(fn, 'r'){ |input|
open(fn, 'r:utf-8'){ |input|
input.read
}
end
@@ -85,6 +85,6 @@ def $stderr.write(string)
File.delete(errfile) if File.exist?(errfile)
raise e
rescue Exception => e
object_put_contents(File.join(File.expand_path(Environment::TMPDIR), 'crashed_exception'), e)
object_put_contents(File.join(File.expand_path(Environment::TMPDIR), 'crashed_exception'), e) rescue nil
raise e
end