Class: TkMultiColumnList

Inherits:
TkText
  • Object
show all
Includes:
TkComposite
Defined in:
sample/tkmulticolumnlist.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

#columns(*indices) ⇒ Object

get listbox widgets


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

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

#command(cmd) ⇒ Object

set command


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

def command(cmd)
  @command = cmd
  self
end

#delete(*idx) ⇒ Object


433
434
435
436
437
438
439
440
441
442
# File 'sample/tkmulticolumnlist.rb', line 433

def delete(*idx)
  idx = idx.collect{|i|
    if i.kind_of?(Integer)
      "#{i}.0"
    else
      i.to_s
    end
  }
  @lbox_list.collect{|lbox| lbox.delete(*idx)}
end

#get(idx_s, idx_e = nil) ⇒ Object


444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
# File 'sample/tkmulticolumnlist.rb', line 444

def get(idx_s, idx_e=nil)
  unless idx_e
    if idx_s.kind_of?(Integer)
      idx_s = "#{idx_s}.0"
      idx_e = "#{idx_s} lineend"
    else
      idx_s = idx_s.to_s
      idx_e = "#{idx_s} lineend"
    end
    @lbox_list.collect{|lbox|
      lbox.get(idx_s, idx_e)
    }
  else
    if idx_s.kind_of?(Integer)
      idx_s = "#{idx_s}.0"
    else
      idx_s = idx_s.to_s
    end
    if idx_e.kind_of?(Integer)
      idx_e = "#{idx_e}.end"
    else
      idx_e = "#{idx_e} lineend"
    end
    list = @lbox_list.collect{|lbox| lbox.get(idx_s, idx_e).split(/\n/)}
    result = []
    list[0].each_with_index{|line, index|
      result << list.collect{|lines| lines[index]}
    }
    result
  end
end

#get_by_hash(*idx) ⇒ Object


493
494
495
496
497
498
499
500
# File 'sample/tkmulticolumnlist.rb', line 493

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

#get_selectObject


476
477
478
# File 'sample/tkmulticolumnlist.rb', line 476

def get_select
  get(@lbox_list[0].select_index)
end

#hide_each_hscrObject


325
326
327
328
# File 'sample/tkmulticolumnlist.rb', line 325

def hide_each_hscr
  @show_each_hscr = false
  @c_hscr.ungrid
end

#hide_win_hscrObject


335
336
337
338
# File 'sample/tkmulticolumnlist.rb', line 335

def hide_win_hscr
  @show_each_hscr = false
  @h_scroll.ungrid
end

#insert(idx, *lines) ⇒ Object


502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
# File 'sample/tkmulticolumnlist.rb', line 502

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

  if idx.kind_of?(Integer)
    idx = "#{idx}.0"
  else
    idx = idx.to_s
  end

  if @lbox_list[0].index('1.0 + 1 char') == @lbox_list[0].index('end')
    cr = ""
  else
    cr = "\n"
  end

  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, cr + lbox_ins[index].join("\n")) if lbox_ins[index]
  }
end

#keep_minsize(bool) ⇒ Object


316
317
318
# File 'sample/tkmulticolumnlist.rb', line 316

def keep_minsize(bool)
  @keep_minsize = bool
end

#keep_minsize?Boolean

keep_minsize?

Returns:

  • (Boolean)

313
314
315
# File 'sample/tkmulticolumnlist.rb', line 313

def keep_minsize?
  @keep_minsize
end

#listboxborder(width) ⇒ Object

set listbox borders


365
366
367
368
369
# File 'sample/tkmulticolumnlist.rb', line 365

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

#listboxrelief(relief) ⇒ Object

set listbox relief


372
373
374
375
# File 'sample/tkmulticolumnlist.rb', line 372

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

#scrollbarborder(width) ⇒ Object

set scrollbar border


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

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


347
348
349
350
351
352
353
# File 'sample/tkmulticolumnlist.rb', line 347

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

#select_clear(first, last = None) ⇒ Object


551
552
553
# File 'sample/tkmulticolumnlist.rb', line 551

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

#select_set(first, last = None) ⇒ Object


555
556
557
# File 'sample/tkmulticolumnlist.rb', line 555

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

#show_each_hscrObject

each hscr


321
322
323
324
# File 'sample/tkmulticolumnlist.rb', line 321

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

#show_win_hscrObject

window hscroll


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

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


407
408
409
410
411
# File 'sample/tkmulticolumnlist.rb', line 407

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

#titleborder(width) ⇒ Object

set title borders


378
379
380
381
382
383
# File 'sample/tkmulticolumnlist.rb', line 378

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


414
415
416
# File 'sample/tkmulticolumnlist.rb', line 414

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

#titlefont(font) ⇒ Object

set title font


386
387
388
389
390
391
392
393
394
395
396
397
398
# File 'sample/tkmulticolumnlist.rb', line 386

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


401
402
403
404
# File 'sample/tkmulticolumnlist.rb', line 401

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

#titleinvoke(idx) ⇒ Object

call title cmds


419
420
421
# File 'sample/tkmulticolumnlist.rb', line 419

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

#titlelabels(*indices) ⇒ Object

get label widgets of listbox titles


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

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