Class: TkMultiListbox

Inherits:
TkListbox
  • Object
show all
Includes:
TkComposite
Defined in:
sample/tkmultilistbox.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::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__, add_kinsoku, bell, bell_on_display, const_missing, current_grabs, cursor_display, default_widget_set, default_widget_set=, 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, 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, toplevel_aliases_on_widget_set, 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



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

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

#bbox(idx) ⇒ Object



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

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

#columns(*indices) ⇒ Object

get listbox widgets



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

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

#delete(*idx) ⇒ Object



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

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

#get(*idx) ⇒ Object



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

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



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

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



273
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
# File 'sample/tkmultilistbox.rb', line 273

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



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

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



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

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



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

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

#selection_clear(first, last = None) ⇒ Object



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

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

#selection_set(first, last = None) ⇒ Object



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

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



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

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



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

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