コード例 #1
0
ファイル: select_player.py プロジェクト: raysmith619/dots
 def deleteProps(self):
     """ Delete players properties from properties file
         in prepartation to delete the player
     """
     player_prop_key = self.get_prop_key("")
     prop_keys = SlTrace.getPropKeys(startswith=player_prop_key)
     SlTrace.lg(f"deleteProps for {self}")
     for key in prop_keys:
         prop_value = SlTrace.getProperty(key, None)
         SlTrace.lg(f"{key}={prop_value}")
         SlTrace.deleteProperty(key)
コード例 #2
0
ファイル: player_prop.py プロジェクト: raysmith619/dots
 def remove_props(self):
     """ Remove all properties for 
     :player_infos:
     """
     base_key = self.get_base_key(include_num=False)
     SlTrace.lg(f"remove_props: base_key={base_key}", "player_prop")
     if self.sect_name is None:
         base_pat = base_key + r'\d+'
         base_match = re.compile(base_pat)
         SlTrace.lg(f"base_pat={base_pat}", "player_prop")
     prop_keys = SlTrace.getPropKeys()
     for prop_key in prop_keys:
         if prop_key.startswith(base_key):
             if self.sect_name is None:
                 m = base_match.match(prop_key)
                 if m is None:
                     continue            # Not base: ...nnn
                 
             SlTrace.lg(f"remove_props: key={prop_key}", "player_prop")
             SlTrace.deleteProperty(prop_key)
コード例 #3
0
 def get_ctl_default(self, value_type):
     """
     Get control value from properties
     :value_type: - value data type None - int
     :returns: value, null if none
     """
     if value_type is None:
         value_type  = int
     if self.ctl_name_d is None:
         prop_keys = SlTrace.getPropKeys()
         pattern = ArrangeControl.CONTROL_NAME_PREFIX + r"\.(.*)"
         rpat = re.compile(pattern)
         name_d = {}
         ### TBD I need to think about what is going on here
         for prop_key in prop_keys:
             rmatch = re.match(rpat, prop_key)
             if rmatch:
                 name = rmatch[1]
                 prop_val = SlTrace.getProperty(prop_key)
                 name_d[name] = prop_val
         self.ctl_name_d = name_d
     try:
         value_str = self.ctl_name_d[name_d]
     except:
         return None
         
     if value_type is str:
         return value_str
     
     if value_str == "":
         return None
     
     if value_type is int:
         return int(value_str)
     
     if value_type is float:
         return float(value_str)
     
     return value_str     
コード例 #4
0
    def __init__(self,
                 ctlbase=None,
                 control_prefix=None,
                 title=None,
                 display=True):
        """ Display / Control of players
        :ctlbase: base control object
        
        values stored in properties file
        All values stored under "player_control.".<player_id>
        The player_id is constructed by replacing all
        sequences of [^a-zA-Z_0-9]+ by "_" in the player name
        to produce a legal properties file id string
        Value strings:
            id                  value type
            ------------        -------------
            name                string
            label               string
            playing             bool
            position            int
            mV                  int
            color               string (fill)
            voice               bool
            help_play           bool
            pause               float
            auto                bool
            level               int
            steven              float
        """
        ###Toplevel.__init__(self, parent)
        self.ctlbase = ctlbase
        if control_prefix is None:
            control_prefix = self.CONTROL_NAME_PREFIX
        self.control_prefix = control_prefix
        """ Setup control names found in properties file
        Updated as new control entries are added
        """
        prop_keys = SlTrace.getPropKeys()
        player_pattern = r'(?:\.(\w+))'
        pattern = (self.control_prefix + player_pattern + player_pattern)
        rpat = re.compile(pattern)
        self.players = {}  # Dictionary of SelectPlayer
        self.cur_player = None  # Current player

        # by name
        self.call_d = []  # Call back routines, if any
        for prop_key in prop_keys:
            rmatch = re.match(rpat, prop_key)
            if rmatch:
                player_match = rmatch[0]
                player_match_1 = rmatch[1]
                player_id = int(rmatch[1])
                player_field = rmatch[2]
                prop_val = SlTrace.getProperty(prop_key)

                if player_id not in self.players:
                    player = SelectPlayer(self, player_id)
                    self.players[player_id] = player  # New entry
                else:
                    player = self.players[player_id]
                player_attr = rmatch[2]
                if player_attr == "move":
                    player_attr = "position"
                if not hasattr(player, player_attr):
                    raise SelectError(
                        "Unrecognized player attribute %s in %s" %
                        (player_attr, prop_key))
                else:
                    pat = getattr(player, player_attr)
                    if isinstance(pat, float):
                        player_val = float(prop_val)
                    elif isinstance(pat, bool):
                        pvl = prop_val.lower()
                        if (pvl == "yes" or pvl == "y" or pvl == "1"
                                or pvl == "true"):
                            player_val = True
                        elif (pvl == "no" or pvl == "n" or pvl == "0"
                              or pvl == "false"):
                            player_val = False
                        else:
                            raise SelectError(
                                "Unrecognized boolean value (%s =)  %s" %
                                (player_attr, prop_val))
                    elif isinstance(pat, int):
                        prop_val = float(prop_val)  # incase n.0
                        player_val = int(prop_val)
                    else:
                        player_val = prop_val
                    setattr(player, player_attr, player_val)
                    if player_attr == "color":
                        player.icolor = player.color
                    elif player_attr == "color_bg":
                        player.icolor2 = player.color_bg
                    self.players[player_id] = player

        if title is None:
            title = "Player Control"
        self.title = title

        if display:
            self.control_display()
