def set_prop_val(self, name, value): """ Set property value as (string) :name: field name :value: default value, if not found """ prop_key = self.get_prop_key(name) SlTrace.setProperty(prop_key, str(value))
def set_prop_val(self, name, value): """ Set local (value) and property value(string) :name: field name :value: default value, if not found """ self.vals[name] = value # set current value prop_key = self.get_prop_key(name) SlTrace.setProperty(prop_key, str(value))
def set_prop_val(self, field_name): """ Update properties value for field, so that properties file will contain the updated value :field_name: field attribute name """ prop_key = self.get_prop_key(field_name) field_value = self.get_val(field_name) prop_value = str(field_value) SlTrace.setProperty(prop_key, prop_value)
def update_property(self, name): ctl_entry = self.get_ctl_entry(name) if ctl_entry is None: return # No entry if ctl_entry.ctl_widget is None: return # No widget ctl_value = ctl_entry.ctl_widget.get() prop_key = self.get_prop_key(name) SlTrace.setProperty(prop_key, ctl_value)
def save_prop_player(self, player, base_key=None): """ Save player's info :player: player to save :base_key: prop_key preceeding player's id """ player_id = player.id player_fields = self.player_control.get_player_control_fields() for field in player_fields: prop_key = f"{base_key}{player_id}.{field}" prop_val = str(getattr(player, field)) SlTrace.lg(f"save_prop_player: key={prop_key} val={prop_val}", "player_prop") SlTrace.setProperty(prop_key, prop_val)
def save_props(self, player_infos, stack_count=None): """ Save infos in properties to be saved by normal properties saving Sets sect numbers to correspond to stack list position First removes properties of the form: {self.control_prefix}\.{self.sect_name}\.\d+\. or (if self.sect_name is None) {self.control_prefix}\.\d+\. :prop_infos: PlayerInfo or list, most recent == last, position == 1 :stack_count: current stack level, used for stack comparisons """ if not isinstance(player_infos, list): player_infos = [player_infos] self.remove_props() if stack_count is not None: after_len = len(f"0.player.") bk = self.get_base_key(0)[:-after_len] # less "undo.0." prop_key = f"{bk}__STACK_COUNT" # To facilitate stack comparison SlTrace.setProperty(prop_key, stack_count) for n, player_info in enumerate(reversed(player_infos),start=1): base_key = self.get_base_key(n) self.save_prop_player_info(player_info, base_key=base_key)
def __init__(self, parent=None, open=True, run=False, run_cmd=None, title=None, in_file=None, src_file_name=None, src_dir=None, src_lst=False, stx_lst=False, lst_file_name=None, cmd_execute=None, display=True): """ Player attributes :title: window title :in_file: Opened input file handle, if one :src_file_name: source file name .py for python else .crsrc built-in language (subset of python) :open: Open source file default: True - open file on object creation :run: run file after opening default: False :run_cmd: command to run when run button hit default: self.run :src_dir: default src directory default: "crsrc" :src_lst: List src as run default: No listing :stx_lst: List expanded commands as run default: No listing :lst_file_name: listing file name default: base name of src_file_name ext: ".clst" :cmd_execute: function to be called to execute command """ if parent is None: parent = Tk() parent.remove() self.parent = parent if title is None: title = "CommandFile" self.title = title self.src_file_name = src_file_name if src_dir is None: src_dir = "../crsrc" SlTrace.setProperty("cr_source_files", src_dir) self.src_dir = src_dir self.src_lst = src_lst self.stx_lst = stx_lst self.run = run self.run_cmd = run_cmd self.lineno = 0 # Src line number self.in_file = in_file self.ctls = {} # Dictionary of field control widgets self.ctls_vars = {} # Dictionary of field control widget variables self.cmd_execute = cmd_execute self.stcmd_stack = [] # get/unget stcmd stack self.tok = None # Token if found self.line = None # Remaining unparsed line self.src_prefix = "" # Source listing prefix if src_file_name is not None: self.set_ctl_val("input.src_file_name", src_file_name) self.file_type = None # py, csrc file type, when determined self.eof = True # Cleared on open, set on EOF self.new_file = False self.dots_commands = BlockCommands(self) if display: self.control_display() if self.run: self.run_file() else: self.open()
def __init__(self, open=True, execution_control=None, in_file=None, src_file=None, src_dir=None, src_lst=False, stx_lst=False, lst_file_name=None, cmd_execute=None, stream_stack=None, debugging=False): """ Player attributes :in_file: Opened input file handle, if one :src_file: source file name .py for python else .csrc built-in language :open: Open source file default: True - open file on object creation :execution_control: interface execution control if any, (SelectComandFileControl) e.g. stepping :run: run file after opening default: False :run_cmd: command to run when run button hit default: self.run :src_dir: default src directory default: "csrc" :src_lst: List src as run default: No listing :stx_lst: List expanded commands as run default: No listing :lst_file_name: listing file name default: base name of src_file_name ext: ".clst" :cmd_execute: function to be called to execute each command as obtained from file :stream_stack: Stack of SelectCommandStream active streams calling this the current one None - no callers :debugging: debugging/test less requirements """ self.execution_control = execution_control self.src_file_name = src_file if src_dir is None: src_dir = "../csrc" if src_dir is None: src_dir = "../csrc" SlTrace.setProperty("source_files", src_dir) self.file_type = None # py, csrc file type, when determined self.src_dir = src_dir self.set_src_lst(src_lst) self.set_stx_lst(stx_lst) self.cmd_execute = cmd_execute if self.src_file_name is not None: if not self.check_file(self.src_file_name): raise SelectError("File %s not found" % self.src_file_name) self.in_file = in_file self.stcmd_stack = [] # get/unget stcmd stack self.tok = None # Token if found self.line = None # Remaining unparsed line self.src_prefix = "" # Source listing prefix self.new_file = True # Not opened self.stream_stack = stream_stack self.debugging = debugging self.dots_commands = DotsCommands(self)