Exemplo n.º 1
0
class Menu(Composite):
    def __init__(self, factory):
        Composite.__init__(self)
        self._factory = factory
        self._cursor_position = Position(10, 10)

    @recreate_surface
    def add_header(self, text):
        header = self._factory.create_header()
        self._add_row(header, text)

    @recreate_surface
    def add_choice(self, text):
        choice = self._factory.create_menu_row()
        self._add_row(choice, text)

    @recreate_surface
    def add_space(self):
        self._cursor_position = self._cursor_position.down(10)

    def surface(self):
        size = Size(300, self._cursor_position.y + 10)
        surface = Surface.create(size)
        surface.fill(MenuBackgroundColor())
        return surface

    def _move_cursor_by_font_size(self, text):
        font_size = text.get_font_size()
        self._cursor_position = self._cursor_position.down(font_size)

    def _add_row(self, element, text):
        element.set_position(self._cursor_position)
        element.set_text(text)
        self._move_cursor_by_font_size(element)
        self.add_child(element)
Exemplo n.º 2
0
 def text_positions(self):
     self.when_adding_row("Row")
     self.then_row_was_put_on(Position(10, 10))
     self.when_setting_header("Header")
     self.then_header_was_set_to(Position(10, 30))
     self.when_adding_row("Row")
     self.then_row_was_put_on(Position(10, 60))
     self.when_adding_space()
     self.when_adding_row("Row")
     self.then_row_was_put_on(Position(10, 90))
Exemplo n.º 3
0
    def check_types_to_be_equal(self):
        class Pos(object):
            def __init__(self, x, y):
                self.x = x
                self.y = y

        ok_(Position(0, 0) != Pos(0, 0))
Exemplo n.º 4
0
 def visibles(self):
     menu = self._visible_factory.create_menu()
     menu.set_position(Position(200, 100))
     menu.add_header(self.header())
     for choice in self.choices():
         if choice:
             menu.add_choice(choice)
         else:
             menu.add_space()
     return menu
Exemplo n.º 5
0
 def __init__(self, factory):
     Composite.__init__(self)
     self._factory = factory
     self._cursor_position = Position(10, 10)
Exemplo n.º 6
0
 def access_parts(self):
     p = Position(1, 5)
     eq_(p.x, 1)
     eq_(p.y, 5)
Exemplo n.º 7
0
 def get_tuple(self):
     eq_(Position(0, 0).tuple(), (0, 0))
Exemplo n.º 8
0
 def move_up(self):
     eq_(Position(0, 0), Position(0, 2).up(2))
     eq_(Position(0, 0), Position(0, 1).up())
Exemplo n.º 9
0
 def move_down(self):
     eq_(Position(0, 2), Position(0, 0).down(2))
     eq_(Position(0, 1), Position(0, 0).down())
Exemplo n.º 10
0
 def move_left(self):
     eq_(Position(0, 0), Position(2, 0).left(2))
     eq_(Position(0, 0), Position(1, 0).left())
Exemplo n.º 11
0
 def move_right(self):
     eq_(Position(2, 0), Position(0, 0).right(2))
     eq_(Position(1, 0), Position(0, 0).right())
Exemplo n.º 12
0
 def move(self):
     eq_(Position(2, 3), Position(0, 0).move(2, 3))
Exemplo n.º 13
0
 def add(self):
     eq_(Position(1, 1), Position(0, 0) + Position(1, 1))
Exemplo n.º 14
0
 def same_point_is_equal(self):
     eq_(Position(0, 0), Position(0, 0))