Module: Ruber::Activable

Included in:
Document, Project, World::Environment
Defined in:
lib/ruber/utils.rb

Overview

Module for objects which can be activated and disactivated. It provides methods for inquiring the active state and to change it. If the object is a Qt::Object, and has an activated() and a deactivated signals, they will be emitted when the state change. If the object is not a Qt::Object, or doesn’t have those signals, everything else will still work (in the rest of the documentation, every time emitting a signal is mentioned, it’s understood that the signal won’t be emitted if it doesn’t exist).

Classes including this module may customize what is done when the state change by overriding the #do_activation and #do_deactivation methods.

Classes mixing-in this module should initialize an instance variable called @active. If they don’t, one initialized to nil will be created the first time it’ll be needed (possibly with a warning).

Instance Method Summary (collapse)

Instance Method Details

- (nil) activate

Makes the object active

If previously the object was inactive, emits the activated signal.

Returns:

  • (nil)


372
373
374
375
# File 'lib/ruber/utils.rb', line 372

def activate
  self.active = true
  nil
end

- (Object) active=(val)

Enables or disables the object

If the state of the object changes, the #do_activation or #do_deactivation methods are called. This happens after the state has been changed.

object is a true value, the object will be activated, otherwise it will be deactivated

Parameters:

  • val (Object)

    whether the object should be activated or deactivated. If the

Returns:



387
388
389
390
391
392
393
# File 'lib/ruber/utils.rb', line 387

def active= val
  old = @active
  @active = val.to_bool
  if old != @active
    @active ? do_activation : do_deactivation
  end
end

- (Boolean) active?

Whether the object is active or not

Returns:

  • (Boolean)

    whether the object is active or not



351
352
353
# File 'lib/ruber/utils.rb', line 351

def active?
  @active
end

- (nil) deactivate

Makes the object inactive

If previously the object was active, emits the deactivated signal

Returns:

  • (nil)


361
362
363
364
# File 'lib/ruber/utils.rb', line 361

def deactivate
  self.active = false
  nil
end

- (nil) do_activation (private)

Method called after the state changes from inactive to active

It emits the activated signal, if the class including the module has the signal.

Including classes can override this method to perform other actions every time the object becomes active. In this case, they should call super if they want the signal to be emitted

Returns:

  • (nil)


421
422
423
# File 'lib/ruber/utils.rb', line 421

def do_activation
  emit activated rescue NameError
end

- (nil) do_deactivation (private)

Method called after the state changes from active to inactive

It emits the deactivated signal, if the class including the module has the signal.

Including classes can override this method to perform other actions every time the object becomes inactive. In this case, they should call super if they want the signal to be emitted

Returns:

  • (nil)


407
408
409
# File 'lib/ruber/utils.rb', line 407

def do_deactivation
  emit deactivated rescue NameError
end