Class: Tk::BLT::Tabset

Inherits:
TkWindow show all
Includes:
XScrollable, TkItemConfigMethod
Defined in:
lib/tkextlib/blt/tabset.rb

Direct Known Subclasses

Tabnotebook

Defined Under Namespace

Classes: NamedTab, Tab

Constant Summary collapse

TkCommandNames =
['::blt::tabset'.freeze].freeze
WidgetClassName =
'Tabset'.freeze

Constants included from TkUtil

TkUtil::None, TkUtil::RELEASE_DATE

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

Constants included from Tk

AUTO_PATH, Fontchooser, 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::UNKNOWN, Encoding::UTF8_NAME

Constants included from TkDND::Shape

TkDND::Shape::PACKAGE_NAME

Instance Method Summary collapse

Methods included from TkItemConfigMethod

__IGNORE_UNKNOWN_CONFIGURE_OPTION__, #__check_available_itemconfigure_options, #__current_itemconfiginfo, __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!, #current_itemconfiginfo, #itemcget, #itemcget_strict, #itemcget_tkstring, #itemconfiginfo, #itemconfigure

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 TkTreatItemFont

#kanjifont_copy, #kanjitagfont_configure, #latintagfont_configure, #latintagfont_copy, #tagfont_configinfo, #tagfont_configure, #tagfont_copy

Methods included from XScrollable

#xscrollbar, #xview_moveto, #xview_scroll

Methods inherited from TkWindow

_widget_inspect_full_=, _widget_inspect_full_?, #bind_class, #bindtags, #bindtags=, #bindtags_shift, #bindtags_unshift, #caret, #colormodel, #command, #cursor_propagate, #cursor_restore, database_class, #database_class, #database_classname, database_classname, #destroy, #eventloop_wait_destroy, #eventloop_wait_visibility, #exist?, #grab, #grab_current, #grab_release, #grab_set, #grab_set_global, #grab_status, #grid, #grid_anchor, #grid_bbox, #grid_column, #grid_columnconfig, #grid_columnconfiginfo, #grid_config, #grid_forget, #grid_in, #grid_info, #grid_location, #grid_propagate, #grid_remove, #grid_row, #grid_rowconfig, #grid_rowconfiginfo, #grid_size, #grid_slaves, #initialize, #inspect, #lower, #pack, #pack_config, #pack_forget, #pack_in, #pack_info, #pack_propagate, #pack_slaves, #place, #place_config, #place_configinfo, #place_forget, #place_in, #place_info, #place_slaves, #raise, #set_focus, #thread_wait_destroy, #thread_wait_visibility, #tktrans_get_image, #tktrans_set_image, to_eval, #wait_destroy, #wait_visibility

Methods included from TkBindCore

#bind, #bind_append, #bind_remove, #bindinfo

Methods included from Tk::Busy

__item_cget_cmd, __item_config_cmd, __item_confinfo_cmd, #busy, #busy_cget, #busy_configinfo, #busy_configure, #busy_current?, #busy_current_configinfo, #busy_forget, #busy_status, current, forget, hold, method_missing, status

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, _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_tcl2ruby, uninstall_cmd, #uninstall_cmd, window

Methods included from TkEvent

#install_bind, #install_bind_for_event_class

Methods included from TkWinfo

appname, atom, atomname, cells, children, classname, colormapfull, containing, depth, exist?, fpixels, geometry, height, id, interps, manager, mapped?, parent, pixels, pointerx, pointerxy, pointery, reqheight, reqwidth, rgb, rootx, rooty, screen, screencells, screendepth, screenheight, screenmmheight, screenmmwidth, screenvisual, screenwidth, server, toplevel, viewable, visual, visualid, visualsavailable, vrootheight, vrootwidth, vrootx, vrooty, widget, width, #winfo_appname, #winfo_atom, #winfo_atomname, #winfo_cells, #winfo_children, #winfo_classname, #winfo_colormapfull, #winfo_containing, #winfo_depth, #winfo_exist?, #winfo_fpixels, #winfo_geometry, #winfo_height, #winfo_id, #winfo_interps, #winfo_manager, #winfo_mapped?, #winfo_parent, #winfo_pixels, #winfo_pointerx, #winfo_pointerxy, #winfo_pointery, #winfo_reqheight, #winfo_reqwidth, #winfo_rgb, #winfo_rootx, #winfo_rooty, #winfo_screen, #winfo_screencells, #winfo_screendepth, #winfo_screenheight, #winfo_screenmmheight, #winfo_screenmmwidth, #winfo_screenvisual, #winfo_screenwidth, #winfo_server, #winfo_toplevel, #winfo_viewable, #winfo_visual, #winfo_visualid, #winfo_visualsavailable, #winfo_vrootheight, #winfo_vrootwidth, #winfo_vrootx, #winfo_vrooty, #winfo_widget, #winfo_width, #winfo_x, #winfo_y, x, y

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__, _replace_toplevel_aliases, add_kinsoku, backup_current_topdef, bell, bell_on_display, const_missing, current_grabs, cursor_display, default_widget_set, default_widget_set=, define_topalias, define_topobj, 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, regist_sym_for_loaded_file, replace_topalias, replace_topobj, #root, set_topalias, 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, topalias_defined?, toplevel_aliases_on_widget_set, topobj_defined?, 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 TkDND::DND

