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, Checkbutton, CloneMenu, Fontchooser, JAPANIZED_TK, LIBRARY_PATH, Labelframe, MenuButton, OptionMenuButton, PACKAGE_PATH, Panedwindow, RELEASE_DATE, Radiobutton, 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, 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



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

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

#__destroy_hook__Object



211
212
213
214
215
# File 'lib/tkextlib/blt/tabset.rb', line 211

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



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

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

#delete(first, last = None) ⇒ Object



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
# File 'lib/tkextlib/blt/tabset.rb', line 313

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



329
330
331
332
# File 'lib/tkextlib/blt/tabset.rb', line 329

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

#get_tab(index) ⇒ Object



334
335
336
337
338
339
340
# File 'lib/tkextlib/blt/tabset.rb', line 334

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



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

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



349
350
351
# File 'lib/tkextlib/blt/tabset.rb', line 349

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

#index_name(tab) ⇒ Object



352
353
354
# File 'lib/tkextlib/blt/tabset.rb', line 352

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

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



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

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



360
361
362
363
364
365
366
367
368
369
370
371
# File 'lib/tkextlib/blt/tabset.rb', line 360

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



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

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

#move_after(index, base_idx) ⇒ Object



381
382
383
384
# File 'lib/tkextlib/blt/tabset.rb', line 381

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

#move_before(index, base_idx) ⇒ Object



377
378
379
380
# File 'lib/tkextlib/blt/tabset.rb', line 377

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

#nearest(x, y) ⇒ Object



386
387
388
# File 'lib/tkextlib/blt/tabset.rb', line 386

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



390
391
392
393
# File 'lib/tkextlib/blt/tabset.rb', line 390

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

#perforation_highlight(index, *args) ⇒ Object



394
395
396
397
398
399
400
401
402
403
404
405
# File 'lib/tkextlib/blt/tabset.rb', line 394

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



406
407
408
409
410
411
412
# File 'lib/tkextlib/blt/tabset.rb', line 406

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



418
419
420
421
# File 'lib/tkextlib/blt/tabset.rb', line 418

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

#scan_mark(x, y) ⇒ Object



414
415
416
417
# File 'lib/tkextlib/blt/tabset.rb', line 414

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

#see(index) ⇒ Object



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

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

#select(index) ⇒ Object



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

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

#sizeObject



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

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

#tab_dockallObject



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

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

#tab_ids(pat = None) ⇒ Object



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

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

#tab_names(pat = None) ⇒ Object



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

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



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

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

#tab_pageheightObject



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

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

#tab_pagewidthObject



462
463
464
# File 'lib/tkextlib/blt/tabset.rb', line 462

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

#tab_tearoff(index, parent = None) ⇒ Object



466
467
468
# File 'lib/tkextlib/blt/tabset.rb', line 466

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

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



284
285
286
287
288
289
290
291
292
293
# File 'lib/tkextlib/blt/tabset.rb', line 284

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

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



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

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

#tabbind_remove(tag, context) ⇒ Object



305
306
307
308
# File 'lib/tkextlib/blt/tabset.rb', line 305

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

#tabbindinfo(tag, context = nil) ⇒ Object



309
310
311
# File 'lib/tkextlib/blt/tabset.rb', line 309

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

#tagid(tab) ⇒ Object



260
261
262
263
264
265
266
# File 'lib/tkextlib/blt/tabset.rb', line 260

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

#tagindex(tab) ⇒ Object



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

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

#xscrollcommand(cmd = nil, &block) ⇒ Object Also known as: scrollcommand



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

def xscrollcommand(cmd=nil, &block)
  configure_cmd('scrollcommand', cmd || block)
  self
end

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



476
477
478
479
480
481
482
483
# File 'lib/tkextlib/blt/tabset.rb', line 476

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