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
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
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))
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)
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)
def setUp(self): self.model = TextView(Rect(0, 0, 10, 10))
def setUp(self): self.model = StatusLine(Rect(0, 0, 80, 1))
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)
def setUp(self): self.model = ByteGrid(Rect(1, 1, 20, 20))