Class: TkAlignBox

Inherits:
TkFrame show all
Defined in:
sample/tkalignbox.rb

Constant Summary

Constants inherited from TkFrame

TkFrame::TkCommandNames, TkFrame::WidgetClassName

Constants inherited from TkWindow

TkWindow::TkCommandNames, TkWindow::WidgetClassName

Constants included from TkWinfo

TkWinfo::TkCommandNames

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 included from Tk::TkDND::Shape

Tk::TkDND::Shape::PACKAGE_NAME

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from TkFrame

bind, bind_append, bind_remove, bindinfo, database_class, #database_classname, database_classname

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

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 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

Constructor Details

#initialize(*args) ⇒ TkAlignBox

Returns a new instance of TkAlignBox.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'sample/tkalignbox.rb', line 14

def initialize(*args)
  if self.class == TkAlignBox
    fail RuntimeError, "TkAlignBox is an abstract class"
  end
  @padx = 0
  @pady = 0
  if args[-1].kind_of? Hash
    keys = _symbolkey2str(args.pop)
    @padx = keys.delete('padx') || 0
    @pady = keys.delete('pady') || 0
    args.push(keys)
  end
  super(*args)
  @max_width = 0
  @max_height = 0
  @propagate = true
  @widgets = []
end

Dynamic Method Handling

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

Instance Attribute Details

#propagateObject

Returns the value of attribute propagate



117
118
119
# File 'sample/tkalignbox.rb', line 117

def propagate
  @propagate
end

Instance Method Details

#<<(widget) ⇒ Object



69
70
71
# File 'sample/tkalignbox.rb', line 69

def <<(widget)
  add(widget)
end

#add(*widgets) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'sample/tkalignbox.rb', line 54

def add(*widgets)
  widgets.each{|w|
    unless w.kind_of? TkWindow
      fail RuntimeError, "#{w.inspect} is not a widget instance."
    end
    @widgets.delete(w)
    @widgets << w
    sz = w.winfo_reqwidth
    @max_width = sz if @max_width < sz
    sz = w.winfo_reqheight
    @max_height = sz if @max_height < sz
  }
  align
end

#alignObject



43
44
45
46
47
48
49
50
51
52
# File 'sample/tkalignbox.rb', line 43

def align
  widgets = []
  @widgets.each{|w| widgets << w if w.winfo_exist?}
  @widgets = widgets
  cnt = @widgets.size.to_f
  @widgets.each_with_index{|w, idx| _place_config(w, idx, cnt)}
  @widgets = widgets
  _set_framesize if @propagate
  self
end

#delete(idx) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
# File 'sample/tkalignbox.rb', line 86

def delete(idx)
  ret = @widgets.delete_at(idx)
  @req_size = 0
  @widget.each{|w|
    sz = w.winfo_reqwidth
    @max_width = sz if @max_width < sz
    sz = w.winfo_reqheight
    @max_height = sz if @max_height < sz
  }
  align
  ret
end

#insert(idx, widget) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
# File 'sample/tkalignbox.rb', line 73

def insert(idx, widget)
  unless widget.kind_of? TkWindow
    fail RuntimeError, "#{widget.inspect} is not a widget instance."
  end
  @widgets.delete(widget)
  @widgets[idx,0] = widget
  sz = widget.winfo_reqwidth
  @max_width = sz if @max_width < sz
  sz = widget.winfo_reqheight
  @max_height = sz if @max_height < sz
  align
end

#padx(size = nil) ⇒ Object



99
100
101
102
103
104
105
106
# File 'sample/tkalignbox.rb', line 99

def padx(size = nil)
  if size
    @padx = size
    align
  else
    @padx
  end
end

#pady(size = nil) ⇒ Object



108
109
110
111
112
113
114
115
# File 'sample/tkalignbox.rb', line 108

def pady(size = nil)
  if size
    @pady = size
    align
  else
    @pady
  end
end