Class: Tk::Toplevel

Inherits:
TkWindow show all
Includes:
Wm, TkMenuSpec
Defined in:
ext/lib/tk/toplevel.rb,
ext/lib/tkextlib/tktrans/tktrans.rb

Direct Known Subclasses

BLT::Tile::Toplevel

Constant Summary collapse

TkCommandNames =
['toplevel'.freeze].freeze
WidgetClassName =
'Toplevel'.freeze

Constants included from Wm

Wm::TOPLEVEL_METHODCALL_OPTKEYS

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

Constants included from Tk

AUTO_PATH, Checkbutton, CloneMenu, JAPANIZED_TK, LIBRARY_PATH, Labelframe, MenuButton, OptionMenuButton, PACKAGE_PATH, Panedwindow, RELEASE_DATE, Radiobutton, TCL_LIBRARY_PATH, TCL_MAJOR_VERSION, TCL_MINOR_VERSION, TCL_PACKAGE_PATH, TCL_PATCHLEVEL, TCL_PRECISION, TCL_VERSION, TK_MAJOR_VERSION, TK_MINOR_VERSION, TK_PATCHLEVEL, TK_VERSION, Tkextlib_RELEASE_DATE, TreeCtrl_Widget, X_Scrollable, Y_Scrollable

Constants included from Encoding

Encoding::BINARY, Encoding::BINARY_NAME, Encoding::DEFAULT_EXTERNAL_NAME, Encoding::DEFAULT_INTERNAL_NAME, Encoding::ENCODING_TABLE, Encoding::RubyEncoding, Encoding::UNKNOWN, Encoding::UTF8_NAME

Constants included from Tk::TkDND::Shape

Tk::TkDND::Shape::PACKAGE_NAME

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Wm

aspect, #aspect, attributes, #attributes, client, #client, colormapwindows, #colormapwindows, command, #deiconify, deiconify, #focusmodel, focusmodel, forget, #frame, frame, #geometry, geometry, grid, #group, group, #iconbitmap, iconbitmap, #iconify, iconify, iconmask, #iconmask, #iconname, iconname, iconphoto, #iconphoto, #iconphoto_default, iconphoto_default, iconposition, #iconposition, #iconwindow, iconwindow, manage, #maxsize, maxsize, #minsize, minsize, overrideredirect, #overrideredirect, #positionfrom, positionfrom, protocol, #protocol, protocols, #protocols, #resizable, resizable, sizefrom, #sizefrom, stackorder, #stackorder, stackorder_is_above, stackorder_is_below, stackorder_isabove, #stackorder_isabove, #stackorder_isbelow, stackorder_isbelow, #state, state, #title, title, #transient, transient, withdraw, #withdraw, #wm_command, #wm_forget, #wm_grid, #wm_manage

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_str, number, procedure, simplelist, string, #subst, tk_tcl2ruby, uninstall_cmd, #uninstall_cmd, window

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 TkEvent

#install_bind, #install_bind_for_event_class

Methods inherited from TkWindow

_widget_inspect_full_=, _widget_inspect_full_?, #bind_class, #bindtags, #bindtags=, #bindtags_shift, #bindtags_unshift, #caret, #colormodel, #command, #cursor_propagate, #cursor_restore, #database_class, #database_classname, #destroy, #eventloop_wait_destroy, #eventloop_wait_visibility, #exist?, #grab, #grab_current, #grab_release, #grab_set, #grab_set_global, #grab_status, #grid, #grid_anchor, #grid_bbox, #grid_column, #grid_columnconfig, #grid_columnconfiginfo, #grid_config, #grid_forget, #grid_in, #grid_info, #grid_location, #grid_propagate, #grid_remove, #grid_row, #grid_rowconfig, #grid_rowconfiginfo, #grid_size, #grid_slaves, #inspect, #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, 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, #Grid, #Pack, #Place, UTF8_String, __set_toplevel_aliases__, add_kinsoku, bell, bell_on_display, const_missing, current_grabs, cursor_display, default_widget_set, default_widget_set=, delete_kinsoku, destroy, 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, ungrid, unload_tcllibrary, unpack, unplace, #update, update, update_idletasks, utf_to_backslash, utf_to_backslash_sequence, wakeup

Methods included from 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 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

#[], #[]=, __IGNORE_UNKNOWN_CONFIGURE_OPTION__, #__check_available_configure_options, __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!, #cget, #cget_strict, #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(parent = nil, screen = nil, classname = nil, keys = nil) ⇒ Toplevel

Returns a new instance of Toplevel.



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'ext/lib/tk/toplevel.rb', line 98

