Beispiel #1
0
    def resize(self):
        self.__max_y, self.__max_x = self.__context.getmaxyx()
        (max_x, max_y) = self.size

        self.address_block.draw_zone = Rect(0, 1, 8, max_y - 2)

        busy_space = self.address_block.draw_zone.width
        ratio = (max_x - busy_space) / 4
        self.byte_grid.draw_zone = Rect(busy_space + 1, 1, ratio * 3,
                                        max_y - 2)

        self.byte_grid.autosize()

        busy_space += self.byte_grid.draw_zone.width + 1

        self.address_block.step = self.byte_grid.col_count

        self.text_view.draw_zone = Rect(busy_space, 1,
                                        self.byte_grid.col_count, max_y - 2)
        self.text_view.symbol_in_row = self.byte_grid.col_count
        self.status_line.draw_zone = Rect(0, 0, max_x, 1)
        self.command_line.draw_zone = Rect(0, max_y - 1, max_x, 1)

        # При изменении размеров окна курсор активного байта
        # может оказаться в не валидной позиции
        cur_pos = self.byte_grid.cursor_position
        cur_offset = cur_pos[0] * self.byte_grid.col_count + cur_pos[1]
        if cur_offset > len(self.byte_grid.data):
            self.byte_grid.cursor_position = (0, 0)
            self.address_block.highlight_inx = 0
            self.text_view.highlight_index = 0
Beispiel #2
0
    def __init_GUI(self):
        self.address_block = AddressBlock(Rect(0, 1, 8, self.__max_y - 2))
        self.address_block.start_address = 0
        self.address_block.color = 2
        self.address_block.highlight = 3
        self.address_block.highlight_inx = 0

        busy_space = self.address_block.draw_zone.width
        ratio = (self.__max_x + 1 - busy_space) / 4
        self.byte_grid = ByteGrid(
            Rect(busy_space + 1, 1, ratio * 3, self.__max_y - 2))
        self.byte_grid.color = 2
        self.byte_grid.highlight = 3
        self.byte_grid.data = bytearray()
        self.byte_grid.cursor_position = (1, 1)
        self.byte_grid.autosize()

        busy_space += self.byte_grid.draw_zone.width + 1

        self.address_block.step = self.byte_grid.col_count

        self.text_view = TextView(
            Rect(busy_space, 1, self.byte_grid.col_count, self.__max_y - 2))
        self.text_view.symbol_in_row = self.byte_grid.col_count
        self.text_view.color = 2
        self.text_view.highlight_color = 3

        self.status_line = StatusLine(Rect(0, 0, self.__max_x + 1, 1))
        self.status_line.file_name = os.path.basename(self.__file_path)
        self.status_line.offset = self.__offset_in_file
        self.status_line.file_size = self.__file_size
        self.status_line.color = 4
Beispiel #3
0
    def test_cursor_position(self):
        self.model.draw_zone = Rect(0, 0, 20, 20)

        self.model.cursor_position = (30, 30)
        self.assertTrue(self.model.cursor_position != (30, 30))

        self.model.cursor_position = (-1, -1)
        self.assertTrue(self.model.cursor_position != (-1, -1))
Beispiel #4
0
    def test_autosize(self):
        self.model.row_count = 0
        self.model.col_count = 0

        self.model.draw_zone = Rect(0, 0, 20, 20)
        self.model.autosize()

        self.assertTrue(self.model.row_count != 0)
        self.assertTrue(self.model.col_count != 0)
Beispiel #5
0
    def __init_GUI(self):
        curses.curs_set(0)

        self.address_block = AddressBlock(Rect(0, 1, 8, self.__max_y - 2))
        self.address_block.start_address = 0
        self.address_block.color = 2
        self.address_block.highlight = 3
        self.address_block.highlight_inx = 0

        busy_space = self.address_block.draw_zone.width
        ratio = (self.__max_x + 1 - busy_space) / 4
        self.byte_grid = ByteGrid(
            Rect(busy_space + 1, 1, ratio * 3, self.__max_y - 2))
        self.byte_grid.color = 2
        self.byte_grid.highlight = 3
        self.byte_grid.data = bytearray()
        self.byte_grid.cursor_position = (1, 1)
        self.byte_grid.autosize()

        busy_space += self.byte_grid.draw_zone.width + 1

        self.address_block.step = self.byte_grid.col_count

        self.text_view = TextView(
            Rect(busy_space, 1, self.byte_grid.col_count, self.__max_y - 2))
        self.text_view.symbol_in_row = self.byte_grid.col_count
        self.text_view.color = 2
        self.text_view.highlight_color = 3

        self.status_line = StatusLine(Rect(0, 0, self.__max_x, 1))
        self.status_line.file_name = os.path.basename(self.__file_path)
        self.status_line.offset = self.__offset_in_file
        self.status_line.file_size = self.__file_size
        self.status_line.color = 4

        cmdline_box = MailBox('cmdline@eventmanager')
        self.command_line = CommandLine(
            Rect(0, self.__max_y - 1, self.__max_x, 1), cmdline_box)
        self.command_line.attach_listeners(self)
        self.__event_manager.register_listeners(cmdline_box.listeners)
        self.__event_manager.boxes.append(cmdline_box)

        self.command_line.color = 5
 def setUp(self):
     self.model = AddressBlock(Rect(1, 2, 3, 4))
 def test_correct_size(self):
     address_block = AddressBlock(Rect(1, 2, 3, 4))
     self.assertTrue(address_block.draw_zone.left == 1)
     self.assertTrue(address_block.draw_zone.top == 2)
     self.assertTrue(address_block.draw_zone.width == 3)
     self.assertTrue(address_block.draw_zone.height == 4)
Beispiel #8
0
 def setUp(self):
     self.model = TextView(Rect(0, 0, 10, 10))
Beispiel #9
0
 def setUp(self):
     self.model = StatusLine(Rect(0, 0, 80, 1))
Beispiel #10
0
 def test_correct_size(self):
     status_line = StatusLine(Rect(0, 0, 80, 10))
     self.assertTrue(status_line.draw_zone.left == 0)
     self.assertTrue(status_line.draw_zone.top == 0)
     self.assertTrue(status_line.draw_zone.width == 80)
     self.assertTrue(status_line.draw_zone.height == 1)
Beispiel #11
0
 def setUp(self):
     self.model = ByteGrid(Rect(1, 1, 20, 20))