#dnd_bindsource, #dnd_bindsource_info, #dnd_bindtarget, #dnd_bindtarget_info, #dnd_clearsource, #dnd_cleartarget, #dnd_drag, version

Methods included from TkDND::Shape

package_name, package_patchlevel, package_version, #shape_bounds, #shape_get, #shape_offset, #shape_set, #shape_update, version

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

Methods included from TkConfigMethod

#[], #[]=, __IGNORE_UNKNOWN_CONFIGURE_OPTION__, #__check_available_configure_options, __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!, #cget, #cget_strict, #cget_tkstring, #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

This class inherits a constructor from TkWindow

Dynamic Method Handling

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

Instance Method Details

#__boolval_optkeysObject



227
228
229
# File 'lib/tkextlib/blt/tabset.rb', line 227

def __boolval_optkeys
  super() << 'samewidth' << 'tearoff'
end

#__destroy_hook__Object



219
220
221
222
223
# File 'lib/tkextlib/blt/tabset.rb', line 219

def __destroy_hook__
  Tk::BLT::Tabset::Tab::TabID_TBL.mutex.synchronize{
    Tk::BLT::Tabset::Tab::TabID_TBL.delete(@path)
  }
end

#activate(index) ⇒ Object Also known as: highlight



286
287
288
289
# File 'lib/tkextlib/blt/tabset.rb', line 286

def activate(index)
  tk_send('activate', tagindex(index))
  self
end

#delete(first, last = None) ⇒ Object



328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'lib/tkextlib/blt/tabset.rb', line 328

def delete(first, last=None)
  tk_send('delete', tagindex(first), tagindex(last))
  if first.kind_of?(Tk::BLT::Tabset::Tab)
    TabID_TBL.mutex.synchronize{
      TabID_TBL[@path].delete(first.id)
    }
  end
  # middle tabs of the range are unknown
  if last.kind_of?(Tk::BLT::Tabset::Tab)
    TabID_TBL.mutex.synchronize{
      TabID_TBL[@path].delete(last.id)
    }
  end
  self
end

#focus(index) ⇒ Object



344
345
346
347
# File 'lib/tkextlib/blt/tabset.rb', line 344

def focus(index)
  tk_send('focus', tagindex(index))
  self
end

#get_tab(index) ⇒ Object



349
350
351
352
353
354
355
# File 'lib/tkextlib/blt/tabset.rb', line 349

def get_tab(index)
  if (idx = tk_send_without_enc('get', tagindex(index))).empty?
    nil
  else
    Tk::BLT::Tabset::Tab.id2obj(self, idx)
  end
end

#get_tabobj(index) ⇒ Object



356
357
358
359
360
361
362
# File 'lib/tkextlib/blt/tabset.rb', line 356

def get_tabobj(index)
  if (idx = tk_send_without_enc('get', tagindex(index))).empty?
    nil
  else
   Tk::BLT::Tabset::Tab.new(self, nil, name, {})
  end
end

#index(str) ⇒ Object



364
365
366
# File 'lib/tkextlib/blt/tabset.rb', line 364

def index(str)
  num_or_str(tk_send('index', str))
end

#index_name(tab) ⇒ Object



367
368
369
# File 'lib/tkextlib/blt/tabset.rb', line 367

def index_name(tab)
  num_or_str(tk_send('index', '-name', tagid(tab)))
end

