Class: TkMenu

Inherits:
TkWindow show all
Extended by:
TkMenuSpec
Includes:
TkMenuEntryConfig, Wm
Defined in:
lib/tk/menu.rb

Constant Summary collapse

TkCommandNames =
['menu'.freeze].freeze
WidgetClassName =
'Menu'.freeze

Constants included from TkUtil

TkUtil::None, TkUtil::RELEASE_DATE

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

Tk::TkDND::Shape::PACKAGE_NAME

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TkItemConfigMethod

#current_itemconfiginfo, #itemcget, #itemconfiginfo, #itemconfigure

Methods included from TkItemConfigOptkeys

#__conv_item_keyonly_opts, #itemconfig_hash_kv

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 TkTreatItemFont

#kanjifont_copy, #kanjitagfont_configure, #latintagfont_configure, #latintagfont_copy, #tagfont_configinfo, #tagfont_configure, #tagfont_copy

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, #initialize, #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, #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, _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, list, num_or_str, number, procedure, simplelist, string, #subst, tk_tcl2ruby, uninstall_cmd, window

Methods included from TkEvent

#install_bind, #install_bind_for_event_class

Methods included from Tk::TkDND::DND

#dnd_bindsource, #dnd_bindsource_info, #dnd_bindtarget, #dnd_bindtarget_info, #dnd_clearsource, #dnd_cleartarget, #dnd_drag, version

Methods included from Tk::TkDND::Shape

package_name, package_patchlevel, package_version, #shape_bounds, #shape_get, #shape_offset, #shape_set, #shape_update, 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

This class inherits a constructor from TkWindow

Dynamic Method Handling

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

Class Method Details

.new_menuspec(menu_spec, parent = nil, tearoff = false, keys = nil) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/tk/menu.rb', line 73

def self.new_menuspec(menu_spec, parent = nil, tearoff = false, keys = nil)
  if parent.kind_of?(Hash)
    keys = _symbolkey2str(parent)
    parent = keys.delete('parent')
    tearoff = keys.delete('tearoff')
  elsif tearoff.kind_of?(Hash)
    keys = _symbolkey2str(tearoff)
    tearoff = keys.delete('tearoff')
  elsif keys
    keys = _symbolkey2str(keys)
  else
    keys = {}
  end

  widgetname = keys.delete('widgetname')
  _create_menu(parent, menu_spec, widgetname, tearoff, keys)
end

Instance Method Details

#activate(index) ⇒ Object



96
97
98
99
# File 'lib/tk/menu.rb', line 96

def activate(index)
  tk_send_without_enc('activate', _get_eval_enc_str(index))
  self
end

#add(type, keys = nil) ⇒ Object



100
101
102
103
# File 'lib/tk/menu.rb', line 100

def add(type, keys=nil)
  tk_send_without_enc('add', type, *hash_kv(keys, true))
  self
end

#add_cascade(keys = nil) ⇒ Object



104
105
106
# File 'lib/tk/menu.rb', line 104

def add_cascade(keys=nil)
  add('cascade', keys)
end

#add_checkbutton(keys = nil) ⇒ Object



107
108
109
# File 'lib/tk/menu.rb', line 107

def add_checkbutton(keys=nil)
  add('checkbutton', keys)
end

#add_command(keys = nil) ⇒ Object



110
111
112
# File 'lib/tk/menu.rb', line 110

def add_command(keys=nil)
  add('command', keys)
end

#add_radiobutton(keys = nil) ⇒ Object



113
114
115
# File 'lib/tk/menu.rb', line 113

def add_radiobutton(keys=nil)
  add('radiobutton', keys)
end

#add_separator(keys = nil) ⇒ Object



116
117
118
# File 'lib/tk/menu.rb', line 116

def add_separator(keys=nil)
  add('separator', keys)
end

#clone_menu(*args) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/tk/menu.rb', line 120

