Logo Search packages:      
Sourcecode: cadencii version File versions  Download package

void org::kbinani::cadencii::FormMain::checkUnknownResamplerAndSinger ( ByRef< String >  resampler_path,
ByRef< String >  singer_path 
) [inline, private]

指定した歌手とリサンプラーについて,設定値に登録されていないものだったら登録する.

Parameters:
resampler_path
singer_path

Definition at line 1231 of file FormMain.cs.

References org::kbinani::cadencii::EditorConfig::addResampler(), org::kbinani::cadencii::AppManager::editorConfig, org::kbinani::cadencii::Utility::getExecutingUtau(), org::kbinani::cadencii::EditorConfig::getResamplerAt(), org::kbinani::cadencii::EditorConfig::getResamplerCount(), org::kbinani::cadencii::FormCheckUnknownSingerAndResampler::getResamplerPath(), org::kbinani::cadencii::FormCheckUnknownSingerAndResampler::getSingerPath(), org::kbinani::cadencii::FormCheckUnknownSingerAndResampler::isResamplerChecked(), org::kbinani::cadencii::FormCheckUnknownSingerAndResampler::isSingerChecked(), org::kbinani::cadencii::Utility::readUtauSingerConfig(), org::kbinani::cadencii::AppManager::reloadUtauVoiceDB(), org::kbinani::cadencii::AppManager::showModalDialog(), and org::kbinani::vsq::SingerConfig::VOICEIDSTR.

        {
            String utau = Utility.getExecutingUtau();
            String utau_dir = "";
            if ( !str.compare( utau, "" ) ) {
                utau_dir = PortUtil.getDirectoryName( utau );
            }

            // 可能なら,VOICEの文字列を置換する
            String search = "%VOICE%";
            if ( str.startsWith( singer_path.value, search ) && str.length( singer_path.value ) > str.length( search ) ) {
                singer_path.value = str.sub( singer_path.value, str.length( search ) );
                singer_path.value = fsys.combine( fsys.combine( utau_dir, "voice" ), singer_path.value );
            }

            // 歌手はknownかunknownか?
            // 歌手指定が知らない歌手だった場合に,ダイアログを出すかどうか
            boolean check_unknown_singer = false;
            if ( fsys.isFileExists( fsys.combine( singer_path.value, "oto.ini" ) ) ) {
                // oto.iniが存在する場合
                // editorConfigに入っていない場合に,ダイアログを出す
                boolean found = false;
                for ( int i = 0; i < vec.size( AppManager.editorConfig.UtauSingers ); i++ ) {
                    SingerConfig sc = vec.get( AppManager.editorConfig.UtauSingers, i );
                    if ( sc == null ) {
                        continue;
                    }
                    if ( str.compare( sc.VOICEIDSTR, singer_path.value ) ) {
                        found = true;
                        break;
                    }
                }
                check_unknown_singer = !found;
            }

            // リサンプラーが知っているやつかどうか
            boolean check_unknwon_resampler = false;
#if DEBUG
            sout.println( "FormMain#checkUnknownResamplerAndSinger; resampler_path.value=" + resampler_path.value );
#endif
            String resampler_dir = PortUtil.getDirectoryName( resampler_path.value );
            if ( str.compare( resampler_dir, "" ) ) {
                // ディレクトリが空欄なので,UTAUのデフォルトのリサンプラー指定である
                resampler_path.value = fsys.combine( utau_dir, resampler_path.value );
                resampler_dir = PortUtil.getDirectoryName( resampler_path.value );
            }
            if ( !str.compare( resampler_dir, "" ) &&  fsys.isFileExists( resampler_path.value ) ) {
                boolean found = false;
                for ( int i = 0; i < AppManager.editorConfig.getResamplerCount(); i++ ) {
                    String resampler = AppManager.editorConfig.getResamplerAt( i );
                    if ( str.compare( resampler, resampler_path.value ) ) {
                        found = true;
                        break;
                    }
                }
                check_unknwon_resampler = !found;
            }

            // unknownな歌手やリサンプラーが発見された場合.
            // 登録するかどうか問い合わせるダイアログを出す
            FormCheckUnknownSingerAndResampler dialog = null;
            try {
                if ( check_unknown_singer || check_unknwon_resampler ) {
                    dialog = new FormCheckUnknownSingerAndResampler( singer_path.value, check_unknown_singer, resampler_path.value, check_unknwon_resampler );
                    dialog.setLocation( getFormPreferedLocation( dialog ) );
                    BDialogResult dr = AppManager.showModalDialog( dialog, this );
                    if ( dr != BDialogResult.OK ) {
                        return;
                    }

                    // 登録する
                    // リサンプラー
                    if ( dialog.isResamplerChecked() ) {
                        String path = dialog.getResamplerPath();
                        if ( fsys.isFileExists( path ) ) {
                            AppManager.editorConfig.addResampler( path, false );
                        }
                    }
                    // 歌手
                    if ( dialog.isSingerChecked() ) {
                        String path = dialog.getSingerPath();
                        if ( fsys.isDirectoryExists( path ) ) {
                            SingerConfig sc = new SingerConfig();
                            Utility.readUtauSingerConfig( path, sc );
                            vec.add( AppManager.editorConfig.UtauSingers, sc );
                        }
                        AppManager.reloadUtauVoiceDB();
                    }
                }
            } catch ( Exception ex ) {
                Logger.write( typeof( FormMain ) + ".checkUnknownResamplerAndSinger; ex=" + ex + "\n" );
            } finally {
                if ( dialog != null ) {
                    try {
                        dialog.close();
                    } catch ( Exception ex2 ) {
                    }
                }
            }
        }

Here is the call graph for this function:


Generated by  Doxygen 1.6.0   Back to index