2003-08-02 17:39:23 -04:00
#
# menus widget demo (called by 'widget')
#
# toplevel widget
if defined? ( $menu84_demo ) && $menu84_demo
$menu84_demo . destroy
$menu84_demo = nil
end
# demo toplevel widget
$menu84_demo = TkToplevel . new { | w |
title ( " File Selection Dialogs " )
iconname ( " menu84 " )
positionWindow ( w )
}
* ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
* ext/tk/tcltklib.c: avoid error on a shared object.
* ext/tk/extconf.rb: support --with-tcltkversion
* ext/tk/README.tcltklib: add document about --with-tcltkversion
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb, ext/tk/lib/remote-tk.rb:
not work on $SAFE==4
* ext/tk/lib/multi-tk.rb: Object#methods returns Symbols on Ruby1.9.
* ext/tk/lib/tk/timer.rb: add TkTimer#at_end(proc) to register the
procedure which called at end of the timer.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemfont.rb, ext/tk/lib/font.rb:
support __IGNORE_UNKNOWN_CONFIGURE_OPTION__ about font options.
* ext/tk/lib/*: treat __IGNORE_UNKNOWN_CONFIGURE_OPTION__
* ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: bug fix.
* ext/tk/lib/tk/text.rb: typo. call a wrong method.
* ext/tk/lib/tk/itemconfig.rb: ditto.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemconfig.rb,
ext/tk/lib/tk/canvas.rb: support alias names of option keys.
* ext/tk/lib/tk/grid.rb: lack of module-method definitions.
* ext/tk/lib/tk/pack.rb, ext/tk/lib/tk/grid.rb: increase supported
parameter patterns of configure method.
* ext/tk/lib/tk.rb: add TkWindow#grid_anchor, grid_column, grid_row.
* ext/tk/lib/tk/wm.rb: methods of Tk::Wm_for_General module cannot
pass the given block to methods of Tk::Wm module.
* ext/tk/lib/tk/wm.rb: Wm#overrideredirect overwrites arguemnt to
an invalid value.
* ext/tk/lib/tk.rb: fix memory (object) leak bug.
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
* ext/tk/sample/demos-jp/aniwave.rb, ext/tk/sample/demos-en/aniwave.rb:
bug fix.
* ext/tk/lib/tkextlib/blt/component.rb,
ext/tk/lib/tkextlib/tile/tentry.rb,
ext/tk/lib/tkextlib/tile/treeview.rb: ditto.
* ext/tk/lib/tkextlib/tile/tpaned.rb: improve TPaned#add.
* ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
bug fix.
* ext/tk/sample/ttk_wrapper.rb: ditto.
* ext/tk/sample/ttk_wrapper.rb: support "if __FILE__ == $0" idiom.
* ext/tk/sample/tktextio.rb: add binding for 'Ctrl-u' at console mode.
* ext/tk/lib/tkextlib/tile.rb, ext/tk/lib/tkextlib/tile/style.rb,
ext/tk/sample/ttk_wrapper.rb: improve treating and control themes.
add Tk::Tile.themes and Tk::Tile.set_theme(theme).
* ext/tk/lib/tkextlib/tile.rb: lack of autoload definitions.
* ext/tk/lib/tkextlib/tile/tnotebook.rb: cannot use kanji (not UTF-8)
characters for headings.
* ext/tk/lib/tkextlib/tkDND/shape.rb: wrong package name.
* ext/tk/tkutil/tkutil.c: improve handling callback-subst-keys.
Now, support longnam-keys (e.g. '%CTT' on tkdnd-2.0; however, still
not support tkdnd-2.0 on tkextlib), and symbols of parameters (e.g.
:widget=>'%W', :keycode=>'%k', '%x'=>:x, '%X'=>:root_x, and so on;
those are attributes of event object). It means that Ruby/Tk accepts
not only "widget.bind(ev, '%W', '%k', ...){|w, k, ...| ... }", but
also "widget.bind(ev, :widget, :keycode, ...){|w, k, ...| ... }".
It is potentially incompatible, when user passes symbols to the
arguments of the callback block (the block receives the symbols as
strings). I think that is very rare case (probably, used by Ruby/Tk
experts only). When causes such trouble, please give strings instead
of such symbol parameters (e.g. call Symbol#to_s method).
* ext/tk/lib/tk/event.rb, ext/tk/lib/tk/validation.rb,
ext/tk/lib/tkextlib/blt/treeview.rb,
ext/tk/lib/tkextlib/winico/winico.rb: ditto.
* ext/tk/tkutil/tkutil.c: strings are available on subst_tables on
TkUtil::CallbackSubst class (it is useful on Ruby 1.9).
* ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tkextlib/iwidgets/hierarchy.rb,
ext/tk/lib/tkextlib/iwidgets/spinner.rb,
ext/tk/lib/tkextlib/iwidgets/entryfield.rb,
ext/tk/lib/tkextlib/iwidgets/calendar.rb,
ext/tk/lib/tkextlib/blt/dragdrop.rb,
ext/tk/lib/tkextlib/tkDND/tkdnd.rb,
ext/tk/lib/tkextlib/treectrl/tktreectrl.rb,
ext/tk/lib/tkextlib/tktable/tktable.rb: disable code piece became
unnecessary by reason of the changes of ext/tk/tkutil/tkutil.c.
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb: change strategy to define
the constant WITH_ENCODING.
* ext/tk/lib/tk.rb: fix bug on Tk::Encoding.tk_encoding_names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 16:59:10 -04:00
base_frame = TkFrame . new ( $menu84_demo ) . pack ( :fill = > :both , :expand = > true )
2003-08-02 17:39:23 -04:00
begin
windowingsystem = Tk . windowingsystem ( )
rescue
windowingsystem = " "
end
# label
* ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
* ext/tk/tcltklib.c: avoid error on a shared object.
* ext/tk/extconf.rb: support --with-tcltkversion
* ext/tk/README.tcltklib: add document about --with-tcltkversion
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb, ext/tk/lib/remote-tk.rb:
not work on $SAFE==4
* ext/tk/lib/multi-tk.rb: Object#methods returns Symbols on Ruby1.9.
* ext/tk/lib/tk/timer.rb: add TkTimer#at_end(proc) to register the
procedure which called at end of the timer.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemfont.rb, ext/tk/lib/font.rb:
support __IGNORE_UNKNOWN_CONFIGURE_OPTION__ about font options.
* ext/tk/lib/*: treat __IGNORE_UNKNOWN_CONFIGURE_OPTION__
* ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: bug fix.
* ext/tk/lib/tk/text.rb: typo. call a wrong method.
* ext/tk/lib/tk/itemconfig.rb: ditto.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemconfig.rb,
ext/tk/lib/tk/canvas.rb: support alias names of option keys.
* ext/tk/lib/tk/grid.rb: lack of module-method definitions.
* ext/tk/lib/tk/pack.rb, ext/tk/lib/tk/grid.rb: increase supported
parameter patterns of configure method.
* ext/tk/lib/tk.rb: add TkWindow#grid_anchor, grid_column, grid_row.
* ext/tk/lib/tk/wm.rb: methods of Tk::Wm_for_General module cannot
pass the given block to methods of Tk::Wm module.
* ext/tk/lib/tk/wm.rb: Wm#overrideredirect overwrites arguemnt to
an invalid value.
* ext/tk/lib/tk.rb: fix memory (object) leak bug.
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
* ext/tk/sample/demos-jp/aniwave.rb, ext/tk/sample/demos-en/aniwave.rb:
bug fix.
* ext/tk/lib/tkextlib/blt/component.rb,
ext/tk/lib/tkextlib/tile/tentry.rb,
ext/tk/lib/tkextlib/tile/treeview.rb: ditto.
* ext/tk/lib/tkextlib/tile/tpaned.rb: improve TPaned#add.
* ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
bug fix.
* ext/tk/sample/ttk_wrapper.rb: ditto.
* ext/tk/sample/ttk_wrapper.rb: support "if __FILE__ == $0" idiom.
* ext/tk/sample/tktextio.rb: add binding for 'Ctrl-u' at console mode.
* ext/tk/lib/tkextlib/tile.rb, ext/tk/lib/tkextlib/tile/style.rb,
ext/tk/sample/ttk_wrapper.rb: improve treating and control themes.
add Tk::Tile.themes and Tk::Tile.set_theme(theme).
* ext/tk/lib/tkextlib/tile.rb: lack of autoload definitions.
* ext/tk/lib/tkextlib/tile/tnotebook.rb: cannot use kanji (not UTF-8)
characters for headings.
* ext/tk/lib/tkextlib/tkDND/shape.rb: wrong package name.
* ext/tk/tkutil/tkutil.c: improve handling callback-subst-keys.
Now, support longnam-keys (e.g. '%CTT' on tkdnd-2.0; however, still
not support tkdnd-2.0 on tkextlib), and symbols of parameters (e.g.
:widget=>'%W', :keycode=>'%k', '%x'=>:x, '%X'=>:root_x, and so on;
those are attributes of event object). It means that Ruby/Tk accepts
not only "widget.bind(ev, '%W', '%k', ...){|w, k, ...| ... }", but
also "widget.bind(ev, :widget, :keycode, ...){|w, k, ...| ... }".
It is potentially incompatible, when user passes symbols to the
arguments of the callback block (the block receives the symbols as
strings). I think that is very rare case (probably, used by Ruby/Tk
experts only). When causes such trouble, please give strings instead
of such symbol parameters (e.g. call Symbol#to_s method).
* ext/tk/lib/tk/event.rb, ext/tk/lib/tk/validation.rb,
ext/tk/lib/tkextlib/blt/treeview.rb,
ext/tk/lib/tkextlib/winico/winico.rb: ditto.
* ext/tk/tkutil/tkutil.c: strings are available on subst_tables on
TkUtil::CallbackSubst class (it is useful on Ruby 1.9).
* ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tkextlib/iwidgets/hierarchy.rb,
ext/tk/lib/tkextlib/iwidgets/spinner.rb,
ext/tk/lib/tkextlib/iwidgets/entryfield.rb,
ext/tk/lib/tkextlib/iwidgets/calendar.rb,
ext/tk/lib/tkextlib/blt/dragdrop.rb,
ext/tk/lib/tkextlib/tkDND/tkdnd.rb,
ext/tk/lib/tkextlib/treectrl/tktreectrl.rb,
ext/tk/lib/tkextlib/tktable/tktable.rb: disable code piece became
unnecessary by reason of the changes of ext/tk/tkutil/tkutil.c.
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb: change strategy to define
the constant WITH_ENCODING.
* ext/tk/lib/tk.rb: fix bug on Tk::Encoding.tk_encoding_names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 16:59:10 -04:00
TkLabel . new ( base_frame , 'font' = > $font , 'wraplength' = > '4i' , 'justify' = > 'left' ) {
2003-08-02 17:39:23 -04:00
if $tk_platform [ 'platform' ] == 'macintosh' ||
windowingsystem == " classic " || windowingsystem == " aqua "
text ( " This window contains a menubar with cascaded menus. You can invoke entries with an accelerator by typing Command+x, where \" x \" is the character next to the command key symbol. The rightmost menu can be torn off into a palette by dragging outside of its bounds and releasing the mouse. " )
else
text ( " This window contains a menubar with cascaded menus. You can post a menu from the keyboard by typing Alt+x, where \" x \" is the character underlined on the menu. You can then traverse among the menus using the arrow keys. When a menu is posted, you can invoke the current entry by typing space, or you can invoke any entry by typing its underlined character. If a menu entry has an accelerator, you can invoke the entry without posting the menu just by typing the accelerator. The rightmost menu can be torn off into a palette by selecting the first item in the menu. " )
end
} . pack ( 'side' = > 'top' )
menustatus = TkVariable . new ( " " )
* ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
* ext/tk/tcltklib.c: avoid error on a shared object.
* ext/tk/extconf.rb: support --with-tcltkversion
* ext/tk/README.tcltklib: add document about --with-tcltkversion
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb, ext/tk/lib/remote-tk.rb:
not work on $SAFE==4
* ext/tk/lib/multi-tk.rb: Object#methods returns Symbols on Ruby1.9.
* ext/tk/lib/tk/timer.rb: add TkTimer#at_end(proc) to register the
procedure which called at end of the timer.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemfont.rb, ext/tk/lib/font.rb:
support __IGNORE_UNKNOWN_CONFIGURE_OPTION__ about font options.
* ext/tk/lib/*: treat __IGNORE_UNKNOWN_CONFIGURE_OPTION__
* ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: bug fix.
* ext/tk/lib/tk/text.rb: typo. call a wrong method.
* ext/tk/lib/tk/itemconfig.rb: ditto.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemconfig.rb,
ext/tk/lib/tk/canvas.rb: support alias names of option keys.
* ext/tk/lib/tk/grid.rb: lack of module-method definitions.
* ext/tk/lib/tk/pack.rb, ext/tk/lib/tk/grid.rb: increase supported
parameter patterns of configure method.
* ext/tk/lib/tk.rb: add TkWindow#grid_anchor, grid_column, grid_row.
* ext/tk/lib/tk/wm.rb: methods of Tk::Wm_for_General module cannot
pass the given block to methods of Tk::Wm module.
* ext/tk/lib/tk/wm.rb: Wm#overrideredirect overwrites arguemnt to
an invalid value.
* ext/tk/lib/tk.rb: fix memory (object) leak bug.
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
* ext/tk/sample/demos-jp/aniwave.rb, ext/tk/sample/demos-en/aniwave.rb:
bug fix.
* ext/tk/lib/tkextlib/blt/component.rb,
ext/tk/lib/tkextlib/tile/tentry.rb,
ext/tk/lib/tkextlib/tile/treeview.rb: ditto.
* ext/tk/lib/tkextlib/tile/tpaned.rb: improve TPaned#add.
* ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
bug fix.
* ext/tk/sample/ttk_wrapper.rb: ditto.
* ext/tk/sample/ttk_wrapper.rb: support "if __FILE__ == $0" idiom.
* ext/tk/sample/tktextio.rb: add binding for 'Ctrl-u' at console mode.
* ext/tk/lib/tkextlib/tile.rb, ext/tk/lib/tkextlib/tile/style.rb,
ext/tk/sample/ttk_wrapper.rb: improve treating and control themes.
add Tk::Tile.themes and Tk::Tile.set_theme(theme).
* ext/tk/lib/tkextlib/tile.rb: lack of autoload definitions.
* ext/tk/lib/tkextlib/tile/tnotebook.rb: cannot use kanji (not UTF-8)
characters for headings.
* ext/tk/lib/tkextlib/tkDND/shape.rb: wrong package name.
* ext/tk/tkutil/tkutil.c: improve handling callback-subst-keys.
Now, support longnam-keys (e.g. '%CTT' on tkdnd-2.0; however, still
not support tkdnd-2.0 on tkextlib), and symbols of parameters (e.g.
:widget=>'%W', :keycode=>'%k', '%x'=>:x, '%X'=>:root_x, and so on;
those are attributes of event object). It means that Ruby/Tk accepts
not only "widget.bind(ev, '%W', '%k', ...){|w, k, ...| ... }", but
also "widget.bind(ev, :widget, :keycode, ...){|w, k, ...| ... }".
It is potentially incompatible, when user passes symbols to the
arguments of the callback block (the block receives the symbols as
strings). I think that is very rare case (probably, used by Ruby/Tk
experts only). When causes such trouble, please give strings instead
of such symbol parameters (e.g. call Symbol#to_s method).
* ext/tk/lib/tk/event.rb, ext/tk/lib/tk/validation.rb,
ext/tk/lib/tkextlib/blt/treeview.rb,
ext/tk/lib/tkextlib/winico/winico.rb: ditto.
* ext/tk/tkutil/tkutil.c: strings are available on subst_tables on
TkUtil::CallbackSubst class (it is useful on Ruby 1.9).
* ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tkextlib/iwidgets/hierarchy.rb,
ext/tk/lib/tkextlib/iwidgets/spinner.rb,
ext/tk/lib/tkextlib/iwidgets/entryfield.rb,
ext/tk/lib/tkextlib/iwidgets/calendar.rb,
ext/tk/lib/tkextlib/blt/dragdrop.rb,
ext/tk/lib/tkextlib/tkDND/tkdnd.rb,
ext/tk/lib/tkextlib/treectrl/tktreectrl.rb,
ext/tk/lib/tkextlib/tktable/tktable.rb: disable code piece became
unnecessary by reason of the changes of ext/tk/tkutil/tkutil.c.
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb: change strategy to define
the constant WITH_ENCODING.
* ext/tk/lib/tk.rb: fix bug on Tk::Encoding.tk_encoding_names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 16:59:10 -04:00
TkFrame . new ( base_frame ) { | frame |
2003-08-02 17:39:23 -04:00
TkLabel . new ( frame , 'textvariable' = > menustatus , 'relief' = > 'sunken' ,
2004-10-11 00:51:21 -04:00
'bd' = > 1 , 'font' = > [ 'Helvetica' , '10' ] ,
'anchor' = > 'w' ) . pack ( 'side' = > 'left' , 'padx' = > 2 ,
'expand' = > true , 'fill' = > 'both' )
2003-08-02 17:39:23 -04:00
pack ( 'side' = > 'bottom' , 'fill' = > 'x' , 'pady' = > 2 )
}
# frame
* ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
* ext/tk/tcltklib.c: avoid error on a shared object.
* ext/tk/extconf.rb: support --with-tcltkversion
* ext/tk/README.tcltklib: add document about --with-tcltkversion
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb, ext/tk/lib/remote-tk.rb:
not work on $SAFE==4
* ext/tk/lib/multi-tk.rb: Object#methods returns Symbols on Ruby1.9.
* ext/tk/lib/tk/timer.rb: add TkTimer#at_end(proc) to register the
procedure which called at end of the timer.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemfont.rb, ext/tk/lib/font.rb:
support __IGNORE_UNKNOWN_CONFIGURE_OPTION__ about font options.
* ext/tk/lib/*: treat __IGNORE_UNKNOWN_CONFIGURE_OPTION__
* ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb,
ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: bug fix.
* ext/tk/lib/tk/text.rb: typo. call a wrong method.
* ext/tk/lib/tk/itemconfig.rb: ditto.
* ext/tk/lib/tk.rb, ext/tk/lib/tk/itemconfig.rb,
ext/tk/lib/tk/canvas.rb: support alias names of option keys.
* ext/tk/lib/tk/grid.rb: lack of module-method definitions.
* ext/tk/lib/tk/pack.rb, ext/tk/lib/tk/grid.rb: increase supported
parameter patterns of configure method.
* ext/tk/lib/tk.rb: add TkWindow#grid_anchor, grid_column, grid_row.
* ext/tk/lib/tk/wm.rb: methods of Tk::Wm_for_General module cannot
pass the given block to methods of Tk::Wm module.
* ext/tk/lib/tk/wm.rb: Wm#overrideredirect overwrites arguemnt to
an invalid value.
* ext/tk/lib/tk.rb: fix memory (object) leak bug.
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
* ext/tk/sample/demos-jp/aniwave.rb, ext/tk/sample/demos-en/aniwave.rb:
bug fix.
* ext/tk/lib/tkextlib/blt/component.rb,
ext/tk/lib/tkextlib/tile/tentry.rb,
ext/tk/lib/tkextlib/tile/treeview.rb: ditto.
* ext/tk/lib/tkextlib/tile/tpaned.rb: improve TPaned#add.
* ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
bug fix.
* ext/tk/sample/ttk_wrapper.rb: ditto.
* ext/tk/sample/ttk_wrapper.rb: support "if __FILE__ == $0" idiom.
* ext/tk/sample/tktextio.rb: add binding for 'Ctrl-u' at console mode.
* ext/tk/lib/tkextlib/tile.rb, ext/tk/lib/tkextlib/tile/style.rb,
ext/tk/sample/ttk_wrapper.rb: improve treating and control themes.
add Tk::Tile.themes and Tk::Tile.set_theme(theme).
* ext/tk/lib/tkextlib/tile.rb: lack of autoload definitions.
* ext/tk/lib/tkextlib/tile/tnotebook.rb: cannot use kanji (not UTF-8)
characters for headings.
* ext/tk/lib/tkextlib/tkDND/shape.rb: wrong package name.
* ext/tk/tkutil/tkutil.c: improve handling callback-subst-keys.
Now, support longnam-keys (e.g. '%CTT' on tkdnd-2.0; however, still
not support tkdnd-2.0 on tkextlib), and symbols of parameters (e.g.
:widget=>'%W', :keycode=>'%k', '%x'=>:x, '%X'=>:root_x, and so on;
those are attributes of event object). It means that Ruby/Tk accepts
not only "widget.bind(ev, '%W', '%k', ...){|w, k, ...| ... }", but
also "widget.bind(ev, :widget, :keycode, ...){|w, k, ...| ... }".
It is potentially incompatible, when user passes symbols to the
arguments of the callback block (the block receives the symbols as
strings). I think that is very rare case (probably, used by Ruby/Tk
experts only). When causes such trouble, please give strings instead
of such symbol parameters (e.g. call Symbol#to_s method).
* ext/tk/lib/tk/event.rb, ext/tk/lib/tk/validation.rb,
ext/tk/lib/tkextlib/blt/treeview.rb,
ext/tk/lib/tkextlib/winico/winico.rb: ditto.
* ext/tk/tkutil/tkutil.c: strings are available on subst_tables on
TkUtil::CallbackSubst class (it is useful on Ruby 1.9).
* ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tkextlib/iwidgets/hierarchy.rb,
ext/tk/lib/tkextlib/iwidgets/spinner.rb,
ext/tk/lib/tkextlib/iwidgets/entryfield.rb,
ext/tk/lib/tkextlib/iwidgets/calendar.rb,
ext/tk/lib/tkextlib/blt/dragdrop.rb,
ext/tk/lib/tkextlib/tkDND/tkdnd.rb,
ext/tk/lib/tkextlib/treectrl/tktreectrl.rb,
ext/tk/lib/tkextlib/tktable/tktable.rb: disable code piece became
unnecessary by reason of the changes of ext/tk/tkutil/tkutil.c.
* ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb: change strategy to define
the constant WITH_ENCODING.
* ext/tk/lib/tk.rb: fix bug on Tk::Encoding.tk_encoding_names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 16:59:10 -04:00
TkFrame . new ( base_frame ) { | frame |
2003-08-02 17:39:23 -04:00
TkButton . new ( frame ) {
text 'Dismiss'
command proc {
tmppath = $menu84_demo
$menu84_demo = nil
tmppath . destroy
}
} . pack ( 'side' = > 'left' , 'expand' = > 'yes' )
TkButton . new ( frame ) {
text 'Show Code'
command proc { showCode 'menu84' }
} . pack ( 'side' = > 'left' , 'expand' = > 'yes' )
} . pack ( 'side' = > 'bottom' , 'fill' = > 'x' , 'pady' = > '2m' )
# create menu frame
$menu84_frame = TkMenu . new ( $menu84_demo , 'tearoff' = > false )
# menu
TkMenu . new ( $menu84_frame , 'tearoff' = > false ) { | m |
$menu84_frame . add ( 'cascade' , 'label' = > 'File' , 'menu' = > m , 'underline' = > 0 )
add ( 'command' , 'label' = > 'Open...' , 'command' = > proc { fail 'this is just a demo: no action has been defined for the "Open..." entry' } )
add ( 'command' , 'label' = > 'New' , 'command' = > proc { fail 'this is just a demo: no action has been defined for the "New" entry' } )
add ( 'command' , 'label' = > 'Save' , 'command' = > proc { fail 'this is just a demo: no action has been defined for the "Save" entry' } )
add ( 'command' , 'label' = > 'Save As...' , 'command' = > proc { fail 'this is just a demo: no action has been defined for the "Save As..." entry' } )
add ( 'separator' )
add ( 'command' , 'label' = > 'Print Setup...' , 'command' = > proc { fail 'this is just a demo: no action has been defined for the "Print Setup..." entry' } )
add ( 'command' , 'label' = > 'Print...' , 'command' = > proc { fail 'this is just a demo: no action has been defined for the "Print..." entry' } )
add ( 'separator' )
add ( 'command' , 'label' = > 'Dismiss Menus Demo' , 'command' = > proc { $menu84_demo . destroy } )
}
if $tk_platform [ 'platform' ] == 'macintosh' ||
windowingsystem = " classic " || windowingsystem = " aqua "
modifier = 'Command'
elsif $tk_platform [ 'platform' ] == 'windows'
modifier = 'Control'
else
modifier = 'Meta'
end
TkMenu . new ( $menu84_frame , 'tearoff' = > false ) { | m |
$menu84_frame . add ( 'cascade' , 'label' = > 'Basic' , 'menu' = > m , 'underline' = > 0 )
add ( 'command' , 'label' = > 'Long entry that does nothing' )
[ 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' ] . each { | c |
add ( 'command' , 'label' = > " Print letter \" #{ c } \" " ,
2004-10-11 00:51:21 -04:00
'underline' = > 14 , 'accelerator' = > " Meta+ #{ c } " ,
'command' = > proc { print c , " \n " } , 'accelerator' = > " #{ modifier } + #{ c } " )
2003-08-02 17:39:23 -04:00
$menu84_demo . bind ( " #{ modifier } - #{ c . downcase } " , proc { print c , " \n " } )
}
}
TkMenu . new ( $menu84_frame , 'tearoff' = > false ) { | m |
$menu84_frame . add ( 'cascade' , 'label' = > 'Cascades' , 'menu' = > m , 'underline' = > 0 )
add ( 'command' , 'label' = > 'Print hello' ,
'command' = > proc { print " Hello \n " } ,
'accelerator' = > " #{ modifier } +H " , 'underline' = > 6 )
$menu84_demo . bind ( " #{ modifier } -h " , proc { print " Hello \n " } )
add ( 'command' , 'label' = > 'Print goodbye' ,
'command' = > proc { print " Goodbye \n " } ,
'accelerator' = > " #{ modifier } +G " , 'underline' = > 6 )
$menu84_demo . bind ( " #{ modifier } -g " , proc { print " Goodbye \n " } )
TkMenu . new ( m , 'tearoff' = > false ) { | cascade_check |
m . add ( 'cascade' , 'label' = > 'Check buttons' ,
2004-10-11 00:51:21 -04:00
'menu' = > cascade_check , 'underline' = > 0 )
2003-08-02 17:39:23 -04:00
oil = TkVariable . new ( 0 )
add ( 'check' , 'label' = > 'Oil checked' , 'variable' = > oil )
trans = TkVariable . new ( 0 )
add ( 'check' , 'label' = > 'Transmission checked' , 'variable' = > trans )
brakes = TkVariable . new ( 0 )
add ( 'check' , 'label' = > 'Brakes checked' , 'variable' = > brakes )
lights = TkVariable . new ( 0 )
add ( 'check' , 'label' = > 'Lights checked' , 'variable' = > lights )
add ( 'separator' )
add ( 'command' , 'label' = > 'Show current values' ,
2004-10-11 00:51:21 -04:00
'command' = > proc { showVars ( $menu84_demo ,
[ 'oil' , oil ] ,
[ 'trans' , trans ] ,
[ 'brakes' , brakes ] ,
[ 'lights' , lights ] ) } )
2003-08-02 17:39:23 -04:00
invoke 1
invoke 3
}
TkMenu . new ( m , 'tearoff' = > false ) { | cascade_radio |
m . add ( 'cascade' , 'label' = > 'Radio buttons' ,
2004-10-11 00:51:21 -04:00
'menu' = > cascade_radio , 'underline' = > 0 )
2003-08-02 17:39:23 -04:00
pointSize = TkVariable . new
add ( 'radio' , 'label' = > '10 point' , 'variable' = > pointSize , 'value' = > 10 )
add ( 'radio' , 'label' = > '14 point' , 'variable' = > pointSize , 'value' = > 14 )
add ( 'radio' , 'label' = > '18 point' , 'variable' = > pointSize , 'value' = > 18 )
add ( 'radio' , 'label' = > '24 point' , 'variable' = > pointSize , 'value' = > 24 )
add ( 'radio' , 'label' = > '32 point' , 'variable' = > pointSize , 'value' = > 32 )
add ( 'separator' )
style = TkVariable . new
add ( 'radio' , 'label' = > 'Roman' , 'variable' = > style , 'value' = > 'roman' )
add ( 'radio' , 'label' = > 'Bold' , 'variable' = > style , 'value' = > 'bold' )
add ( 'radio' , 'label' = > 'Italic' , 'variable' = > style , 'value' = > 'italic' )
add ( 'separator' )
add ( 'command' , 'label' = > 'Show current values' ,
2004-10-11 00:51:21 -04:00
'command' = > proc { showVars ( $menu84_demo ,
[ 'pointSize' , pointSize ] ,
[ 'style' , style ] ) } )
2003-08-02 17:39:23 -04:00
invoke 1
invoke 7
}
}
TkMenu . new ( $menu84_frame , 'tearoff' = > false ) { | m |
$menu84_frame . add ( 'cascade' , 'label' = > 'Icons' , 'menu' = > m , 'underline' = > 0 )
add ( 'command' , 'hidemargin' = > 1 ,
2004-05-01 12:09:54 -04:00
'bitmap' = > '@' + [ $demo_dir , '..' ,
2004-10-11 00:51:21 -04:00
'images' , 'pattern.xbm' ] . join ( File :: Separator ) ,
2003-08-02 17:39:23 -04:00
'command' = > proc { TkDialog . new ( 'title' = > 'Bitmap Menu Entry' ,
2004-10-11 00:51:21 -04:00
'text' = > 'The menu entry you invoked displays a bitmap rather than a text string. Other than this, it is just like any other menu entry.' ,
'bitmap' = > '' , 'default' = > 0 ,
'buttons' = > 'Dismiss' ) } )
2003-08-02 17:39:23 -04:00
[ 'info' , 'questhead' , 'error' ] . each { | icon |
add ( 'command' , 'bitmap' = > icon , 'hidemargin' = > 1 ,
2004-10-11 00:51:21 -04:00
'command' = > proc { print " You invoked the #{ icon } bitmap \n " } )
2003-08-02 17:39:23 -04:00
}
entryconfigure ( 2 , :columnbreak = > true )
}
TkMenu . new ( $menu84_frame , 'tearoff' = > false ) { | m |
$menu84_frame . add ( 'cascade' , 'label' = > 'More' , 'menu' = > m , 'underline' = > 0 )
[ 'An entry' , 'Another entry' , 'Does nothing' , 'Does almost nothing' ,
'Make life meaningful' ] . each { | i |
add ( 'command' , 'label' = > i ,
2004-10-11 00:51:21 -04:00
'command' = > proc { print " You invoked \" #{ i } \" \n " } )
2003-08-02 17:39:23 -04:00
}
m . entryconfigure ( 'Does almost nothing' ,
2004-10-11 00:51:21 -04:00
'bitmap' = > 'questhead' , 'compound' = > 'left' ,
'command' = > proc {
TkDialog . new ( 'title' = > 'Compound Menu Entry' ,
'message' = > 'The menu entry you invoked' +
'displays both a bitmap and ' +
'a text string. Other than ' +
'this, it isjust like any ' +
'other menu entry.' ,
'buttons' = > [ 'OK' ] , 'bitmap' = > '' )
} )
2003-08-02 17:39:23 -04:00
}
TkMenu . new ( $menu84_frame ) { | m |
$menu84_frame . add ( 'cascade' , 'label' = > 'Colors' , 'menu' = > m , 'underline' = > 0 )
[ 'red' , 'orange' , 'yellow' , 'green' , 'blue' ] . each { | c |
add ( 'command' , 'label' = > c , 'background' = > c ,
2004-10-11 00:51:21 -04:00
'command' = > proc { print " You invoked \" #{ c } \" \n " } )
2003-08-02 17:39:23 -04:00
}
}
$menu84_demo . menu ( $menu84_frame )
TkMenu . bind ( '<MenuSelect>' , proc { | w |
2004-10-11 00:51:21 -04:00
begin
label = w . entrycget ( 'active' , 'label' )
rescue
label = " "
end
menustatus . value = label
Tk . update ( true )
} , '%W' )