Module pyspecan.controller.tkGUI.sink_file

Controller for FILE sink

Functions

def args_file(parser: argparse.ArgumentParser)
Expand source code
def args_file(parser: argparse.ArgumentParser):
    sink = args.get_group(parser, "Sink (FILE)")
    args_sink(sink)

Classes

class SinkConfig
Expand source code
class SinkConfig:
    pass
class SinkFile (ctrl)
Expand source code
class SinkFile(Sink):
    def __init__(self, ctrl):
        super().__init__(ctrl)
        self.ctrl.view.sink.tb_sld_samp.scale.config(from_=0, to=self.ctrl.model.sink.max_samp) # resolution=self.model.block_size
        self.ctrl.view.sink.tb_sld_samp.scale.config(command=self.handle_sld_samp)

        self.ctrl.view.sink.tb_btn_prev.config(command=self.prev)
        self.ctrl.view.sink.tb_btn_next.config(command=self.next)

        self.ctrl.view.sink.cl_btn_file.config(command=self.handle_btn_file)
        self.ctrl.view.sink.cl_cb_file_fmt.config(values=list([v.name for v in Format]))
        self.ctrl.view.sink.cl_cb_file_fmt.bind("<<ComboboxSelected>>", self.handle_event)

    def start(self):
        if self.ctrl.model.sink.get_path() is None:
            print("sink is not fully initialized, failed to get filepath")
            return
        self.ctrl.view.tb_btn_start.config(state=tk.DISABLED)
        self.ctrl.view.tb_btn_stop.config(state=tk.ACTIVE)
        self.ctrl.dispatch.send(CMD.START)

    def stop(self):
        self.ctrl.view.tb_btn_stop.config(state=tk.DISABLED)
        self.ctrl.view.tb_btn_start.config(state=tk.ACTIVE)
        self.ctrl.dispatch.send(CMD.STOP)

    def reset(self):
        self.ctrl.dispatch.send(CMD.RESET)
        self.stop()

    def prev(self):
        self.ctrl.dispatch.send(CMD.PREV)

    def next(self):
        self.ctrl.dispatch.send(CMD.NEXT)

    def draw_tb(self):
        self.ctrl.view.sink.tb_var_samp.set(self.ctrl.model.sink.cur_samp)

        self.ctrl.view.sink.tb_var_time_cur.set(strfmt_td(dt.timedelta(seconds=self.ctrl.model.sink.cur_time())))
        self.ctrl.view.sink.tb_var_time_tot.set(strfmt_td(dt.timedelta(seconds=self.ctrl.model.sink.tot_time())))

    def draw_cl(self):
        self.ctrl.view.sink.cl_var_file.set(str(self.ctrl.model.sink.get_path()))
        self.ctrl.view.sink.cl_var_file_fmt.set(str(self.ctrl.model.sink.get_fmt().name))


    # --- GUI bind events and setters --- #
    def handle_event(self, event):
        if event.widget == self.ctrl.view.sink.cl_cb_file_fmt:
            self.set_dtype(self.ctrl.view.sink.cl_var_file_fmt.get())
    def handle_btn_file(self):
        self.log.trace("handle_btn_file()")
        self.set_path(dialog.get_file(False))

    def handle_sld_samp(self, *args):
        self.log.trace("handle_sld_samp()")
        self.set_samp(self.ctrl.view.sink.tb_var_samp.get())

    def set_samp(self, samp):
        self.log.trace("set_samp(%s)", samp)
        self.stop()
        self.ctrl.model.sink.cur_samp = samp
        self.draw_tb()
        # print(samp)

    def set_path(self, path):
        self.log.trace("set_path(%s)", path)
        self.ctrl.model.sink.set_path(path)
        print(f"Path set to '{self.ctrl.model.sink.get_path()}'")
        self.ctrl.view.sink.tb_sld_samp.scale.config(from_=0, to=self.ctrl.model.sink.max_samp) # resolution=self.model.block_size
        self.draw_tb()
        self.draw_cl()
    def set_dtype(self, dtype):
        self.log.trace("set_dtype(%s)", dtype)
        self.ctrl.model.sink.set_fmt(dtype)
        self.draw_tb()
        self.draw_cl()

Ancestors

Methods

def draw_cl(self)
Expand source code
def draw_cl(self):
    self.ctrl.view.sink.cl_var_file.set(str(self.ctrl.model.sink.get_path()))
    self.ctrl.view.sink.cl_var_file_fmt.set(str(self.ctrl.model.sink.get_fmt().name))
def draw_tb(self)
Expand source code
def draw_tb(self):
    self.ctrl.view.sink.tb_var_samp.set(self.ctrl.model.sink.cur_samp)

    self.ctrl.view.sink.tb_var_time_cur.set(strfmt_td(dt.timedelta(seconds=self.ctrl.model.sink.cur_time())))
    self.ctrl.view.sink.tb_var_time_tot.set(strfmt_td(dt.timedelta(seconds=self.ctrl.model.sink.tot_time())))
def handle_btn_file(self)
Expand source code
def handle_btn_file(self):
    self.log.trace("handle_btn_file()")
    self.set_path(dialog.get_file(False))
def handle_event(self, event)
Expand source code
def handle_event(self, event):
    if event.widget == self.ctrl.view.sink.cl_cb_file_fmt:
        self.set_dtype(self.ctrl.view.sink.cl_var_file_fmt.get())
def handle_sld_samp(self, *args)
Expand source code
def handle_sld_samp(self, *args):
    self.log.trace("handle_sld_samp()")
    self.set_samp(self.ctrl.view.sink.tb_var_samp.get())
def next(self)
Expand source code
def next(self):
    self.ctrl.dispatch.send(CMD.NEXT)
def prev(self)
Expand source code
def prev(self):
    self.ctrl.dispatch.send(CMD.PREV)
def reset(self)
Expand source code
def reset(self):
    self.ctrl.dispatch.send(CMD.RESET)
    self.stop()
def set_dtype(self, dtype)
Expand source code
def set_dtype(self, dtype):
    self.log.trace("set_dtype(%s)", dtype)
    self.ctrl.model.sink.set_fmt(dtype)
    self.draw_tb()
    self.draw_cl()
def set_path(self, path)
Expand source code
def set_path(self, path):
    self.log.trace("set_path(%s)", path)
    self.ctrl.model.sink.set_path(path)
    print(f"Path set to '{self.ctrl.model.sink.get_path()}'")
    self.ctrl.view.sink.tb_sld_samp.scale.config(from_=0, to=self.ctrl.model.sink.max_samp) # resolution=self.model.block_size
    self.draw_tb()
    self.draw_cl()
def set_samp(self, samp)
Expand source code
def set_samp(self, samp):
    self.log.trace("set_samp(%s)", samp)
    self.stop()
    self.ctrl.model.sink.cur_samp = samp
    self.draw_tb()
    # print(samp)
def start(self)
Expand source code
def start(self):
    if self.ctrl.model.sink.get_path() is None:
        print("sink is not fully initialized, failed to get filepath")
        return
    self.ctrl.view.tb_btn_start.config(state=tk.DISABLED)
    self.ctrl.view.tb_btn_stop.config(state=tk.ACTIVE)
    self.ctrl.dispatch.send(CMD.START)
def stop(self)
Expand source code
def stop(self):
    self.ctrl.view.tb_btn_stop.config(state=tk.DISABLED)
    self.ctrl.view.tb_btn_start.config(state=tk.ACTIVE)
    self.ctrl.dispatch.send(CMD.STOP)