# module Tk::Tile::Style

### Constants

TkCommandNames

### Public Class Methods

__define_wrapper_proc_for_compatibility__!() click to toggle source

    # File lib/tkextlib/tile/style.rb, line 36
          def __define_wrapper_proc_for_compatibility__!
            __define_themes_and_setTheme_proc__!

            unless Tk.info(:commands, '::ttk::style').empty?
              # fail RuntimeError,
              #      "can't define '::ttk::style' command (already exist)"

              # do nothing !!!
              warn "Warning: can't define '::ttk::style' command (already exist)" if $DEBUG
              return
            end
            TkCore::INTERP.add_tk_procs('::ttk::style', 'args', "        if [string equal [lrange $args 0 1] {element create}] {
              if [string equal [lindex $args 3] image] {
                set spec [lindex $args 4]
                set map  [lrange $spec 1 end]
                if [llength $map] {
                  # return [eval [concat [list ::style element create [lindex $args 2] image [lindex $spec 0] -map $map] [lrange $args 5 end]]]
                  return [uplevel 1 [list ::style element create [lindex $args 2] image [lindex $spec 0] -map $map] [lrange $args 5 end]]
                }
              }
            }
            # return [eval "::style $args"]
            return [uplevel 1 ::style $args]
    ")
            #########################
          end

configure(style=nil, keys=nil) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 160
    def configure(style=nil, keys=nil)
      if style.kind_of?(Hash)
        keys = style
        style = nil
      end
      style = '.' unless style

      if Tk::Tile::TILE_SPEC_VERSION_ID < 7
        sub_cmd = 'default'
      else
        sub_cmd = 'configure'
      end

      if keys && keys != None
        tk_call(TkCommandNames[0], sub_cmd, style, *hash_kv(keys))
      else
        tk_call(TkCommandNames[0], sub_cmd, style)
      end
    end

Also aliased as: default
default(style=nil, keys=nil)
Alias for: configure
element_create(name, type, *args) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 234
    def element_create(name, type, *args)
      if type == 'image' || type == :image
        element_create_image(name, *args)
      elsif type == 'vsapi' || type == :vsapi
        element_create_vsapi(name, *args)
      else
        tk_call(TkCommandNames[0], 'element', 'create', name, type, *args)
      end
    end

element_create_image(name, *args) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 244
    def element_create_image(name, *args)
      fail ArgumentError, 'Must supply a base image' unless (spec = args.shift)
      if (opts = args.shift)
        if opts.kind_of?(Hash)
          opts = _symbolkey2str(opts)
        else
          fail ArgumentError, 'bad option'
        end
      end
      fail ArgumentError, 'too many arguments' unless args.empty?

      if spec.kind_of?(Array)
        # probably, command format is tile 0.8+ (Tcl/Tk8.5+) style
        if Tk::Tile::TILE_SPEC_VERSION_ID >= 8
          if opts
            tk_call(TkCommandNames[0],
                    'element', 'create', name, 'image', spec, opts)
          else
            tk_call(TkCommandNames[0], 'element', 'create', name, 'image', spec)
          end
        else
          fail ArgumentError, 'illegal arguments' if opts.key?('map')
          base = spec.shift
          opts['map'] = spec
          tk_call(TkCommandNames[0],
                  'element', 'create', name, 'image', base, opts)
        end
      else
        # probably, command format is tile 0.7.8 or older style
        if Tk::Tile::TILE_SPEC_VERSION_ID >= 8
          spec = [spec, *(opts.delete('map'))] if opts.key?('map')
        end
        if opts
          tk_call(TkCommandNames[0],
                  'element', 'create', name, 'image', spec, opts)
        else
          tk_call(TkCommandNames[0], 'element', 'create', name, 'image', spec)
        end
      end
    end

