Sha256: 543463334cd88c752ff806c55df7e1a2cb135d8aa37c8e5e2ac2d9d22de42455

Contents?: true

Size: 1.13 KB

Versions: 38

Compression:

Stored size: 1.13 KB

Contents

#Containing various helper methods for Gtk2-windows.
class Knj::Gtk2::Window
  require "wref" if !Kernel.const_defined?(:Wref)
  @@uniques = Wref_map.new
  
  #Used to make a window-instance unique. If it already exists when unique! is called, then it will pass focus to the existing window instead of yielding the block, which should contain code to create the window.
  #===Examples
  #This should only create a single window.
  # Knj::Gtk2::Window.unique!("my_window") do
  #  Gtk::Window.new
  # end
  # 
  # Knj::Gtk2::Window.unique!("my_window") do
  #  Gtk::Window.new
  # end
  def self.unique!(id)
    instance = @@uniques.get!(id)
    
    if instance and !instance.gui["window"].destroyed?
      instance.gui["window"].present
    else
      obj = yield
      @@uniques[id] = obj
    end
  end
  
  #Returns the object if it hasnt been destroyed.
  #===Examples
  # Knj::Gtk2::Window.get("my_window") #=> nil
  # Knj::Gtk2::Window.get("my_window") #=> Gtk::Builder-object
  def self.get(id)
    instance = @@uniques.get!(id)
    
    if instance and !instance.gui["window"].destroyed?
      return instance
    end
    
    return nil
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
knjrbfw-0.0.81 lib/knj/gtk2_window.rb
knjrbfw-0.0.80 lib/knj/gtk2_window.rb
knjrbfw-0.0.79 lib/knj/gtk2_window.rb
knjrbfw-0.0.78 lib/knj/gtk2_window.rb
knjrbfw-0.0.77 lib/knj/gtk2_window.rb
knjrbfw-0.0.75 lib/knj/gtk2_window.rb
knjrbfw-0.0.74 lib/knj/gtk2_window.rb
knjrbfw-0.0.72 lib/knj/gtk2_window.rb
knjrbfw-0.0.71 lib/knj/gtk2_window.rb
knjrbfw-0.0.70 lib/knj/gtk2_window.rb
knjrbfw-0.0.69 lib/knj/gtk2_window.rb
knjrbfw-0.0.68 lib/knj/gtk2_window.rb
knjrbfw-0.0.67 lib/knj/gtk2_window.rb
knjrbfw-0.0.66 lib/knj/gtk2_window.rb
knjrbfw-0.0.65 lib/knj/gtk2_window.rb
knjrbfw-0.0.64 lib/knj/gtk2_window.rb
knjrbfw-0.0.63 lib/knj/gtk2_window.rb
knjrbfw-0.0.62 lib/knj/gtk2_window.rb