* ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set

switchable between Tk (standard Tcl/Tk widget set) and 
  Ttk (Tile). Initial default widget set is Tk. Now, toplevel 
  widget classes are removed and defined as aliases. 
  For example, "TkButton" is an alias of the "Tk::Button" class. 
  Those aliases are replaced when switching default widget set. 
  "Tk.default_widget_set=" is the method for switching default 
  widget set. "Tk.default_widget_set = :Ttk" defines Ttk (Tile) 
  widget set as default. It means that "TkButton" denotes 
  "Tk::Tile::Button" class. And then, "TkButton.new" creates 
  a Tk::Tile::Button widget. Of course, you can back to use 
  standard Tk widgets as the default widget set by calling 
  "Tk.default_widget_set = :Tk", whenever you want. Based on 
  thie feature, you can use Ttk widget styling engine on your 
  old Ruby/Tk application without modifying its source, if you 
  don'tuse widget options unsupported on Ttk widgets (At first, 
  call "Tk.default_widget_set = :Ttk", and next load and run 
  your application). 
  This is one step for supporting Tcl/Tk8.5 features.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagai 2008-02-27 18:44:31 +00:00
Родитель 4dd9fd71b3
Коммит ee695fb164
88 изменённых файлов: 844 добавлений и 464 удалений

Просмотреть файл

@ -1,3 +1,25 @@
Thu Feb 28 03:03:32 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set
switchable between Tk (standard Tcl/Tk widget set) and
Ttk (Tile). Initial default widget set is Tk. Now, toplevel
widget classes are removed and defined as aliases.
For example, "TkButton" is an alias of the "Tk::Button" class.
Those aliases are replaced when switching default widget set.
"Tk.default_widget_set=" is the method for switching default
widget set. "Tk.default_widget_set = :Ttk" defines Ttk (Tile)
widget set as default. It means that "TkButton" denotes
"Tk::Tile::Button" class. And then, "TkButton.new" creates
a Tk::Tile::Button widget. Of course, you can back to use
standard Tk widgets as the default widget set by calling
"Tk.default_widget_set = :Tk", whenever you want. Based on
thie feature, you can use Ttk widget styling engine on your
old Ruby/Tk application without modifying its source, if you
don'tuse widget options unsupported on Ttk widgets (At first,
call "Tk.default_widget_set = :Ttk", and next load and run
your application).
This is one step for supporting Tcl/Tk8.5 features.
Wed Feb 27 22:55:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
* string.c (rb_str_coderange_scan_restartable): coderange scaning
@ -5079,7 +5101,7 @@ Fri Dec 21 18:40:54 2007 Koichi Sasada <ko1@atdot.net>
* bootstraptest/test_io.rb, test_knownbug.rb: move a fixed test.
Fri Dec 21 17:56:30 2007 <nagai@orca16.orcabay.ddo.jp>
Fri Dec 21 17:56:30 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tcltklib.c: provisional support on Ruby-VM.

Просмотреть файл

