Class: TkMultiListFrame

Inherits:
TkListbox show all
Includes:
TkComposite
Defined in:
sample/tkmultilistframe.rb

Constant Summary

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

Constants included from TkUtil

TkUtil::None, TkUtil::RELEASE_DATE

Constants inherited from TkListbox

TkListbox::TkCommandNames, TkListbox::WidgetClassName

Constants inherited from TkTextWin

TkTextWin::TkCommandNames

Constants inherited from TkWindow

TkWindow::TkCommandNames, TkWindow::WidgetClassName

Constants included from TkWinfo

TkWinfo::TkCommandNames

Constants included from Tk::TkDND::Shape

Tk::TkDND::Shape::PACKAGE_NAME

Instance Method Summary collapse

Methods included from TkComposite

#cget, #configinfo, #configure, #database_class, #database_classname, #delegate, #delegate_alias, #epath, #initialize, #option_methods

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 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 inherited from TkListbox

#clear, #curselection, #index, #nearest, #selection_includes, #size, #tagid, #value, #value=

Methods included from TkItemConfigMethod

#current_itemconfiginfo, #itemcget, #itemconfiginfo, #itemconfigure, #tagid

Methods included from TkItemConfigOptkeys

#__conv_item_keyonly_opts, #itemconfig_hash_kv

Methods included from TkTreatItemFont

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

Methods inherited from TkTextWin

#scan_dragto, #scan_mark, #see

Methods inherited from TkWindow

#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_bbox, #grid_columnconfig, #grid_columnconfiginfo, #grid_config, #grid_forget, #grid_in, #grid_info, #grid_location, #grid_propagate, #grid_remove, #grid_rowconfig, #grid_rowconfiginfo, #grid_size, #grid_slaves, #initialize, #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 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::TkDND::Shape

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

Methods included from Tk::TkDND::DND

#dnd_bindsource, #dnd_bindsource_info, #dnd_bindtarget, #dnd_bindtarget_info, #dnd_clearsource, #dnd_cleartarget, #dnd_drag, 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

#[], #[]=, #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

Dynamic Method Handling

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

Instance Method Details

#activate(idx) ⇒ Object



442
443
444
# File 'sample/tkmultilistframe.rb', line 442

def activate(idx)
  @lbox_list.each{|lbox| lbox.activate(idx)}
end

#bbox(idx) ⇒ Object



446
447
448
# File 'sample/tkmultilistframe.rb', line 446

def bbox(idx)
  @lbox_list.collect{|lbox| lbox.bbox(idx)}
end

#columns(*indices) ⇒ Object

get listbox widgets



438
439
440
# File 'sample/tkmultilistframe.rb', line 438

def columns(*indices)
  @lbox_list[*indices]
end

#delete(*idx) ⇒ Object



450
451
452
# File 'sample/tkmultilistframe.rb', line 450

def delete(*idx)
  @lbox_list.collect{|lbox| lbox.delete(*idx)}
end

#get(*idx) ⇒ Object



454
455
456
457
458
459
460
461
462
463
464
465
# File 'sample/tkmultilistframe.rb', line 454

def get(*idx)
  if idx.size == 1
    @lbox_list.collect{|lbox| lbox.get(*idx)}
  else
    list = @lbox_list.collect{|lbox| lbox.get(*idx)}
    result = []
    list[0].each_with_index{|line, index|
      result << list.collect{|lines| lines[index]}
    }
    result
  end
end

#get_by_hash(*idx) ⇒ Object



480
481
482
483
484
485
486
487
# File 'sample/tkmultilistframe.rb', line 480

def get_by_hash(*idx)
  get_result = get(*idx)
  if idx.size == 1
    _line_array_to_hash(get_result)
  else
    get_result.collect{|line| _line_array_to_hash(line)}
  end
end

#hide_each_hscrObject



340
341
342
343
# File 'sample/tkmultilistframe.rb', line 340

def hide_each_hscr
  @show_each_hscr = false
  @c_hscr.ungrid
end

#hide_win_hscrObject



350
351
352
353
# File 'sample/tkmultilistframe.rb', line 350

def hide_win_hscr
  @show_each_hscr = false
  @h_scroll.ungrid
end

#insert(idx, *lines) ⇒ Object



489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
# File 'sample/tkmultilistframe.rb', line 489

def insert(idx, *lines)
  lbox_ins = []
  (0..@lbox_list.size).each{lbox_ins << []}

  lines.each{|line|
    if line.kind_of? Hash
      array = []
      @name_index.each_pair{|label, indices|
        if indices.size == 1
          array[indices[0]] = line[label]
        else
          if line[label].kind_of? Array
            indices.each_with_index{|index, num| 
              array[index] = line[label][num]
            }
          else
            array[indices[0]] = line[label]
          end
        end
      }
      line = array
    end

    @name_index.each_pair{|label, indices|
      if indices.size == 1
        lbox_ins[indices[0]] << line[indices[0]]
      else
        indices.each{|index| lbox_ins[index] << line[index]}
      end
    }
  }   

  @lbox_list.each_with_index{|lbox, index| 
    lbox.insert(idx, *lbox_ins[index]) if lbox_ins[index]
  }
end

#keep_minsize(bool) ⇒ Object



331
332
333
# File 'sample/tkmultilistframe.rb', line 331

def keep_minsize(bool)
  @keep_minsize = bool
