def CheckCanRead(self): ''' ffmpegがないのにwav以外を読み込もうとした場合に メッセージを表示する ''' snd_files = mf.get_snd_files(self.snd_dir) if not snd_files and not ffmpeg.has_ffmpeg and \ mf.exists(self.snd_dir, ffmpeg.EXTENSIONS): msg = u'wav形式以外に対応するにはffmpeg.exeを' \ u'inspause.exeと同じフォルダに置く必要があります' wx.MessageBox(msg, u'wav以外の読み書き')
def backup(self, snd_dir, prefix=''): ''' バックアップの作成 @param prefix 保存名の頭につける文字列 ''' try: zip_path, name = self._get_backup_path(snd_dir, prefix) zf = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) # ---- info.txt の作成 conf = SafeConfigParser() conf.add_section('info') conf.set('info', 'name', name.encode('CP932')) sf = StringIO() conf.write(sf) LABELS_DIR = 'labels' info_path = os.path.join(LABELS_DIR, INFO_FILE) zf.writestr(info_path, sf.getvalue()) labels_paths = mf.get_labels_paths(snd_dir, False) snd_files = mf.get_snd_files(snd_dir) num_snds = len(snd_files) max_labels_file = mf.get_labels_file(num_snds) # ---- ラベルファイルの作成 for labels_path in labels_paths: labels_file = os.path.basename(labels_path) if labels_file > max_labels_file: break dst = os.path.join(LABELS_DIR, labels_file) zf.write(labels_path, dst) zf.close() except Exception as e: print str(e) return None info = self._load_labels_info_from_zip(zip_path) self.append(info) return info
def restore(self, snd_dir, info): ''' バックアップの復元 ''' try: labels_dir = mf.get_labels_dir(snd_dir) self._remove_all_files(labels_dir) snd_files = mf.get_snd_files(snd_dir) num_snds = len(snd_files) max_labels_file = mf.get_labels_file(num_snds) for i, (labels_file, labels) in enumerate(info.labels_list): if labels_file <= max_labels_file: labels_path = os.path.join(labels_dir, labels_file) labels.write(labels_path) except Exception as e: print str(e)
def UpdateFlist(self): ''' 音声ファイル一覧画面を更新する ''' self.ConfirmSave() self.flist.DeleteAllItems() snd_files = mf.get_snd_files(self.snd_dir) if not snd_files: self.conf.list_index = 0 self.snd = None self.view.SetVolume(None) self.view.SetLabels(Labels(), '') self.EnableUI() return snd_files.sort() for i, name in enumerate(snd_files): labels_path = mf.get_labels_path(self.snd_dir, i + 1) if os.path.exists(labels_path): image_no = IMG_HAS_LABELS else: image_no = IMG_NO_LABELS self.flist.InsertImageStringItem(i, name, image_no) list_index = self.conf.list_index list_index = max(0, min(list_index, self.flist.ItemCount - 1)) self.conf.list_index = list_index self.conf.list_index = -1 # OnSelectSndで波形画面を更新するため self.flist.Select(list_index) self.flist.EnsureVisible(list_index) self.flist.SetColumnWidth(0, self.conf.flist_width)