+/*!
+ \brief Get OCAF application.
+ \return handle to OCAF application object
+*/
+Handle( TDocStd_Application ) CAF_Application::stdApp() const
+{
+ return myStdApp;
+}
+
+/*!
+ \brief Get file extension filter.
+
+ The file extension filter is used in Open/Save dialog boxes.
+
+ \return file filters for open/save document dialog box
+*/
+QString CAF_Application::getFileFilter() const
+{
+ if ( stdApp().IsNull() )
+ return QString();
+
+ TColStd_SequenceOfExtendedString formats;
+ stdApp()->Formats( formats );
+
+ QStringList allWC;
+ QMap<QString, QStringList> wildCards;
+ Handle(Resource_Manager) resMgr = new Resource_Manager( stdApp()->ResourcesName() );
+ for ( int i = 1; i <= formats.Length(); i++ )
+ {
+ QString extension;
+ QString extResStr = CAF_Tools::toQString( formats.Value( i ) ) + QString( ".FileExtension" );
+ if ( resMgr->Find( extResStr.toLatin1().data() ) )
+ extension = QString( resMgr->Value( extResStr.toLatin1().data() ) );
+
+ QString descr;
+ QString descrResStr = CAF_Tools::toQString( formats.Value( i ) ) + QString( ".Description" );
+ if ( resMgr->Find( (char*)descrResStr.toLatin1().data() ) )
+ descr = QString( resMgr->Value( (char*)descrResStr.toLatin1().data() ) );
+
+ if ( !descr.isEmpty() && !extension.isEmpty() )
+ {
+ if ( !wildCards.contains( descr ) )
+ wildCards.insert( descr, QStringList() );
+ wildCards[descr].append( QString( "*.%1" ).arg( extension ) );
+ allWC.append( QString( "*.%1" ).arg( extension ) );
+ }
+ }
+
+ if ( wildCards.isEmpty() )
+ return QString();
+
+ QStringList filters;
+ for ( QMap<QString, QStringList>::ConstIterator it = wildCards.begin(); it != wildCards.end(); ++it )
+ filters.append( QString( "%1 (%2)" ).arg( it.key() ).arg( it.value().join( "; " ) ) );
+
+ if ( wildCards.count() > 1 )
+ filters.prepend( QString( "%1 (%2)" ).arg( tr( "INF_ALL_DOCUMENTS_FILTER" ) ).arg( allWC.join( "; " ) ) );
+
+ if ( !filters.isEmpty() )
+ filters.append( tr( "INF_ALL_FILTER" ) );
+
+ return filters.join( ";;" );
+}
+
+/*!
+ \brief Create menu and toolbars actions.
+*/