end

#keep_minsize?Boolean

keep_minsize?

Returns:

  • (Boolean)


328
329
330
# File 'sample/tkmultilistframe.rb', line 328

def keep_minsize?
  @keep_minsize
end

#listboxborder(width) ⇒ Object

set listbox borders



374
375
376
377
378
# File 'sample/tkmultilistframe.rb', line 374

def listboxborder(width)
  @lbox_border = width
  @lbox_list.each{|w| w['border'] = @lbox_border}
  self
end

#listboxrelief(relief) ⇒ Object

set listbox relief



381
382
383
384
# File 'sample/tkmultilistframe.rb', line 381

def listboxrelief(relief)
  @lbox_list.each{|w| w['relief'] = relief}
  self
end

#mode(sel_mode) ⇒ Object

set 'mode' option of listboxes



318
319
320
321
322
323
324
325
# File 'sample/tkmultilistframe.rb', line 318

def mode(sel_mode)
  @lbox_list.each{|l| 
    tags = l.bindtags
    tags = tags - [ @lbox_mode[@current_mode] ]
    l.bindtags(tags.unshift(@lbox_mode[sel_mode]))
    @current_mode = sel_mode
  }
end

#scrollbarborder(width) ⇒ Object

set scrollbar border



365
366
367
368
369
370
371
# File 'sample/tkmultilistframe.rb', line 365

def scrollbarborder(width)
  @scrbar_border = width
  @v_scroll['border'] = @scrbar_border
  @h_scroll['border'] = @scrbar_border
  @hscr_list.each{|hscr| hscr['border'] = @scrbar_border}
  self
end

#scrollbarwidth(width) ⇒ Object

set scrollbar width



356
357
358
359
360
361
362
# File 'sample/tkmultilistframe.rb', line 356

def scrollbarwidth(width)
  @scrbar_width = width
  @v_scroll['width'] = @scrbar_width
  @h_scroll['width'] = @scrbar_width
  @hscr_list.each{|hscr| hscr['width'] = @scrbar_width}
  self
end

#selection_anchor(index) ⇒ Object



526
527
528
# File 'sample/tkmultilistframe.rb', line 526

def selection_anchor(index)
  @lbox_list.each{|lbox| lbox.selection_anchor(index)}
end

#selection_clear(first, last = None) ⇒ Object



530
531
532
# File 'sample/tkmultilistframe.rb', line 530

def selection_clear(first, last=None)
  @lbox_list.each{|lbox| lbox.selection_clear(first, last=None)}
end

#selection_set(first, last = None) ⇒ Object



534
535
536
# File 'sample/tkmultilistframe.rb', line 534

def selection_set(first, last=None)
  @lbox_list.each{|lbox| lbox.selection_set(first, last=None)}
end

#show_each_hscrObject

each hscr



336
337
338
339
# File 'sample/tkmultilistframe.rb', line 336

def show_each_hscr
  @show_each_hscr = true
  @c_hscr.grid('row'=>2, 'column'=>0, 'sticky'=>'ew')
end

#show_win_hscrObject

window hscroll



346
347
348
349
# File 'sample/tkmultilistframe.rb', line 346

def show_win_hscr
  @show_win_hscr = true
  @h_scroll.grid('row'=>3, 'column'=>0, 'sticky'=>'ew')
end

#titlebackground(bg) ⇒ Object

set title background color



416
417
418
419
420
# File 'sample/tkmultilistframe.rb', line 416

def titlebackground(bg)
  @f_title_pad['background'] = bg
  @title_list.each{|label| label['background'] = bg}
  self
end

#titleborder(width) ⇒ Object

set title borders



387
388
389
390
391
392
# File 'sample/tkmultilistframe.rb', line 387

def titleborder(width)
  @title_border = width
  @f_title_pad['border'] = @title_border
  @title_list.each{|label| label['border'] = @title_border}
  self
end

#titlecommand(idx, cmd = Proc.new) ⇒ Object

set title cmds



423
424
425
# File 'sample/tkmultilistframe.rb', line 423

def titlecommand(idx, cmd=Proc.new)
  @title_cmd[idx] = cmd
end

#titlefont(font) ⇒ Object

set title font



395
396
397
398
399
400
401
402
403
404
405
406
407
# File 'sample/tkmultilistframe.rb', line 395

def titlefont(font)
  @title_list.each{|label| label['font'] = font}
  title_height = 0
  @title_list.each{|w| 
    h = w.winfo_reqheight
    title_height = h if title_height < h
  }
  @f_title.height title_height
  bbox = @w_title.bbox
  @c_title.height(bbox[3])
  @c_title.scrollregion(bbox)
  self
end

#titleforeground(fg) ⇒ Object

set title foreground color



410
411
412
413
# File 'sample/tkmultilistframe.rb', line 410

def titleforeground(fg)
  @title_list.each{|label| label['foreground'] = fg}
  self
end

#titleinvoke(idx) ⇒ Object

call title cmds



428
429
430
# File 'sample/tkmultilistframe.rb', line 428

def titleinvoke(idx)
  @title_cmd[idx].call if @title_cmd[idx]
end

#titlelabels(*indices) ⇒ Object

get label widgets of listbox titles



433
434
435
# File 'sample/tkmultilistframe.rb', line 433

def titlelabels(*indices)
  @title_list[*indices]
end