class ArcadiaExtPlus
Attributes
index[R]
Public Class Methods
instances(_class)
click to toggle source
# File lib/a-commons.rb, line 468 def ArcadiaExtPlus.instances(_class) @@instances[_class] end
new(_arcadia, _name=nil)
click to toggle source
Calls superclass method
ArcadiaExt::new
# File lib/a-commons.rb, line 430 def initialize(_arcadia, _name=nil) @@instances = {} if !defined?(@@instances) @@main_instance = {} if !defined?(@@main_instance) @@active_instance = {} if !defined?(@@active_instance) @@instances[self.class] = [] if @@instances[self.class] == nil @@instances[self.class] << self @@main_instance[self.class] = self if @@main_instance[self.class] == nil Arcadia.attach_listener(self, ActivateInstanceEvent) super(_arcadia, _name) @@active_instance[self.class] = self if @@active_instance[self.class] == nil end
Public Instance Methods
activate(_obj=self, _raise_event=true)
click to toggle source
# File lib/a-commons.rb, line 484 def activate(_obj=self, _raise_event=true) return if @@active_instance[_obj.class] == _obj @@active_instance[_obj.class] = _obj #if @arcadia.initialized? # if _obj.frame_visible? # @@active_instance[_obj.class] = nil # else # @@active_instance[_obj.class] = _obj # end _obj.frame.root.shift_on if _obj.frame_visible? instances.each{|i| i.frame.root.shift_off if i != _obj && i.frame != nil && i.frame.root != _obj.frame.root && i.frame_raised? } ActivateInstanceEvent.new(Arcadia.instance, 'name'=>_obj.name).go! if _raise_event end
activate_main()
click to toggle source
# File lib/a-commons.rb, line 499 def activate_main activate(@@main_instance[self.class]) end
active?()
click to toggle source
# File lib/a-commons.rb, line 503 def active? @@active_instance[self.class] == self end
active_instance()
click to toggle source
# File lib/a-commons.rb, line 472 def active_instance @@active_instance[self.class] end
clean_instance()
click to toggle source
def on_before_layout_raising_frame(_event)
if _event.extension_name == @name activate end
end
# File lib/a-commons.rb, line 577 def clean_instance if main_instance? @frames.each_index{|i| LayoutChangedDomainEvent.new(self, 'old_domain'=>self.frame_domain(i), 'new_domain'=>nil).go! destroy_frame(i) } @frames.clear instances.each{|i| if i != self activate(i) break end } else @@instances[self.class].delete(self) if @@instances[self.class] Arcadia.del_conf_group(Arcadia['conf'],@name) Arcadia.del_conf_group(Arcadia['pers'],@name) main_instance.del_from_conf_property("clones", @name) Arcadia.process_event(ClearCacheInstanceEvent.new(Arcadia.instance), [self]) Arcadia.process_event(DestroyInstanceEvent.new(Arcadia.instance), [self]) activate_main #if main_instance.frame_visible? end end
clone(_name, _dom=nil)
click to toggle source
# File lib/a-commons.rb, line 553 def clone(_name, _dom=nil) #create instance = self.class.new(Arcadia.instance, _name) #build Arcadia.process_event(BuildEvent.new(Arcadia.instance), [instance]) Arcadia.attach_listener(instance, ClearCacheInstanceEvent) Arcadia.attach_listener(instance, DestroyInstanceEvent) instance end
deduplicate()
click to toggle source
# File lib/a-commons.rb, line 601 def deduplicate can_exit=true if @confirm_on_exit && (Arcadia.dialog(self, 'type'=>'yes_no', 'msg'=>Arcadia.text('main.d.confirm_delete_ext_instance.msg', [@name]), 'title' => Arcadia.text('main.d.confirm_delete_ext_instance.title', [@name]), 'level' => 'question')=='yes') exit_query_event = Arcadia.process_event(ExitQueryEvent.new(self, 'can_exit'=>true)) can_exit = exit_query_event.can_exit end clean_instance if can_exit end
duplicate(_name=nil, _dom=nil, _confirm_on_exit=true)
click to toggle source
# File lib/a-commons.rb, line 535 def duplicate(_name=nil, _dom=nil, _confirm_on_exit=true) _name = new_name if _name.nil? @confirm_on_exit = _confirm_on_exit #create conf properties Arcadia.conf_group_copy(@@main_instance[self.class].name, _name) if !_dom.nil? doms = Application.conf_array("#{_name}.frames") doms[0] = _dom Application.array_conf("#{_name}.frames", doms) end instance = clone(_name, _dom) #initialize Arcadia.process_event(InitializeEvent.new(Arcadia.instance), [instance]) #add_to_conf_property("#{main_instance.name}.clones", _name) main_instance.add_to_conf_property("clones", _name) instance end
exist_name?(_name)
click to toggle source
# File lib/a-commons.rb, line 526 def exist_name?(_name) exist = false instances.each{|i| exist = exist || i.name == _name break if exist } exist end
frame(_n=0,create_if_not_exist=true)
click to toggle source
Calls superclass method
ArcadiaExt#frame
# File lib/a-commons.rb, line 442 def frame(_n=0,create_if_not_exist=true) fr = super(_n, create_if_not_exist) if fr != nil && !@frame_initialize && fr.domain != nil && fr.domain != ArcadiaLayout::HIDDEN_DOMAIN @frame_initialize = true fr.hinner_frame.bind_append("Enter", proc{activate}) if main_instance? # fr.root.add_state_button( # self.name, # 'Duplicate', # proc{duplicate}, # PLUS_EX_GIF, # 'left') # activate(self, false) else fr.root.add_state_button( self.name, 'Destroy', proc{deduplicate}, MINUS_EX_GIF, 'left') activate(self, false) end end fr end
instance_index()
click to toggle source
# File lib/a-commons.rb, line 511 def instance_index instances.index(self) end
instances()
click to toggle source
# File lib/a-commons.rb, line 507 def instances @@instances[self.class] end
main_instance()
click to toggle source
# File lib/a-commons.rb, line 476 def main_instance @@main_instance[self.class] end
main_instance?()
click to toggle source
# File lib/a-commons.rb, line 480 def main_instance? @@main_instance[self.class] == self end
new_name()
click to toggle source
# File lib/a-commons.rb, line 515 def new_name #"#{main_instance.name}#{instances.length}" name = main_instance.name i=0 while exist_name?(name) i+=1 name = "#{main_instance.name}#{i}" end name end
on_destroy_instance(_event)
click to toggle source
# File lib/a-commons.rb, line 563 def on_destroy_instance(_event) Arcadia.detach_listener(self) @arcadia.unregister(self) # @frames.each{|f| f.free } @frames.each_index{|i| destroy_frame(i)} @frames.clear end