@ -935,7 +935,7 @@ module TkComm
def _bindinfo(what, context=nil)
if context
tk_call_without_enc(*what+["<#{tk_event_sequence(context)}>"]) .collect {|cmdline|
tk_call_without_enc(*what+["<#{tk_event_sequence(context)}>"]).each_line.collect {|cmdline|
=begin
if cmdline =~ /^rb_out\S* (c(?:_\d+_)?\d+)\s+(.*)$/
#[Tk_CMDTBL[$1], $2]
@ -4102,6 +4102,14 @@ class TkWindow<TkObject
include TkWinfo
extend TkBindCore
@@WIDGET_INSPECT_FULL = false
def TkWindow._widget_inspect_full_?
@@WIDGET_INSPECT_FULL
end
def TkWindow._widget_inspect_full_=(mode)
@@WIDGET_INSPECT_FULL = (mode && true) || false
end
TkCommandNames = [].freeze
## ==> If TkCommandNames[0] is a string (not a null string),
## assume the string is a Tcl/Tk's create command of the widget class.
@ -4204,8 +4212,12 @@ class TkWindow<TkObject
private :create_self
def inspect
str = super
str[0..(str.index(' '))] << '@path=' << @path.inspect << '>'
if @@WIDGET_INSPECT_FULL
super
else
str = super
str[0..(str.index(' '))] << '@path=' << @path.inspect << '>'
end
end
def exist?
@ -4717,6 +4729,7 @@ class TkWindow<TkObject
bindtags(bindtags().unshift(tag))
end
end
TkWidget = TkWindow
# freeze core modules
#TclTkLib.freeze

Просмотреть файл

@ -1,21 +1,7 @@
#
# autoload
#
major, minor, type, type_name, patchlevel = TclTkLib.get_version
######################################
# depend on version of Tcl/Tk
if major > 8 ||
(major == 8 && minor > 5) ||
(major == 8 && minor == 5 && type >= TclTkLib::RELEASE_TYPE::BETA)
# Tcl/Tk 8.5 beta or later
autoload :Ttk, 'tkextlib/tile'
module Tk
autoload :Tile, 'tkextlib/tile'
end
end
######################################
############################################
# geometry manager
module Tk
autoload :Grid, 'tk/grid'
@ -38,12 +24,7 @@ autoload :TkPlace, 'tk/place'
def TkPlace(*args); TkPlace.configure(*args); end
######################################
# Ttk (Tile) support
require 'tk/ttk_selector'
######################################
############################################
# classes on Tk module
module Tk
autoload :Button, 'tk/button'
@ -66,12 +47,15 @@ module Tk
autoload :Menu, 'tk/menu'
autoload :MenuClone, 'tk/menu'
autoload :CloneMenu, 'tk/menu'
autoload :SystemMenu, 'tk/menu'
autoload :SysMenu_Help, 'tk/menu'
autoload :SysMenu_System, 'tk/menu'
autoload :SysMenu_Apple, 'tk/menu'
autoload :Menubutton, 'tk/menu'
autoload :MenuButton, 'tk/menu'
autoload :OptionMenubutton, 'tk/menu'
autoload :OptionMenBbutton, 'tk/menu'
autoload :Message, 'tk/message'
@ -97,7 +81,7 @@ module Tk
end
######################################
############################################
# sub-module of Tk
module Tk
autoload :Clock, 'tk/clock'
@ -129,184 +113,287 @@ module Tk
end
######################################
# toplevel classes/modules
autoload_list = {
:TkBgError => 'tk/bgerror',
:TkBindTag => 'tk/bindtag',
:TkBindTagAll => 'tk/bindtag',
:TkDatabaseClass => 'tk/bindtag',
############################################
# toplevel classes/modules (fixed)
autoload :TkBgError, 'tk/bgerror'
:TkButton => 'tk/button',
autoload :TkBindTag, 'tk/bindtag'
autoload :TkBindTagAll, 'tk/bindtag'
autoload :TkDatabaseClass, 'tk/bindtag'
:TkCanvas => 'tk/canvas',
autoload :TkConsole, 'tk/console'
:TkcItem => 'tk/canvas',
:TkcArc => 'tk/canvas',
:TkcBitmap => 'tk/canvas',
:TkcImage => 'tk/canvas',
:TkcLine => 'tk/canvas',
:TkcOval => 'tk/canvas',
:TkcPolygon => 'tk/canvas',
:TkcRectangle => 'tk/canvas',
:TkcText => 'tk/canvas',
:TkcWindow => 'tk/canvas',
autoload :TkcItem, 'tk/canvas'
autoload :TkcArc, 'tk/canvas'
autoload :TkcBitmap, 'tk/canvas'
autoload :TkcImage, 'tk/canvas'
autoload :TkcLine, 'tk/canvas'
autoload :TkcOval, 'tk/canvas'
autoload :TkcPolygon, 'tk/canvas'
autoload :TkcRectangle, 'tk/canvas'
autoload :TkcText, 'tk/canvas'
autoload :TkcWindow, 'tk/canvas'
:TkcTagAccess => 'tk/canvastag',
:TkcTag => 'tk/canvastag',
:TkcTagString => 'tk/canvastag',
:TkcNamedTag => 'tk/canvastag',
:TkcTagAll => 'tk/canvastag',
:TkcTagCurrent => 'tk/canvastag',
:TkcTagGroup => 'tk/canvastag',
autoload :TkcTagAccess, 'tk/canvastag'
autoload :TkcTag, 'tk/canvastag'
autoload :TkcTagString, 'tk/canvastag'
autoload :TkcNamedTag, 'tk/canvastag'
autoload :TkcTagAll, 'tk/canvastag'
autoload :TkcTagCurrent, 'tk/canvastag'
autoload :TkcTagGroup, 'tk/canvastag'
:TkCheckButton => 'tk/checkbutton',
:TkCheckbutton => 'tk/checkbutton',
autoload :TkClipboard, 'tk/clipboard'
:TkClipboard => 'tk/clipboard',
autoload :TkComposite, 'tk/composite'
:TkComposite => 'tk/composite',
autoload :TkConsole, 'tk/console'
:TkConsole => 'tk/console',
autoload :TkDialog, 'tk/dialog'
autoload :TkDialog2, 'tk/dialog'
autoload :TkDialogObj, 'tk/dialog'
autoload :TkWarning, 'tk/dialog'
autoload :TkWarning2, 'tk/dialog'
autoload :TkWarningObj, 'tk/dialog'
:TkDialog => 'tk/dialog',
:TkDialog2 => 'tk/dialog',
:TkDialogObj => 'tk/dialog',
:TkWarning => 'tk/dialog',
:TkWarning2 => 'tk/dialog',
:TkWarningObj => 'tk/dialog',
autoload :TkEvent, 'tk/event'
:TkEntry => 'tk/entry',
autoload :TkFont, 'tk/font'
autoload :TkTreatTagFont, 'tk/font'
:TkEvent => 'tk/event',
autoload :TkImage, 'tk/image'
autoload :TkBitmapImage, 'tk/image'
autoload :TkPhotoImage, 'tk/image'
:TkFont => 'tk/font',
:TkTreatTagFont => 'tk/font',
autoload :TkItemConfigMethod, 'tk/itemconfig'
:TkFrame => 'tk/frame',
autoload :TkTreatItemFont, 'tk/itemfont'
:TkImage => 'tk/image',
:TkBitmapImage => 'tk/image',
:TkPhotoImage => 'tk/image',
autoload :TkKinput, 'tk/kinput'
:TkItemConfigMethod => 'tk/itemconfig',
autoload :TkSystemMenu, 'tk/menu'
:TkTreatItemFont => 'tk/itemfont',
autoload :TkMenubar, 'tk/menubar'
:TkKinput => 'tk/kinput',
autoload :TkMenuSpec, 'tk/menuspec'
:TkLabel => 'tk/label',
autoload :TkManageFocus, 'tk/mngfocus'
:TkLabelFrame => 'tk/labelframe',
:TkLabelframe => 'tk/labelframe',
autoload :TkMsgCatalog, 'tk/msgcat'
autoload :TkMsgCat, 'tk/msgcat'
:TkListbox => 'tk/listbox',
autoload :TkNamespace, 'tk/namespace'
:TkMacResource => 'tk/macpkg',
autoload :TkOptionDB, 'tk/optiondb'
autoload :TkOption, 'tk/optiondb'
autoload :TkResourceDB, 'tk/optiondb'
:TkMenu => 'tk/menu',
:TkMenuClone => 'tk/menu',
:TkSystemMenu => 'tk/menu',
:TkSysMenu_Help => 'tk/menu',
:TkSysMenu_System => 'tk/menu',
:TkSysMenu_Apple => 'tk/menu',
:TkMenubutton => 'tk/menu',
:TkOptionMenubutton => 'tk/menu',
autoload :TkPackage, 'tk/package'
:TkMenubar => 'tk/menubar',
autoload :TkPalette, 'tk/palette'
:TkMenuSpec => 'tk/menuspec',
autoload :TkScrollbox, 'tk/scrollbox'
:TkMessage => 'tk/message',
autoload :TkSelection, 'tk/selection'
:TkManageFocus => 'tk/mngfocus',
autoload :TkTreatTagFont, 'tk/tagfont'
:TkMsgCatalog => 'tk/msgcat',
:TkMsgCat => 'tk/msgcat',
autoload :TkTextImage, 'tk/textimage'
autoload :TktImage, 'tk/textimage'
:TkNamespace => 'tk/namespace',
autoload :TkTextMark, 'tk/textmark'
autoload :TkTextNamedMark, 'tk/textmark'
autoload :TkTextMarkInsert, 'tk/textmark'
autoload :TkTextMarkCurrent, 'tk/textmark'
autoload :TkTextMarkAnchor, 'tk/textmark'
autoload :TktMark, 'tk/textmark'
autoload :TktNamedMark, 'tk/textmark'
autoload :TktMarkInsert, 'tk/textmark'
autoload :TktMarkCurrent, 'tk/textmark'
autoload :TktMarkAnchor, 'tk/textmark'
:TkOptionDB => 'tk/optiondb',
:TkOption => 'tk/optiondb',
:TkResourceDB => 'tk/optiondb',
autoload :TkTextTag, 'tk/texttag'
autoload :TkTextNamedTag, 'tk/texttag'
autoload :TkTextTagSel, 'tk/texttag'
autoload :TktTag, 'tk/texttag'
autoload :TktNamedTag, 'tk/texttag'
autoload :TktTagSel, 'tk/texttag'
:TkPackage => 'tk/package',
autoload :TkTextWindow, 'tk/textwindow'
autoload :TktWindow, 'tk/textwindow'
:TkPalette => 'tk/palette',
autoload :TkAfter, 'tk/timer'
autoload :TkTimer, 'tk/timer'
autoload :TkRTTimer, 'tk/timer'
:TkPanedWindow => 'tk/panedwindow',
:TkPanedwindow => 'tk/panedwindow',
autoload :TkTextWin, 'tk/txtwin_abst'
:TkRadioButton => 'tk/radiobutton',
:TkRadiobutton => 'tk/radiobutton',
autoload :TkValidation, 'tk/validation'
autoload :TkValidateCommand, 'tk/validation'
:TkRoot => 'tk/root',
autoload :TkVariable, 'tk/variable'
autoload :TkVarAccess, 'tk/variable'
:TkScale => 'tk/scale',
autoload :TkVirtualEvent, 'tk/virtevent'
autoload :TkNamedVirtualEvent,'tk/virtevent'
:TkScrollbar => 'tk/scrollbar',
:TkXScrollbar => 'tk/scrollbar',
:TkYScrollbar => 'tk/scrollbar',
autoload :TkWinfo, 'tk/winfo'
:TkScrollbox => 'tk/scrollbox',
autoload :TkXIM, 'tk/xim'
:TkSelection => 'tk/selection',
:TkSpinbox => 'tk/spinbox',
############################################
# toplevel classes/modules (switchable)
module Tk
@TOPLEVEL_ALIAS_TABLE = {}
@TOPLEVEL_ALIAS_TABLE[:Tk] = {
:TkButton => 'tk/button',
:TkTreatTagFont => 'tk/tagfont',
:TkCanvas => 'tk/canvas',
:TkText => 'tk/text',
:TkCheckButton => 'tk/checkbutton',
:TkCheckbutton => 'tk/checkbutton',
:TkTextImage => 'tk/textimage',
:TktImage => 'tk/textimage',
# :TkDialog => 'tk/dialog',
# :TkDialog2 => 'tk/dialog',
# :TkDialogObj => 'tk/dialog',
# :TkWarning => 'tk/dialog',
# :TkWarning2 => 'tk/dialog',
# :TkWarningObj => 'tk/dialog',
:TkTextMark => 'tk/textmark',
:TkTextNamedMark => 'tk/textmark',
:TkTextMarkInsert => 'tk/textmark',
:TkTextMarkCurrent => 'tk/textmark',
:TkTextMarkAnchor => 'tk/textmark',
:TktMark => 'tk/textmark',
:TktNamedMark => 'tk/textmark',
:TktMarkInsert => 'tk/textmark',
:TktMarkCurrent => 'tk/textmark',
:TktMarkAnchor => 'tk/textmark',
:TkEntry => 'tk/entry',
:TkTextTag => 'tk/texttag',
:TkTextNamedTag => 'tk/texttag',
:TkTextTagSel => 'tk/texttag',
:TktTag => 'tk/texttag',
:TktNamedTag => 'tk/texttag',
:TktTagSel => 'tk/texttag',
:TkFrame => 'tk/frame',
:TkTextWindow => 'tk/textwindow',
:TktWindow => 'tk/textwindow',
:TkLabel => 'tk/label',
:TkAfter => 'tk/timer',
:TkTimer => 'tk/timer',
:TkRTTimer => 'tk/timer',
:TkLabelFrame => 'tk/labelframe',
:TkLabelframe => 'tk/labelframe',
:TkToplevel => 'tk/toplevel',
:TkListbox => 'tk/listbox',
:TkTextWin => 'tk/txtwin_abst',
:TkMacResource => 'tk/macpkg',
:TkValidation => 'tk/validation',
:TkMenu => 'tk/menu',
:TkMenuClone => 'tk/menu',
:TkCloneMenu => 'tk/menu',
# :TkSystemMenu => 'tk/menu',
:TkSysMenu_Help => 'tk/menu',
:TkSysMenu_System => 'tk/menu',
:TkSysMenu_Apple => 'tk/menu',
:TkMenubutton => 'tk/menu',
:TkMenuButton => 'tk/menu',
:TkOptionMenubutton => 'tk/menu',
:TkOptionMenuButton => 'tk/menu',
:TkVariable => 'tk/variable',
:TkVarAccess => 'tk/variable',
:TkMessage => 'tk/message',
:TkVirtualEvent => 'tk/virtevent',
:TkNamedVirtualEvent => 'tk/virtevent',
:TkPanedWindow => 'tk/panedwindow',
:TkPanedwindow => 'tk/panedwindow',
:TkWinfo => 'tk/winfo',
:TkRadioButton => 'tk/radiobutton',
:TkRadiobutton => 'tk/radiobutton',
:TkWinDDE => 'tk/winpkg',
:TkWinRegistry => 'tk/winpkg',
:TkRoot => 'tk/root',
:TkXIM => 'tk/xim',
}
autoload_list.each{|mod, lib|
#autoload mod, lib unless
autoload mod, lib unless (Object.const_defined? mod) && (autoload? mod)
}
:TkScale => 'tk/scale',
:TkScrollbar => 'tk/scrollbar',
:TkXScrollbar => 'tk/scrollbar',
:TkYScrollbar => 'tk/scrollbar',
:TkSpinbox => 'tk/spinbox',
:TkText => 'tk/text',
:TkToplevel => 'tk/toplevel',
:TkWinDDE => 'tk/winpkg',
:TkWinRegistry => 'tk/winpkg',
}
@TOPLEVEL_ALIAS_SETUP_PROC = {}
@current_default_widget_set = nil
end
############################################
class << Tk
def default_widget_set
@current_default_widget_set
end
def default_widget_set=(target)
target = target.to_sym
return target if target == @current_default_widget_set
if (cmd = @TOPLEVEL_ALIAS_SETUP_PROC[target])
cmd.call(target)
end
_replace_toplevel_aliases(target)
end
def __set_toplevel_aliases__(target, obj, *symbols)
@TOPLEVEL_ALIAS_TABLE[target = target.to_sym] ||= {}
symbols.each{|sym|
@TOPLEVEL_ALIAS_TABLE[target][sym = sym.to_sym] = obj
if @current_default_widget_set == target
Object.class_eval{remove_const sym} if Object.const_defined?(sym)
Object.const_set(sym, obj)
end
}
end
###################################
private
def _replace_toplevel_aliases(target)
# check already autoloaded
if (table = @TOPLEVEL_ALIAS_TABLE[current = @current_default_widget_set])
table.each{|sym, file|
if !Object.autoload?(sym) && Object.const_defined?(sym) &&
@TOPLEVEL_ALIAS_TABLE[current][sym].kind_of?(String)
# autoload -> class
@TOPLEVEL_ALIAS_TABLE[current][sym] = Object.const_get(sym)
end
}
end
# setup autoloads
@TOPLEVEL_ALIAS_TABLE[target].each{|sym, file|
Object.class_eval{remove_const sym} if Object.const_defined?(sym)
if file.kind_of?(String)
# file => autoload target file
Object.autoload(sym, file)
else
# file => loaded class object
Object.const_set(sym, file)
end
}
# update current alias
@current_default_widget_set = target
end
end
############################################
# setup default widget set => :Tk
Tk.default_widget_set = :Tk
############################################
# depend on the version of Tcl/Tk
major, minor, type, type_name, patchlevel = TclTkLib.get_version
############################################
# Ttk (Tile) support
if major > 8 ||
(major == 8 && minor > 5) ||
(major == 8 && minor == 5 && type >= TclTkLib::RELEASE_TYPE::BETA)
# Tcl/Tk 8.5 beta or later
Object.autoload :Ttk, 'tkextlib/tile'
Tk.autoload :Tile, 'tkextlib/tile'
require 'tk/ttk_selector'
end

Просмотреть файл

@ -4,7 +4,7 @@
require 'tk'
require 'tk/label'
class Tk::Button<TkLabel
class Tk::Button<Tk::Label
TkCommandNames = ['button'.freeze].freeze
WidgetClassName = 'Button'.freeze
WidgetClassNames[WidgetClassName] = self
@ -26,4 +26,5 @@ class Tk::Button<TkLabel
end
end
TkButton = Tk::Button unless Object.const_defined? :TkButton
#TkButton = Tk::Button unless Object.const_defined? :TkButton
Tk.__set_toplevel_aliases__(:Tk, Tk::Button, :TkButton)

Просмотреть файл

@ -572,7 +572,8 @@ class Tk::Canvas<TkWindow
end
end
TkCanvas = Tk::Canvas unless Object.const_defined? :TkCanvas
#TkCanvas = Tk::Canvas unless Object.const_defined? :TkCanvas
Tk.__set_toplevel_aliases__(:Tk, Tk::Canvas, :TkCanvas)
class TkcItem<TkObject
@ -660,8 +661,8 @@ class TkcItem<TkObject
########################################
def initialize(parent, *args)
#unless parent.kind_of?(TkCanvas)
# fail ArgumentError, "expect TkCanvas for 1st argument"
#unless parent.kind_of?(Tk::Canvas)
# fail ArgumentError, "expect Tk::Canvas for 1st argument"
#end
@parent = @c = parent
@path = parent.path

Просмотреть файл

@ -4,7 +4,7 @@
require 'tk'
require 'tk/radiobutton'
class Tk::CheckButton<TkRadioButton
class Tk::CheckButton<Tk::RadioButton
TkCommandNames = ['checkbutton'.freeze].freeze
WidgetClassName = 'Checkbutton'.freeze
WidgetClassNames[WidgetClassName] = self
@ -24,5 +24,7 @@ class Tk::CheckButton<TkRadioButton
end
Tk::Checkbutton = Tk::CheckButton
TkCheckButton = Tk::CheckButton unless Object.const_defined? :TkCheckButton
TkCheckbutton = Tk::Checkbutton unless Object.const_defined? :TkCheckbutton
#TkCheckButton = Tk::CheckButton unless Object.const_defined? :TkCheckButton
#TkCheckbutton = Tk::Checkbutton unless Object.const_defined? :TkCheckbutton
Tk.__set_toplevel_aliases__(:Tk, Tk::CheckButton,
:TkCheckButton, :TkCheckbutton)

Просмотреть файл

@ -34,7 +34,8 @@ module TkComposite
if klass
# WidgetClassName is a known class
if klass <= TkFrame || klass < TkComposite
#if klass <= TkFrame || klass < TkComposite
if klass <= TkFrame || klass < Tk::Frame || klass < TkComposite
# klass is valid for the base frame
if self.class <= klass
# use my classname
@ -50,7 +51,8 @@ module TkComposite
else
# klass is invalid for the base frame
if self.class < TkFrame || self.class.superclass < TkComposite
#if self.class < TkFrame || self.class.superclass < TkComposite
if self.class < TkFrame || self.class.superclass < Tk::Frame || self.class.superclass < TkComposite
# my class name is valid for the base frame -> use my classname
base_class_name = self.class.name
if base_class_name == ''
@ -69,7 +71,8 @@ module TkComposite
else
# no valid WidgetClassName
if self.class < TkFrame || self.class.superclass < TkComposite
#if self.class < TkFrame || self.class.superclass < TkComposite
if self.class < TkFrame || self.class.superclass < Tk::Frame || self.class.superclass < TkComposite
# my class name is valid for the base frame -> use my classname
base_class_name = self.class.name
if base_class_name == ''
@ -108,8 +111,12 @@ module TkComposite
end
if base_class_name
# @frame = Tk::Frame.new(parent, :class=>base_class_name)
# --> use current TkFrame class
@frame = TkFrame.new(parent, :class=>base_class_name)
else
# @frame = Tk::Frame.new(parent)
# --> use current TkFrame class
@frame = TkFrame.new(parent)
end
@path = @epath = @frame.path

Просмотреть файл

@ -7,7 +7,7 @@ require 'tk/label'
require 'tk/scrollable'
require 'tk/validation'
class Tk::Entry<TkLabel
class Tk::Entry<Tk::Label
include X_Scrollable
include TkValidation
@ -115,4 +115,5 @@ class Tk::Entry<TkLabel
end
end
TkEntry = Tk::Entry unless Object.const_defined? :TkEntry
#TkEntry = Tk::Entry unless Object.const_defined? :TkEntry
Tk.__set_toplevel_aliases__(:Tk, Tk::Entry, :TkEntry)

Просмотреть файл

@ -15,6 +15,8 @@ require 'tk'
module TkEvent
class Event < TkUtil::CallbackSubst
module Grp
major, minor, type, type_name, patchlevel = TclTkLib.get_version
KEY = 0x1
BUTTON = 0x2
MOTION = 0x4
@ -39,7 +41,7 @@ module TkEvent
RESIZEREQ = 0x200000
CIRCREQ = 0x400000
MWHEEL = 0x10000000
MWHEEL = KEY
ALL = 0xFFFFFFFF
@ -298,31 +300,54 @@ module TkEvent
[ ?b, ?n, :num ],
[ ?c, ?n, :count ],
[ ?d, ?s, :detail ],
# ?e
[ ?f, ?b, :focus ],
# ?g
[ ?h, ?n, :height ],
[ ?i, ?s, :win_hex ],
# ?j
[ ?k, ?n, :keycode ],
# ?l
[ ?m, ?s, :mode ],
# ?n
[ ?o, ?b, :override ],
[ ?p, ?s, :place ],
# ?q
# ?r
[ ?s, ?x, :state ],
[ ?t, ?n, :time ],
# ?u
[ ?v, ?n, :value_mask ],
[ ?w, ?n, :width ],
[ ?x, ?n, :x ],
[ ?y, ?n, :y ],
# ?z
[ ?A, ?s, :char ],
[ ?B, ?n, :borderwidth ],
# ?C
[ ?D, ?n, :wheel_delta ],
[ ?E, ?b, :send_event ],
# ?F
# ?G
# ?H
# ?I
# ?J
[ ?K, ?s, :keysym ],
# ?L
# ?M
[ ?N, ?n, :keysym_num ],
# ?O
[ ?P, ?s, :property ],
# ?Q
[ ?R, ?s, :rootwin_id ],
[ ?S, ?s, :subwindow ],
[ ?T, ?n, :type ],
# ?U
# ?V
[ ?W, ?w, :widget ],
[ ?X, ?n, :x_root ],
[ ?Y, ?n, :y_root ],
# ?Z
nil
]

Просмотреть файл

@ -899,13 +899,15 @@ class TkFont
if key.include?(';')
win, tag, optkey = key.split(';')
winobj = tk_tcl2ruby(win)
if winobj.kind_of? TkText
#if winobj.kind_of? TkText
if winobj.kind_of?(TkText) || winobj.kind_of?(Tk::Text)
if optkey
ret.push([winobj, winobj.tagid2obj(tag), optkey])
else
ret.push([winobj, winobj.tagid2obj(tag)])
end
elsif winobj.kind_of? TkCanvas
#elsif winobj.kind_of? TkCanvas
elsif winobj.kind_of?(TkCanvas) || winobj.kind_of?(Tk::Canvas)
if (tagobj = TkcTag.id2obj(winobj, tag)).kind_of? TkcTag
if optkey
ret.push([winobj, tagobj, optkey])
@ -925,7 +927,8 @@ class TkFont
ret.push([winobj, tag])
end
end
elsif winobj.kind_of? TkMenu
#elsif winobj.kind_of? TkMenu
elsif winobj.kind_of?(TkMenu) || winobj.kind_of?(Tk::Menu)
if optkey
ret.push([winobj, tag, optkey])
else
@ -1504,11 +1507,14 @@ module TkFont::CoreMethods
optkey = 'font' if optkey == nil || optkey == ''
winobj = tk_tcl2ruby(win)
# winobj.tagfont_configure(tag, {'font'=>@latinfont})
if winobj.kind_of? TkText
#if winobj.kind_of? TkText
if winobj.kind_of?(TkText) || winobj.kind_of?(Tk::Text)
tk_call(win, 'tag', 'configure', tag, "-#{optkey}", @latinfont)
elsif winobj.kind_of? TkCanvas
#elsif winobj.kind_of? TkCanvas
elsif winobj.kind_of?(TkCanvas) || winobj.kind_of?(Tk::Canvas)
tk_call(win, 'itemconfigure', tag, "-#{optkey}", @latinfont)
elsif winobj.kind_of? TkMenu
#elsif winobj.kind_of? TkMenu
elsif winobj.kind_of?(TkMenu) || winobj.kind_of?(Tk::Menu)
tk_call(win, 'entryconfigure', tag, "-#{optkey}", @latinfont)
else
raise RuntimeError, "unknown widget type"
@ -1539,11 +1545,14 @@ module TkFont::CoreMethods
optkey = 'kanjifont' unless optkey
winobj = tk_tcl2ruby(win)
# winobj.tagfont_configure(tag, {'kanjifont'=>@kanjifont})
if winobj.kind_of? TkText
#if winobj.kind_of? TkText
if winobj.kind_of?(TkText) || winobj.kind_of?(Tk::Text)
tk_call(win, 'tag', 'configure', tag, "-#{optkey}", @kanjifont)
elsif winobj.kind_of? TkCanvas
#elsif winobj.kind_of? TkCanvas
elsif winobj.kind_of?(TkCanvas) || winobj.kind_of?(Tk::Canvas)
tk_call(win, 'itemconfigure', tag, "-#{optkey}", @kanjifont)
elsif winobj.kind_of? TkMenu
#elsif winobj.kind_of? TkMenu
elsif winobj.kind_of?(TkMenu) || winobj.kind_of?(Tk::Menu)
tk_call(win, 'entryconfigure', tag, "-#{optkey}", @latinfont)
else
raise RuntimeError, "unknown widget type"

Просмотреть файл

@ -127,4 +127,5 @@ class Tk::Frame<TkWindow
end
end
TkFrame = Tk::Frame unless Object.const_defined? :TkFrame
#TkFrame = Tk::Frame unless Object.const_defined? :TkFrame
Tk.__set_toplevel_aliases__(:Tk, Tk::Frame, :TkFrame)

Просмотреть файл

@ -17,4 +17,5 @@ class Tk::Label<TkWindow
#private :create_self
end
TkLabel = Tk::Label unless Object.const_defined? :TkLabel
#TkLabel = Tk::Label unless Object.const_defined? :TkLabel
Tk.__set_toplevel_aliases__(:Tk, Tk::Label, :TkLabel)

Просмотреть файл

@ -4,7 +4,7 @@
require 'tk'
require 'tk/frame'
class Tk::LabelFrame<TkFrame
class Tk::LabelFrame<Tk::Frame
TkCommandNames = ['labelframe'.freeze].freeze
WidgetClassName = 'Labelframe'.freeze
WidgetClassNames[WidgetClassName] = self
@ -23,6 +23,7 @@ class Tk::LabelFrame<TkFrame
private :__val2ruby_optkeys
end
Tk::Labelframe = TkLabelFrame
TkLabelFrame = Tk::LabelFrame unless Object.const_defined? :TkLabelFrame
TkLabelframe = Tk::Labelframe unless Object.const_defined? :TkLabelframe
Tk::Labelframe = Tk::LabelFrame
#TkLabelFrame = Tk::LabelFrame unless Object.const_defined? :TkLabelFrame
#TkLabelframe = Tk::Labelframe unless Object.const_defined? :TkLabelframe
Tk.__set_toplevel_aliases__(:Tk, Tk::LabelFrame, :TkLabelFrame, :TkLabelframe)

Просмотреть файл

@ -278,4 +278,5 @@ class Tk::Listbox<TkTextWin
=end
end
TkListbox = Tk::Listbox unless Object.const_defined? :TkListbox
#TkListbox = Tk::Listbox unless Object.const_defined? :TkListbox
Tk.__set_toplevel_aliases__(:Tk, Tk::Listbox, :TkListbox)

Просмотреть файл

@ -22,7 +22,8 @@ end
module Tk::MacResource
end
TkMacResource = Tk::MacResource
#TkMacResource = Tk::MacResource
Tk.__set_toplevel_aliases__(:Tk, Tk::MacResource, :TkMacResource)
module Tk::MacResource
extend Tk

Просмотреть файл

@ -140,9 +140,9 @@ class Tk::Menu<TkWindow
type = keys.delete('type') if keys.has_key?('type')
if keys.empty?
TkMenuClone.new(self, parent, type)
Tk::MenuClone.new(self, parent, type)
else
TkMenuClone.new(self, parent, type, keys)
Tk::MenuClone.new(self, parent, type, keys)
end
end
@ -381,10 +381,11 @@ class Tk::Menu<TkWindow
=end
end
TkMenu = Tk::Menu unless Object.const_defined? :TkMenu
#TkMenu = Tk::Menu unless Object.const_defined? :TkMenu
Tk.__set_toplevel_aliases__(:Tk, Tk::Menu, :TkMenu)
class Tk::MenuClone<TkMenu
class Tk::MenuClone<Tk::Menu
=begin
def initialize(parent, type=None)
widgetname = nil
@ -439,10 +440,11 @@ class Tk::MenuClone<TkMenu
end
end
Tk::CloneMenu = Tk::MenuClone
TkMenuClone = Tk::MenuClone unless Object.const_defined? :TkMenuClone
TkCloneMenu = Tk::CloneMenu unless Object.const_defined? :TkCloneMenu
#TkMenuClone = Tk::MenuClone unless Object.const_defined? :TkMenuClone
#TkCloneMenu = Tk::CloneMenu unless Object.const_defined? :TkCloneMenu
Tk.__set_toplevel_aliases__(:Tk, Tk::MenuClone, :TkMenuClone, :TkCloneMenu)
module TkSystemMenu
module Tk::SystemMenu
def initialize(parent, keys=nil)
if parent.kind_of? Hash
keys = _symbolkey2str(parent)
@ -465,33 +467,37 @@ module TkSystemMenu
end
end
end
TkSystemMenu = Tk::SystemMenu
class Tk::SysMenu_Help<TkMenu
class Tk::SysMenu_Help<Tk::Menu
# for all platform
include TkSystemMenu
include Tk::SystemMenu
SYSMENU_NAME = 'help'
end
TkSysMenu_Help = Tk::SysMenu_Help unless Object.const_defined? :TkSysMenu_Help
#TkSysMenu_Help = Tk::SysMenu_Help unless Object.const_defined? :TkSysMenu_Help
Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_Help, :TkSysMenu_Help)
class Tk::SysMenu_System<TkMenu
class Tk::SysMenu_System<Tk::Menu
# for Windows
include TkSystemMenu
include Tk::SystemMenu
SYSMENU_NAME = 'system'
end
TkSysMenu_System = Tk::SysMenu_System unless Object.const_defined? :TkSysMenu_System
#TkSysMenu_System = Tk::SysMenu_System unless Object.const_defined? :TkSysMenu_System
Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_System, :TkSysMenu_System)
class Tk::SysMenu_Apple<TkMenu
class Tk::SysMenu_Apple<Tk::Menu
# for Machintosh
include TkSystemMenu
include Tk::SystemMenu
SYSMENU_NAME = 'apple'
end
TkSysMenu_Apple = Tk::SysMenu_Apple unless Object.const_defined? :TkSysMenu_Apple
#TkSysMenu_Apple = Tk::SysMenu_Apple unless Object.const_defined? :TkSysMenu_Apple
Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_Apple, :TkSysMenu_Apple)
class Tk::Menubutton<TkLabel
class Tk::Menubutton<Tk::Label
TkCommandNames = ['menubutton'.freeze].freeze
WidgetClassName = 'Menubutton'.freeze
WidgetClassNames[WidgetClassName] = self
@ -514,11 +520,12 @@ class Tk::Menubutton<TkLabel
end
Tk::MenuButton = Tk::Menubutton
TkMenubutton = Tk::Menubutton unless Object.const_defined? :TkMenubutton
TkMenuButton = Tk::MenuButton unless Object.const_defined? :TkMenuButton
#TkMenubutton = Tk::Menubutton unless Object.const_defined? :TkMenubutton
#TkMenuButton = Tk::MenuButton unless Object.const_defined? :TkMenuButton
Tk.__set_toplevel_aliases__(:Tk, Tk::Menubutton, :TkMenubutton, :TkMenuButton)
class Tk::OptionMenubutton<TkMenubutton
class Tk::OptionMenubutton<Tk::Menubutton
TkCommandNames = ['tk_optionMenu'.freeze].freeze
class OptionMenu<TkMenu
@ -640,5 +647,7 @@ class Tk::OptionMenubutton<TkMenubutton
end
Tk::OptionMenuButton = Tk::OptionMenubutton
TkOptionMenubutton = Tk::OptionMenubutton unless Object.const_defined? :TkOptionMenubutton
TkOptionMenuButton = Tk::OptionMenuButton unless Object.const_defined? :TkOptionMenuButton
#TkOptionMenubutton = Tk::OptionMenubutton unless Object.const_defined? :TkOptionMenubutton
#TkOptionMenuButton = Tk::OptionMenuButton unless Object.const_defined? :TkOptionMenuButton
Tk.__set_toplevel_aliases__(:Tk, Tk::OptionMenubutton,
:TkOptionMenubutton, :TkOptionMenuButton)