#insert(pos, tab, keys = {}) ⇒ Object



371
372
373
374
# File 'lib/tkextlib/blt/tabset.rb', line 371

def insert(pos, tab, keys={})
  pos = 'end' if pos.nil?
  Tk::BLT::Tabset::Tab.new(self, tagindex(pos), tagid(tab), keys)
end

#insert_tabs(pos, *tabs) ⇒ Object



375
376
377
378
379
380
381
382
383
384
385
386
# File 'lib/tkextlib/blt/tabset.rb', line 375

def insert_tabs(pos, *tabs)
  pos = 'end' if pos.nil?
  if tabs[-1].kind_of?(Hash)
    keys = tabs.pop
  else
    keys = {}
  end
  fail ArgumentError, 'no tabs is given' if tabs.empty?
  tabs.map!{|tab| tagid(tab)}
  tk_send('insert', tagindex(pos), *(tabs + [keys]))
  tabs.collect{|tab| Tk::BLT::Tabset::Tab.new(self, nil, tagid(tab))}
end

#invoke(index) ⇒ Object



388
389
390
# File 'lib/tkextlib/blt/tabset.rb', line 388

def invoke(index)
  tk_send('invoke', tagindex(index))
end

#move_after(index, base_idx) ⇒ Object



396
397
398
399
# File 'lib/tkextlib/blt/tabset.rb', line 396

def move_after(index, base_idx)
  tk_send('move', tagindex(index), 'after', tagindex(base_idx))
  self
end

#move_before(index, base_idx) ⇒ Object



392
393
394
395
# File 'lib/tkextlib/blt/tabset.rb', line 392

def move_before(index, base_idx)
  tk_send('move', tagindex(index), 'before', tagindex(base_idx))
  self
end

#nearest(x, y) ⇒ Object



401
402
403
# File 'lib/tkextlib/blt/tabset.rb', line 401

def nearest(x, y)
  Tk::BLT::Tabset::Tab.id2obj(self, num_or_str(tk_send_without_enc('nearest', x, y)))
end

#perforation_activate(mode) ⇒ Object



405
406
407
408
# File 'lib/tkextlib/blt/tabset.rb', line 405

def perforation_activate(mode)
  tk_send('perforation', 'activate', mode)
  self
end

#perforation_highlight(index, *args) ⇒ Object



409
410
411
412
413
414
415
416
417
418
419
420
# File 'lib/tkextlib/blt/tabset.rb', line 409

def perforation_highlight(index, *args)
  if args.empty?
    # index --> mode
    tk_send('perforation', 'highlight', index)
  elsif args.size == 1
    # args[0] --> mode
    tk_send('perforation', 'highlight', tagindex(index), args[0])
  else # Error: call to get Tcl's error message
    tk_send('perforation', 'highlight', tagindex(index), *args)
  end
  self
end

#perforation_invoke(index = nil) ⇒ Object



421
422
423
424
425
426
427
# File 'lib/tkextlib/blt/tabset.rb', line 421

def perforation_invoke(index=nil)
  if index
    tk_send('perforation', 'invoke', tagindex(index))
  else
    tk_send('perforation', 'invoke')
  end
end

#scan_dragto(x, y) ⇒ Object



433
434
435
436
# File 'lib/tkextlib/blt/tabset.rb', line 433

def scan_dragto(x, y)
  tk_send_without_enc('scan', 'dragto', x, y)
  self
end

#scan_mark(x, y) ⇒ Object



429
430
431
432
# File 'lib/tkextlib/blt/tabset.rb', line 429

def scan_mark(x, y)
  tk_send_without_enc('scan', 'mark', x, y)
  self
end

#see(index) ⇒ Object



438
439
440
441
# File 'lib/tkextlib/blt/tabset.rb', line 438

def see(index)
  tk_send('see', tagindex(index))
  self
end

#select(index) ⇒ Object



447
448
449
450
# File 'lib/tkextlib/blt/tabset.rb', line 447

def select(index)
  tk_send('select', tagindex(index))
  self
end

#sizeObject



443
444
445
# File 'lib/tkextlib/blt/tabset.rb', line 443

def size()
  number(tk_send_without_enc('size'))
end

#tab_dockallObject



452
453
454
455
# File 'lib/tkextlib/blt/tabset.rb', line 452

def tab_dockall
  tk_send('tab', 'dockall')
  self
end

