tkwrapper 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 957efe49807e9800759aa22439bc99f5ea4ef0ec620bc7ea0b7d549474839a7a
4
- data.tar.gz: f654e23817c14ce6e59d67e7893f55c33c9168686faf66cbf0a96f955f4e7c6e
3
+ metadata.gz: 81c1971220f794d1e17288aac5b75221393727be934288a4993a621c35b3282d
4
+ data.tar.gz: f2a841f6f3a6a7ee040c85fe0f2081234780bf1ff0bf4aeb70de9cf4c2a75055
5
5
  SHA512:
6
- metadata.gz: 4891b05ca78bff3d2119b6b4d8ba0be178836d1cdd7475e07ddc3be19100d766e0ca0d9878d4afc9be330ffbf3ea008914d4f4432b0e3eff2df8cc02534b74f4
7
- data.tar.gz: 3ece495be24159cefde0ca65899c3022b181a3bb0d92e40727a9cbc2ca4494d376504a58313190a94fbf4dc8751949873753ec1c2313d9db4cc28fb29174a466
6
+ metadata.gz: 22cf843324096411be2441088df910d723ecc353aa6b54dd64ba5703b2fcd47bec3c2424a38e910fefb187fdcf23ec60dd44640de3f0657a3cb2969e84da016c
7
+ data.tar.gz: acb296b0e78c570e7d80ba96d91c4ebf62ecfd1ce7c97fac088546d599e0468a23dafac325ee14ae9fa0d4d08a9c8c70e5972df849346a05d8e2ac3ee9fb1154
data/lib/tkwrapper.rb CHANGED
@@ -7,5 +7,6 @@ module TkWrapper end
7
7
  require_relative 'widgets/widgets'
8
8
 
9
9
  module TkWrapper
10
+ Manager = TkWrapper::Widgets::Base::Manager
10
11
  Widget = TkWrapper::Widgets::Base::Widget
11
12
  end
@@ -21,7 +21,7 @@ class TkWrapper::Util::Tk::Finder
21
21
  end
22
22
  end
23
23
 
24
- def find_widget(comparators, widgets = @widgets)
24
+ def find(comparators, widgets = @widgets)
25
25
  matchers = create_value_matchers(comparators)
26
26
 
27
27
  each_widget_match(widgets, matchers) do |match|
@@ -29,7 +29,7 @@ class TkWrapper::Util::Tk::Finder
29
29
  end
30
30
  end
31
31
 
32
- def find_all_widgets(comparators, widgets = @widgets)
32
+ def find_all(comparators, widgets = @widgets)
33
33
  matchers = create_value_matchers(comparators)
34
34
  matches = TkWrapper::Widgets::Base::Matches.new
35
35
 
@@ -4,14 +4,14 @@ class TkWrapper::Widgets::AutoResizeEntry < TkWrapper::Widgets::Entry
4
4
  # auto resizes on user input, only works if in the grid geometry manager of tk
5
5
  attr_accessor :min_width, :add_width
6
6
 
7
- def initialize(config: {}, childs: [], id: nil)
8
- @min_width = config[:min_width] || 0
9
- @add_width = config[:add_width] || 0
10
- super(config: config, childs: childs, id: id)
7
+ def initialize(**args)
8
+ @min_width = args[:config][:min_width] || 0
9
+ @add_width = args[:config][:add_width] || 0
10
+ super(**args)
11
11
  end
12
12
 
13
- def build(parent, configure: true)
14
- super(parent, configure: configure)
13
+ def build(parent, **args)
14
+ super(parent, **args)
15
15
  parent.tk_widget.bind('Configure') { resize }
16
16
  tk_widget.textvariable = TkVariable.new unless tk_widget.textvariable
17
17
  tk_widget.textvariable.trace('write') { resize }
@@ -21,7 +21,7 @@ class TkWrapper::Widgets::Base::Configuration
21
21
  }.freeze
22
22
 
23
23
  NON_TK_OPTIONS = %i[
24
- id tk_class tearoff weights menu min_width add_width
24
+ tk_class tearoff weights menu min_width add_width
25
25
  ].freeze
26
26
 
27
27
  def initialize(config)
@@ -112,6 +112,8 @@ class TkWrapper::Widgets::Base::Configuration
112
112
  end
113
113
 
114
114
  def merge_global_configurations(manager, widget)
115
+ return unless manager
116
+
115
117
  merge(*manager.configurations(widget))
116
118
  end
117
119
  end
@@ -37,4 +37,11 @@ class TkWrapper::Widgets::Base::Manager
37
37
  end
38
38
  end
39
39
  end
40
+
41
+ def configure(widget)
42
+ widget.config.merge(*configurations(widget))
43
+ end
44
+
45
+ alias modify add_modification
46
+ alias config add_configurations
40
47
  end
@@ -1,11 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
- require 'tk'
4
-
5
- require "#{LIB_DIR}/tk_extensions"
6
- require "#{LIB_DIR}/util/tk/font"
7
1
  require "#{LIB_DIR}/util/tk/cell"
8
2
  require "#{LIB_DIR}/util/tk/finder"
3
+ require "#{LIB_DIR}/tk_extensions"
9
4
 
10
5
  require_relative 'base'
11
6
 
@@ -14,54 +9,20 @@ class TkWrapper::Widgets::Base::Widget
14
9
  include TkExtensions
15
10
  include Enumerable
16
11
 
17
- def_delegator :@finder, :find_widget, :find
18
- def_delegator :@finder, :find_all_widgets, :find_all
12
+ def_delegators :@finder, :find, :find_all
19
13
 
20
14
  attr_accessor :config
21
- attr_reader :parent, :ids, :cell, :childs
15
+ attr_reader :parent, :ids, :cell, :childs, :manager
22
16
 