Просмотреть файл

@ -89,7 +89,7 @@ require 'tk/frame'
require 'tk/composite'
require 'tk/menuspec'
class TkMenubar<TkFrame
class TkMenubar<Tk::Frame
include TkComposite
include TkMenuSpec

Просмотреть файл

@ -61,8 +61,12 @@ module TkMenuSpec
tearoff = orig_opts.delete('tearoff') if orig_opts.key?('tearoff')
if menu_name
#menu = Tk::Menu.new(parent, :widgetname=>menu_name, :tearoff=>tearoff)
# --> use current TkMenu class
menu = TkMenu.new(parent, :widgetname=>menu_name, :tearoff=>tearoff)
else
#menu = Tk::Menu.new(parent, :tearoff=>tearoff)
# --> use current TkMenu class
menu = TkMenu.new(parent, :tearoff=>tearoff)
end
@ -150,7 +154,7 @@ module TkMenuSpec
def _use_menubar?(parent)
use_menubar = false
if parent.kind_of?(TkRoot) || parent.kind_of?(TkToplevel)
if parent.kind_of?(Tk::Root) || parent.kind_of?(Tk::Toplevel)
return true
else
begin
@ -164,7 +168,11 @@ module TkMenuSpec
private :_use_menubar?
def _create_menu_for_menubar(parent)
unless (mbar = parent.menu).kind_of?(TkMenu)
#unless (mbar = parent.menu).kind_of?(TkMenu)
# --> use current TkMenu class
mbar = parent.menu
unless parent.menu.kind_of?(Tk::Menu) || parent.menu.kind_of?(TkMenu)
#mbar = Tk::Menu.new(parent, :tearoff=>false)
mbar = TkMenu.new(parent, :tearoff=>false)
parent.menu(mbar)
end
@ -221,6 +229,8 @@ module TkMenuSpec
else
# menubar by menubuttons
#mbtn = Tk::Menubutton.new(parent)
# --> use current TkMenubutton class
mbtn = TkMenubutton.new(parent)
menu_name = nil

