Class: Tk::BLT::PlotComponent::Marker

Inherits:
TkObject show all
Extended by:
Tk, OptKeys, TkItemConfigOptkeys, TkItemFontOptkeys
Defined in:
lib/tkextlib/blt/component.rb

Constant Summary collapse

MarkerTypeName =
nil
MarkerTypeToClass =
{}
MarkerID_TBL =
TkCore::INTERP.create_table

Constants included from TkUtil

TkUtil::None, TkUtil::RELEASE_DATE

Constants included from Tk

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

Constants included from Encoding

Encoding::BINARY, Encoding::BINARY_NAME, Encoding::DEFAULT_EXTERNAL_NAME, Encoding::DEFAULT_INTERNAL_NAME, Encoding::ENCODING_TABLE, Encoding::RubyEncoding, Encoding::TkCommandNames, Encoding::UNKNOWN, Encoding::UTF8_NAME

Constants included from TkCore

TkCore::EventFlag, TkCore::INTERP, TkCore::INTERP_MUTEX, TkCore::INTERP_ROOT_CHECK, TkCore::INTERP_THREAD, TkCore::INTERP_THREAD_STATUS, TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD, TkCore::WIDGET_DESTROY_HOOK, TkCore::WITH_ENCODING, TkCore::WITH_RUBY_VM

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_nil, num_or_nil, num_or_str, #num_or_str, number, #number, string, #string, uninstall_cmd, untrust

Methods included from Tk

BinaryString, EncodedString, Grid, Pack, Place, UTF8_String, __create_widget_set__, __disable_toplevel_control__, __import_toplevel_aliases__, __regist_toplevel_aliases__, __remove_toplevel_aliases__, __reset_toplevel_owner__, __set_loaded_toplevel_aliases__, __set_toplevel_aliases__, __toplevel_alias_setup_proc__, add_kinsoku, bell, bell_on_display, const_missing, current_grabs, cursor_display, default_widget_set, default_widget_set=, 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, sleep, 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, toplevel_aliases_on_widget_set, ungrid, unload_tcllibrary, unpack, unplace, update, update, update_idletasks, utf_to_backslash, utf_to_backslash_sequence, wakeup, widget_set_symbols

Methods included from Encoding

#default_encoding=, #encoding=, #encoding_convertfrom, #encoding_convertto, #encoding_dirs, #encoding_dirs=, #encoding_name, #encoding_names, #encoding_obj, #encoding_objs, #encoding_system=, #encoding_system_name, #encoding_system_obj, #force_default_encoding, #force_default_encoding=, #force_default_encoding?, #tk_encoding_names

Methods included from TkCore

#_tk_call_to_list_core, #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, _callback_entry?, _callback_entry_class?, _curr_cmd_id, _fromUTF8, _genobj_for_tkwidget, _next_cmd_id, _toUTF8, array2tk_list, #bind, #bind_all, #bind_append, #bind_append_all, #bind_remove, #bind_remove_all, #bindinfo, #bindinfo_all, bool, image_obj, #install_cmd, install_cmd, list, num_or_nil, num_or_str, number, procedure, simplelist, slice_ary, string, #subst, tk_split_escstr, tk_split_list, tk_split_simplelist, tk_split_sublist, tk_tcl2ruby, uninstall_cmd, #uninstall_cmd, window

Methods included from TkEvent

#install_bind, #install_bind_for_event_class

Methods inherited from TkObject

#destroy, #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

Methods included from TkBindCore

#bind, #bind_append, #bind_remove, #bindinfo

Methods included from TkConfigMethod

#[], #[]=, __IGNORE_UNKNOWN_CONFIGURE_OPTION__, #__check_available_configure_options, __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!, #config_hash_kv, #configure_cmd

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) ⇒ Marker

Returns a new instance of Marker.



1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
# File 'lib/tkextlib/blt/component.rb', line 1307

