def _execute_file(self, cmd, debug_mode): source, _ = misc_utils.read_python_file(cmd.filename) # args are accepted only in Run and Debug, # and were stored in sys.argv already in VM.__init__ code_filename = os.path.abspath(cmd.filename) return self._execute_source(source, code_filename, "exec", debug_mode)
def _load_file(self, filename): source, self.file_encoding = misc_utils.read_python_file(filename) # TODO: support also text files self._filename = filename self._code_view.modified_since_last_save = False self._workbench.event_generate("Open", editor=self, filename=filename) self._code_view.set_content(source) self._code_view.focus_set()
def _load_file(self, filename): source, self.file_encoding = misc_utils.read_python_file( filename) # TODO: support also text files self._filename = filename get_workbench().event_generate("Open", editor=self, filename=filename) self._code_view.set_content(source) self._code_view.focus_set() self.master.remember_recent_file(filename)
def _load_expression(self, filename, text_range): whole_source, _ = misc_utils.read_python_file(filename) root = ast_utils.parse_source(whole_source, filename) self._main_range = text_range assert self._main_range is not None main_node = ast_utils.find_expression(root, text_range) source = ast_utils.extract_text_range(whole_source, text_range) debug("EV.load_exp: %s", (text_range, main_node, source)) self.delete("1.0", "end") self.insert("1.0", source) # create node marks def _create_index(lineno, col_offset): local_lineno = lineno - main_node.lineno + 1 if lineno == main_node.lineno: local_col_offset = col_offset - main_node.col_offset else: local_col_offset = col_offset return str(local_lineno) + "." + str(local_col_offset) for node in ast.walk(main_node): if "lineno" in node._attributes: index1 = _create_index(node.lineno, node.col_offset) index2 = _create_index(node.end_lineno, node.end_col_offset) start_mark = self._get_mark_name(node.lineno, node.col_offset) if not start_mark in self.mark_names(): self.mark_set(start_mark, index1) self.mark_gravity(start_mark, tk.LEFT) end_mark = self._get_mark_name(node.end_lineno, node.end_col_offset) if not end_mark in self.mark_names(): self.mark_set(end_mark, index2) self.mark_gravity(end_mark, tk.RIGHT)
def _load_expression(self, filename, text_range): whole_source, _ = misc_utils.read_python_file(filename) root = ast_utils.parse_source(whole_source, filename) self._main_range = text_range assert self._main_range is not None main_node = ast_utils.find_expression(root, text_range) source = ast_utils.extract_text_range(whole_source, text_range) debug("EV.load_exp: %s", (text_range, main_node, source)) self.delete("1.0", "end") self.insert("1.0", source) # create node marks def _create_index(lineno, col_offset): local_lineno = lineno - main_node.lineno + 1 if lineno == main_node.lineno: local_col_offset = col_offset - main_node.col_offset else: local_col_offset = col_offset return str(local_lineno) + "." + str(local_col_offset) for node in ast.walk(main_node): if "lineno" in node._attributes: index1 = _create_index(node.lineno, node.col_offset) index2 = _create_index(node.end_lineno, node.end_col_offset) start_mark = self._get_mark_name(node.lineno, node.col_offset) if not start_mark in self.mark_names(): self.mark_set(start_mark, index1) self.mark_gravity(start_mark, tk.LEFT) end_mark = self._get_mark_name(node.end_lineno, node.end_col_offset) if not end_mark in self.mark_names(): self.mark_set(end_mark, index2) self.mark_gravity(end_mark, tk.RIGHT)