Просмотреть файл

@ -4,7 +4,7 @@
require 'tk'
require 'tk/label'
class Tk::Message<TkLabel
class Tk::Message<Tk::Label
TkCommandNames = ['message'.freeze].freeze
WidgetClassName = 'Message'.freeze
WidgetClassNames[WidgetClassName] = self
@ -18,4 +18,5 @@ class Tk::Message<TkLabel
private :create_self
end
TkMessage = Tk::Message unless Object.const_defined? :TkMessage
#TkMessage = Tk::Message unless Object.const_defined? :TkMessage
Tk.__set_toplevel_aliases__(:Tk, Tk::Message, :TkMessage)

Просмотреть файл

@ -362,7 +362,7 @@ module TkOptionDB
def new_proc_class_random(klass, func, safe = 4, add = false, &b)
eval_under_random_base(){
TkOption.new_proc_class(klass, func, safe, add, self, &b)
TkOptionDB.new_proc_class(klass, func, safe, add, self, &b)
}
end
module_function :new_proc_class_random

Просмотреть файл

@ -231,5 +231,7 @@ class Tk::PanedWindow<TkWindow
end
Tk::Panedwindow = Tk::PanedWindow
TkPanedWindow = Tk::PanedWindow unless Object.const_defined? :TkPanedWindow
TkPanedwindow = Tk::Panedwindow unless Object.const_defined? :TkPanedwindow
#TkPanedWindow = Tk::PanedWindow unless Object.const_defined? :TkPanedWindow
#TkPanedwindow = Tk::Panedwindow unless Object.const_defined? :TkPanedwindow
Tk.__set_toplevel_aliases__(:Tk, Tk::PanedWindow,
:TkPanedWindow, :TkPanedwindow)

Просмотреть файл

@ -4,7 +4,7 @@
require 'tk'
require 'tk/button'
class Tk::RadioButton<TkButton
class Tk::RadioButton<Tk::Button
TkCommandNames = ['radiobutton'.freeze].freeze
WidgetClassName = 'Radiobutton'.freeze
WidgetClassNames[WidgetClassName] = self
@ -65,5 +65,7 @@ class Tk::RadioButton<TkButton
end
Tk::Radiobutton = Tk::RadioButton
TkRadioButton = Tk::RadioButton unless Object.const_defined? :TkRadioButton
TkRadiobutton = Tk::Radiobutton unless Object.const_defined? :TkRadiobutton
#TkRadioButton = Tk::RadioButton unless Object.const_defined? :TkRadioButton
#TkRadiobutton = Tk::Radiobutton unless Object.const_defined? :TkRadiobutton
Tk.__set_toplevel_aliases__(:Tk, Tk::RadioButton,
:TkRadioButton, :TkRadiobutton)

Просмотреть файл

@ -14,28 +14,7 @@ class Tk::Root<TkWindow
end
private :__methodcall_optkeys
=begin
ROOT = []
def TkRoot.new(keys=nil)
if ROOT[0]
Tk_WINDOWS["."] = ROOT[0]
return ROOT[0]
end
new = super(:without_creating=>true, :widgetname=>'.')
if keys # wm commands
keys.each{|k,v|
if v.kind_of? Array
new.send(k,*v)
else
new.send(k,v)
end
}
end
ROOT[0] = new
Tk_WINDOWS["."] = new
end
=end
def TkRoot.new(keys=nil, &b)
def Root.new(keys=nil, &b)
unless TkCore::INTERP.tk_windows['.']
TkCore::INTERP.tk_windows['.'] =
super(:without_creating=>true, :widgetname=>'.'){}
@ -102,9 +81,10 @@ class Tk::Root<TkWindow
self.menu
end
def TkRoot.destroy
def Root.destroy
TkCore::INTERP._invoke('destroy', '.')
end
end
TkRoot = Tk::Root unless Object.const_defined? :TkRoot
#TkRoot = Tk::Root unless Object.const_defined? :TkRoot
Tk.__set_toplevel_aliases__(:Tk, Tk::Root, :TkRoot)