def initialize(parent, *args)
  @parent = @chart = parent
  @cpath = parent.path

  @path = @id = create_self(*args) # an integer number as 'item id'
  Tk::BLT::PlotComponent::Marker::MarkerID_TBL.mutex.synchronize{
    Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath] ||= {}
    Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath][@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(keys) ⇒ Object



1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
# File 'lib/tkextlib/blt/component.rb', line 1229

def self._parse_create_args(keys)
  fontkeys = {}
  methodkeys = {}
  if keys.kind_of? Hash
    keys = _symbolkey2str(keys)

    __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_optkey_aliases(nil).each{|alias_name, real_name|
      alias_name = alias_name.to_s
      if keys.has_key?(alias_name)
        keys[real_name.to_s] = keys.delete(alias_name)
      end
    }

    __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 = itemconfig_hash_kv(nil, keys)
  else
    args = []
  end

  [args, fontkeys, methodkeys]
end

.create(chart, keys = {}) ⇒ Object



1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
# File 'lib/tkextlib/blt/component.rb', line 1275

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

.create_type(chart, type, keys = {}) ⇒ Object



1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
# File 'lib/tkextlib/blt/component.rb', line 1287

def self.create_type(chart, type, keys={})
  args, fontkeys, methodkeys = _parse_create_args(keys)
  idnum = tk_call_without_enc(chart.path, 'marker', 'create',
                              type, *args)
  chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
  chart.marker_configure(idnum, methodkeys) unless methodkeys.empty?
  id = idnum.to_i  # 'item id' is an integer number
  obj = self.allocate
  obj.instance_eval{
    @parent = @chart = chart
    @cpath = chart.path
    @id = id
    Tk::BLT::PlotComponent::Marker::MarkerID_TBL.mutex.synchronize{
      Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath] ||= {}
      Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath][@id] = self
    }
  }
  obj
end

.id2obj(chart, id) ⇒ Object



1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
# File 'lib/tkextlib/blt/component.rb', line 1218

def Marker.id2obj(chart, id)
  cpath = chart.path
  MarkerID_TBL.mutex.synchronize{
    if MarkerID_TBL[cpath]
      MarkerID_TBL[cpath][id]? MarkerID_TBL[cpath][id]: id
    else
      id
    end
  }
end

.type2class(type) ⇒ Object



1214
1215
1216
# File 'lib/tkextlib/blt/component.rb', line 1214

def Marker.type2class(type)
  MarkerTypeToClass[type]
end

Instance Method Details

#after(target = None) ⇒ Object



1350
1351
1352
# File 'lib/tkextlib/blt/component.rb', line 1350

def after(target=None)
  @chart.marker_after(@id, target)
end

#before(target = None) ⇒ Object



1354
1355
1356
# File 'lib/tkextlib/blt/component.rb', line 1354

def before(target=None)
  @chart.marker_before(@id, target)
end

#cget(option) ⇒ Object



1333
1334
1335
# File 'lib/tkextlib/blt/component.rb', line 1333

def cget(option)
  @chart.marker_cget(@id, option)
end

#cget_strict(option) ⇒ Object



1336
1337
1338
# File 'lib/tkextlib/blt/component.rb', line 1336

def cget_strict(option)
  @chart.marker_cget_strict(@id, option)
end

#cget_tkstring(option) ⇒ Object



1330
1331
1332
# File 'lib/tkextlib/blt/component.rb', line 1330

def cget_tkstring(option)
  @chart.marker_cget_tkstring(@id, option)
end

#configinfo(key = nil) ⇒ Object



1343
1344
1345
# File 'lib/tkextlib/blt/component.rb', line 1343

def configinfo(key=nil)
  @chart.marker_configinfo(@id, key)
end

#configure(key, value = None) ⇒ Object



1339
1340
1341
1342
# File 'lib/tkextlib/blt/component.rb', line 1339

def configure(key, value=None)
  @chart.marker_configure(@id, key, value)
  self
end

#current_configinfo(key = nil) ⇒ Object



1346
1347
1348
# File 'lib/tkextlib/blt/component.rb', line 1346

def current_configinfo(key=nil)
  @chart.current_marker_configinfo(@id, key)
end

#deleteObject



1358
1359
1360
# File 'lib/tkextlib/blt/component.rb', line 1358

def delete
  @chart.marker_delete(@id)
end

#exist?Boolean

Returns:

  • (Boolean)


1362
1363
1364
# File 'lib/tkextlib/blt/component.rb', line 1362

def exist?
  @chart.marker_exist(@id)
end

#idObject



1322
1323
1324
# File 'lib/tkextlib/blt/component.rb', line 1322

def id
  @id
end

#to_evalObject



1326
1327
1328
# File 'lib/tkextlib/blt/component.rb', line 1326

def to_eval
  @id
end

#typeObject



1366
1367
1368
# File 'lib/tkextlib/blt/component.rb', line 1366

def type
  @chart.marker_type(@id)
end