#tab_ids(pat = None) ⇒ Object



469
470
471
# File 'lib/tkextlib/blt/tabset.rb', line 469

def tab_ids(pat=None)
  simplelist(tk_send('tab', 'names', pat))
end

#tab_names(pat = None) ⇒ Object



457
458
459
460
461
# File 'lib/tkextlib/blt/tabset.rb', line 457

def tab_names(pat=None)
  simplelist(tk_send('tab', 'names', pat)).collect{|name|
    Tk::BLT::Tabset::Tab.id2obj(self, name)
  }
end

#tab_objs(pat = None) ⇒ Object



463
464
465
466
467
# File 'lib/tkextlib/blt/tabset.rb', line 463

def tab_objs(pat=None)
  simplelist(tk_send('tab', 'names', pat)).collect{|name|
    Tk::BLT::Tabset::Tab.new(self, nil, name, {})
  }
end

#tab_pageheightObject



473
474
475
# File 'lib/tkextlib/blt/tabset.rb', line 473

def tab_pageheight
  number(tk_send('tab', 'pageheight'))
end

#tab_pagewidthObject



477
478
479
# File 'lib/tkextlib/blt/tabset.rb', line 477

def tab_pagewidth
  number(tk_send('tab', 'pagewidth'))
end

#tab_tearoff(index, parent = None) ⇒ Object



481
482
483
# File 'lib/tkextlib/blt/tabset.rb', line 481

def tab_tearoff(index, parent=None)
  window(tk_send('tab', 'tearoff', tagindex(index), parent))
end

#tabbind(tag, context, *args) ⇒ Object

def tabbind(tag, context, cmd=Proc.new, *args)

_bind([path, "bind", tagid(tag)], context, cmd, *args)
self

end



296
297
298
299
300
301
302
303
304
305
# File 'lib/tkextlib/blt/tabset.rb', line 296

def tabbind(tag, context, *args)
  # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
  if TkComm._callback_entry?(args[0]) || !block_given?
    cmd = args.shift
  else
    cmd = Proc.new
  end
  _bind([path, "bind", tagid(tag)], context, cmd, *args)
  self
end

#tabbind_append(tag, context, *args) ⇒ Object

def tabbind_append(tag, context, cmd=Proc.new, *args)

_bind_append([path, "bind", tagid(tag)], context, cmd, *args)
self

end



310
311
312
313
314
315
316
317
318
319
# File 'lib/tkextlib/blt/tabset.rb', line 310

def tabbind_append(tag, context, *args)
  # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
  if TkComm._callback_entry?(args[0]) || !block_given?
    cmd = args.shift
  else
    cmd = Proc.new
  end
  _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
  self
end

#tabbind_remove(tag, context) ⇒ Object



320
321
322
323
# File 'lib/tkextlib/blt/tabset.rb', line 320

def tabbind_remove(tag, context)
  _bind_remove([path, "bind", tagid(tag)], context)
  self
end

#tabbindinfo(tag, context = nil) ⇒ Object



324
325
326
# File 'lib/tkextlib/blt/tabset.rb', line 324

def tabbindinfo(tag, context=nil)
  _bindinfo([path, "bind", tagid(tag)], context)
end

#tagid(tab) ⇒ Object



268
269
270
271
272
273
274
# File 'lib/tkextlib/blt/tabset.rb', line 268

def tagid(tab)
  if tab.kind_of?(Tk::BLT::Tabset::Tab)
    tab.id
  else
    tab
  end
end

#tagindex(tab) ⇒ Object



276
277
278
279
280
281
282
# File 'lib/tkextlib/blt/tabset.rb', line 276

def tagindex(tab)
  if tab.kind_of?(Tk::BLT::Tabset::Tab)
    tab.index
  else
    tab
  end
end

#xscrollcommand(cmd = Proc.new) ⇒ Object Also known as: scrollcommand



485
486
487
488
# File 'lib/tkextlib/blt/tabset.rb', line 485

def xscrollcommand(cmd=Proc.new)
  configure_cmd 'scrollcommand', cmd
  self
end

#xview(*index) ⇒ Object Also known as: view



491
492
493
494
495
496
497
498
# File 'lib/tkextlib/blt/tabset.rb', line 491

def xview(*index)
  if index.empty?
    list(tk_send_without_enc('view'))
  else
    tk_send_without_enc('view', *index)
    self
  end
end