Class: ArcadiaExtPlus
Instance Attribute Summary collapse
Attributes inherited from ArcadiaExt
#arcadia, #name
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from ArcadiaExt
#add_to_conf_property, #array_conf, #conf, #conf_array, #conf_default, #del_from_conf_property, #exec, #float_frame, #frame, #frame_def_visible?, #frame_domain, #frame_domain_default, #frame_visible?, #maximize, #maximized?, #resize, #restore_default_conf
Constructor Details
#initialize(_arcadia, _name = nil) ⇒ ArcadiaExtPlus
Returns a new instance of ArcadiaExtPlus.
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
|
# File 'lib/a-commons.rb', line 364
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)
if self.frame != nil
self.frame.hinner_frame.bind_append("Enter", proc{activate})
if @@main_instance[self.class] == self
frame.root.add_state_button(
self.name,
'Duplicate',
proc{duplicate},
PLUS_EX_GIF,
'left')
activate(self, false)
else
frame.root.add_state_button(
self.name,
'Destroy',
proc{deduplicate},
MINUS_EX_GIF,
'left')
activate(self, false)
end
end
end
|
Instance Attribute Details
#index ⇒ Object
Returns the value of attribute index.
362
363
364
|
# File 'lib/a-commons.rb', line 362
def index
@index
end
|
Class Method Details
.instances(_class) ⇒ Object
395
396
397
|
# File 'lib/a-commons.rb', line 395
def ArcadiaExtPlus.instances(_class)
@@instances[_class]
end
|
Instance Method Details
#activate(_obj = self, _raise_event = true) ⇒ Object
407
408
409
410
411
412
413
414
|
# File 'lib/a-commons.rb', line 407
def activate(_obj=self, _raise_event=true)
@@active_instance[self.class] = _obj
@@active_instance[self.class].frame.root.shift_on if @@active_instance[self.class].frame != nil
instances.each{|i|
i.frame.root.shift_off if i != @@active_instance[self.class] && i.frame != nil && i.frame.root != @@active_instance[self.class].frame.root
}
ActivateInstanceEvent.new(Arcadia.instance, 'name'=>self.name).go! if _raise_event
end
|
#activate_main ⇒ Object
416
417
418
|
# File 'lib/a-commons.rb', line 416
def activate_main
activate(@@main_instance[self.class])
end
|
#active? ⇒ Boolean
420
421
422
|
# File 'lib/a-commons.rb', line 420
def active?
@@active_instance[self.class] == self
end
|
#active_instance ⇒ Object
399
400
401
|
# File 'lib/a-commons.rb', line 399
def active_instance
@@active_instance[self.class]
end
|
#deduplicate ⇒ Object
def on_before_layout_raising_frame(_event)
if _event.extension_name == @name
activate
end
end
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
|
# File 'lib/a-commons.rb', line 483
def deduplicate
if (Arcadia.dialog(self, 'type'=>'yes_no',
'msg'=>"Shure delete '#{@name}'?",
'title' => "(Arcadia) Delete #{@name}",
'level' => 'question')=='yes')
exit_query_event = Arcadia.process_event(ExitQueryEvent.new(self, 'can_exit'=>true))
if exit_query_event.can_exit
activate_main
@@instances[self.class].delete(self) if @@instances[self.class]
Arcadia.del_conf_group(Arcadia['conf'],@name)
Arcadia.del_conf_group(Arcadia['pers'],@name)
del_from_conf_property("#{main_instance.name}.clones", @name)
Arcadia.process_event(ClearCacheInstanceEvent.new(Arcadia.instance), [self])
Arcadia.process_event(DestroyInstanceEvent.new(Arcadia.instance), [self])
end
end
end
|
#duplicate(_name = new_name) ⇒ Object
#exist_name?(_name) ⇒ Boolean
443
444
445
446
447
448
449
450
|
# File 'lib/a-commons.rb', line 443
def exist_name?(_name)
exist = false
instances.each{|i|
exist = exist || i.name == _name
break if exist
}
exist
end
|
#instance_index ⇒ Object
428
429
430
|
# File 'lib/a-commons.rb', line 428
def instance_index
instances.index(self)
end
|
#instances ⇒ Object
424
425
426
|
# File 'lib/a-commons.rb', line 424
def instances
@@instances[self.class]
end
|
#main_instance ⇒ Object
403
404
405
|
# File 'lib/a-commons.rb', line 403
def main_instance
@@main_instance[self.class]
end
|
#new_name ⇒ Object
432
433
434
435
436
437
438
439
440
441
|
# File 'lib/a-commons.rb', line 432
def new_name
name = main_instance.name
i=0
while exist_name?(name)
i+=1
name = "#{main_instance.name}#{i}"
end
name
end
|
#on_destroy_instance(_event) ⇒ Object
471
472
473
474
475
|
# File 'lib/a-commons.rb', line 471
def on_destroy_instance(_event)
Arcadia.detach_listener(self)
@arcadia.unregister(self)
@frames.each{|f| f.free }
end
|