本文整理汇总了C++中OSFactory::getDirSeparator方法的典型用法代码示例。如果您正苦于以下问题:C++ OSFactory::getDirSeparator方法的具体用法?C++ OSFactory::getDirSeparator怎么用?C++ OSFactory::getDirSeparator使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OSFactory
的用法示例。
在下文中一共展示了OSFactory::getDirSeparator方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fixDirSeparators
string ThemeLoader::fixDirSeparators( const string &rPath )
{
OSFactory *pOsFactory = OSFactory::instance( getIntf() );
const string &sep = pOsFactory->getDirSeparator();
string::size_type p = rPath.find( "/", 0 );
string newPath = rPath;
while( p != string::npos )
{
newPath = newPath.replace( p, 1, sep );
p = newPath.find( "/", p + 1 );
}
return newPath;
}
示例2: LoadCatalog
void XMLParser::LoadCatalog()
{
// Get the resource path and look for the DTD
OSFactory *pOSFactory = OSFactory::instance( getIntf() );
const list<string> &resPath = pOSFactory->getResourcePath();
const string &sep = pOSFactory->getDirSeparator();
list<string>::const_iterator it;
#ifdef HAVE_SYS_STAT_H
struct stat statBuf;
// Try to load the catalog first (needed at least on win32 where
// we don't have a default catalog)
for( it = resPath.begin(); it != resPath.end(); ++it )
{
string catalog_path = (*it) + sep + "skin.catalog";
if( !stat( catalog_path.c_str(), &statBuf ) )
{
msg_Dbg( getIntf(), "Using catalog %s", catalog_path.c_str() );
xml_CatalogLoad( m_pXML, catalog_path.c_str() );
break;
}
}
if( it == resPath.end() )
{
// Ok, try the default one
xml_CatalogLoad( m_pXML, NULL );
}
for( it = resPath.begin(); it != resPath.end(); ++it )
{
string path = (*it) + sep + "skin.dtd";
if( !stat( path.c_str(), &statBuf ) )
{
// DTD found
msg_Dbg( getIntf(), "using DTD %s", path.c_str() );
// Add an entry in the default catalog
xml_CatalogAdd( m_pXML, "public",
"-//VideoLAN//DTD VLC Skins V"
SKINS_DTD_VERSION "//EN", path.c_str() );
break;
}
}
if( it == resPath.end() )
{
msg_Err( getIntf(), "cannot find the skins DTD");
}
#endif
}
示例3: getAsStringName
const string Stream::getAsStringName() const
{
string fullName = getAsStringFullName();
// XXX: This should be done in VLC core, not here...
// Remove path information if any
OSFactory *pFactory = OSFactory::instance( getIntf() );
string::size_type pos = fullName.rfind( pFactory->getDirSeparator() );
if( pos != string::npos )
{
fullName = fullName.substr( pos + 1, fullName.size() - pos + 1 );
}
return fullName;
}
示例4: getFilePath
string ThemeLoader::getFilePath( const string &rFullPath )
{
OSFactory *pOsFactory = OSFactory::instance( getIntf() );
const string &sep = pOsFactory->getDirSeparator();
// Find the last separator ('/' or '\')
string::size_type p = rFullPath.rfind( sep, rFullPath.size() );
string basePath;
if( p != string::npos )
{
if( p < rFullPath.size() - 1)
{
basePath = rFullPath.substr( 0, p );
}
else
{
basePath = rFullPath;
}
}
return basePath;
}
示例5: execute
void CmdUpdateItem::execute()
{
playlist_t *pPlaylist = getIntf()->p_sys->p_playlist;
if( pPlaylist == NULL )
return;
input_thread_t *p_input = playlist_CurrentInput( pPlaylist );
if( !p_input )
return;
// Get playlist item information
input_item_t *pItem = input_GetItem( p_input );
char *pszName = input_item_GetName( pItem );
char *pszUri = input_item_GetURI( pItem );
string name = pszName;
// XXX: This should be done in VLC core, not here...
// Remove path information if any
OSFactory *pFactory = OSFactory::instance( getIntf() );
string::size_type pos = name.rfind( pFactory->getDirSeparator() );
if( pos != string::npos )
{
name = name.substr( pos + 1, name.size() - pos + 1 );
}
UString srcName( getIntf(), name.c_str() );
UString srcURI( getIntf(), pszUri );
free( pszName );
free( pszUri );
// Create commands to update the stream variables
CmdSetText *pCmd1 = new CmdSetText( getIntf(), m_rStreamName, srcName );
CmdSetText *pCmd2 = new CmdSetText( getIntf(), m_rStreamURI, srcURI );
// Push the commands in the asynchronous command queue
AsyncQueue *pQueue = AsyncQueue::instance( getIntf() );
pQueue->push( CmdGenericPtr( pCmd1 ), false );
pQueue->push( CmdGenericPtr( pCmd2 ), false );
vlc_object_release( p_input );
}
示例6: extractFileInZip
bool ThemeLoader::extractFileInZip( unzFile file, const string &rootDir,
bool isWsz )
{
// Read info for the current file
char filenameInZip[256];
unz_file_info fileInfo;
if( unzGetCurrentFileInfo( file, &fileInfo, filenameInZip,
sizeof( filenameInZip), NULL, 0, NULL, 0 )
!= UNZ_OK )
{
return false;
}
// Convert the file name to lower case, because some winamp skins
// use the wrong case...
if( isWsz )
for( size_t i = 0; i < strlen( filenameInZip ); i++ )
filenameInZip[i] = tolower( filenameInZip[i] );
// Allocate the buffer
void *pBuffer = malloc( ZIP_BUFFER_SIZE );
if( !pBuffer )
return false;
// Get the path of the file
OSFactory *pOsFactory = OSFactory::instance( getIntf() );
string fullPath = rootDir
+ pOsFactory->getDirSeparator()
+ fixDirSeparators( filenameInZip );
string basePath = getFilePath( fullPath );
// Extract the file if is not a directory
if( basePath != fullPath )
{
if( unzOpenCurrentFile( file ) )
{
free( pBuffer );
return false;
}
makedir( basePath.c_str() );
FILE *fout = fopen( fullPath.c_str(), "wb" );
if( fout == NULL )
{
msg_Err( getIntf(), "error opening %s", fullPath.c_str() );
free( pBuffer );
return false;
}
// Extract the current file
int n;
do
{
n = unzReadCurrentFile( file, pBuffer, ZIP_BUFFER_SIZE );
if( n < 0 )
{
msg_Err( getIntf(), "error while reading zip file" );
free( pBuffer );
return false;
}
else if( n > 0 )
{
if( fwrite( pBuffer, n , 1, fout) != 1 )
{
msg_Err( getIntf(), "error while writing %s",
fullPath.c_str() );
free( pBuffer );
return false;
}
}
} while( n > 0 );
fclose(fout);
if( unzCloseCurrentFile( file ) != UNZ_OK )
{
free( pBuffer );
return false;
}
}
free( pBuffer );
return true;
}
示例7: handleBeginElement
void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr )
{
#define RequireAttr( attr, name, a ) \
if( MissingAttr( attr, name, a ) ) return;
if( rName == "Include" )
{
RequireAttr( attr, rName, "file" );
OSFactory *pFactory = OSFactory::instance( getIntf() );
string fullPath = m_path + pFactory->getDirSeparator() + attr["file"];
msg_Dbg( getIntf(), "opening included XML file: %s", fullPath.c_str() );
SkinParser subParser( getIntf(), fullPath.c_str(), m_path, m_pData );
subParser.parse();
}
else if( rName == "IniFile" )
{
RequireAttr( attr, rName, "id" );
RequireAttr( attr, rName, "file" );
const BuilderData::IniFile iniFile( uniqueId( attr["id"] ),
attr["file"] );
m_pData->m_listIniFile.push_back( iniFile );
}
else if( rName == "Anchor" )
{
RequireAttr( attr, rName, "priority" );
DefaultAttr( attr, "x", "0" );
DefaultAttr( attr, "y", "0" );
DefaultAttr( attr, "lefttop", "lefttop" );
DefaultAttr( attr, "points", "(0,0)" );
DefaultAttr( attr, "range", "10" );
int refWidth, refHeight;
getRefDimensions( refWidth, refHeight, false );
int x = getDimension( attr["x"], refWidth );
int y = getDimension( attr["y"], refHeight );
const BuilderData::Anchor anchor( x + m_xOffset,
y + m_yOffset, attr["lefttop"],
atoi( attr["range"] ), atoi( attr["priority"] ),
attr["points"], m_curLayoutId );
m_pData->m_listAnchor.push_back( anchor );
}
else if( rName == "Bitmap" )
{
RequireAttr( attr, rName, "id" );
RequireAttr( attr, rName, "file" );
RequireAttr( attr, rName, "alphacolor" );
DefaultAttr( attr, "nbframes", "1" );
DefaultAttr( attr, "fps", "4" );
DefaultAttr( attr, "loop", "0" );
m_curBitmapId = uniqueId( attr["id"] );
const BuilderData::Bitmap bitmap( m_curBitmapId,
attr["file"], convertColor( attr["alphacolor"] ),
atoi( attr["nbframes"] ), atoi( attr["fps"] ),
atoi( attr["loop"] ) );
m_pData->m_listBitmap.push_back( bitmap );
}
else if( rName == "SubBitmap" )
{
RequireAttr( attr, rName, "id" );
RequireAttr( attr, rName, "x" );
RequireAttr( attr, rName, "y" );
RequireAttr( attr, rName, "width" );
RequireAttr( attr, rName, "height" );
DefaultAttr( attr, "nbframes", "1" );
DefaultAttr( attr, "fps", "4" );
DefaultAttr( attr, "loop", "0" );
const BuilderData::SubBitmap bitmap( uniqueId( attr["id"] ),
m_curBitmapId, atoi( attr["x"] ), atoi( attr["y"] ),
atoi( attr["width"] ), atoi( attr["height"] ),
atoi( attr["nbframes"] ), atoi( attr["fps"] ),
atoi( attr["loop"] ) );
m_pData->m_listSubBitmap.push_back( bitmap );
}
else if( rName == "BitmapFont" )
{
RequireAttr( attr, rName, "id" );
RequireAttr( attr, rName, "file" );
DefaultAttr( attr, "type", "digits" );
const BuilderData::BitmapFont font( uniqueId( attr["id"] ),
attr["file"], attr["type"] );
m_pData->m_listBitmapFont.push_back( font );
}
else if( rName == "PopupMenu" )
{
RequireAttr( attr, rName, "id" );
m_popupPosList.push_back(0);
m_curPopupId = uniqueId( attr["id"] );
const BuilderData::PopupMenu popup( m_curPopupId );
//.........这里部分代码省略.........
示例8: ThemeLoader
//---------------------------------------------------------------------------
// Run: main loop
//---------------------------------------------------------------------------
static void *Run( void * p_obj )
{
int canc = vlc_savecancel();
intf_thread_t *p_intf = (intf_thread_t *)p_obj;
bool b_error = false;
char *skin_last = NULL;
ThemeLoader *pLoader = NULL;
OSLoop *loop = NULL;
vlc_mutex_lock( &p_intf->p_sys->init_lock );
// Initialize singletons
if( OSFactory::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot initialize OSFactory" );
b_error = true;
goto end;
}
if( AsyncQueue::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot initialize AsyncQueue" );
b_error = true;
goto end;
}
if( Interpreter::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot instanciate Interpreter" );
b_error = true;
goto end;
}
if( VarManager::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot instanciate VarManager" );
b_error = true;
goto end;
}
if( VlcProc::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot initialize VLCProc" );
b_error = true;
goto end;
}
if( VoutManager::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot instanciate VoutManager" );
b_error = true;
goto end;
}
if( ThemeRepository::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot instanciate ThemeRepository" );
b_error = true;
goto end;
}
if( Dialogs::instance( p_intf ) == NULL )
{
msg_Err( p_intf, "cannot instanciate qt4 dialogs provider" );
b_error = true;
goto end;
}
// Load a theme
skin_last = config_GetPsz( p_intf, "skins2-last" );
pLoader = new ThemeLoader( p_intf );
if( !skin_last || !*skin_last || !pLoader->load( skin_last ) )
{
// Get the resource path and try to load the default skin
OSFactory *pOSFactory = OSFactory::instance( p_intf );
const list<string> &resPath = pOSFactory->getResourcePath();
const string &sep = pOSFactory->getDirSeparator();
list<string>::const_iterator it;
for( it = resPath.begin(); it != resPath.end(); it++ )
{
string path = (*it) + sep + "default.vlt";
if( pLoader->load( path ) )
{
// Theme loaded successfully
break;
}
}
if( it == resPath.end() )
{
// Last chance: the user can select a new theme file
if( Dialogs::instance( p_intf ) )
{
CmdDlgChangeSkin *pCmd = new CmdDlgChangeSkin( p_intf );
AsyncQueue *pQueue = AsyncQueue::instance( p_intf );
pQueue->push( CmdGenericPtr( pCmd ) );
}
else
{
// No dialogs provider, just quit...
CmdQuit *pCmd = new CmdQuit( p_intf );
//.........这里部分代码省略.........
示例9: Run
//---------------------------------------------------------------------------
// Run: main loop
//---------------------------------------------------------------------------
static void Run( intf_thread_t *p_intf )
{
// Load a theme
ThemeLoader *pLoader = new ThemeLoader( p_intf );
char *skin_last = config_GetPsz( p_intf, "skins2-last" );
if( !skin_last || !*skin_last || !pLoader->load( skin_last ) )
{
// Get the resource path and try to load the default skin
OSFactory *pOSFactory = OSFactory::instance( p_intf );
const list<string> &resPath = pOSFactory->getResourcePath();
const string &sep = pOSFactory->getDirSeparator();
list<string>::const_iterator it;
for( it = resPath.begin(); it != resPath.end(); it++ )
{
string path = (*it) + sep + "default.vlt";
if( pLoader->load( path ) )
{
// Theme loaded successfully
break;
}
}
if( it == resPath.end() )
{
// Last chance: the user can select a new theme file
if( Dialogs::instance( p_intf ) )
{
CmdDlgChangeSkin *pCmd = new CmdDlgChangeSkin( p_intf );
AsyncQueue *pQueue = AsyncQueue::instance( p_intf );
pQueue->push( CmdGenericPtr( pCmd ) );
}
else
{
// No dialogs provider, just quit...
CmdQuit *pCmd = new CmdQuit( p_intf );
AsyncQueue *pQueue = AsyncQueue::instance( p_intf );
pQueue->push( CmdGenericPtr( pCmd ) );
msg_Err( p_intf,
"Cannot show the \"open skin\" dialog: exiting...");
}
}
}
delete pLoader;
if( skin_last )
{
free( skin_last );
}
// Get the instance of OSLoop
OSLoop *loop = OSFactory::instance( p_intf )->getOSLoop();
// Check if we need to start playing
if( p_intf->b_play )
{
playlist_t *p_playlist =
(playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( p_playlist )
{
playlist_Play( p_playlist );
vlc_object_release( p_playlist );
}
}
// Enter the main event loop
loop->run();
// Delete the theme and save the configuration of the windows
if( p_intf->p_sys->p_theme )
{
p_intf->p_sys->p_theme->saveConfig();
delete p_intf->p_sys->p_theme;
p_intf->p_sys->p_theme = NULL;
}
}