def initialize(parent=nil, screen=nil, classname=nil, keys=nil)
  my_class_name = nil
  if self.class < WidgetClassNames[WidgetClassName]
    my_class_name = self.class.name
    my_class_name = nil if my_class_name == ''
  end
  if parent.kind_of? Hash
    keys = _symbolkey2str(parent)
    if keys.key?('classname')
      keys['class'] = keys.delete('classname')
    end
    @classname = keys['class']
    @colormap  = keys['colormap']
    @container = keys['container']
    @screen    = keys['screen']
    @use       = keys['use']
    @visual    = keys['visual']
    if !@classname && my_class_name
      keys['class'] = @classname = my_class_name 
    end
    if @classname.kind_of? TkBindTag
      @db_class = @classname
      keys['class'] = @classname = @classname.id
    elsif @classname
      @db_class = TkDatabaseClass.new(@classname)
      keys['class'] = @classname
    else
      @db_class = self.class
      @classname = @db_class::WidgetClassName
    end
    keys, cmds = _wm_command_option_chk(keys)
    super(keys)
    cmds.each{|k,v| 
      if v.kind_of? Array
        self.__send__(k,*v)
      else
        self.__send__(k,v)
      end
    }
    return
  end

  if screen.kind_of? Hash
    keys = screen
  else
    @screen = screen
    if classname.kind_of? Hash
      keys = classname
    else
      @classname = classname
    end
  end
  if keys.kind_of? Hash
    keys = _symbolkey2str(keys)
    if keys.key?('classname')
      keys['class'] = keys.delete('classname')
    end
    @classname = keys['class']  unless @classname
    @colormap  = keys['colormap']
    @container = keys['container']
    @screen    = keys['screen'] unless @screen
    @use       = keys['use']
    @visual    = keys['visual']
  else
    keys = {}
  end
  if !@classname && my_class_name
    keys['class'] = @classname = my_class_name 
  end
  if @classname.kind_of? TkBindTag
    @db_class = @classname
    keys['class'] = @classname = @classname.id
  elsif @classname
    @db_class = TkDatabaseClass.new(@classname)
    keys['class'] = @classname
  else
    @db_class = self.class
    @classname = @db_class::WidgetClassName
  end
  keys, cmds = _wm_command_option_chk(keys)
  super(parent, keys)
  cmds.each{|k,v| 
    if v.kind_of? Array
      self.send(k,*v)
    else
      self.send(k,v)
    end
  }
end

Dynamic Method Handling

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

Class Method Details

.bind(*args, &b) ⇒ Object



231
232
233
234
235
236
237
# File 'ext/lib/tk/toplevel.rb', line 231

def self.bind(*args, &b)
  if self == WidgetClassNames[WidgetClassName] || self.name == ''
    super(*args, &b)
  else
    TkDatabaseClass.new(self.name).bind(*args, &b)
  end
end

.bind_append(*args, &b) ⇒ Object



238
239
240
241
242
243
244
# File 'ext/lib/tk/toplevel.rb', line 238

def self.bind_append(*args, &b)
  if self == WidgetClassNames[WidgetClassName] || self.name == ''
    super(*args, &b)
  else
    TkDatabaseClass.new(self.name).bind_append(*args, &b)
  end
end

.bind_remove(*args) ⇒ Object



245
246
247
248
249
250
251
# File 'ext/lib/tk/toplevel.rb', line 245

def self.bind_remove(*args)
  if self == WidgetClassNames[WidgetClassName] || self.name == ''
    super(*args)
  else
    TkDatabaseClass.new(self.name).bind_remove(*args)
  end
end

.bindinfo(*args) ⇒ Object



252
253
254
255
256
257
258
# File 'ext/lib/tk/toplevel.rb', line 252

def self.bindinfo(*args)
  if self == WidgetClassNames[WidgetClassName] || self.name == ''
    super(*args)
  else
    TkDatabaseClass.new(self.name).bindinfo(*args)
  end
end

.database_classObject



220
221
222
223
224
225
226
# File 'ext/lib/tk/toplevel.rb', line 220

def self.database_class
  if self == WidgetClassNames[WidgetClassName] || self.name == ''
    self
  else
    TkDatabaseClass.new(self.name)
  end
end

.database_classnameObject



227
228
229
# File 'ext/lib/tk/toplevel.rb', line 227

def self.database_classname
  self.database_class.name
end

Instance Method Details

#add_menu(menu_info, tearoff = false, opts = nil) ⇒ Object



201
202
203
204
205
206
207
208
209
210
# File 'ext/lib/tk/toplevel.rb', line 201

def add_menu(menu_info, tearoff=false, opts=nil)
  # See tk/menuspec.rb for menu_info.
  # opts is a hash of default configs for all of cascade menus. 
  # Configs of menu_info can override it. 
  if tearoff.kind_of?(Hash)
    opts = tearoff
    tearoff = false
  end
  _create_menubutton(self, menu_info, tearoff, opts)
end

#add_menubar(menu_spec, tearoff = false, opts = nil) ⇒ Object



212
213
214
215
216
217
218
# File 'ext/lib/tk/toplevel.rb', line 212

def add_menubar(menu_spec, tearoff=false, opts=nil)
  # See tk/menuspec.rb for menu_spec.
  # opts is a hash of default configs for all of cascade menus.
  # Configs of menu_spec can override it. 
  menu_spec.each{|info| add_menu(info, tearoff, opts)}
  self.menu
end

#specific_classObject

def create_self(keys)

if keys and keys != None
  tk_call_without_enc('toplevel', @path, *hash_kv(keys, true))
else
  tk_call_without_enc('toplevel', @path)
end

end private :create_self



197
198
199
# File 'ext/lib/tk/toplevel.rb', line 197

def specific_class
  @classname
end

#tktrans_get_imageObject



61
62
63
# File 'ext/lib/tkextlib/tktrans/tktrans.rb', line 61

def tktrans_get_image()
  tk_send('tktrans::settoplevel', @path)
end

#tktrans_set_image(img) ⇒ Object



57
58
59
60
# File 'ext/lib/tkextlib/tktrans/tktrans.rb', line 57

def tktrans_set_image(img)
  tk_send('tktrans::settoplevel', @path, img)
  self
end