Просмотреть файл

@ -85,4 +85,5 @@ class Tk::Scale<TkWindow
end
end
TkScale = Tk::Scale unless Object.const_defined? :TkScale
#TkScale = Tk::Scale unless Object.const_defined? :TkScale
Tk.__set_toplevel_aliases__(:Tk, Tk::Scale, :TkScale)

Просмотреть файл

@ -105,10 +105,11 @@ class Tk::Scrollbar<TkWindow
end
end
TkScrollbar = Tk::Scrollbar unless Object.const_defined? :TkScrollbar
#TkScrollbar = Tk::Scrollbar unless Object.const_defined? :TkScrollbar
Tk.__set_toplevel_aliases__(:Tk, Tk::Scrollbar, :TkScrollbar)
class Tk::XScrollbar<TkScrollbar
class Tk::XScrollbar<Tk::Scrollbar
def create_self(keys)
keys = {} unless keys
keys['orient'] = 'horizontal'
@ -117,10 +118,11 @@ class Tk::XScrollbar<TkScrollbar
private :create_self
end
TkXScrollbar = Tk::XScrollbar unless Object.const_defined? :TkXScrollbar
#TkXScrollbar = Tk::XScrollbar unless Object.const_defined? :TkXScrollbar
Tk.__set_toplevel_aliases__(:Tk, Tk::XScrollbar, :TkXScrollbar)
class Tk::YScrollbar<TkScrollbar
class Tk::YScrollbar<Tk::Scrollbar
def create_self(keys)
keys = {} unless keys
keys['orient'] = 'vertical'
@ -129,4 +131,5 @@ class Tk::YScrollbar<TkScrollbar
private :create_self
end
TkYScrollbar = Tk::YScrollbar unless Object.const_defined? :TkYScrollbar
#TkYScrollbar = Tk::YScrollbar unless Object.const_defined? :TkYScrollbar
Tk.__set_toplevel_aliases__(:Tk, Tk::YScrollbar, :TkYScrollbar)

Просмотреть файл

@ -6,10 +6,14 @@
require 'tk'
require 'tk/listbox'
class TkScrollbox<TkListbox
class TkScrollbox<Tk::Listbox
include TkComposite
def initialize_composite(keys=nil)
#list = Tk::Listbox.new(@frame)
# -> use current TkListbox class
list = TkListbox.new(@frame)
#scroll = Tk::Scrollbar.new(@frame)
# -> use current TkScrollbar class
scroll = TkScrollbar.new(@frame)
@path = list.path

Просмотреть файл

@ -5,7 +5,7 @@
require 'tk'
require 'tk/entry'
class Tk::Spinbox<TkEntry
class Tk::Spinbox<Tk::Entry
TkCommandNames = ['spinbox'.freeze].freeze
WidgetClassName = 'Spinbox'.freeze
WidgetClassNames[WidgetClassName] = self
@ -97,4 +97,5 @@ class Tk::Spinbox<TkEntry
end
end
TkSpinbox = Tk::Spinbox unless Object.const_defined? :TkSpinbox
#TkSpinbox = Tk::Spinbox unless Object.const_defined? :TkSpinbox
Tk.__set_toplevel_aliases__(:Tk, Tk::Spinbox, :TkSpinbox)

Просмотреть файл

@ -73,9 +73,9 @@ class Tk::Text<TkTextWin
mod = mod.to_s
if mod =~ /^\s*[+-]?\d/
TkText::IndexString.new(String.new(id) << ' + ' << mod)
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod)
else
TkText::IndexString.new(String.new(id) << ' ' << mod)
Tk::Text::IndexString.new(String.new(id) << ' ' << mod)
end
end
@ -84,20 +84,20 @@ class Tk::Text<TkTextWin
mod = mod.to_s
if mod =~ /^\s*[+-]?\d/
TkText::IndexString.new(String.new(id) << ' - ' << mod)
Tk::Text::IndexString.new(String.new(id) << ' - ' << mod)
elsif mod =~ /^\s*[-]\s+(\d.*)$/
TkText::IndexString.new(String.new(id) << ' - -' << $1)
Tk::Text::IndexString.new(String.new(id) << ' - -' << $1)
else
TkText::IndexString.new(String.new(id) << ' ' << mod)
Tk::Text::IndexString.new(String.new(id) << ' ' << mod)
end
end
def chars(mod)
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars')
end
end
alias char chars
@ -106,9 +106,9 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
end
end
alias display_char display_chars
@ -117,9 +117,9 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
end
end
alias any_char any_chars
@ -128,9 +128,9 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
end
end
@ -138,9 +138,9 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
end
end
@ -148,18 +148,18 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
end
end
def lines(mod)
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines')
end
end
alias line lines
@ -168,9 +168,9 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
end
end
alias display_line display_lines
@ -179,43 +179,43 @@ class Tk::Text<TkTextWin
# Tk8.5 feature
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
else
TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
end
end
alias any_line any_lines
def linestart
TkText::IndexString.new(String.new(id) << ' linestart')
Tk::Text::IndexString.new(String.new(id) << ' linestart')
end
def lineend
TkText::IndexString.new(String.new(id) << ' lineend')
Tk::Text::IndexString.new(String.new(id) << ' lineend')
end
def display_linestart
# Tk8.5 feature
TkText::IndexString.new(String.new(id) << ' display linestart')
Tk::Text::IndexString.new(String.new(id) << ' display linestart')
end
def display_lineend
# Tk8.5 feature
TkText::IndexString.new(String.new(id) << ' display lineend')
Tk::Text::IndexString.new(String.new(id) << ' display lineend')
end
def wordstart
TkText::IndexString.new(String.new(id) << ' wordstart')
Tk::Text::IndexString.new(String.new(id) << ' wordstart')
end
def wordend
TkText::IndexString.new(String.new(id) << ' wordend')
Tk::Text::IndexString.new(String.new(id) << ' wordend')
end
def display_wordstart
# Tk8.5 feature
TkText::IndexString.new(String.new(id) << ' display wordstart')
Tk::Text::IndexString.new(String.new(id) << ' display wordstart')
end
def display_wordend
# Tk8.5 feature
TkText::IndexString.new(String.new(id) << ' display wordend')
Tk::Text::IndexString.new(String.new(id) << ' display wordend')
end
end
@ -284,16 +284,16 @@ class Tk::Text<TkTextWin
private :__strval_optkeys
def self.at(x, y)
TkText::IndexString.at(x, y)
Tk::Text::IndexString.at(x, y)
end
def at(x, y)
TkText::IndexString.at(x, y)
Tk::Text::IndexString.at(x, y)
end
def index(idx)
TkText::IndexString.new(tk_send_without_enc('index',
_get_eval_enc_str(idx)))
Tk::Text::IndexString.new(tk_send_without_enc('index',
_get_eval_enc_str(idx)))
end
def get_displaychars(*index)
@ -967,7 +967,7 @@ class Tk::Text<TkTextWin
false, true)
r = []
while key=l.shift
r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)]
r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
end
r
end
@ -977,7 +977,7 @@ class Tk::Text<TkTextWin
_get_eval_enc_str(tag),
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
TkText::IndexString.new(idx)
Tk::Text::IndexString.new(idx)
}
end
@ -986,7 +986,7 @@ class Tk::Text<TkTextWin
_get_eval_enc_str(tag),
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
TkText::IndexString.new(idx)
Tk::Text::IndexString.new(idx)
}
end
@ -1236,7 +1236,7 @@ class Tk::Text<TkTextWin
if ret == ""
nil
else
TkText::IndexString.new(ret)
Tk::Text::IndexString.new(ret)
end
end
@ -1271,7 +1271,7 @@ class Tk::Text<TkTextWin
if ret == ""
nil
else
TkText::IndexString.new(ret)
Tk::Text::IndexString.new(ret)
end
end
@ -1460,10 +1460,10 @@ class Tk::Text<TkTextWin
# retrieve index
idx = str.index(/ /, i)
if idx
result.push(TkText::IndexString.new(str[i..(idx-1)]))
result.push(Tk::Text::IndexString.new(str[i..(idx-1)]))
i = idx + 1
else
result.push(TkText::IndexString.new(str[i..-1]))
result.push(Tk::Text::IndexString.new(str[i..-1]))
break
end
end
@ -1531,15 +1531,16 @@ class Tk::Text<TkTextWin
end
end
TkText = Tk::Text unless Object.const_defined? :TkText
#TkText = Tk::Text unless Object.const_defined? :TkText
Tk.__set_toplevel_aliases__(:Tk, Tk::Text, :TkText)
#######################################
class TkText::Peer < TkText
class Tk::Text::Peer < Tk::Text
# Tk8.5 feature
def initialize(text, parent=nil, keys={})
unless text.kind_of?(TkText)
unless text.kind_of?(Tk::Text)
fail ArgumentError, "TkText is expected for 1st argument"
end
@src_text = text

Просмотреть файл

@ -5,11 +5,11 @@ require 'tk'
require 'tk/text'
class TkTextImage<TkObject
include TkText::IndexModMethods
include Tk::Text::IndexModMethods
def initialize(parent, index, keys)
#unless parent.kind_of?(TkText)
# fail ArgumentError, "expect TkText for 1st argument"
#unless parent.kind_of?(Tk::Text)
# fail ArgumentError, "expect Tk::Text for 1st argument"
#end
@t = parent
if index == 'end' || index == :end
@ -34,7 +34,7 @@ class TkTextImage<TkObject
end
def id
TkText::IndexString.new(@id)
Tk::Text::IndexString.new(@id)
end
def mark
@path

Просмотреть файл

@ -5,7 +5,7 @@ require 'tk'
require 'tk/text'
class TkTextMark<TkObject
include TkText::IndexModMethods
include Tk::Text::IndexModMethods
TMarkID_TBL = TkCore::INTERP.create_table
Tk_TextMark_ID = ['mark'.freeze, '00000'.taint].freeze
@ -19,8 +19,8 @@ class TkTextMark<TkObject
end
def initialize(parent, index)
#unless parent.kind_of?(TkText)
# fail ArgumentError, "expect TkText for 1st argument"
#unless parent.kind_of?(Tk::Text)
# fail ArgumentError, "expect Tk::Text for 1st argument"
#end
@parent = @t = parent
@tpath = parent.path
@ -36,7 +36,7 @@ class TkTextMark<TkObject
end
def id
TkText::IndexString.new(@id)
Tk::Text::IndexString.new(@id)
end
def exist?
@ -49,15 +49,15 @@ class TkTextMark<TkObject
end
=begin
# move to TkText::IndexModMethods module
# move to Tk::Text::IndexModMethods module
def +(mod)
return chars(mod) if mod.kind_of?(Numeric)
mod = mod.to_s
if mod =~ /^\s*[+-]?\d/
TkText::IndexString.new(@id + ' + ' + mod)
Tk::Text::IndexString.new(@id + ' + ' + mod)
else
TkText::IndexString.new(@id + ' ' + mod)
Tk::Text::IndexString.new(@id + ' ' + mod)
end
end
@ -66,11 +66,11 @@ class TkTextMark<TkObject
mod = mod.to_s
if mod =~ /^\s*[+-]?\d/
TkText::IndexString.new(@id + ' - ' + mod)
Tk::Text::IndexString.new(@id + ' - ' + mod)
elsif mod =~ /^\s*[-]\s+(\d.*)$/
TkText::IndexString.new(@id + ' - -' + $1)
Tk::Text::IndexString.new(@id + ' - -' + $1)
else
TkText::IndexString.new(@id + ' ' + mod)
Tk::Text::IndexString.new(@id + ' ' + mod)
end
end
=end
@ -133,8 +133,8 @@ class TkTextNamedMark<TkTextMark
end
def initialize(parent, name, index=nil)
#unless parent.kind_of?(TkText)
# fail ArgumentError, "expect TkText for 1st argument"
#unless parent.kind_of?(Tk::Text)
# fail ArgumentError, "expect Tk::Text for 1st argument"
#end
@parent = @t = parent
@tpath = parent.path

