-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathsetting.rb
130 lines (117 loc) · 4.02 KB
/
setting.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
require_relative 'instance_setting_list'
Plugin.create(:worldon) do
pm = Plugin::Worldon
# 設定の初期化
defaults = {
worldon_enable_streaming: true,
worldon_rest_interval: UserConfig[:retrieve_interval_friendtl],
worldon_show_subparts_visibility: true,
worldon_show_subparts_bot: true,
worldon_show_subparts_pin: true,
worldon_instances: Hash.new,
}
defaults.each do |key, value|
if UserConfig[key].nil?
UserConfig[key] = value
end
end
instance_config = at(:instances)
if instance_config
UserConfig[:worldon_instances] = instance_config.merge(UserConfig[:worldon_instances])
store(:instances, nil)
end
# 追加
on_worldon_instances_open_create_dialog do
dialog "インスタンス設定の追加" do
error_msg = nil
while true
if error_msg
label error_msg
end
input "インスタンスのドメイン", :domain
result = await_input
if result[:domain].empty?
error_msg = "ドメイン名を入力してください。"
next
end
if UserConfig[:worldon_instances].has_key?(result[:domain])
error_msg = "既に登録済みのドメインです。入力し直してください。"
next
end
instance, = Plugin.filtering(:worldon_add_instance, result[:domain])
if instance.nil?
error_msg = "接続に失敗しました。もう一度確認してください。"
next
end
break
end
domain = result[:domain]
label "#{domain} インスタンスを追加しました"
Plugin.call(:worldon_restart_instance_stream, domain)
Plugin.call(:worldon_instance_created, domain)
end
end
# 編集
on_worldon_instances_open_edit_dialog do |domain|
config = UserConfig[:worldon_instances][domain]
dialog "インスタンス設定の編集" do
label "インスタンスのドメイン: #{domain}"
end.next do |result|
Plugin.call(:worldon_update_instance, result.domain)
end
end
# 削除
on_worldon_instances_delete_with_confirm do |domain|
next if UserConfig[:worldon_instances][domain].nil?
dialog "インスタンス設定の削除" do
label "インスタンス #{domain} を削除しますか?"
end.next {
Plugin.call(:worldon_delete_instance, domain)
}
end
# 設定
settings "Worldon" do
settings "表示" do
boolean 'botアカウントにアイコンを表示する', :worldon_show_subparts_bot
boolean 'ピン留めトゥートにアイコンを表示する', :worldon_show_subparts_pin
boolean 'トゥートに公開範囲を表示する', :worldon_show_subparts_visibility
end
settings "接続" do
boolean 'ストリーミング接続する', :worldon_enable_streaming
adjustment '接続間隔(分)', :worldon_rest_interval, 1, 60*24
end
settings "公開タイムライン" do
treeview = Plugin::Worldon::InstanceSettingList.new
btn_add = Gtk::Button.new(Gtk::Stock::ADD)
btn_delete = Gtk::Button.new(Gtk::Stock::DELETE)
btn_add.ssc(:clicked) do
Plugin.call(:worldon_instances_open_create_dialog)
true
end
btn_delete.ssc(:clicked) do
domain = treeview.selected_domain
if domain
Plugin.call(:worldon_instances_delete_with_confirm, domain) end
true
end
scrollbar = ::Gtk::VScrollbar.new(treeview.vadjustment)
pack_start(
Gtk::HBox.new(false, 4).
add(treeview).
closeup(scrollbar).
closeup(
Gtk::VBox.new.
closeup(btn_add).
closeup(btn_delete)))
Plugin.create :worldon do
pm = Plugin::Worldon
add_tab_observer = on_worldon_instance_created(&treeview.method(:add_record))
delete_tab_observer = on_worldon_delete_instance(&treeview.method(:remove_record))
treeview.ssc(:destroy) do
detach add_tab_observer
detach delete_tab_observer
end
end
end
end
end