23
17
  def tk_class() end
24
18
 
25
- def self.manager
26
- @manager ||= TkWrapper::Widgets::Base::Manager.new
27
- end
28
-
29
- def self.config(matcher = nil, configuration = nil, **configurations)
30
- manager.add_configurations(matcher, configuration, **configurations)
31
- end
32
-
33
- def self.modify(matcher, &callback)
34
- manager.add_modification(matcher, &callback)
35
- end
36
-
37
- def manager
38
- TkWrapper::Widgets::Base::Widget.manager
39
- end
40
-
41
- def each(&block)
42
- nodes_to_walk = [self]
43
- until nodes_to_walk.empty?
44
- node = nodes_to_walk.pop
45
- block.call(node)
46
- nodes_to_walk = node.childs + nodes_to_walk
47
- end
48
- end
49
-
50
- def initialize(config: {}, childs: [], id: nil)
19
+ def initialize(config: {}, childs: [], manager: nil, ids: [])
51
20
  @cell = TkWrapper::Util::Tk::Cell.new(self)
52
21
  @finder = TkWrapper::Util::Tk::Finder.new(widgets: self)
53
22
  @config = TkWrapper::Widgets::Base::Configuration.new(config)
54
23
  @childs = childs.is_a?(Array) ? childs : [childs]
55
- @ids = []
56
- add_ids(id)
57
- add_ids(config[:id])
58
- end
59
-
60
- def add_ids(ids)
61
- return unless ids
62
-
63
- ids = [ids] unless ids.is_a?(Array)
64
- @ids.concat(ids)
24
+ @manager = manager
25
+ @ids = ids.is_a?(Array) ? ids : [ids]
65
26
  end
66
27
 
67
28
  def create_tk_widget(parent)
@@ -80,41 +41,33 @@ class TkWrapper::Widgets::Base::Widget
80
41
  (@tk_widget = create_tk_widget(parent)) || parent&.tk_widget
81
42
  end
82
43
 
83
- def build(parent, configure: true)
44
+ def build(parent, configure: true, manager: nil)
84
45
  @parent = parent
85
46
  tk_widget # creates the widget if possible and not yet created
86
47
  @font = TkWrapper::Util::Tk::Font.new(tk_widget)
48
+ @manager ||= manager
49
+ @config.merge(*@manager.configurations(self)) if @manager
87
50
  self.configure if configure
88
- manager.execute_modifications(self)
89
- @childs.each { |child| child.build(self) }
90
- end
91
-
92
- def push(child)
93
- @childs.push(child)
94
- child.build(self)
51
+ @manager&.execute_modifications(self)
52
+ @childs.each { |child| child.build(self, manager: @manager) }
95
53
  end
96
54
 
97
55
  def configure
98
- @config.merge_global_configurations(manager, self)
99
56
  @config.configure_tk_widget(tk_widget)
100
57
  @config.configure_tearoff
101
58
  end
102
59
 
103
- def modify(matchers, &callback)
104
- items = find_all(matchers)
105
-
106
- callback.call(items)
60
+ def each(&block)
61
+ nodes_to_walk = [self]
62
+ until nodes_to_walk.empty?
63
+ node = nodes_to_walk.pop
64
+ block.call(node)
65
+ nodes_to_walk = node.childs + nodes_to_walk
66
+ end
107
67
  end
108
68
 
109
- def modify_each(matchers, &callback)
110
- items = find_all(matchers)
111
-
112
- return unless items
113
-
114
- with_match = items[0].is_a?(Array)
115
-
116
- items.each do |item|
117
- with_match ? callback.call(item[0], item[1]) : callback.call(item)
118
- end
69
+ def push(child)
70
+ @childs.push(child)
71
+ child.build(self)
119
72
  end
120
73
  end
data/lib/widgets/grid.rb CHANGED
@@ -10,8 +10,8 @@ class TkWrapper::Widgets::Grid < TkWrapper::Widgets::Base::Widget
10
10
  TkWidgets::Frame
11
11
  end
12
12
 
13
- def initialize(config: {}, childs: [], id: nil)
14
- super(config: config, childs: childs, id: id)
13
+ def initialize(**arguments)
14
+ super(**arguments)
15
15
  @childs.map! { |row| row.is_a?(Array) ? row : [row] }
16
16
  configure_cells_for_grid
17
17
  @childs.flatten! && @childs.select! { |cell| cell.is_a?(Widget) }
data/lib/widgets/menu.rb CHANGED
@@ -5,8 +5,8 @@ class TkWrapper::Widgets::Menu < TkWrapper::Widgets::Base::Widget
5
5
  TkWidgets::TkMenu
6
6
  end
7
7
 
8
- def build(parent)
9
- super(parent)
8
+ def build(parent, **args)
9
+ super(parent, **args)
10
10
  parent.tk_widget['menu'] = tk_widget
11
11
  end
12
12
 
@@ -15,15 +15,18 @@ class TkWrapper::Widgets::Menu < TkWrapper::Widgets::Base::Widget
15
15
  TkWidgets::TkMenu
16
16
  end
17
17
 
18
- def build(parent)
19
- super(parent, configure: false)
18
+ def build(parent, **args)
19
+ args[:configure] = false
20
+ super(parent, **args)
20
21
  @config[:menu] = tk_widget
21
22
  parent.tk_widget.add :cascade, **@config.config
22
23
  end
23
24
  end
24
25
 
25
26
  class Command < TkWrapper::Widgets::Base::Widget
26
- def build(parent)
27
+ def build(parent, **args)
28
+ args[:configure] = false
29
+ super(parent, **args)
27
30
  parent.tk_widget.add :command, **@config.config
28
31
  end
29
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tkwrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Schnitzler