提案 #1255 » 1255-1.patch
| core/plugin/gtk/world_shifter.rb | ||
|---|---|---|
|
class Gtk::WorldShifter < Gtk::EventBox
|
||
|
UserConfig[:gtk_accountbox_geometry] ||= 32
|
||
|
UserConfig[:gtk_last_world_slug] ||= nil
|
||
|
def initialize
|
||
|
super
|
||
| ... | ... | |
|
refresh
|
||
|
end
|
||
|
pluggaloid_event_listener
|
||
|
restore_last_world
|
||
|
end
|
||
|
def refresh
|
||
| ... | ... | |
|
modify_face
|
||
|
end
|
||
|
def restore_last_world
|
||
|
slug = UserConfig[:gtk_last_world_slug]
|
||
|
world = Enumerator.new do |y|
|
||
|
Plugin.filtering :worlds, y
|
||
|
end.select { |w| w.slug == slug } &.first
|
||
|
Plugin.call(:world_change_current, world) if world
|
||
|
end
|
||
|
def save_current_world
|
||
|
world = Plugin.filtering(:world_current, nil).first
|
||
|
UserConfig[:gtk_last_world_slug] = world.slug
|
||
|
end
|
||
|
def open_menu(event)
|
||
|
@menu ||= Gtk::Menu.new.tap do |menu|
|
||
|
Enumerator.new{|y|
|
||
| ... | ... | |
|
def pluggaloid_event_listener
|
||
|
tag = Plugin[:gtk].handler_tag(:world_shifter) do
|
||
|
Plugin[:gtk].on_world_change_current{ refresh }
|
||
|
Plugin[:gtk].on_world_change_current do
|
||
|
refresh
|
||
|
save_current_world
|
||
|
end
|
||
|
Plugin[:gtk].on_userconfig_modify do |key, newval|
|
||
|
refresh if key == :world_shifter_visibility
|
||
|
end
|
||
|
Plugin[:gtk].on_world_after_created do |world|
|
||
|
refresh
|
||
|
save_current_world
|
||
|
end
|
||
|
Plugin[:gtk].on_world_destroy do |world|
|
||
|
refresh
|
||
|
save_current_world
|
||
|
end
|
||
|
end
|
||
|
ssc(:destroy) do
|
||