1 class Table < Qt::GraphicsView
6 Theme = Struct.new(:pieces, :board, :layout)
8 def initialize(scene, loader, parent)
9 super(@scene = scene, parent)
15 # destroy old elements
17 @scene.remove_element(@elements[:board])
18 @elements[:pools].each do |col, pool|
19 @scene.remove_element(pool)
21 @elements[:clocks].each do |col, clock|
22 @scene.remove_element(clock)
28 @theme.pieces = @loader.
29 get_matching((game.keywords || []) + %w(pieces)).
30 new(:game => game, :shadow => true)
31 @theme.board = @loader.
32 get_matching(%w(board), game.keywords || []).
34 @theme.layout = @loader.
35 get_matching(%w(layout), game.keywords || []).
40 @elements[:board] = Board.new(@scene, @theme, game)
41 @elements[:pools] = if game.respond_to? :pool
42 game.players.inject({}) do |res, player|
43 res[player] = Pool.new(@scene, @theme, game)
49 clock_class = @loader.get_matching(%w(clock))
50 @elements[:clocks] = game.players.inject({}) do |res, player|
51 res[player] = clock_class.new(scene)
61 @theme.layout.flip(value)
62 @theme.board.flip(value)
63 @theme.pieces.flip(value)
70 r = Qt::RectF.new(0, 0, e.size.width, e.size.height)
77 @theme.layout.layout(@scene.scene_rect, @elements)
82 @theme.layout.flipped?