def clone_menu(*args)
  if args[0].kind_of?(TkWindow)
    parent = args.shift
  else
    parent = self
  end

  if args[0].kind_of?(String) || args[0].kind_of?(Symbol) # menu type
    type = args.shift
  else
    type = None # 'normal'
  end

  if args[0].kind_of?(Hash)
    keys = _symbolkey2str(args.shift)
  else
    keys = {}
  end

  parent = keys.delete('parent') if keys.has_key?('parent')
  type = keys.delete('type') if keys.has_key?('type')

  if keys.empty?
    TkMenuClone.new(self, parent, type)
  else
    TkMenuClone.new(self, parent, type, keys)
  end
end

#delete(first, last = nil) ⇒ Object



161
162
163
164
165
166
167
168
169
# File 'lib/tk/menu.rb', line 161

def delete(first, last=nil)
  if last
    tk_send_without_enc('delete', _get_eval_enc_str(first), 
                        _get_eval_enc_str(last))
  else
    tk_send_without_enc('delete', _get_eval_enc_str(first))
  end
  self
end

#index(idx) ⇒ Object



149
150
151
152
# File 'lib/tk/menu.rb', line 149

def index(idx)
  ret = tk_send_without_enc('index', _get_eval_enc_str(idx))
  (ret == 'none')? nil: number(ret)
end

#insert(index, type, keys = nil) ⇒ Object



156
157
158
159
160
# File 'lib/tk/menu.rb', line 156

def insert(index, type, keys=nil)
  tk_send_without_enc('insert', _get_eval_enc_str(index), 
                      type, *hash_kv(keys, true))
  self
end

#invoke(index) ⇒ Object



153
154
155
# File 'lib/tk/menu.rb', line 153

def invoke(index)
  _fromUTF8(tk_send_without_enc('invoke', _get_eval_enc_str(index)))
end


198
199
200
# File 'lib/tk/menu.rb', line 198

def menutype(index)
  tk_send_without_enc('type', _get_eval_enc_str(index))
end


170
171
172
173
174
175
176
177
178
# File 'lib/tk/menu.rb', line 170

def popup(x, y, index=nil)
  if index
    tk_call_without_enc('tk_popup', path, x, y, 
                        _get_eval_enc_str(index))
  else
    tk_call_without_enc('tk_popup', path, x, y)
  end
  self
end

#post(x, y) ⇒ Object



179
180
181
# File 'lib/tk/menu.rb', line 179

def post(x, y)
  _fromUTF8(tk_send_without_enc('post', x, y))
end

#postcascade(index) ⇒ Object



182
183
184
185
# File 'lib/tk/menu.rb', line 182

def postcascade(index)
  tk_send_without_enc('postcascade', _get_eval_enc_str(index))
  self
end

#postcommand(cmd = Proc.new) ⇒ Object



186
187
188
189
# File 'lib/tk/menu.rb', line 186

def postcommand(cmd=Proc.new)
  configure_cmd 'postcommand', cmd
  self
end

#set_focusObject



190
191
192
193
# File 'lib/tk/menu.rb', line 190

def set_focus
  tk_call_without_enc('tk_menuSetFocus', path)
  self
end

#tagid(id) ⇒ Object



91
92
93
94
# File 'lib/tk/menu.rb', line 91

def tagid(id)
  #id.to_s
  _get_eval_string(id)
end

#tearoffcommand(cmd = Proc.new) ⇒ Object



194
195
196
197
# File 'lib/tk/menu.rb', line 194

def tearoffcommand(cmd=Proc.new)
  configure_cmd 'tearoffcommand', cmd
  self
end

#unpostObject



201
202
203
204
# File 'lib/tk/menu.rb', line 201

def unpost
  tk_send_without_enc('unpost')
  self
end

#yposition(index) ⇒ Object



205
206
207
# File 'lib/tk/menu.rb', line 205

def yposition(index)
  number(tk_send_without_enc('yposition', _get_eval_enc_str(index)))
end