1 class Table < Qt::GraphicsView
4 Theme = Struct.new(:pieces, :board, :layout)
6 def initialize(scene, loader, parent)
7 super(@scene = scene, parent)
12 # destroy old elements
14 @scene.remove_element(@elements[:board])
15 @elements[:pools].each do |col, pool|
16 @scene.remove_element(pool)
18 @elements[:clocks].each do |col, clock|
19 @scene.remove_element(clock)
25 @theme.pieces = @loader.
26 get_matching((game.keywords || []) + %w(pieces)).
27 new(:game => game, :shadow => true)
28 @theme.board = @loader.
29 get_matching(%w(board), game.keywords || []).
31 @theme.layout = @loader.
32 get_matching(%w(layout), game.keywords || []).
37 @elements[:board] = Board.new(@scene, @theme, game)
38 @elements[:pools] = if game.respond_to? :pool
39 game.players.inject({}) do |res, player|
40 res[player] = Pool.new(@scene, @theme, game)
46 clock_class = @loader.get_matching(%w(clock))
47 @elements[:clocks] = game.players.inject({}) do |res, player|
48 res[player] = clock_class.new(scene)
53 unless @scene.scene_rect.isNull
54 @theme.layout.layout(@scene.scene_rect, @elements)
59 r = Qt::RectF.new(0, 0, e.size.width, e.size.height)
62 @theme.layout.layout(r, @elements)