Class: TkMultiListFrame

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

Constant Summary

Constants included from Tk

Tk::AUTO_PATH, Tk::Fontchooser, 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::BINARY, Tk::Encoding::BINARY_NAME, Tk::Encoding::DEFAULT_EXTERNAL_NAME, Tk::Encoding::DEFAULT_INTERNAL_NAME, Tk::Encoding::ENCODING_TABLE, Tk::Encoding::RubyEncoding, Tk::Encoding::TkCommandNames, Tk::Encoding::UNKNOWN, Tk::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

Constants included from TkUtil

TkUtil::None, TkUtil::RELEASE_DATE

Instance Method Summary collapse

Methods included from TkComposite

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

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 Tk::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, #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 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

Instance Method Details

#activate(idx) ⇒ Object



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

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

#bbox(idx) ⇒ Object



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

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

#columns(*indices) ⇒ Object

get listbox widgets



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

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

#delete(*idx) ⇒ Object



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

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

#get(*idx) ⇒ Object



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

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



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

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



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

def hide_each_hscr
  @show_each_hscr = false
  @c_hscr.ungrid
end

#hide_win_hscrObject



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

def hide_win_hscr
  @show_each_hscr = false
  @h_scroll.ungrid
end

#insert(idx, *lines) ⇒ Object



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
525
# File 'sample/tkmultilistframe.rb', line 490

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



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

def keep_minsize(bool)
  @keep_minsize = bool
end

#keep_minsize?Boolean

keep_minsize?

Returns:

  • (Boolean)


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

def keep_minsize?
  @keep_minsize
end

#listboxborder(width) ⇒ Object

set listbox borders



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

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

#listboxrelief(relief) ⇒ Object

set listbox relief



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

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

#mode(sel_mode) ⇒ Object

set ‘mode’ option of listboxes



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

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



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

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



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

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



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

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

#selection_clear(first, last = None) ⇒ Object



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

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

#selection_set(first, last = None) ⇒ Object



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

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

#show_each_hscrObject

each hscr



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

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

#show_win_hscrObject

window hscroll



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

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



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

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

#titleborder(width) ⇒ Object

set title borders



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

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



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

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

#titlefont(font) ⇒ Object

set title font



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

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



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

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

#titleinvoke(idx) ⇒ Object

call title cmds



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

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

#titlelabels(*indices) ⇒ Object

get label widgets of listbox titles



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

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