Class: TkcItem

Inherits:
TkObject show all
Extended by:
Tk, TkItemConfigOptkeys, TkItemFontOptkeys
Includes:
TkcTagAccess
Defined in:
lib/tk/canvas.rb

Constant Summary collapse

CItemTypeName =
nil
CItemTypeToClass =
{}
CItemID_TBL =
TkCore::INTERP.create_table

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

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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TkItemConfigOptkeys

__conv_item_keyonly_opts, itemconfig_hash_kv

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=

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 TkcTagAccess

#&, #-@, #^, #addtag, #bbox, #bind, #bind_append, #bind_remove, #bindinfo, #cget, #configinfo, #configure, #coords, #current_configinfo, #dchars, #dtag, #find, #focus, #gettags, #icursor, #index, #insert, #itemtype, #lower, #move, #raise, #scale, #select_adjust, #select_from, #select_to, #|

Methods included from TkTreatTagFont

#font_configinfo, #font_configure, #font_copy, #kanjifont_configure, #kanjifont_copy, #latinfont_configure, #latinfont_copy

Methods inherited from TkObject

#epath, #event_generate, #method_missing, #path, #tk_send, #tk_send_to_list, #tk_send_to_list_with_enc, #tk_send_to_list_without_enc, #tk_send_to_simplelist, #tk_send_to_simplelist_with_enc, #tk_send_to_simplelist_without_enc, #tk_send_with_enc, #tk_send_without_enc, #to_eval

Methods included from TkBindCore

#bind, #bind_append, #bind_remove, #bindinfo

Methods included from TkConfigMethod

#[], #[]=, #cget, #config_hash_kv, #configinfo, #configure, #configure_cmd, #current_configinfo

Methods included from TkTreatFont

#font_configinfo, #font_configure, #font_copy, #kanjifont_configure, #kanjifont_copy, #latinfont_configure, #latinfont_copy

Methods inherited from TkKernel

new

Constructor Details

#initialize(parent, *args) ⇒ TkcItem

Returns a new instance of TkcItem.



660
661
662
663
664
665
666
667
668
669
670
# File 'lib/tk/canvas.rb', line 660

def initialize(parent, *args)
  #unless parent.kind_of?(TkCanvas)
  #  fail ArgumentError, "expect TkCanvas for 1st argument"
  #end
  @parent = @c = parent
  @path = parent.path

  @id = create_self(*args) # an integer number as 'canvas item id'
  CItemID_TBL[@path] = {} unless CItemID_TBL[@path]
  CItemID_TBL[@path][@id] = self
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class TkObject

Class Method Details

._parse_create_args(args) ⇒ Object



599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
# File 'lib/tk/canvas.rb', line 599

def self._parse_create_args(args)
  fontkeys = {}
  methodkeys = {}
  if args[-1].kind_of? Hash
    keys = _symbolkey2str(args.pop)
    if args.size == 0
      args = keys.delete('coords')
      unless args.kind_of?(Array)
        fail "coords parameter must be given by an Array"
      end
    end

    #['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
    #  fontkeys[key] = keys.delete(key) if keys.key?(key)
    #}
    __item_font_optkeys(nil).each{|key|
      fkey = key.to_s
      fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)

      fkey = "kanji#{key}"
      fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)

      fkey = "latin#{key}"
      fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)

      fkey = "ascii#{key}"
      fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
    }

    __item_methodcall_optkeys(nil).each{|key|
      key = key.to_s
      methodkeys[key] = keys.delete(key) if keys.key?(key)
    }

    __item_ruby2val_optkeys(nil).each{|key, method|
      key = key.to_s
      keys[key] = method.call(keys[key]) if keys.has_key?(key)
    }

    #args = args.flatten.concat(hash_kv(keys))
    args = args.flatten.concat(itemconfig_hash_kv(nil, keys))
  else
    args = args.flatten
  end

  [args, fontkeys]
end

.create(canvas, *args) ⇒ Object



648
649
650
651
652
653
654
655
656
657
# File 'lib/tk/canvas.rb', line 648

def self.create(canvas, *args)
  unless self::CItemTypeName
    fail RuntimeError, "#{self} is an abstract class"
  end
  args, fontkeys = _parse_create_args(args)
  idnum = tk_call_without_enc(canvas.path, 'create', 
                              self::CItemTypeName, *args)
  canvas.itemconfigure(idnum, fontkeys) unless fontkeys.empty?
  idnum.to_i  # 'canvas item id' is an integer number
end

.id2obj(canvas, id) ⇒ Object



592
593
594
595
596
# File 'lib/tk/canvas.rb', line 592

def TkcItem.id2obj(canvas, id)
  cpath = canvas.path
  return id unless CItemID_TBL[cpath]
  CItemID_TBL[cpath][id]? CItemID_TBL[cpath][id]: id
end

.type2class(type) ⇒ Object



588
589
590
# File 'lib/tk/canvas.rb', line 588

def TkcItem.type2class(type)
  CItemTypeToClass[type]
end

Instance Method Details

#deleteObject Also known as: remove, destroy



688
689
690
691
692
# File 'lib/tk/canvas.rb', line 688

def delete
  @c.delete @id
  CItemID_TBL[@path].delete(@id) if CItemID_TBL[@path]
  self
end

#exist?Boolean

Returns:

  • (Boolean)


680
681
682
683
684
685
686
# File 'lib/tk/canvas.rb', line 680

def exist?
  if @c.find_withtag(@id)
    true
  else
    false
  end
end

#idObject



676
677
678
# File 'lib/tk/canvas.rb', line 676

def id
  @id
end