Class: TkVarAccess

Inherits:
TkVariable show all
Defined in:
lib/tk/variable.rb

Constant Summary

Constants inherited from TkVariable

TkVariable::TkCommandNames, TkVariable::TkVar_CB_TBL, TkVariable::TkVar_ID_TBL, TkVariable::Tk_VARIABLE_ID, TkVariable::USE_TCLs_SET_VARIABLE_FUNCTIONS

Constants included from TkCore

TkCore::EventFlag, TkCore::INTERP, TkCore::WIDGET_DESTROY_HOOK

Constants included from TkComm

TkComm::GET_CONFIGINFO_AS_ARRAY, TkComm::GET_CONFIGINFOwoRES_AS_ARRAY, TkComm::TkExtlibAutoloadModule, TkComm::Tk_CMDTBL, TkComm::Tk_IDs, TkComm::Tk_WINDOWS, TkComm::USE_TCLs_LIST_FUNCTIONS, TkComm::WidgetClassNames

Constants included from TkUtil

TkUtil::None, TkUtil::RELEASE_DATE

Constants included from Tk

Tk::AUTO_PATH, Tk::INTERP, Tk::JAPANIZED_TK, Tk::LIBRARY_PATH, Tk::MAINLOOP, Tk::PACKAGE_PATH, Tk::RELEASE_DATE, Tk::TCL_LIBRARY_PATH, Tk::TCL_MAJOR_VERSION, Tk::TCL_MINOR_VERSION, Tk::TCL_PACKAGE_PATH, Tk::TCL_PATCHLEVEL, Tk::TCL_PRECISION, Tk::TCL_VERSION, Tk::TK_MAJOR_VERSION, Tk::TK_MINOR_VERSION, Tk::TK_PATCHLEVEL, Tk::TK_VERSION, Tk::Tkextlib_RELEASE_DATE, Tk::TreeCtrl_Widget, Tk::X_Scrollable, Tk::Y_Scrollable

Constants included from Tk::Encoding

Tk::Encoding::TkCommandNames

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from TkVariable

#%, #&, #*, #**, #+, #-, #/, #<=>, #==, #=~, #[], #[]=, #_trace_vinfo_for_element, #bool, #bool_element, callback, #clear, #coerce, #default_element_value_type, #default_proc, #default_value, #default_value_type, #element_lappend, #element_lget_f, #element_lget_i, #element_lindex, #element_lset, #element_to_f, #element_to_i, #element_to_s, #element_to_sym, #eventloop_tkwait, #eventloop_wait, #exist?, #id, #inspect, #is_hash?, #is_scalar?, #keys, #lappend, #lget_f, #lget_i, #lindex, #list, #list_element, #lset, #nonzero?, #numeric, #numeric_element, #numlist, #numlist_element, #procedure, #procedure_element, #ref, #set_bool, #set_bool_element, #set_bool_element_type, #set_bool_type, #set_default_element_value_type, #set_default_value, #set_default_value_type, #set_element_value, #set_element_value_type, #set_list, #set_list_element, #set_list_element_type, #set_list_type, #set_numeric, #set_numeric_element, #set_numeric_element_type, #set_numeric_type, #set_numlist_element_type, #set_numlist_type, #set_procedure, #set_procedure_element, #set_procedure_element_type, #set_procedure_type, #set_string, #set_string_element, #set_string_element_type, #set_string_type, #set_symbol, #set_symbol_element, #set_symbol_element_type, #set_symbol_type, #set_value, #set_value_type, #set_variable, #set_variable_element, #set_variable_element_type, #set_variable_type, #set_window, #set_window_element, #set_window_element_type, #set_window_type, #size, #string_element, #thread_tkwait, #thread_wait, #tkwait, #to_eval, #to_f, #to_i, #to_s, #to_sym, #trace, #trace_callback, #trace_element, #trace_vdelete, #trace_vdelete_for_element, #trace_vinfo, #undef_default, #unset, #update, #value, #value=, #variable, #variable_element, #wait, #window, #window_element, #zero?, #|

Methods included from TkCore

#_tk_call_to_list_core, #after, #after_cancel, #after_idle, #appname, #appsend, #appsend_deny, #appsend_displayof, callback, #callback_break, #callback_continue, #callback_return, #chooseColor, #chooseDirectory, #do_one_event, #event_generate, #getMultipleOpenFile, #getMultipleSaveFile, #getOpenFile, #getSaveFile, #get_eventloop_tick, #get_eventloop_weight, #get_no_event_wait, #inactive, #inactive_displayof, #info, #ip_eval, #ip_eval_with_enc, #ip_eval_without_enc, #ip_invoke, #ip_invoke_with_enc, #ip_invoke_without_enc, #is_mainloop?, #load_cmd_on_ip, #mainloop, #mainloop_exist?, #mainloop_thread?, #mainloop_watchdog, #messageBox, #rb_appsend, #rb_appsend_displayof, #reset_inactive, #reset_inactive_displayof, #restart, #scaling, #scaling_displayof, #set_eventloop_tick, #set_eventloop_weight, #set_no_event_wait, #tk_call, #tk_call_to_list, #tk_call_to_list_with_enc, #tk_call_to_list_without_enc, #tk_call_to_simplelist, #tk_call_to_simplelist_with_enc, #tk_call_to_simplelist_without_enc, #tk_call_with_enc, #tk_call_without_enc, #windowingsystem