Просмотреть файл

@ -7,7 +7,7 @@ require 'tk/tagfont'
class TkTextTag<TkObject
include TkTreatTagFont
include TkText::IndexModMethods
include Tk::Text::IndexModMethods
TTagID_TBL = TkCore::INTERP.create_table
Tk_TextTag_ID = ['tag'.freeze, '00000'.taint].freeze
@ -47,7 +47,7 @@ class TkTextTag<TkObject
end
def id
TkText::IndexString.new(@id)
Tk::Text::IndexString.new(@id)
end
def exist?
@ -60,11 +60,11 @@ class TkTextTag<TkObject
end
def first
TkText::IndexString.new(@id + '.first')
Tk::Text::IndexString.new(@id + '.first')
end
def last
TkText::IndexString.new(@id + '.last')
Tk::Text::IndexString.new(@id + '.last')
end
def add(*indices)
@ -83,7 +83,7 @@ class TkTextTag<TkObject
l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id))
r = []
while key=l.shift
r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)]
r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
end
r
end
@ -92,7 +92,7 @@ class TkTextTag<TkObject
simplelist(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id,
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
TkText::IndexString.new(idx)
Tk::Text::IndexString.new(idx)
}
end
@ -100,7 +100,7 @@ class TkTextTag<TkObject
simplelist(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id,
_get_eval_enc_str(first),
_get_eval_enc_str(last))).collect{|idx|
TkText::IndexString.new(idx)
Tk::Text::IndexString.new(idx)
}
end
@ -248,8 +248,8 @@ class TkTextNamedTag<TkTextTag
end
def initialize(parent, name, *args)
#unless parent.kind_of?(TkText)
# fail ArgumentError, "expect TkText for 1st argument"
#unless parent.kind_of?(Tk::Text)
# fail ArgumentError, "expect Tk::Text for 1st argument"
#end
@parent = @t = parent
@tpath = parent.path

Просмотреть файл

@ -5,11 +5,11 @@ require 'tk'
require 'tk/text'
class TkTextWindow<TkObject
include TkText::IndexModMethods
include Tk::Text::IndexModMethods
def initialize(parent, index, keys = {})
#unless parent.kind_of?(TkText)
# fail ArgumentError, "expect TkText for 1st argument"
#unless parent.kind_of?(Tk::Text)
# fail ArgumentError, "expect Tk::Text for 1st argument"
#end
@t = parent
if index == 'end' || index == :end
@ -55,7 +55,7 @@ class TkTextWindow<TkObject
end
def id
TkText::IndexString.new(_epath(@id))
Tk::Text::IndexString.new(_epath(@id))
end
def mark
@path

Просмотреть файл

@ -258,4 +258,5 @@ class Tk::Toplevel<TkWindow
end
end
TkToplevel = Tk::Toplevel unless Object.const_defined? :TkToplevel
#TkToplevel = Tk::Toplevel unless Object.const_defined? :TkToplevel
Tk.__set_toplevel_aliases__(:Tk, Tk::Toplevel, :TkToplevel)

Просмотреть файл

@ -1,55 +1,67 @@
#
# ttk_selector
#
module Ttk_Selector
@TTK_CLASS_NAMES = {}
######################################
# toplevel classes/modules
module Tk
@TOPLEVEL_ALIAS_TABLE[:Ttk] = {
:TkButton => 'tkextlib/tile/tbutton',
def self.use_ttk_as_default(mode = true)
if mode # Use Ttk widgets
@TTK_CLASS_NAMES.each{|name, status|
eval("::Tk#{name} = ::Tk::#{(status)? 'Tile::': '::'}#{name}",
TOPLEVEL_BINDING)
}
else # Use standard Tk widagets
@TTK_CLASS_NAMES.each{|name, status|
eval("::Tk#{name} = ::Tk::#{name}", TOPLEVEL_BINDING)
}
:TkCheckbutton => 'tkextlib/tile/tcheckbutton',
:TkCheckButton => 'tkextlib/tile/tcheckbutton',
# :TkDialog => 'tkextlib/tile/dialog',
:TkEntry => 'tkextlib/tile/tentry',
:TkCombobox => 'tkextlib/tile/tcombobox',
:TkFrame => 'tkextlib/tile/tframe',
:TkLabel => 'tkextlib/tile/tlabel',
:TkLabelframe => 'tkextlib/tile/tlabelframe',
:TkLabelFrame => 'tkextlib/tile/tlabelframe',
:TkMenubutton => 'tkextlib/tile/tmenubutton',
:TkMenuButton => 'tkextlib/tile/tmenubutton',
:TkNotebook => 'tkextlib/tile/tnotebook',
# :TkPaned => 'tkextlib/tile/tpaned',
:TkPanedwindow => 'tkextlib/tile/tpaned',
:TkPanedWindow => 'tkextlib/tile/tpaned',
:TkProgressbar => 'tkextlib/tile/tprogressbar',
:TkRadiobutton => 'tkextlib/tile/tradiobutton',
:TkRadioButton => 'tkextlib/tile/tradiobutton',
:TkScale => 'tkextlib/tile/tscale',
# :TkProgress => 'tkextlib/tile/tscale',
:TkScrollbar => 'tkextlib/tile/tscrollbar',
:TkXScrollbar => 'tkextlib/tile/tscrollbar',
:TkYScrollbar => 'tkextlib/tile/tscrollbar',
:TkSeparator => 'tkextlib/tile/tseparator',
:TkSizeGrip => 'tkextlib/tile/sizegrip',
:TkSizegrip => 'tkextlib/tile/sizegrip',
# :TkSquare => 'tkextlib/tile/tsquare',
:TkTreeview => 'tkextlib/tile/treeview',
}
@TOPLEVEL_ALIAS_TABLE[:Tile] = @TOPLEVEL_ALIAS_TABLE[:Ttk]
################################################
@TOPLEVEL_ALIAS_SETUP_PROC[:Tile] =
@TOPLEVEL_ALIAS_SETUP_PROC[:Ttk] = proc{|mod|
unless Tk.autoload?(:Tile) || Tk.const_defined?(:Tile)
Object.autoload :Ttk, 'tkextlib/tile'
Tk.autoload :Tile, 'tkextlib/tile'
end
end
def self.add(name)
@TTK_CLASS_NAMES[name] = true
end
def self.remove(name)
@TTK_CLASS_NAMES[name] = false
end
}
end
#--------------------------------------------------------------------
Ttk_Selector.add('Button')
Ttk_Selector.add('Checkbutton')
Ttk_Selector.add('Entry')
##(ttk only) Ttk_Selector.add('Combobox')
##(ttk only) Ttk_Selector.add('Dialog')
Ttk_Selector.add('Frame')
Ttk_Selector.add('Label')
Ttk_Selector.add('Labelframe')
##(std only) Ttk_Selector.add('Listbox')
Ttk_Selector.add('Menubutton')
##(ttk only) Ttk_Selector.add('Notebook')
Ttk_Selector.add('Panedwindow')
##(ttk only) Ttk_Selector.add('Progressbar')
Ttk_Selector.add('Radiobutton')
Ttk_Selector.add('Scale')
##(ttk only) Ttk_Selector.add('Progress')
Ttk_Selector.add('Scrollbar')
Ttk_Selector.add('XScrollbar')
Ttk_Selector.add('YScrollbar')
##(ttk only) Ttk_Selector.add('Separator')
##(ttk only) Ttk_Selector.add('SizeGrip')
##(ttk only) Ttk_Selector.add('Square')
##(ttk only) Ttk_Selector.add('Treeview')
#--------------------------------------------------------------------

Просмотреть файл

