def play(self, melt, ctl=False): if melt==None: return if melt.isdir: self.stop(); return if not melt.ismark: ue.mezz(melt.mtype) if melt.mtype=='image' and self.pn=='of': self.player.stop() self.player.load(melt) if melt.mtype not in ('audio','video'): return if self.melt_being_played == melt: if ctl==True: if melt.ismark: self.player.set_pos01(melt.metamark.timing.tms/(self.player.dur_sec*1000)) else: self.player.restart() else: self.player.pp() self.endplay(melt); return if melt.ismark and (not self.player.loaded) and (melt.mfile==self.mfile_being_played): self.player.set_pos01(melt.metamark.timing.tms/(self.player.dur_sec*1000)) self.endplay(melt); return if melt.ismark and (self.player.loaded or melt.mfile!=self.mfile_being_played): mfile = self.startplay(melt) self.player.load0(mfile) self.player.play() self.player.set_pos01(melt.metamark.timing.tms/(self.player.dur_sec*1000)) self.endplay(melt);return mfile = self.startplay(melt) self.player.load0(mfile) self.player.paused==False self.player.play() self.endplay(melt) return
def showMenu(self, point): nrow = self.tree.indexAt(point) menu = QMenu(self) Mshow = menu.addAction("Show dir") action = menu.exec_(self.tree.mapToGlobal(point)) ue.mezz(str(self.fmodel.filePath(nrow).toUtf8())) if action == Mshow: ue.open_rep(str(self.fmodel.filePath(nrow).toUtf8()))
def get_pos_sec(self): if self.paused: return self.pos_sec = self.get_float('time_pos') if self.dur_sec: self.pos01 = self.pos_sec/self.dur_sec if DEBUG: ue.mezz('time_pos', self.pos_sec) return self.pos_sec
def kspace_ctl(self, *e): ue.mezz('replay') melt = self.get_melt_selected() self.esono.logic.replay(melt) self.setline_played(self.nl_selected) self.display_marks(melt) return "break"
def init_mpaths(self): # metadata management in memory ue.mezz('loading mpaths') self.mpaths = mpath.Mpath(self.path_start).msubelts() ue.mezz('loaded mpaths') # in order to avoid constant reload for markers return self.mpaths
def update_elt(self): melt = self.elt for tagname in self.esono.gui.tree.tags.tagnames: rsl = self.get_txt_for_tag2(tagname) ue.mezz(tagname, rsl) if rsl: melt.metafields[tagname] = rsl melt.meta.write(melt.metafile)
def init(self): self.opts = [self.app]+self.options_def+self.options try: self.mp = sub.Popen(self.opts, stdin=sub.PIPE, stdout=sub.PIPE, stderr=sub.STDOUT) ue.mezz('a new player was launched') except: ue.mezz('no media player was found')
def quit(self): self.active = False time.sleep(1) self.send('stop') time.sleep(1) ue.mezz('quit') self.send('quit')
def open_parent(self): cuelt,l = self.get_ins_elt() ue.mezz(cuelt, cuelt.ismark, cuelt.mparent, cuelt.mparent.ismark) mp = cuelt.mparent mpp = mp.mparent self.open_elt(mpp) self.select_line(mp.no_in(mpp.msubelts())+1)
def play_nrow(self, nrow): fpath = self.fpaths[nrow] pjson = parse_json.Parse(fpath) self.esono.player.play_file(fpath) self.gui.gmarks.display_json(pjson) self.selectRow(nrow) ue.mezz('play_nrow')
def kspace(self, *e): ue.mezz('play_pause') melt = self.get_melt_selected() if self.esono.logic.play_pause(melt): self.setline_played(self.nl_selected) self.display_marks(melt) return "break"
def get_ins_tag(self): names = self.tag_names(self.get_ins_pos()) ue.mezz(names) if not names: tag='empty' if 'ghost' in names: tag='ghost' else: tag=names[0] self.ins_tag = tag return tag
def set_dur_sec(self, dur_sec): self.read() if not self.dict['dur_sec']: self.dict['dur_sec'] = dur_sec timing = parse_timing.Timing(int(dur_sec*1000)) self.dict['dur_hmsd'] = timing.hmsd self.write() ue.mezz(dur_sec)
def keyreleased(self, e=None): ks = e.keysym; kn = e.keysym_num ue.mezz('released', ks, kn) if ks in ('Up', 'Down'): return 'break' # allow fast scroll self.line_checkout() self.set_cursor_color_bg() self.correct_pos_cursor(tk.INSERT) self.get_ins_tag()
def load(self, melt): if melt==None: return False if melt.isdir: self.stop(); return False if self.melt_played!= melt: self.melt_played = melt ue.mezz('load', melt.name) self.player.load(melt.mfile) return True
def stop(self, next=True): if self.paused != None: ue.mezz("stopped") self.send("stop") self.dur_sec = 0 self.pos = 0 self.sec = 0 self.paused = None self.loaded = False
def display_all(self, mpaths=[]): if not mpaths: mpaths = self.esono.init_mpaths() else: self.esono.mpaths = mpaths self.clear() self.enable() ue.mezz('display all') for mp in mpaths: self.display_melt(mp) self.disable() self.update()
def refresh(self): edit = self.text.EDIT self.text.EDIT = True l = self.n_l() self.text.delete("%d.0"% l, "%d.end"% l) self.elt.meta_read(forced=True) self.write() ue.mezz(edit) self.text.EDIT = edit
def nbsubelts(self): if not self.readable: return False if not self.isdir: return False try: names = os.listdir(self.path) except: return False ue.mezz(names) names = [n for n in names if (n[0]!='.' and not containsoneof(n, hide_files) and not containsoneof(n, hide_dirs))] names = [n for n in names if ((self.mtype(n) in ['audio','video']) or (pisdir(pjoin(self.path, n))))] return len(names)
def play_next(self): elt = self.elt_being_played if not elt in self.esono.elts: ue.mezz(elt, "not in list") return id = self.esono.elts.index(elt) for elt in self.esono.elts[(id + 1) :]: if self.play(elt): break
def select_nrow(self, nrow): ncol = self.currentColumn() if ncol>1: return #self.esono.player.stop() fpath = self.fpaths[nrow] pjson = parse_json.Parse(fpath) self.esono.player.load_file(fpath) self.gui.gmarks.display_json(pjson) self.selectRow(nrow) ue.mezz('select_nrow')
def put_marker(self): eso = self.esono tree = eso.gui.tree if eso.player.stopped: return elt = eso.logic.elt_being_played timing = eso_timing.Timing(int(eso.player.sec*1000)) if timing == None: ue.mezz('no timing available') elt.pelt.add_timing(timing)
def save_json(self, nrow): fpath = self.fpaths[nrow] pjson = parse_json.Parse(fpath) pjson.read() for c in range(2, len(self.columns)): item = self.item(nrow, c) if item: pjson.dict['tags'][str(c-2)] = str(item.text().toUtf8()) pjson.save() ue.mezz('save', pjson)
def keyreleased(self, e=None): ks = e.keysym kn = e.keysym_num ue.mezz("released", ks, kn) if ks in ("Up", "Down"): return "break" # allow fast scroll self.line_checkout() self.set_cursor_color_bg() self.correct_pos_cursor(tk.INSERT) self.get_ins_tag()
def get_ins_tag(self): names = self.tag_names(self.get_ins_pos()) ue.mezz(names) if not names: tag = "empty" if "ghost" in names: tag = "ghost" else: tag = names[0] self.ins_tag = tag return tag
def __call__(self, args): mess = args[0] if len(args)>1: args = args[1:] else: args = None ue.mezz(mess); if mess=='reload': self.esono.init_comm() if mess=='quit': self.esono.quit() if mess=='player': exec('rsl = self.esono.player.%s'%args[0]) if type(rsl) in (type(0), type(0.), type('')): self.osc.send(rsl)
def __init__(self, path_eso, path_start, port): self.path_eso = path_eso self.pathdir_eso = vsu.path2dir(path_eso) self.pathdir_esonoclaste = vsu.path2dir(os.path.join(self.pathdir_eso, '..')) self.path_start = os.path.normpath(os.path.abspath(path_start)) ue.mezz(self.path_start) self.port = port self.gui = None self.trad = traductions self.comm = None self.init()
def refresh_melt(self, mp): ue.mezz('refresh_melt', mp.name) self.enable() nl = self.get_line_melt(mp) self.delete("%d.0"%(nl),"%d.0"%(nl+1)) if nl == self.getnbline()+1: self.insert(tk.INSERT, '\n') self.display_melt(mp) self.disable() self.setline_played() self.setline_selected() self.update()
def run(self): while self.active: if (not self.paused) and (not self.stopped): if self.mp.poll()!=None: self.init(); return # path = self.get_path() # if path == "(null)": self.stop(); return if self.sec<(self.dursec-2): self.get_pos() else: self.stop(); return if DEBUG: print ('run'); time.sleep(1) time.sleep(0.05) ue.mezz('mplayer thread exited gracefully')
def stop(self, next=True): if self.stopped: return if self.paused!=None: ue.mezz('stopped') self.send('stop') self.dursec = 0 self.pos = 0 self.sec = 0 self.paused = None self.stopped = True if next: if self.esono: self.esono.logic.play_next()