class TkWidgetFactory
require ‘tkextlib/tile’ Tk.tk_call “eval”,“ttk::setTheme clam” Tk::Tile::Style.theme_use(‘clam’)
Public Class Methods
new()
click to toggle source
# File lib/a-tkcommons.rb, line 2218 def initialize if Arcadia.conf('tile.theme') @use_tile = true begin require 'tkextlib/tile' if Tk::Tile::Style.theme_names.include?(Arcadia.conf('tile.theme')) Tk::Tile::Style.theme_use(Arcadia.conf('tile.theme')) end rescue @use_tile = false end initialize_tile_widgets if @use_tile end end
Public Instance Methods
combobox(_parent,_args={}, &b)
click to toggle source
# File lib/a-tkcommons.rb, line 2647 def combobox(_parent,_args={}, &b) begin if @use_tile obj = Tk::Tile::Combobox.new(_parent,{:style=>"Arcadia.TCombobox"}.update(_args), &b) else obj = Tk::BWidget::ComboBox.new(_parent, Arcadia.style('combobox').update(_args), &b) end class << obj include WidgetEnhancer end return obj rescue RuntimeError => e Arcadia.runtime_error(e) return nil end end
entry(_parent,_args={}, &b)
click to toggle source
# File lib/a-tkcommons.rb, line 2545 def entry(_parent,_args={}, &b) begin if @use_tile obj = Tk::Tile::TEntry.new(_parent,{:style=>"Arcadia.TEntry"}.update(_args), &b) else obj = TkEntry.new(_parent,Arcadia.style('edit').update(_args), &b) end class << obj include WidgetEnhancer end return obj rescue RuntimeError => e Arcadia.runtime_error(e) return nil end end
frame(_parent,_args={}, &b)
click to toggle source
# File lib/a-tkcommons.rb, line 2510 def frame(_parent,_args={}, &b) begin if @use_tile obj = Tk::Tile::TFrame.new(_parent,{:style=>"Arcadia.TFrame"}.update(_args), &b) else obj = TkFrame.new(_parent,Arcadia.style('panel').update(_args), &b) end class << obj include WidgetEnhancer end return obj rescue RuntimeError => e Arcadia.runtime_error(e) return nil end end
initialize_tile_widgets()
click to toggle source
# File lib/a-tkcommons.rb, line 2233 def initialize_tile_widgets #Widget state flags include: #active,disabled,focus,pressed,selected,background,readonly,alternate,invalid,hover # Workaround for #1100117: # Actually, on Aqua we probably shouldn't stipple images in # disabled buttons even if it did work... # don't work with Cocoa Tk.tk_call("eval","ttk::style configure . -stipple {}") if OS.mac? #TScrollbar Tk::Tile::Style.configure("Arcadia.TScrollbar", Arcadia.style('scrollbar')) Tk::Tile::Style.map("Arcadia.TScrollbar", :background=>[:pressed, Arcadia.style('scrollbar')['activebackground'], :disabled, Arcadia.style('scrollbar')['background'], :active, Arcadia.style('scrollbar')['activebackground']], :arrowcolor=>[:pressed, Arcadia.style('scrollbar')['background'], :disabled, Arcadia.style('scrollbar')['highlightbackground'], :active, Arcadia.style('scrollbar')['background']], :relief=>[:pressed, :sunken]) Tk::Tile::Style.layout(Tk::Tile.style('Vertical', "Arcadia.TScrollbar"), ["Scrollbar.trough",{:sticky=>"nsew", :children=>[ "Scrollbar.uparrow",{:side=>:top, :sticky=>"we"}, "Scrollbar.downarrow", {:side=>:bottom, :sticky=>"we"}, "Scrollbar.thumb", {:sticky=>"nswe",:side=>:top, :border =>1, :expand=>true}]}]) Tk::Tile::Style.layout(Tk::Tile.style('Horizontal', "Arcadia.TScrollbar"), ['Scrollbar.trough', {:children=>[ 'Scrollbar.leftarrow', {:side=>:left}, 'Scrollbar.rightarrow', {:side=>:right}, 'Scrollbar.thumb', {:side=>:left, :expand=>true}]}]) #TFrame #Tk::Tile::Style.configure(Tk::Tile::TFrame, Arcadia.style('panel')) #TPaned #Tk::Tile::Style.configure(Tk::Tile::TPaned, Arcadia.style('panel')) #TEntry #Tk::Tile::Style.configure(Tk::Tile::TEntry, Arcadia.style('edit')) #TCombobox #Tk::Tile::Style.configure(Tk::Tile::TCombobox, Arcadia.style('combobox')) #TLabel #Tk::Tile::Style.configure(Tk::Tile::TLabel, Arcadia.style('label')) #Treeview #Tk::Tile::Style.configure(Tk::Tile::Treeview, Arcadia.style('treepanel')) #TMenubutton Tk::Tile::Style.element_create('Arcadia.Menubutton.indicator', :image, Arcadia.image_res(DROP_DOWN_ARROW_GIF), :sticky=>:w) Tk::Tile::Style.configure("Arcadia.TMenubutton", Arcadia.style('menubutton').update( 'padding'=>"0 0 0 0", 'width'=>0 ) ) Tk::Tile::Style.map("Arcadia.TMenubutton", :background=>[:pressed, Arcadia.style('menubutton')['activebackground'], :disabled, Arcadia.style('menubutton')['background'], :active, Arcadia.style('menubutton')['activebackground']], :arrowcolor=>[:pressed, Arcadia.style('menubutton')['background'], :disabled, Arcadia.style('menubutton')['highlightbackground'], :active, Arcadia.style('menubutton')['background']], :relief=>[:pressed, :flat]) Tk::Tile::Style.layout('Arcadia.TMenubutton', [ 'Menubutton.border', {:children=>[ 'Menubutton.padding', {:children=>[ 'Arcadia.Menubutton.indicator', {:side=>:right}, 'Menubutton.focus', {:side=>:left, :children=>['Menubutton.label']} ]} ]} ]) #Title.TMenubutton # Tk::Tile::Style.configure("Arcadia.Title.TMenubutton", Arcadia.style('titlelabel').update( 'padding'=>"0 0 0 0", 'font'=>Arcadia.conf('titlelabel.font'), 'width'=>0, 'foreground' => Arcadia.conf('titlelabel.foreground'), ) ) Tk::Tile::Style.map("Arcadia.Title.TMenubutton", :background=>[:pressed, Arcadia.style('titlelabel')['activebackground'], :disabled, Arcadia.style('titlelabel')['background'], :active, Arcadia.style('titlelabel')['activebackground']], :arrowcolor=>[:pressed, Arcadia.style('titlelabel')['background'], :disabled, Arcadia.style('titlelabel')['highlightbackground'], :active, Arcadia.style('titlelabel')['background']], :relief=>[:pressed, :flat]) Tk::Tile::Style.layout('Arcadia.Title.TMenubutton', [ 'Menubutton.border', {:children=>[ 'Menubutton.padding', {:children=>[ 'Arcadia.Menubutton.indicator', {:side=>:right}, 'Menubutton.focus', {:side=>:left, :children=>['Menubutton.label']} ]} ]} ]) #Title.Context.TMenubutton # Tk::Tile::Style.configure("Arcadia.Title.Context.TMenubutton", Arcadia.style('titlelabel').update( 'padding'=>"0 0 0 0", 'font'=>"#{Arcadia.conf('titlelabel.font')} italic", 'width'=>0, 'foreground' => Arcadia.conf('titlecontext.foreground'), ) ) Tk::Tile::Style.map("Arcadia.Title.Context.TMenubutton", :background=>[:pressed, Arcadia.style('titlelabel')['activebackground'], :disabled, Arcadia.style('titlelabel')['background'], :active, Arcadia.style('titlelabel')['activebackground']], :arrowcolor=>[:pressed, Arcadia.style('titlelabel')['background'], :disabled, Arcadia.style('titlelabel')['highlightbackground'], :active, Arcadia.style('titlelabel')['background']], :relief=>[:pressed, :flat]) Tk::Tile::Style.layout('Arcadia.Title.Context.TMenubutton', [ 'Menubutton.border', {:children=>[ 'Menubutton.padding', {:children=>[ 'Arcadia.Menubutton.indicator', {:side=>:right}, 'Menubutton.focus', {:side=>:left, :children=>['Menubutton.label']} ]} ]} ]) #TCheckbutton, Tk::Tile::Style.element_create('Arcadia.Checkbutton.indicator', :image, Arcadia.image_res(CHECKBOX_0_DARK_GIF), :map=>[ [:pressed, :selected],Arcadia.image_res(CHECKBOX_1_DARK_GIF), :pressed, Arcadia.image_res(CHECKBOX_0_DARK_GIF), [:active, :selected], Arcadia.image_res(CHECKBOX_2_DARK_GIF), :active, Arcadia.image_res(CHECKBOX_0_DARK_GIF), :selected, Arcadia.image_res(CHECKBOX_1_DARK_GIF), ], :sticky=>:w) Tk::Tile::Style.configure("Arcadia.TCheckbutton", Arcadia.style('checkbox').update( 'padding'=>"0 0 0 0", 'width'=>0 ) ) Tk::Tile::Style.layout('Arcadia.TCheckbutton', [ 'Checkbutton.background', # this is not needed in tile 0.5 or later 'Checkbutton.border', {:children=>[ 'Checkbutton.padding', {:children=>[ 'Arcadia.Checkbutton.indicator', {:side=>:left}, 'Checkbutton.focus', {:side=>:left, :children=>[ 'Checkbutton.label' ]} ]} ]} ]) Tk::Tile::Style.configure("Arcadia.Title.TCheckbutton", Arcadia.style('titlelabel').update( 'padding'=>"0 0 0 0", 'width'=>0 ) ) Tk::Tile::Style.layout('Arcadia.Title.TCheckbutton', [ 'Checkbutton.background', # this is not needed in tile 0.5 or later 'Checkbutton.border', {:children=>[ 'Checkbutton.padding', {:children=>[ 'Arcadia.Checkbutton.indicator', {:side=>:left}, 'Checkbutton.focus', {:side=>:left, :children=>[ 'Checkbutton.label' ]} ]} ]} ]) #Combobox Tk::Tile::Style.element_create('Arcadia.Combobox.indicator', :image, Arcadia.image_res(DROP_DOWN_ARROW_GIF), :sticky=>:w) Tk::Tile::Style.configure("Arcadia.TCombobox", Arcadia.style('combobox').update( 'padding'=>"0 0 0 0", 'width'=>0 # 'borderwidth'=>1, # 'relief'=>'groove' ) ) # Tk::Tile::Style.map("Arcadia.TCombobox", # :relief=>[:pressed, :flat]) Tk::Tile::Style.layout('Arcadia.TCombobox', [ 'Combobox.border', {:children=>[ 'Combobox.padding', {:children=>[ 'Arcadia.Combobox.indicator', {:side=>:right}, 'Combobox.focus', {:side=>:left, :children=>['Combobox.label']} ]} ]} ]) #TFrame Tk::Tile::Style.configure("Arcadia.TFrame", Arcadia.style('panel')) #Tk::Tile::Style.configure(Tk::Tile::TLabel, Arcadia.style('label')) #TLabel Tk::Tile::Style.configure("Arcadia.TLabel", Arcadia.style('label')) #TEntry Tk::Tile::Style.layout("Arcadia.TEntry", [ 'Entry.border', { :sticky => 'nswe', :border => 1, :children => ['Entry.padding', { :sticky => 'nswe', :children => [ 'Entry.textarea', { :sticky => 'nswe' } ] }] } ]) Tk::Tile::Style.configure("Arcadia.TEntry", Arcadia.style('edit').update( 'fieldbackground' => Arcadia.style('edit')['background'], 'selectbackground' => 'red', 'selectforeground' => 'yellow' ) ) #TText Tk::Tile::Style.configure("Arcadia.TText", Arcadia.style('text')) #TButton Tk::Tile::Style.configure("Arcadia.TButton", Arcadia.style('button').update( 'padding'=>"0 0 0 0" # , # 'borderwidth'=>1, # 'relief'=>'groove' ) ) Tk::Tile::Style.map("Arcadia.TButton", :background=>[:pressed, Arcadia.style('button')['activebackground'], :disabled, Arcadia.style('button')['background'], :active, Arcadia.style('button')['activebackground']], :foreground=>[:pressed, Arcadia.style('button')['activeforeground'], :disabled, Arcadia.style('button')['foreground'], :active, Arcadia.style('button')['activeforeground']], :relief=>[:pressed, :sunken]) #Tool.TButton Tk::Tile::Style.configure("Arcadia.Tool.TButton", Arcadia.style('toolbarbutton').update( 'padding'=>"0 0 0 0", 'anchor'=>'w' ) ) Tk::Tile::Style.map("Arcadia.Tool.TButton", :background=>[:pressed, Arcadia.style('button')['activebackground'], :disabled, Arcadia.style('toolbarbutton')['background'], :active, Arcadia.style('toolbarbutton')['activebackground']], :arrowcolor=>[:pressed, Arcadia.style('button')['background'], :disabled, Arcadia.style('toolbarbutton')['highlightbackground'], :active, Arcadia.style('toolbarbutton')['background']], :relief=>[:pressed, :sunken]) #Title.Tool.TButton Tk::Tile::Style.configure("Arcadia.Title.Tool.TButton", Arcadia.style('titletoolbarbutton').update( 'padding'=>"0 0 0 0" ) ) Tk::Tile::Style.map("Arcadia.Title.Tool.TButton", :background=>[:pressed, Arcadia.style('button')['activebackground'], :disabled, Arcadia.style('titletoolbarbutton')['background'], :active, Arcadia.style('toolbarbutton')['activebackground']], :arrowcolor=>[:pressed, Arcadia.style('button')['background'], :disabled, Arcadia.style('titletoolbarbutton')['highlightbackground'], :active, Arcadia.style('toolbarbutton')['background']], :relief=>[:pressed, :sunken]) end
label(_parent,_args={}, &b)
click to toggle source
# File lib/a-tkcommons.rb, line 2528 def label(_parent,_args={}, &b) begin if @use_tile obj = Tk::Tile::TLabel.new(_parent,{:style=>"Arcadia.TLabel"}.update(_args), &b) else obj = TkLabel.new(_parent,Arcadia.style('label').update(_args), &b) end class << obj include WidgetEnhancer end return obj rescue RuntimeError => e Arcadia.runtime_error(e) return nil end end
scrollbar(_parent,_args={}, &b)
click to toggle source
# File lib/a-tkcommons.rb, line 2494 def scrollbar(_parent,_args={}, &b) begin if @use_tile obj = Tk::Tile::Scrollbar.new(_parent,{:style=>"Arcadia.TScrollbar"}.update(_args), &b) else obj = TkScrollbar.new(_parent,Arcadia.style('scrollbar').update(_args), &b) end class << obj include WidgetEnhancer end return obj rescue RuntimeError => e Arcadia.runtime_error(e) end end
text(_parent,_args={}, &b)
click to toggle source
# File lib/a-tkcommons.rb, line 2562 def text(_parent,_args={}, &b) begin # if @use_tile # obj = Tk::Tile::Text.new(_parent,{:style=>"Arcadia.TText"}.update(_args), &b) # else obj = TkText.new(_parent,Arcadia.style('text').update(_args), &b) # end class << obj include WidgetEnhancer end return obj rescue RuntimeError => e Arcadia.runtime_error(e) return nil end end