Class: TkMultiListbox

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



227
228
229
# File 'sample/tkmultilistbox.rb', line 227

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

#bbox(idx) ⇒ Object



231
232
233
# File 'sample/tkmultilistbox.rb', line 231

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

#columns(*indices) ⇒ Object

get listbox widgets



223
224
225
# File 'sample/tkmultilistbox.rb', line 223

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

#delete(*idx) ⇒ Object



235
236
237
# File 'sample/tkmultilistbox.rb', line 235

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

#get(*idx) ⇒ Object



239
240
241
242
243
244
245
246
247
248
249
250
# File 'sample/tkmultilistbox.rb', line 239

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



265
266
267
268
269
270
271
272
# File 'sample/tkmultilistbox.rb', line 265

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

#insert(idx, *lines) ⇒ Object



274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# File 'sample/tkmultilistbox.rb', line 274

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

#mode(sel_mode) ⇒ Object

set ‘mode’ option of listboxes



192
193
194
195
196
197
198
199
# File 'sample/tkmultilistbox.rb', line 192

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

#scrollbarwidth(width) ⇒ Object

set scrollbar width



202
203
204
205
206
# File 'sample/tkmultilistbox.rb', line 202

def scrollbarwidth(width)
  @v_scroll['width'] = width
  @hscr_list.each{|hscr| hscr['width'] = width}
  @f_hscr['height'] = width + 2 * @v_scroll.cget('borderwidth')
end

#selection_anchor(index) ⇒ Object



311
312
313
# File 'sample/tkmultilistbox.rb', line 311

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

#selection_clear(first, last = None) ⇒ Object



315
316
317
# File 'sample/tkmultilistbox.rb', line 315

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

#selection_set(first, last = None) ⇒ Object



319
320
321
# File 'sample/tkmultilistbox.rb', line 319

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

#titleconfig(font, fg, bg) ⇒ Object

set options of titles



209
210
211
212
213
214
215
# File 'sample/tkmultilistbox.rb', line 209

def titleconfig(font, fg, bg)
  keys = {}
  keys['font'] = font if font
  keys['foreground'] = fg if fg
  keys['background'] = bg if bg
  @title_list.each{|label| label.configure(keys)}
end

#titlelabels(*indices) ⇒ Object

get label widgets of listbox titles



218
219
220
# File 'sample/tkmultilistbox.rb', line 218

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