Methods included from TkComm

#_at, #bind, #bind_all, #bind_append, #bind_append_all, #bind_remove, #bind_remove_all, #bindinfo, #bindinfo_all, #image_obj, #install_cmd, #subst, #uninstall_cmd

Methods included from TkEvent

#install_bind, #install_bind_for_event_class

Methods included from TkUtil

_conv_args, #_conv_args, #_fromUTF8, _get_eval_enc_str, #_get_eval_enc_str, #_get_eval_string, _get_eval_string, _symbolkey2str, #_symbolkey2str, #_toUTF8, bool, #bool, callback, eval_cmd, #hash_kv, hash_kv, install_cmd, num_or_str, #num_or_str, number, #number, string, #string, uninstall_cmd

Methods included from Tk

BinaryString, EncodedString, UTF8_String, add_kinsoku, bell, bell_on_display, const_missing, current_grabs, cursor_display, delete_kinsoku, destroy, #encoding, #encoding=, errorCode, errorInfo, exit, focus, focus_lastfor, focus_next, focus_prev, focus_to, fromUTF8, grid, grid_forget, has_mainwindow?, load_tcllibrary, load_tclscript, load_tclscript_rsrc, load_tclscript_rsrcid, lower_window, pack, pack_forget, pkgconfig_get, pkgconfig_list, place, place_forget, raise_window, #root, show_kinsoku, strictMotif, subst_tk_backslash, subst_utf_backslash, tcl_pkgconfig_get, tcl_pkgconfig_list, thread_update, thread_update_idletasks, tk_pkgconfig_get, tk_pkgconfig_list, toUTF8, to_backslash_sequence, ungrid, unload_tcllibrary, unpack, unplace, #update, update, update_idletasks, utf_to_backslash, utf_to_backslash_sequence

Methods included from Tk::Encoding

#encoding, #encoding=, #encoding_convertfrom, #encoding_convertto, #encoding_dirs, #encoding_dirs=, #encoding_names, #encoding_system, #encoding_system=

Constructor Details

#initialize(varname, val = nil) ⇒ TkVarAccess

Returns a new instance of TkVarAccess.



1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
# File 'lib/tk/variable.rb', line 1568

def initialize(varname, val=nil)
  @id = varname
  TkVar_ID_TBL[@id] = self

  @var  = @id
  @elem = nil

  @def_default = false
  @default_val = nil

  @trace_var  = nil
  @trace_elem = nil
  @trace_opts = nil

  @type = nil
  var = self
  @element_type = Hash.new{|k,v| var.default_value_type }

  # is an element?
  if @id =~ /^([^(]+)\((.+)\)$/
    # is an element --> var == $1, elem == $2
    @var  = $1
    @elem = $2
  end

  # teach Tk-ip that @id is global var
  INTERP._invoke_without_enc('global', @var)
=begin
  begin
    INTERP._invoke_without_enc('global', @id)
  rescue => e
    if @id =~ /^(.+)\([^()]+\)$/
      # is an element --> varname == $1
      INTERP._invoke_without_enc('global', $1)
    else
      fail e
    end
  end
=end

  if val
    if val.kind_of?(Hash)
      # assoc-array variable
      self[''] = 0
      self.clear
    end
    #s = '"' + _get_eval_string(val).gsub(/[\[\]$"]/, '\\\\\&') + '"' #"
    #s = '"' + _get_eval_string(val).gsub(/[\[\]$"\\]/, '\\\\\&') + '"' #"
    #INTERP._eval(Kernel.format('global %s; set %s %s', @id, @id, s))
    #INTERP._set_global_var(@id, _toUTF8(_get_eval_string(val)))
    self.value = val
  end
end

Class Method Details

.new(name, *args) ⇒ Object



1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
# File 'lib/tk/variable.rb', line 1529

def self.new(name, *args)
  if name.kind_of?(TkVariable)
    name.value = args[0] unless args.empty?
    return name 
  end

  if v = TkVar_ID_TBL[name]
    v.value = args[0] unless args.empty?
    return v
  end

  super(name, *args)
end

.new_hash(name, *args) ⇒ Object



1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
# File 'lib/tk/variable.rb', line 1543

def self.new_hash(name, *args)
  if name.kind_of?(TkVariable)
    unless name.is_hash?
      fail ArgumentError, "already exist as a scalar variable"
    end
    name.value = args[0] unless args.empty?
    return name 
  end

  if v = TkVar_ID_TBL[name]
    unless v.is_hash?
      fail ArgumentError, "already exist as a scalar variable"
    end
    v.value = args[0] unless args.empty?
    return v
  end

  INTERP._invoke_without_enc('global', name)
  if args.empty? && INTERP._invoke_without_enc('array', 'exist', name) == '0'
    self.new(name, {})  # force creating
  else
    self.new(name, *args)
  end
end