Sha256: 9bb25aa3786f1fadcbc385499a995fb1d38c0699004d28be1821d8579ddb365d

Contents?: true

Size: 920 Bytes

Versions: 5

Compression:

Stored size: 920 Bytes

Contents

# Copyright (c) 2023 M.J.N. Corino, The Netherlands
#
# This software is released under the MIT license.

module Wx

  # Function used to create the correct persistent adapter for the given object.
  def self.create_persistent_object(obj)
    obj.create_persistent_object
  end

  # A shorter synonym for {Wx::PersistenceManager#register_and_restore}.
  def self.persistent_register_and_restore(obj, name=nil)
    obj.name = name if name && !name.empty?
    PersistenceManager.get.register_and_restore(obj)
  end

  class PersistenceManager

    class << self

      # Cache the global instance to keep it safe from GC

      wx_get = instance_method :get
      wx_redefine_method :get do
        @the_manager ||= wx_get.bind(self).call
      end

      wx_set = instance_method :set
      wx_redefine_method :set do |pman|
        wx_set.bind(self).call(pman)
        @the_manager = pman
      end

    end

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
wxruby3-1.5.1 lib/wx/core/persistence_manager.rb
wxruby3-1.5.0 lib/wx/core/persistence_manager.rb
wxruby3-1.4.2 lib/wx/core/persistence_manager.rb
wxruby3-1.4.1 lib/wx/core/persistence_manager.rb
wxruby3-1.4.0 lib/wx/core/persistence_manager.rb