@ -20,7 +20,7 @@ class TkVariable
#TkCore::INTERP.add_tk_procs('rb_var', 'args',
# "ruby [format \"TkVariable.callback %%Q!%s!\" $args]")
TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL')
TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL')
if {[set st [catch {eval {ruby_cmd TkVariable callback} $args} ret]] != 0} {
set idx [string first "\n\n" $ret]
if {$idx > 0} {

Просмотреть файл

@ -9,7 +9,8 @@ require 'tk'
module Tk::WinDDE
end
TkWinDDE = Tk::WinDDE
#TkWinDDE = Tk::WinDDE
Tk.__set_toplevel_aliases__(:Tk, Tk::WinDDE, :TkWinDDE)
module Tk::WinDDE
extend Tk
@ -91,7 +92,8 @@ end
module Tk::WinRegistry
end
TkWinRegistry = Tk::WinRegistry
#TkWinRegistry = Tk::WinRegistry
Tk.__set_toplevel_aliases__(:Tk, Tk::WinRegistry, :TkWinRegistry)
module Tk::WinRegistry
extend Tk

Просмотреть файл

@ -19,7 +19,7 @@ module Tk::BLT
class Shield < TkWindow
def self.shield_path(win)
win = window(win) unless win.kind_of?(TkWindow)
if win.kind_of?(TkToplevel)
if win.kind_of?(Tk::Toplevel)
win.path + '._Busy'
else
win.path + '_Busy'

Просмотреть файл

@ -14,7 +14,7 @@ module Tk::BLT
end
end
class TkCanvas
class Tk::Canvas
alias __BLT_EPS_item_strval_optkeys __item_strval_optkeys
def __item_strval_optkeys(id)
__BLT_EPS_item_strval_optkeys(id) + [

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class Button < TkButton
class Button < Tk::Button
TkCommandNames = ['::blt::tile::button'.freeze].freeze
end
end

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class CheckButton < TkCheckButton
class CheckButton < Tk::CheckButton
TkCommandNames = ['::blt::tile::checkbutton'.freeze].freeze
end
Checkbutton = CheckButton

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class Frame < TkFrame
class Frame < Tk::Frame
TkCommandNames = ['::blt::tile::frame'.freeze].freeze
end
end

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class Label < TkLabel
class Label < Tk::Label
TkCommandNames = ['::blt::tile::label'.freeze].freeze
end
end

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class RadioButton < TkRadioButton
class RadioButton < Tk::RadioButton
TkCommandNames = ['::blt::tile::radiobutton'.freeze].freeze
end
Radiobutton = RadioButton

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class Scrollbar < TkScrollbar
class Scrollbar < Tk::Scrollbar
TkCommandNames = ['::blt::tile::scrollbar'.freeze].freeze
end
end

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb'
module Tk::BLT
module Tile
class Toplevel < TkToplevel
class Toplevel < Tk::Toplevel
TkCommandNames = ['::blt::tile::toplevel'.freeze].freeze
end
end

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/bwidget.rb'
module Tk
module BWidget
class Button < TkButton
class Button < Tk::Button
end
end
end

Просмотреть файл

@ -31,7 +31,7 @@ class Tk::BWidget::ButtonBox
name = tagOrId[:name]
return index(name) unless name.empty?
end
if tagOrId.kind_of?(TkButton)
if tagOrId.kind_of?(Tk::Button)
return index(tagOrId[:text])
end
# index(tagOrId.to_s)
@ -54,7 +54,7 @@ class Tk::BWidget::ButtonBox
name = idx[:name]
idx = name unless name.empty?
end
if idx.kind_of?(TkButton)
if idx.kind_of?(Tk::Button)
idx = idx[:text]
end
number(tk_send('index', idx.to_s))

Просмотреть файл

@ -103,7 +103,7 @@ class Tk::BWidget::Dialog
name = tagOrId[:name]
return index(name) unless name.empty?
end
if tagOrId.kind_of?(TkButton)
if tagOrId.kind_of?(Tk::Button)
return index(tagOrId[:text])
end
# index(tagOrId.to_s)

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/bwidget.rb'
module Tk
module BWidget
class Entry < TkEntry
class Entry < Tk::Entry
end
end
end

Просмотреть файл

@ -9,7 +9,7 @@ require 'tkextlib/bwidget.rb'
module Tk
module BWidget
class Label < TkLabel
class Label < Tk::Label
end
end
end

Просмотреть файл

@ -11,7 +11,7 @@ require 'tkextlib/bwidget/entry'
module Tk
module BWidget
class LabelEntry < TkEntry
class LabelEntry < Tk::Entry
end
end
end

Просмотреть файл

@ -10,7 +10,7 @@ require 'tkextlib/bwidget/entry'
module Tk
module BWidget
class SpinBox < TkEntry
class SpinBox < Tk::Entry
end
end
end

Просмотреть файл

@ -156,7 +156,7 @@ module Tk
master = master.to_s
end
return id unless ComponentID_TBL.key?(master)
(ComponentID_TBL.key?(id))? ComponentID_TBL[master][id]: id
(ComponentID_TBL[master].key?(id))? ComponentID_TBL[master][id]: id
end
def self.new(master, component=nil)

Просмотреть файл

@ -85,12 +85,24 @@ class Tk::Iwidgets::Checkbox
self
end
def get(idx)
simplelist(tk_call(@path, 'get', index(idx))).collect{|id|
def get_tags
simplelist(tk_call_without_enc(@path, 'get'))
end
def get_objs
simplelist(tk_call_without_enc(@path, 'get')).collect{|id|
Tk::Itk::Component.id2obj(self, id)
}
end
def get(idx=nil)
if idx
bool(tk_call_without_enc(@path, 'get', index(idx)))
else
get_tags
end
end
def index(idx)
number(tk_call(@path, 'index', tagid(idx)))
end

Просмотреть файл

@ -207,7 +207,7 @@ class Tk::Iwidgets::Hierarchy
self
end
# based on TkText widget
# based on Tk::Text widget
def bbox(index)
list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))

Просмотреть файл

@ -146,7 +146,12 @@ class Tk::Iwidgets::Notebook
def view(*idxs)
if idxs.size == 0
window(tk_send_without_enc('view'))
idx = num_or_str(tk_send_without_enc('view'))
if idx.kind_of?(Fixnum) && idx < 0
nil
else
idx
end
else
tk_send_without_enc('view', *idxs)
self
@ -160,8 +165,8 @@ class Tk::Iwidgets::Notebook
end
alias xview_moveto view_moveto
alias yview_moveto view_moveto
def view_scroll(*idxs)
view('scroll', *idxs)
def view_scroll(index, what='pages')
view('scroll', index, what)
end
alias xview_scroll view_scroll
alias yview_scroll view_scroll

Просмотреть файл

@ -85,10 +85,13 @@ class Tk::Iwidgets::Radiobox
self
end
def get(idx)
simplelist(tk_call(@path, 'get', index(idx))).collect{|id|
Tk::Itk::Component.id2obj(self, id)
}
def get_tag
((tag = tk_call_without_enc(@path, 'get')).empty?)? nil: tag
end
alias get get_tag
def get_obj
(tag = get_tag)? Tk::Itk::Component.id2obj(self, tag): nil
end
def index(idx)

Просмотреть файл

@ -59,7 +59,7 @@ class Tk::Iwidgets::Selectionbox
self
end
# based on TkListbox ( and TkTextWin )
# based on Tk::Listbox ( and TkTextWin )
def curselection
list(tk_send_without_enc('curselection'))
end

Просмотреть файл

@ -49,7 +49,7 @@ class Tk::Iwidgets::Selectiondialog
self
end
# based on TkListbox ( and TkTextWin )
# based on Tk::Listbox ( and TkTextWin )
def curselection
list(tk_send_without_enc('curselection'))
end

Просмотреть файл

@ -116,6 +116,11 @@ class Tk::Iwidgets::Tabnotebook
self
end
def show_tab(idx)
@tabset.show_tab(idx)
self
end
def scrollcommand(cmd=Proc.new)
configure_cmd 'scrollcommand', cmd
self
@ -147,7 +152,12 @@ class Tk::Iwidgets::Tabnotebook
def view(*index)
if index.size == 0
window(tk_send_without_enc('view'))
idx = num_or_str(tk_send_without_enc('view'))
if idx.kind_of?(Fixnum) && idx < 0
nil
else
idx
end
else
tk_send_without_enc('view', *index)
self
@ -161,8 +171,8 @@ class Tk::Iwidgets::Tabnotebook
end
alias xview_moveto view_moveto
alias yview_moveto view_moveto
def view_scroll(*index)
view('scroll', *index)
def view_scroll(index, what='pages')
view('scroll', index, what)
end
alias xview_scroll view_scroll
alias yview_scroll view_scroll

Просмотреть файл

@ -96,4 +96,48 @@ class Tk::Iwidgets::Tabset
tk_call(@path, 'select', index(idx))
self
end
def show_tab(idx)
if index(idx) == 0
self.start = 0
return
end
reutrn unless @canvas ||= self.winfo_children[0]
delta = 1 if (delta = cget(:gap)) == 'overlap' ||
(delta = self.winfo_pixels(delta) + 1) <= 0
case cget(:tabpos)
when 's', 'n'
if (head = tabcget(idx, :left)) < 0
self.start -= head
return
end
tabs_size = @canvas.winfo_width
tab_start, tab_end = @canvas .
find_overlapping(head, 0, head + delta, @canvas.winfo_height) .
find_all{|id| @canvas.itemtype(id) == TkcPolygon} .
map!{|id| bbox = @canvas.bbox(id); [bbox[0], bbox[2]]} . max
when 'e', 'w'
if (head = tabcget(idx, :top)) < 0
self.start -= head
return
end
tabs_size = @canvas.winfo_height
tab_start, tab_end = @canvas .
find_overlapping(0, head, @canvas.winfo_width, head + delta) .
find_all{|id| @canvas.itemtype(id) == TkcPolygon} .
map!{|id| bbox = @canvas.bbox(id); [bbox[1], bbox[3]]} . max
end
if (size = tab_end - tab_start + 1) > tabs_size
self.start -= tab_start
elsif head + size > tabs_size
self.start -= head + size - tabs_size
end
self
end
end

Просмотреть файл

@ -108,7 +108,7 @@ module Tk
end
end
class TkScrollbar
class Tk::Scrollbar
def autoscroll
# Arranges for the already existing scrollbar to be mapped
# and unmapped as needed.

Просмотреть файл

@ -15,7 +15,7 @@ TkPackage.require('ctext')
module Tk
module Tcllib
class CText < TkText
class CText < Tk::Text
PACKAGE_NAME = 'ctext'.freeze
def self.package_name
PACKAGE_NAME

Просмотреть файл

@ -24,7 +24,7 @@ TkPackage.require('datefield')
module Tk
module Tcllib
class Datefield < TkEntry
class Datefield < Tk::Entry
PACKAGE_NAME = 'datefield'.freeze
def self.package_name
PACKAGE_NAME

Просмотреть файл

@ -18,7 +18,7 @@ TkPackage.require('ipentry')
module Tk
module Tcllib
class IP_Entry < TkEntry
class IP_Entry < Tk::Entry
PACKAGE_NAME = 'ipentry'.freeze
def self.package_name
PACKAGE_NAME

Просмотреть файл

@ -225,7 +225,7 @@ module Tk::Tcllib::Plotchart
end
############################
class XYPlot < TkCanvas
class XYPlot < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -247,7 +247,7 @@ module Tk::Tcllib::Plotchart
@xaxis = args.shift
@yaxis = args.shift
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget
@ -337,7 +337,7 @@ module Tk::Tcllib::Plotchart
end
############################
class PolarPlot < TkCanvas
class PolarPlot < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -356,7 +356,7 @@ module Tk::Tcllib::Plotchart
@radius_data = args.shift
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget
@ -395,7 +395,7 @@ module Tk::Tcllib::Plotchart
Polarplot = PolarPlot
############################
class IsometricPlot < TkCanvas
class IsometricPlot < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -430,7 +430,7 @@ module Tk::Tcllib::Plotchart
@stepsize = args.shift
end
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget
@ -475,7 +475,7 @@ module Tk::Tcllib::Plotchart
Isometricplot = IsometricPlot
############################
class Plot3D < TkCanvas
class Plot3D < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -500,7 +500,7 @@ module Tk::Tcllib::Plotchart
@yaxis = args.shift
@zaxis = args.shift
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget
@ -557,7 +557,7 @@ module Tk::Tcllib::Plotchart
end
############################
class Piechart < TkCanvas
class Piechart < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -566,7 +566,7 @@ module Tk::Tcllib::Plotchart
].freeze
def initialize(*args) # args := ([parent] [, keys])
if args[0].kind_of?(TkCanvas)
if args[0].kind_of?(Tk::Canvas)
parent = args.shift
@path = parent.path
else
@ -588,7 +588,7 @@ module Tk::Tcllib::Plotchart
end
############################
class Barchart < TkCanvas
class Barchart < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -626,7 +626,7 @@ module Tk::Tcllib::Plotchart
@series_size = args.shift
end
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget
@ -672,7 +672,7 @@ module Tk::Tcllib::Plotchart
end
############################
class Timechart < TkCanvas
class Timechart < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -699,7 +699,7 @@ module Tk::Tcllib::Plotchart
@time_end = args.shift
@items = args.shift
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget
@ -733,7 +733,7 @@ module Tk::Tcllib::Plotchart
end
############################
class Gnattchart < TkCanvas
class Gnattchart < Tk::Canvas
include ChartMethod
TkCommandNames = [
@ -772,7 +772,7 @@ module Tk::Tcllib::Plotchart
@text_width = None
end
if parent.kind_of?(TkCanvas)
if parent.kind_of?(Tk::Canvas)
@path = parent.path
else
super(parent, *args) # create canvas widget

Просмотреть файл

@ -4,6 +4,7 @@
#
require 'tk'
require 'tk/ttk_selector'
# call setup script for general 'tkextlib' libraries
require 'tkextlib/setup.rb'
@ -262,6 +263,9 @@ module Tk
autoload :TSquare, 'tkextlib/tile/tsquare'
autoload :Square, 'tkextlib/tile/tsquare'
autoload :SizeGrip, 'tkextlib/tile/sizegrip'
autoload :Sizegrip, 'tkextlib/tile/sizegrip'
autoload :Treeview, 'tkextlib/tile/treeview'
autoload :Style, 'tkextlib/tile/style'

Просмотреть файл

@ -9,9 +9,13 @@ module Tk
module Tile
class SizeGrip < TkWindow
end
Sizegrip = SizeGrip
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Sizegrip, :TkSizegrip, :TkSizeGrip)
class Tk::Tile::SizeGrip < TkWindow
include Tk::Tile::TileWidget

Просмотреть файл

@ -52,11 +52,29 @@ class << Tk::Tile::Style
style = '.' unless style
if keys && keys != None
tk_call(TkCommandNames[0], 'map', style, *hash_kv(keys))
if keys.kind_of?(Hash)
tk_call(TkCommandNames[0], 'map', style, *hash_kv(keys))
else
simplelist(tk_call(TkCommandNames[0], 'map', style, '-' << keys.to_s))
end
else
tk_call(TkCommandNames[0], 'map', style)
ret = {}
Hash[*(simplelist(tk_call(TkCommandNames[0], 'map', style)))].each{|k, v|
ret[k[1..-1]] = list(v)
}
ret
end
end
alias map_configure map
def map_configinfo(style=nil, key=None)
style = '.' unless style
map(style, key)
end
def map_default_configinfo(key=None)
map('.', key)
end
def lookup(style, opt, state=None, fallback_value=None)
tk_call(TkCommandNames[0], 'lookup', style,
@ -92,16 +110,20 @@ class << Tk::Tile::Style
end
def theme_create(name, keys=nil)
name = name.to_s
if keys && keys != None
tk_call(TkCommandNames[0], 'theme', 'create', name, *hash_kv(keys))
else
tk_call(TkCommandNames[0], 'theme', 'create', name)
end
name
end
def theme_settings(name, cmd=nil, &b)
name = name.to_s
cmd = Proc.new(&b) if !cmd && b
tk_call(TkCommandNames[0], 'theme', 'settings', name, cmd)
name
end
def theme_names()
@ -109,6 +131,8 @@ class << Tk::Tile::Style
end
def theme_use(name)
name = name.to_s
tk_call(TkCommandNames[0], 'theme', 'use', name)
name
end
end

Просмотреть файл

@ -7,13 +7,16 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TButton < TkButton
class TButton < Tk::Button
end
Button = TButton
end
end
class Tk::Tile::TButton < TkButton
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Button, :TkButton)
class Tk::Tile::TButton < Tk::Button
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -7,7 +7,7 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TCheckButton < TkCheckButton
class TCheckButton < Tk::CheckButton
end
TCheckbutton = TCheckButton
CheckButton = TCheckButton
@ -15,7 +15,11 @@ module Tk
end
end
class Tk::Tile::TCheckButton < TkCheckButton
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Checkbutton,
:TkCheckbutton, :TkCheckButton)
class Tk::Tile::TCheckButton < Tk::CheckButton
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -13,6 +13,9 @@ module Tk
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Combobox, :TkCombobox)
class Tk::Tile::TCombobox < Tk::Tile::TEntry
include Tk::Tile::TileWidget