element_create_vsapi(name, class_name, part_id, *args) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 285
    def element_create_vsapi(name, class_name, part_id, *args)
      # supported on Tcl/Tk 8.6 or later

      # argument check
      if (state_map = args.shift || None)
        if state_map.kind_of?(Hash)
          opts = _symbolkey2str(state_map)
          state_map = None
        end
      end
      opts = args.shift || None
      fail ArgumentError, "too many arguments" unless args.empty?

      # define a Microsoft Visual Styles element
      tk_call(TkCommandNames[0], 'element', 'create', name, 'vsapi',
              class_name, part_id, state_map, opts)
    end

element_names() click to toggle source

    # File lib/tkextlib/tile/style.rb, line 303
    def element_names()
      list(tk_call(TkCommandNames[0], 'element', 'names'))
    end

element_options(elem) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 307
    def element_options(elem)
      simplelist(tk_call(TkCommandNames[0], 'element', 'options', elem))
    end

layout(style=nil, spec=nil) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 220
    def layout(style=nil, spec=nil)
      if style.kind_of?(Hash)
        spec = style
        style = nil
      end
      style = '.' unless style

      if spec
        tk_call(TkCommandNames[0], 'layout', style, spec)
      else
        _style_layout(list(tk_call(TkCommandNames[0], 'layout', style)))
      end
    end

lookup(style, opt, state=None, fallback_value=None) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 213
    def lookup(style, opt, state=None, fallback_value=None)
      tk_call(TkCommandNames[0], 'lookup', style,
              '-' << opt.to_s, state, fallback_value)
    end

map(style=nil, keys=nil) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 181
    def map(style=nil, keys=nil)
      if style.kind_of?(Hash)
        keys = style
        style = nil
      end
      style = '.' unless style

      if keys && keys != None
        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
        ret = {}
        Hash[*(simplelist(tk_call(TkCommandNames[0], 'map', style)))].each{|k, v|
          ret[k[1..-1]] = list(v)
        }
        ret
      end
    end

Also aliased as: map_configure
map_configinfo(style=nil, key=None) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 204
    def map_configinfo(style=nil, key=None)
      style = '.' unless style
      map(style, key)
    end

map_configure(style=nil, keys=nil)
Alias for: map
map_default_configinfo(key=None) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 209
    def map_default_configinfo(key=None)
      map('.', key)
    end

theme_create(name, keys=nil) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 311
    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

theme_names() click to toggle source

    # File lib/tkextlib/tile/style.rb, line 328
    def theme_names()
      list(tk_call(TkCommandNames[0], 'theme', 'names'))
    end

theme_settings(name, cmd=nil, &b) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 321
    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

theme_use(name) click to toggle source

    # File lib/tkextlib/tile/style.rb, line 332
    def theme_use(name)
      name = name.to_s
      tk_call(TkCommandNames[0], 'theme', 'use', name)
      name
    end

### Private Class Methods

__define_themes_and_setTheme_proc__!() click to toggle source

    # File lib/tkextlib/tile/style.rb, line 130
      def __define_themes_and_setTheme_proc__!
        TkCore::INTERP.add_tk_procs('::ttk::themes', '{ptn *}', "      #set themes [list]
          set themes [::ttk::style theme names]
          foreach pkg [lsearch -inline -all -glob [package names] ttk::theme::$ptn] {
              set theme [namespace tail $pkg]
              if {[lsearch -exact $themes $theme] < 0} {
                  lappend themes $theme
              }
          }
          foreach pkg [lsearch -inline -all -glob [package names] tile::theme::$ptn] {
              set theme [namespace tail $pkg]
              if {[lsearch -exact $themes $theme] < 0} {
                  lappend themes $theme
              }
          }
          return $themes
    ")
        #########################
        TkCore::INTERP.add_tk_procs('::ttk::setTheme', 'theme', "      variable currentTheme
          if {[lsearch -exact [::ttk::style theme names] $theme] < 0} {
              package require [lsearch -inline -regexp [package names] (ttk|tile)::theme::$theme]
          }
          ::ttk::style theme use $theme
          set currentTheme $theme
    ")
      end