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

boolean org::kbinani::cadencii::FormMain::openVsqCor ( String  file ) [inline]

xvsqファイルを開きます

Returns:
ファイルを開くのに成功した場合trueを,それ以外はfalseを返します

Definition at line 6875 of file FormMain.cs.

References org::kbinani::cadencii::VsqFileEx::cacheDir, org::kbinani::cadencii::EditHistoryModel::clear(), org::kbinani::cadencii::AppManager::deserializeRenderingStatus(), org::kbinani::cadencii::AppManager::editHistory, org::kbinani::cadencii::AppManager::editorConfig, org::kbinani::cadencii::AppManager::getVsqFile(), org::kbinani::cadencii::AppManager::mMixerWindow, org::kbinani::cadencii::EditorConfig::pushRecentFiles(), org::kbinani::cadencii::AppManager::readVsq(), org::kbinani::cadencii::AppManager::setTempWaveDir(), org::kbinani::vsq::VsqFile::Track, org::kbinani::cadencii::FormMixer::updateStatus(), and org::kbinani::cadencii::EditorConfig::UseProjectCache.

        {
            if( AppManager.readVsq( file ) ){
                return true;
            }
            if ( AppManager.getVsqFile().Track.size() >= 2 ) {
                updateScrollRangeHorizontal();
            }
            AppManager.editorConfig.pushRecentFiles( file );
            updateRecentFileMenu();
            setEdited( false );
            AppManager.editHistory.clear();
            AppManager.mMixerWindow.updateStatus();

            // キャッシュwaveなどの処理
            if ( AppManager.editorConfig.UseProjectCache ) {
                #region キャッシュディレクトリの処理
                VsqFileEx vsq = AppManager.getVsqFile();
                String cacheDir = vsq.cacheDir; // xvsqに保存されていたキャッシュのディレクトリ
                String dir = PortUtil.getDirectoryName( file );
                String name = PortUtil.getFileNameWithoutExtension( file );
                String estimatedCacheDir = fsys.combine( dir, name + ".cadencii" ); // ファイル名から推測されるキャッシュディレクトリ
                if ( cacheDir == null ) {
                    cacheDir = "";
                }
                if ( !str.compare( cacheDir, "" ) && 
                     fsys.isDirectoryExists( cacheDir ) &&
                     !str.compare( estimatedCacheDir, "" ) &&
                     !str.compare( cacheDir, estimatedCacheDir ) ) {
                    // ファイル名から推測されるキャッシュディレクトリ名と
                    // xvsqに指定されているキャッシュディレクトリと異なる場合
                    // cacheDirの必要な部分をestimatedCacheDirに移す

                    // estimatedCacheDirが存在しない場合、新しく作る
#if DEBUG
                    sout.println( "FormMain#openVsqCor;fsys.isDirectoryExists( estimatedCacheDir )=" + fsys.isDirectoryExists( estimatedCacheDir ) ); 
#endif
                    if ( !fsys.isDirectoryExists( estimatedCacheDir ) ) {
                        try {
                            PortUtil.createDirectory( estimatedCacheDir );
                        } catch ( Exception ex ) {
                            Logger.write( typeof( FormMain ) + ".openVsqCor; ex=" + ex + "\n" );
                            serr.println( "FormMain#openVsqCor; ex=" + ex );
                            AppManager.showMessageBox( PortUtil.formatMessage( _( "cannot create cache directory: '{0}'" ), estimatedCacheDir ),
                                                       _( "Info." ),
                                                       PortUtil.OK_OPTION,
                                                       org.kbinani.windows.forms.Utility.MSGBOX_INFORMATION_MESSAGE );
                            return true;
                        }
                    }

                    // ファイルを移す
                    for ( int i = 1; i < vsq.Track.size(); i++ ) {
                        String wavFrom = fsys.combine( cacheDir, i + ".wav" );
                        String xmlFrom = fsys.combine( cacheDir, i + ".xml" );

                        String wavTo = fsys.combine( estimatedCacheDir, i + ".wav" );
                        String xmlTo = fsys.combine( estimatedCacheDir, i + ".xml" );
                        if ( fsys.isFileExists( wavFrom ) ) {
                            try {
                                PortUtil.moveFile( wavFrom, wavTo );
                            } catch ( Exception ex ) {
                                Logger.write( typeof( FormMain ) + ".openVsqCor; ex=" + ex + "\n" );
                                serr.println( "FormMain#openVsqCor; ex=" + ex );
                            }
                        }
                        if ( fsys.isFileExists( xmlFrom ) ) {
                            try {
                                PortUtil.moveFile( xmlFrom, xmlTo );
                            } catch ( Exception ex ) {
                                Logger.write( typeof( FormMain ) + ".openVsqCor; ex=" + ex + "\n" );
                                serr.println( "FormMain#openVsqCor; ex=" + ex );
                            }
                        }
                    }
                }
                cacheDir = estimatedCacheDir;

                // キャッシュが無かったら作成
                if ( !fsys.isDirectoryExists( cacheDir ) ) {
                    try {
                        PortUtil.createDirectory( cacheDir );
                    } catch ( Exception ex ) {
                        Logger.write( typeof( FormMain ) + ".openVsqCor; ex=" + ex + "\n" );
                        serr.println( "FormMain#openVsqCor; ex=" + ex );
                        AppManager.showMessageBox( PortUtil.formatMessage( _( "cannot create cache directory: '{0}'" ), estimatedCacheDir ),
                                                   _( "Info." ),
                                                   PortUtil.OK_OPTION,
                                                   org.kbinani.windows.forms.Utility.MSGBOX_INFORMATION_MESSAGE );
                        return true;
                    }
                }

                // RenderedStatusを読み込む
                for ( int i = 1; i < vsq.Track.size(); i++ ) {
                    AppManager.deserializeRenderingStatus( cacheDir, i );
                }

                // キャッシュ内のwavを、waveViewに読み込む
                waveView.unloadAll();
                for ( int i = 1; i < vsq.Track.size(); i++ ) {
                    String wav = fsys.combine( cacheDir, i + ".wav" );
#if DEBUG
                    sout.println( "FormMain#openVsqCor; wav=" + wav + "; isExists=" + fsys.isFileExists( wav ) );
#endif
                    if ( !fsys.isFileExists( wav ) ) {
                        continue;
                    }
                    waveView.load( i - 1, wav );
                }

                // 一時ディレクトリを、cachedirに変更
                AppManager.setTempWaveDir( cacheDir );
                #endregion
            }
            return false;
        }

Here is the call graph for this function:


Generated by  Doxygen 1.6.0   Back to index