Просмотреть файл

@ -7,13 +7,16 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TEntry < TkEntry
class TEntry < Tk::Entry
end
Entry = TEntry
end
end
class Tk::Tile::TEntry < TkEntry
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Entry, :TkEntry)
class Tk::Tile::TEntry < Tk::Entry
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -7,13 +7,16 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TFrame < TkFrame
class TFrame < Tk::Frame
end
Frame = TFrame
end
end
class Tk::Tile::TFrame < TkFrame
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Frame, :TkFrame)
class Tk::Tile::TFrame < Tk::Frame
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -7,13 +7,16 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TLabel < TkLabel
class TLabel < Tk::Label
end
Label = TLabel
end
end
class Tk::Tile::TLabel < TkLabel
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Label, :TkLabel)
class Tk::Tile::TLabel < Tk::Label
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -9,10 +9,16 @@ module Tk
module Tile
class TLabelframe < Tk::Tile::TFrame
end
Labelframe = TLabelframe
TLabelFrame = TLabelframe
Labelframe = TLabelframe
LabelFrame = TLabelframe
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Labelframe,
:TkLabelframe, :TkLabelFrame)
class Tk::Tile::TLabelframe < Tk::Tile::TFrame
include Tk::Tile::TileWidget

Просмотреть файл

@ -7,13 +7,19 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TMenubutton < TkMenubutton
class TMenubutton < Tk::Menubutton
end
Menubutton = TMenubutton
TMenuButton = TMenubutton
Menubutton = TMenubutton
MenuButton = TMenubutton
end
end
class Tk::Tile::TMenubutton < TkMenubutton
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Menubutton,
:TkMenubutton, :TkMenuButton)
class Tk::Tile::TMenubutton < Tk::Menubutton
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -13,6 +13,9 @@ module Tk
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Notebook, :TkNotebook)
class Tk::Tile::TNotebook < TkWindow
################################
include TkItemConfigMethod

Просмотреть файл

@ -13,6 +13,10 @@ module Tk
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Panedwindow,
:TkPanedwindow, :TkPanedWindow)
class Tk::Tile::TPaned < TkWindow
include Tk::Tile::TileWidget

Просмотреть файл

@ -13,6 +13,9 @@ module Tk
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Progressbar, :TkProgressbar)
class Tk::Tile::TProgressbar
include Tk::Tile::TileWidget

Просмотреть файл

@ -7,7 +7,7 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TRadioButton < TkRadioButton
class TRadioButton < Tk::RadioButton
end
TRadiobutton = TRadioButton
RadioButton = TRadioButton
@ -15,7 +15,11 @@ module Tk
end
end
class Tk::Tile::TRadioButton < TkRadioButton
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Radiobutton,
:TkRadiobutton, :TkRadioButton)
class Tk::Tile::TRadioButton < Tk::RadioButton
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -12,6 +12,9 @@ module Tk
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Treeview, :TkTreeview)
module Tk::Tile::TreeviewConfig
include TkItemConfigMethod

Просмотреть файл

@ -7,7 +7,7 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TScale < TkScale
class TScale < Tk::Scale
end
Scale = TScale
@ -17,7 +17,10 @@ module Tk
end
end
class Tk::Tile::TScale < TkScale
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Scale, :TkScale)
class Tk::Tile::TScale < Tk::Scale
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE

Просмотреть файл

@ -7,13 +7,16 @@ require 'tkextlib/tile.rb'
module Tk
module Tile
class TScrollbar < TkScrollbar
class TScrollbar < Tk::Scrollbar
end
Scrollbar = TScrollbar
end
end
class Tk::Tile::TScrollbar < TkScrollbar
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Scrollbar, :TkScrollbar)
class Tk::Tile::TScrollbar < Tk::Scrollbar
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE
@ -47,3 +50,5 @@ class Tk::Tile::YScrollbar < Tk::Tile::TScrollbar
private :create_self
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::XScrollbar, :TkXScrollbar)
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::YScrollbar, :TkYScrollbar)

Просмотреть файл

@ -13,6 +13,9 @@ module Tk
end
end
Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Separator, :TkSeparator)
class Tk::Tile::TSeparator < TkWindow
include Tk::Tile::TileWidget

Просмотреть файл

@ -39,7 +39,7 @@ class TkWindow
end
end
class TkRoot
class Tk::Root
undef tktrans_set_image, tktrans_get_image
def tktrans_set_image(img)
@ -51,7 +51,7 @@ class TkRoot
end
end
class TkToplevel
class Tk::Toplevel
undef tktrans_set_image, tktrans_get_image
def tktrans_set_image(img)

Просмотреть файл

@ -17,6 +17,6 @@ end
module Tk
module Vu
Spinbox = TkSpinbox
Spinbox = Tk::Spinbox
end
end

Просмотреть файл

@ -4,6 +4,18 @@
# Demonstration of custom widget styles.
#
set tile_ver [package require tile]
if {[package vcompare $tile_ver 0.8] >= 0} {
set style ::ttk::style
} {
set style style
}
if {[package vcompare $tile_ver 0.7] >= 0} {
set conf_subcmd configure
} {
set conf_subcmd default
}
#
# ~ BACKGROUND
#
@ -42,7 +54,8 @@
# style; see demo.tcl.)
#
style theme settings "step" {
#$style theme settings "step" {
$style theme settings "alt" {
#
# First, we use [style layout] to define what elements to
@ -51,7 +64,7 @@ style theme settings "step" {
# and a label. (See also the TScrollbar layout definition
# in demos/blue.tcl for a more complicated layout spec.)
#
style layout Toolbutton {
$style layout Toolbutton {
Toolbutton.background
Toolbutton.border -children {
Toolbutton.padding -children {
@ -68,7 +81,7 @@ style theme settings "step" {
# For many options (like -background), the defaults
# inherited from the parent style are sufficient.
#
style default Toolbutton -width 0 -padding 1 -relief flat -borderwidth 2
$style $conf_subcmd Toolbutton -width 0 -padding 1 -relief flat -borderwidth 2
#
# Finally, use [style map] to specify state-specific
@ -78,7 +91,7 @@ style theme settings "step" {
# over the widget). Each state-value pair is checked
# in order, and the first matching state takes precedence.
#
style map Toolbutton -relief {
$style map Toolbutton -relief {
disabled flat
selected sunken
pressed sunken
@ -93,19 +106,19 @@ style theme settings "step" {
# design decisions from an aesthetic standpoint.)
#
if {![catch {package require tile::theme::blue}]} {
style theme settings "blue" {
$style theme settings "blue" {
#
# Default values:
#
style default Toolbutton \
$style $conf_subcmd Toolbutton \
-width 0 -relief flat -borderwidth 2 \
-background #6699CC -foreground #000000 ;
#
# Configure state-specific values for -relief, as before:
#
style map Toolbutton -relief {
$style map Toolbutton -relief {
disabled flat
selected sunken
pressed sunken
@ -116,8 +129,8 @@ style theme settings "blue" {
# Adjust the -padding at the same time, to enhance
# the raised/sunken illusion:
#
style default Toolbutton -padding 4
style map Toolbutton -padding {
$style $conf_subcmd Toolbutton -padding 4
$style map Toolbutton -padding {
disabled {4}
selected {6 6 2 2}
pressed {6 6 2 2}
@ -128,7 +141,7 @@ style theme settings "blue" {
# ... and change the foreground and background colors
# when the mouse cursor is over the widget:
#
style map Toolbutton -background {
$style map Toolbutton -background {
active #008800
} -foreground {
active #FFFFFF