File: //usr/local/rvm/src/ruby-2.2.10/ext/tk/lib/tk/tk_mac.rb
#
# tk/tk_mac.rb : Access Mac-Specific functionality on OS X from Tk
# (supported by Tk8.6 or later)
#
# ATTENTION !!
# This is NOT TESTED. Because I have no test-environment.
#
require 'tk'
module Tk
module Mac
end
end
module Tk::Mac
extend TkCore
# event handler callbacks
def self.def_ShowPreferences(cmd=Proc.new)
ip_eval("proc ::tk::mac::ShowPreferences {} { #{install_cmd(cmd)} }")
nil
end
def self.def_OpenApplication(cmd=Proc.new)
ip_eval("proc ::tk::mac::OpenApplication {} { #{install_cmd(cmd)} }")
nil
end
def self.def_ReopenApplication(cmd=Proc.new)
ip_eval("proc ::tk::mac::ReopenApplication {} { #{install_cmd(cmd)} }")
nil
end
def self.def_OpenDocument(cmd=Proc.new)
ip_eval("proc ::tk::mac::OpenDocument {args} { eval #{install_cmd(cmd)} $args }")
nil
end
def self.def_PrintDocument(cmd=Proc.new)
ip_eval("proc ::tk::mac::PrintDocument {args} { eval #{install_cmd(cmd)} $args }")
nil
end
def self.def_Quit(cmd=Proc.new)
ip_eval("proc ::tk::mac::Quit {} { #{install_cmd(cmd)} }")
nil
end
def self.def_OnHide(cmd=Proc.new)
ip_eval("proc ::tk::mac::OnHide {} { #{install_cmd(cmd)} }")
nil
end
def self.def_OnShow(cmd=Proc.new)
ip_eval("proc ::tk::mac::OnShow {} { #{install_cmd(cmd)} }")
nil
end
def self.def_ShowHelp(cmd=Proc.new)
ip_eval("proc ::tk::mac::ShowHelp {} { #{install_cmd(cmd)} }")
nil
end
# additional dialogs
def self.standardAboutPanel
tk_call('::tk::mac::standardAboutPanel')
nil
end
# system configuration
def self.useCompatibilityMetrics(mode)
tk_call('::tk::mac::useCompatibilityMetrics', mode)
nil
end
def self.CGAntialiasLimit(limit)
tk_call('::tk::mac::CGAntialiasLimit', limit)
nil
end
def self.antialiasedtext(num)
tk_call('::tk::mac::antialiasedtext', num)
nil
end
def self.useThemedToplevel(mode)
tk_call('::tk::mac::useThemedToplevel', mode)
nil
end
end
class Tk::Mac::IconBitmap < TkImage
TkCommandNames = ['::tk::mac::iconBitmap'].freeze
def self.new(width, height, keys)
if keys.kind_of?(Hash)
name = nil
if keys.key?(:imagename)
name = keys[:imagename]
elsif keys.key?('imagename')
name = keys['imagename']
end
if name
if name.kind_of?(TkImage)
obj = name
else
name = _get_eval_string(name)
obj = nil
Tk_IMGTBL.mutex.synchronize{
obj = Tk_IMGTBL[name]
}
end
if obj
if !(keys[:without_creating] || keys['without_creating'])
keys = _symbolkey2str(keys)
keys.delete('imagename')
keys.delete('without_creating')
obj.instance_eval{
tk_call_without_enc('::tk::mac::iconBitmap',
@path, width, height, *hash_kv(keys, true))
}
end
return obj
end
end
end
(obj = self.allocate).instance_eval{
Tk_IMGTBL.mutex.synchronize{
initialize(width, height, keys)
Tk_IMGTBL[@path] = self
}
}
obj
end
def initialize(width, height, keys)
@path = nil
without_creating = false
if keys.kind_of?(Hash)
keys = _symbolkey2str(keys)
@path = keys.delete('imagename')
without_creating = keys.delete('without_creating')
end
unless @path
Tk_Image_ID.mutex.synchronize{
@path = Tk_Image_ID.join(TkCore::INTERP._ip_id_)
Tk_Image_ID[1].succ!
}
end
unless without_creating
tk_call_without_enc('::tk::mac::iconBitmap',
@path, width, height, *hash_kv(keys, true))
end
end
end