示例#1
0
    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以外の読み書き')
示例#2
0
    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
示例#3
0
    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)
示例#4
0
    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)