コード例 #5
0
    def __init__(self, ctlbase, title=None, change_call=None):
        """ Display / Control of figure
        :ctlbase: base control object
        :change_call: if present,called when control changes
        """
        self.control_d = {}      # name : (name, ctl_widget, default_value)
        self.call_d = {}        # Call by name
        self.ctl_lists = {}     # Control selection lists [current_index, selection_list]
        ###Toplevel.__init__(self, parent)
        self.ctlbase = ctlbase
        self.sar_max_duration = None        # Track arrange color duration
        """ Setup control names found in properties file
        Updated as new control entries are added
        """
        prop_keys = SlTrace.getPropKeys()
        pattern = ArrangeControl.CONTROL_NAME_PREFIX + r"\.(.*)"
        rpat = re.compile(pattern)
        name_d = {}
        ### TBD I need to think about what is going on here
        for prop_key in prop_keys:
            rmatch = re.match(rpat, prop_key)
            if rmatch:
                name = rmatch[1]
                prop_val = SlTrace.getProperty(prop_key)
                name_d[name] = prop_val
        self.ctl_name_d = name_d
        
        
        if title is None:
            title = "Arrange"
        self.change_control = change_call
        win_width =  500
        win_height = 700
        win_x0 = 100
        win_y0 = 100
                    
        self.mw = Toplevel()
        win_setting = "%dx%d+%d+%d" % (win_width, win_height, win_x0, win_y0)

        
        self.mw.geometry(win_setting)
        self.mw.title(title)
        top_frame = Frame(self.mw)
        self.mw.protocol("WM_DELETE_WINDOW", self.delete_window)
        top_frame.pack(side="top", fill="both", expand=True)
        self.top_frame = top_frame
        
        controls_frame = Frame(top_frame)
        controls_frame.pack(side="top", fill="both", expand=True)
        self.controls_frame = controls_frame
 
        """
        Window Setup
        """
        win_label = Label(master=controls_frame, text="Window", anchor='w')
        win_label.pack(side="top", fill="both", expand=True)
        self.add_change_ctl(master=controls_frame, ctl_name="window_width", text="width", value=win_width)
        self.add_change_ctl(master=controls_frame, ctl_name="window_height", text="height", value=win_height)
        ###self.add_change_ctl(master=controls_frame, ctl_name="window_x0", text="x0", value=win_width*.1)
        ###self.add_change_ctl(master=controls_frame, ctl_name="window_y0", text="y0", value=win_height*.1)

        """
        Figure Setup
        """
        Label(master=controls_frame, text="")
        win_label.pack(side="top", fill="both", expand=True) 
        win_label = Label(master=controls_frame, text="Figure", anchor='w')
        win_label.pack(side="top", fill="both", expand=True)
        self.add_change_ctl(master=controls_frame, ctl_name="figure_columns", text="columns", value=6)
        self.add_change_ctl(master=controls_frame, ctl_name="figure_rows", text="rows", value=5)
        self.add_change_ctl(master=controls_frame, ctl_name="figure_size", text="size",
                             value=50, min_value=20, max_value=200)

        """
        Color Selections
        """
        Label(master=controls_frame, text="")
        win_label.pack(side="top", fill="both", expand=True) 
        win_label = Label(master=controls_frame, text="Colors", anchor='w')
        win_label.pack(side="top", fill="both", expand=True)
        selection_list = self.set_list(ctl_name="color_spec",
                selection_list = ["frequency", "rgb", "bw", "rgb1prim", "rgb2prim"])
        self.add_color_ctl(master=controls_frame, ctl_name="color_spec", text="specification",
                           selection=selection_list,
                           selection_default= "rgb")
        selection_list = self.set_list(ctl_name="color_prog",
                selection_list = ["random", "ascend", "descend"])
        self.add_color_ctl(master=controls_frame, ctl_name="color_prog", text="progression",
                           selection=selection_list,
                           selection_default= "random")
        self.add_color_ctl(master=controls_frame, ctl_name="color_value", text="value")


        """
        Rearrangement Selections
        """
        Label(master=controls_frame, text="")
        win_label.pack(side="top", fill="both", expand=True) 
        win_label = Label(master=controls_frame, text="Rearrange", anchor='w')
        win_label.pack(side="top", fill="both", expand=True)
        arrange_arranged_list = self.set_list(ctl_name="arrange_arranged",
                selection_list = ["square", "2x2", "3x3", "4x4", "row", "column"])
        self.add_color_ctl(master=controls_frame, ctl_name="arrange_arranged", text="arranged",
                           selection=arrange_arranged_list,
                           selection_default= "square")
        arrange_extent_list = self.set_list(ctl_name="arrange_extent",
                selection_list = ["row", "column", "all"])
        self.add_color_ctl(master=controls_frame, ctl_name="arrange_extent", text="extent",
                           selection=arrange_extent_list,
                           selection_default= "all")
        arrange_propagate_list = self.set_list(ctl_name="arrange_propagate",
                selection_list = ["ripple", "grow", "bubble",
                        "ripple_horiz", "grow_horiz", "bubble_horiz"])
        self.add_color_ctl(master=controls_frame, ctl_name="arrange_propagate",
                           text="propagate",
                           selection=arrange_propagate_list,
                           selection_default= "grow")
        arrange_restore_list = self.set_list(ctl_name="arrange_restore",
                selection_list = ["random", "forward", "reverse"])
        self.add_color_ctl(master=controls_frame, ctl_name="arrange_restore",
                           text="restore",
                           selection=arrange_restore_list,
                           selection_default= "random")
        arrange_modify_list = self.set_list(ctl_name="arrange_modify",
                selection_list = ["replace", "switch", "darken"])
        self.add_color_ctl(master=controls_frame, ctl_name="arrange_modify",
                           text="modify",
                           selection=arrange_modify_list,
                           selection_default= "replace")
        self.add_change_ctl(master=controls_frame, ctl_name="arrange_time", text="time",
                             value=1000, min_value=1000, max_value=1000)
        self.add_change_ctl(master=controls_frame, ctl_name="arrange_number", text="number",
                             value=1, min_value=1, max_value=1)


 
        """
        Major Time Step
        """ 
        Label(master=controls_frame, text="")
        win_label.pack(side="top", fill="both", expand=True) 
        win_label = Label(master=controls_frame, text="Time(msec)", anchor='w')
        win_label.pack(side="top", fill="both", expand=True)
        self.add_change_ctl(master=controls_frame, ctl_name="time_step", text="step",
                            value=1000, min_value=1000, max_value=1000)
       
 
        run_pause_frame = Frame(top_frame)
        run_pause_frame.pack(side="top", fill="both", expand=True)
        self.run_pause_frame = run_pause_frame
        
        set_button = Button(master=run_pause_frame, text="Set", command=self.set)
        set_button.pack(side="left", expand=True)
        run_button = Button(master=run_pause_frame, text="Run", command=self.run)
        run_button.pack(side="left", expand=True)
        pause_button = Button(master=run_pause_frame, text="Pause", command=self.pause)
        pause_button.pack(side="left", expand=True)
        step_button = Button(master=run_pause_frame, text="Step", command=self.step)
        step_button.pack(side="left", expand=True)
        step_button = Button(master=run_pause_frame, text="StepDown", command=self.step_down)
        step_button.pack(side="left", expand=True)
        SlTrace.lg("End of TraceControl __init__")