本文整理汇总了C++中wxFileName函数的典型用法代码示例。如果您正苦于以下问题:C++ wxFileName函数的具体用法?C++ wxFileName怎么用?C++ wxFileName使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了wxFileName函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: wxFileName
/// @brief Opens video
/// @param filename The filename to open
void FFmpegSourceVideoProvider::LoadVideo(wxString filename) {
wxString FileNameShort = wxFileName(filename).GetShortPath();
FFMS_Indexer *Indexer = FFMS_CreateIndexer(FileNameShort.utf8_str(), &ErrInfo);
if (!Indexer)
throw agi::FileNotFoundError(ErrInfo.Buffer);
std::map<int,wxString> TrackList = GetTracksOfType(Indexer, FFMS_TYPE_VIDEO);
if (TrackList.size() <= 0)
throw VideoNotSupported("no video tracks found");
// initialize the track number to an invalid value so we can detect later on
// whether the user actually had to choose a track or not
int TrackNumber = -1;
if (TrackList.size() > 1) {
TrackNumber = AskForTrackSelection(TrackList, FFMS_TYPE_VIDEO);
// if it's still -1 here, user pressed cancel
if (TrackNumber == -1)
throw agi::UserCancelException("video loading cancelled by user");
}
// generate a name for the cache file
wxString CacheName = GetCacheFilename(filename);
// try to read index
agi::scoped_holder<FFMS_Index*, void (FFMS_CC*)(FFMS_Index*)>
Index(FFMS_ReadIndex(CacheName.utf8_str(), &ErrInfo), FFMS_DestroyIndex);
if (Index && FFMS_IndexBelongsToFile(Index, FileNameShort.utf8_str(), &ErrInfo))
Index = NULL;
// time to examine the index and check if the track we want is indexed
// technically this isn't really needed since all video tracks should always be indexed,
// but a bit of sanity checking never hurt anyone
if (Index && TrackNumber >= 0) {
FFMS_Track *TempTrackData = FFMS_GetTrackFromIndex(Index, TrackNumber);
if (FFMS_GetNumFrames(TempTrackData) <= 0)
Index = NULL;
}
// moment of truth
if (!Index) {
int TrackMask = FFMS_TRACKMASK_NONE;
if (OPT_GET("Provider/FFmpegSource/Index All Tracks")->GetBool() || OPT_GET("Video/Open Audio")->GetBool())
TrackMask = FFMS_TRACKMASK_ALL;
Index = DoIndexing(Indexer, CacheName, TrackMask, GetErrorHandlingMode());
}
else {
FFMS_CancelIndexing(Indexer);
}
// update access time of index file so it won't get cleaned away
wxFileName(CacheName).Touch();
// we have now read the index and may proceed with cleaning the index cache
CleanCache();
// track number still not set?
if (TrackNumber < 0) {
// just grab the first track
TrackNumber = FFMS_GetFirstIndexedTrackOfType(Index, FFMS_TYPE_VIDEO, &ErrInfo);
if (TrackNumber < 0)
throw VideoNotSupported(std::string("Couldn't find any video tracks: ") + ErrInfo.Buffer);
}
// set thread count
int Threads = OPT_GET("Provider/Video/FFmpegSource/Decoding Threads")->GetInt();
if (FFMS_GetVersion() < ((2 << 24) | (17 << 16) | (2 << 8) | 1) && FFMS_GetSourceType(Index) == FFMS_SOURCE_LAVF)
Threads = 1;
// set seekmode
// TODO: give this its own option?
int SeekMode;
if (OPT_GET("Provider/Video/FFmpegSource/Unsafe Seeking")->GetBool())
SeekMode = FFMS_SEEK_UNSAFE;
else
SeekMode = FFMS_SEEK_NORMAL;
VideoSource = FFMS_CreateVideoSource(FileNameShort.utf8_str(), TrackNumber, Index, Threads, SeekMode, &ErrInfo);
if (!VideoSource)
throw VideoOpenError(std::string("Failed to open video track: ") + ErrInfo.Buffer);
// load video properties
VideoInfo = FFMS_GetVideoProperties(VideoSource);
const FFMS_Frame *TempFrame = FFMS_GetFrame(VideoSource, 0, &ErrInfo);
if (!TempFrame)
throw VideoOpenError(std::string("Failed to decode first frame: ") + ErrInfo.Buffer);
Width = TempFrame->EncodedWidth;
Height = TempFrame->EncodedHeight;
if (VideoInfo->SARDen > 0 && VideoInfo->SARNum > 0)
DAR = double(Width) * VideoInfo->SARNum / ((double)Height * VideoInfo->SARDen);
else
DAR = double(Width) / Height;
// Assuming TV for unspecified
wxString ColorRange = TempFrame->ColorRange == FFMS_CR_JPEG ? "PC" : "TV";
//.........这里部分代码省略.........
示例2: wxFileName
wxString wxStandardPaths::GetPluginsDir() const
{
return wxFileName(wxGetFullModuleName()).GetPath();
}
示例3: pathGetFileName
String pathGetFileName(const String& path)
{
return wxFileName(path).GetFullName();
}
示例4: Reset
void VideoContext::SetVideo(const wxString &filename) {
Reset();
if (filename.empty()) {
VideoOpen();
return;
}
bool commit_subs = false;
try {
provider.reset(new ThreadedFrameSource(filename, this));
videoProvider = provider->GetVideoProvider();
videoFile = filename;
// Check that the script resolution matches the video resolution
int sx = context->ass->GetScriptInfoAsInt("PlayResX");
int sy = context->ass->GetScriptInfoAsInt("PlayResY");
int vx = GetWidth();
int vy = GetHeight();
// If the script resolution hasn't been set at all just force it to the
// video resolution
if (sx == 0 && sy == 0) {
context->ass->SetScriptInfo("PlayResX", wxString::Format("%d", vx));
context->ass->SetScriptInfo("PlayResY", wxString::Format("%d", vy));
commit_subs = true;
}
// If it has been set to something other than a multiple of the video
// resolution, ask the user if they want it to be fixed
else if (sx % vx != 0 || sy % vy != 0) {
switch (OPT_GET("Video/Check Script Res")->GetInt()) {
case 1: // Ask to change on mismatch
if (wxYES != wxMessageBox(
wxString::Format(_("The resolution of the loaded video and the resolution specified for the subtitles don't match.\n\nVideo resolution:\t%d x %d\nScript resolution:\t%d x %d\n\nChange subtitles resolution to match video?"), vx, vy, sx, sy),
_("Resolution mismatch"),
wxYES_NO | wxCENTER,
context->parent))
break;
// Fallthrough to case 2
case 2: // Always change script res
context->ass->SetScriptInfo("PlayResX", wxString::Format("%d", vx));
context->ass->SetScriptInfo("PlayResY", wxString::Format("%d", vy));
commit_subs = true;
break;
default: // Never change
break;
}
}
keyFrames = videoProvider->GetKeyFrames();
// Set frame rate
videoFPS = videoProvider->GetFPS();
if (ovrFPS.IsLoaded()) {
int ovr = wxMessageBox(_("You already have timecodes loaded. Would you like to replace them with timecodes from the video file?"), _("Replace timecodes?"), wxYES_NO | wxICON_QUESTION);
if (ovr == wxYES) {
ovrFPS = agi::vfr::Framerate();
ovrTimecodeFile.clear();
}
}
// Set aspect ratio
double dar = videoProvider->GetDAR();
if (dar > 0)
SetAspectRatio(4, dar);
// Set filename
config::mru->Add("Video", STD_STR(filename));
StandardPaths::SetPathValue("?video", wxFileName(filename).GetPath());
// Show warning
wxString warning = videoProvider->GetWarning();
if (!warning.empty()) wxMessageBox(warning, "Warning", wxICON_WARNING | wxOK);
hasSubtitles = false;
if (filename.Right(4).Lower() == ".mkv") {
hasSubtitles = MatroskaWrapper::HasSubtitles(filename);
}
provider->LoadSubtitles(context->ass);
VideoOpen();
KeyframesOpen(keyFrames);
TimecodesOpen(FPS());
}
catch (agi::UserCancelException const&) { }
catch (agi::FileNotAccessibleError const& err) {
config::mru->Remove("Video", STD_STR(filename));
wxMessageBox(lagi_wxString(err.GetMessage()), "Error setting video", wxOK | wxICON_ERROR | wxCENTER);
}
catch (VideoProviderError const& err) {
wxMessageBox(lagi_wxString(err.GetMessage()), "Error setting video", wxOK | wxICON_ERROR | wxCENTER);
}
if (commit_subs)
context->ass->Commit(_("change script resolution"), AssFile::COMMIT_SCRIPTINFO);
else
JumpToFrame(0);
}
示例5: AdjustFormatIndex
int ExportFFmpeg::Export(AudacityProject *project,
int channels, wxString fName,
bool selectionOnly, double t0, double t1, MixerSpec *mixerSpec, Tags *metadata, int subformat)
{
if (!CheckFFmpegPresence())
return false;
mChannels = channels;
// subformat index may not correspond directly to fmts[] index, convert it
mSubFormat = AdjustFormatIndex(subformat);
if (channels > ExportFFmpegOptions::fmts[mSubFormat].maxchannels)
{
wxMessageBox(
wxString::Format(
_("Attempted to export %d channels, but maximum number of channels for selected output format is %d"),
channels,
ExportFFmpegOptions::fmts[mSubFormat].maxchannels),
_("Error"));
return false;
}
mName = fName;
TrackList *tracks = project->GetTracks();
bool ret = true;
if (mSubFormat >= FMT_LAST) return false;
wxString shortname(ExportFFmpegOptions::fmts[mSubFormat].shortname);
if (mSubFormat == FMT_OTHER)
shortname = gPrefs->Read(wxT("/FileFormats/FFmpegFormat"),wxT("matroska"));
ret = Init(shortname.mb_str(),project, metadata, subformat);
if (!ret) return false;
int pcmBufferSize = 1024;
int numWaveTracks;
WaveTrack **waveTracks;
tracks->GetWaveTracks(selectionOnly, &numWaveTracks, &waveTracks);
Mixer *mixer = CreateMixer(numWaveTracks, waveTracks,
tracks->GetTimeTrack(),
t0, t1,
channels, pcmBufferSize, true,
mSampleRate, int16Sample, true, mixerSpec);
delete [] waveTracks;
ProgressDialog *progress = new ProgressDialog(wxFileName(fName).GetName(),
selectionOnly ?
wxString::Format(_("Exporting selected audio as %s"), ExportFFmpegOptions::fmts[mSubFormat].description) :
wxString::Format(_("Exporting entire file as %s"), ExportFFmpegOptions::fmts[mSubFormat].description));
int updateResult = eProgressSuccess;
while(updateResult == eProgressSuccess) {
sampleCount pcmNumSamples = mixer->Process(pcmBufferSize);
if (pcmNumSamples == 0)
break;
short *pcmBuffer = (short *)mixer->GetBuffer();
EncodeAudioFrame(pcmBuffer,(pcmNumSamples)*sizeof(int16_t)*mChannels);
updateResult = progress->Update(mixer->MixGetCurrentTime()-t0, t1-t0);
}
delete progress;
delete mixer;
Finalize();
return updateResult;
}
示例6: wxFileName
bool PWUpdaterApp::OnInit()
{
/* init locale */
wxStandardPaths &stdPaths = wxStandardPaths::Get();
wxString localePath = wxFileName(stdPaths.GetExecutablePath()).GetPath(true) + wxT("locale");
if (!_locale.Init(DetectInstalledLanguages()))
{
wxLogWarning(wxT("Selected language is not supported by system."));
}
_locale.AddCatalogLookupPathPrefix(localePath);
_locale.AddCatalog(GetAppName());
_locale.AddCatalog(wxT("wxstd"));
/* add description after locale initialization, so that description can be translated. */
AddLanguageDescriptions();
/* collect network adapter info */
if (DetectNetAdapter())
{
if (m_adapterList.empty())
{
wxLogError(_("No network adapter is availabled, force to use external tftp server!"));
m_pOpt->SetOption(wxT("UseInternalTftp"), false);
}
}
else
{
wxLogError(_("Failed to detect network adapters info, application will be terminated!"));
return false;
}
/*
use default (the first) active interface when
(1) database is new created, or
(2) interface store in database doesn't exist now
*/
bool useDefaultInterface = false;
wxString ifName = m_pOpt->GetOption(wxT("ActivedInterface"));
if (ifName.IsEmpty())
useDefaultInterface = true;
else
{
wxVector<NetAdapter>::iterator it;
for (it = m_adapterList.begin(); it != m_adapterList.end(); ++it)
{
if (ifName == it->GetName())
break;
}
if (it == m_adapterList.end())
useDefaultInterface = true;
}
if (useDefaultInterface && (m_adapterList.size() > 0))
m_pOpt->SetOption(wxT("ActivedInterface"), m_adapterList.at(0).GetName());
/*
use current working path when
(1) path stored in database doesn't exist now any more
*/
bool useCurrentPath = false;
wxString rootPath = m_pOpt->GetOption(wxT("TftpdRoot"));
if (!rootPath.empty())
{
if (!wxFileName::DirExists(rootPath))
useCurrentPath = true;
}
if (useCurrentPath)
m_pOpt->SetOption(wxT("TftpdRoot"), wxString(wxEmptyString));
/* create main frame */
PWUpdaterFrame *frame = new PWUpdaterFrame(NULL, myID_FRAME);
frame->Show();
return true;
}
示例7: GetObFile
bool Panel_Remaps::DoChangeImgBase( bool b_quiet, bool standalone)
{
paletteCtrl->Reset(false);
if( curr_remap == NULL )
return false;
int i_EnableEditingTheRemap = 1;
bool res = false;
wxString ob_basePath = txtctrl_imgBase->GetValue();
wxString _basePath = GetObFile( ob_basePath ).GetFullPath();
//******************************
// Make the change to the ob_object
if( mode8bit )
{
wxString old_path = curr_remap->GetToken( 0 );
if( old_path != ob_basePath )
{
entity->SetChanged();
curr_remap->SetToken( 0, ob_basePath );
}
}
else
{
ob_object *pal_obobj = entity->GetProperty( wxT("palette") );
// No current palette tag in the current entity
wxString old_path = wxString();
if( pal_obobj == NULL )
{
pal_obobj = new ob_object();
pal_obobj->SetName( wxT("palette") );
//Try to insert one before the first alternatepal
size_t nb_remap;
ob_object** _t = entity->GetSubObjectS( wxT("alternatepal"),nb_remap );
if( _t != NULL )
{
_t[nb_remap-1]->InsertObject_After( pal_obobj );
delete[] _t;
}
// Try to insert it before the first anim
else
entity->AddProperty( pal_obobj );
}
else
old_path = pal_obobj->GetToken( 0 );
// Set the palette tag
if( old_path != ob_basePath )
{
// Check if the user really want to change the image base for all remaps
int res = wxMessageBox( wxT("Do your really want to change the image base for all 16Bits remaps ?"), wxT("Question"), wxYES_NO | wxICON_INFORMATION, this );
if( res != wxYES )
return false;
entity->SetChanged();
pal_obobj->SetToken( 0, ob_basePath );
}
}
//******************************
// Check if it's a valid path
if( ! wxFileName( _basePath ).FileExists() && !b_quiet )
{
wxMessageBox( wxT("The Base image for this remap doesn't exist")
, wxT("ProPlem"), wxOK | wxICON_INFORMATION, this );
}
else if( IsFileEmpty(_basePath) && !b_quiet )
{
wxMessageBox( wxT("The Base image for this remap is an empty file !!")
, wxT("ProPlem"), wxOK | wxICON_INFORMATION, this );
}
//******************************
// Try to load the palette
else if( paletteCtrl->TryToInitWithImage( _basePath ) )
{
res = true;
i_EnableEditingTheRemap = 0;
//******************************
// Try to quietly to load the dest palette
if( standalone )
DoChangeImgDest( true, false);
}
EnableEditingTheRemap(i_EnableEditingTheRemap);
if( standalone )
Refresh();
return res;
}
示例8: node
XNODE* NETLIST_EXPORTER_GENERIC::makeDesignHeader()
{
SCH_SCREEN* screen;
XNODE* xdesign = node( wxT("design") );
XNODE* xtitleBlock;
XNODE* xsheet;
XNODE* xcomment;
wxString sheetTxt;
wxFileName sourceFileName;
// the root sheet is a special sheet, call it source
xdesign->AddChild( node( wxT( "source" ), g_RootSheet->GetScreen()->GetFileName() ) );
xdesign->AddChild( node( wxT( "date" ), DateAndTime() ) );
// which Eeschema tool
xdesign->AddChild( node( wxT( "tool" ), wxT( "Eeschema " ) + GetBuildVersion() ) );
/*
Export the sheets information
*/
SCH_SHEET_LIST sheetList;
for( SCH_SHEET_PATH* sheet = sheetList.GetFirst(); sheet; sheet = sheetList.GetNext() )
{
screen = sheet->LastScreen();
xdesign->AddChild( xsheet = node( wxT( "sheet" ) ) );
// get the string representation of the sheet index number.
// Note that sheet->GetIndex() is zero index base and we need to increment the number by one to make
// human readable
sheetTxt.Printf( wxT( "%d" ), ( sheetList.GetIndex() + 1 ) );
xsheet->AddAttribute( wxT( "number" ), sheetTxt );
xsheet->AddAttribute( wxT( "name" ), sheet->PathHumanReadable() );
xsheet->AddAttribute( wxT( "tstamps" ), sheet->Path() );
TITLE_BLOCK tb = screen->GetTitleBlock();
xsheet->AddChild( xtitleBlock = node( wxT( "title_block" ) ) );
xtitleBlock->AddChild( node( wxT( "title" ), tb.GetTitle() ) );
xtitleBlock->AddChild( node( wxT( "company" ), tb.GetCompany() ) );
xtitleBlock->AddChild( node( wxT( "rev" ), tb.GetRevision() ) );
xtitleBlock->AddChild( node( wxT( "date" ), tb.GetDate() ) );
// We are going to remove the fileName directories.
sourceFileName = wxFileName( screen->GetFileName() );
xtitleBlock->AddChild( node( wxT( "source" ), sourceFileName.GetFullName() ) );
xtitleBlock->AddChild( xcomment = node( wxT( "comment" ) ) );
xcomment->AddAttribute( wxT("number"), wxT("1") );
xcomment->AddAttribute( wxT( "value" ), tb.GetComment1() );
xtitleBlock->AddChild( xcomment = node( wxT( "comment" ) ) );
xcomment->AddAttribute( wxT("number"), wxT("2") );
xcomment->AddAttribute( wxT( "value" ), tb.GetComment2() );
xtitleBlock->AddChild( xcomment = node( wxT( "comment" ) ) );
xcomment->AddAttribute( wxT("number"), wxT("3") );
xcomment->AddAttribute( wxT( "value" ), tb.GetComment3() );
xtitleBlock->AddChild( xcomment = node( wxT( "comment" ) ) );
xcomment->AddAttribute( wxT("number"), wxT("4") );
xcomment->AddAttribute( wxT( "value" ), tb.GetComment4() );
}
return xdesign;
}
示例9: OnSetTarget
void ShellExtensions::OnRunTarget(wxCommandEvent& event)
{
int ID=event.GetId();
wxString commandstr;
wxString consolename;
wxString workingdir;
bool windowed=false;
bool console=false;
if(ID>=ID_ContextMenu_0&&ID<=ID_ContextMenu_49)
{
m_interpnum=m_contextvec[ID-ID_ContextMenu_0];
commandstr=m_ic.interps[m_interpnum].command;
consolename=m_ic.interps[m_interpnum].name;
windowed=(m_ic.interps[m_interpnum].mode==_("W"));
console=(m_ic.interps[m_interpnum].mode==_("C"));
workingdir=m_ic.interps[m_interpnum].wdir;
} else
if(ID>=ID_SubMenu_0&&ID<=ID_SubMenu_49)
{
m_interpnum=ID-ID_SubMenu_0;
commandstr=m_ic.interps[m_interpnum].command;
consolename=m_ic.interps[m_interpnum].name;
windowed=(m_ic.interps[m_interpnum].mode==_("W"));
console=(m_ic.interps[m_interpnum].mode==_("C"));
workingdir=m_ic.interps[m_interpnum].wdir;
m_wildcard=m_ic.interps[m_interpnum].wildcards;
if(m_ic.interps[m_interpnum].command.Find(_T("$file"))>0 ||
m_ic.interps[m_interpnum].command.Find(_T("$path"))>0)
{
OnSetTarget(event);
if(!wxFileName::FileExists(m_RunTarget))
{
LogMessage(_("ShellExtensions: ")+m_RunTarget+_(" not found"));
return;
}
}
if(m_ic.interps[m_interpnum].command.Find(_T("$dir"))>0)
{
OnSetDirTarget(event);
if(!wxFileName::DirExists(m_RunTarget))
{
LogMessage(_("Shell Extensions: ")+m_RunTarget+_(" not found"));
return;
}
if(m_RunTarget==_T(""))
return;
}
if(m_ic.interps[m_interpnum].command.Find(_T("$mpaths"))>0)
{
OnSetMultiTarget(event);
if(m_RunTarget==_T(""))
return;
}
}
else
{
LogMessage(wxString::Format(_T("WARNING: Unprocessed ShellCommand Menu Message: ID %i, IDbase %i, IDend %i, num items on menu %i"),ID,ID_ContextMenu_0,ID_ContextMenu_49,(int)m_contextvec.size()));
return;
}
m_RunTarget.Replace(_T("*"),_T(" "));
bool setdir=true;
commandstr.Replace(_T("$file"),wxFileName(m_RunTarget).GetShortPath());
commandstr.Replace(_T("$relfile"),wxFileName(m_RunTarget).GetFullName());
commandstr.Replace(_T("$fname"),wxFileName(m_RunTarget).GetName());
commandstr.Replace(_T("$fext"),wxFileName(m_RunTarget).GetExt());
commandstr.Replace(_T("$dir"),wxFileName(m_RunTarget).GetShortPath());
commandstr.Replace(_T("$reldir"),wxFileName(m_RunTarget).GetFullName());
commandstr.Replace(_T("$path"),wxFileName(m_RunTarget).GetShortPath());
commandstr.Replace(_T("$relpath"),wxFileName(m_RunTarget).GetFullPath());
if(commandstr.Replace(_T("$mpaths"),m_RunTarget)>0)
setdir=false;
// substitute user prompted values in the format: $inputstr{Enter your message}
int promptind=commandstr.Find(_T("$inputstr{"));
wxString substitution;
while(promptind>=0)
{
int promptend=commandstr.Mid(promptind+10).Find(_T("}"));
if(promptend<=0)
{
cbMessageBox(_T("Malformed $inputstr in command line -- no closing '}' found: ")+commandstr);
return;
}
else
promptend++;
wxTextEntryDialog ted(NULL,commandstr.Mid(promptind+10,promptend-1),consolename,_T(""),wxOK|wxCANCEL);
if(ted.ShowModal()==wxID_OK)
substitution=ted.GetValue();
else
return;
commandstr=commandstr.Left(promptind)+substitution+commandstr.Mid(promptind+10+promptend);
int nextind=commandstr.Mid(promptind+substitution.Len()).Find(_T("$inputstr"));
if(nextind>=0)
promptind+=nextind+substitution.Len();
else
promptind=-1;
}
//.........这里部分代码省略.........
示例10: wxFileName
wxString wxCmdLineParser::GetUsageString() const
{
wxString appname;
if ( m_data->m_arguments.empty() )
{
if ( wxTheApp )
appname = wxTheApp->GetAppName();
}
else // use argv[0]
{
appname = wxFileName(m_data->m_arguments[0]).GetName();
}
// we construct the brief cmd line desc on the fly, but not the detailed
// help message below because we want to align the options descriptions
// and for this we must first know the longest one of them
wxString usage;
wxArrayString namesOptions, descOptions;
if ( !m_data->m_logo.empty() )
{
usage << m_data->m_logo << wxT('\n');
}
usage << wxString::Format(_("Usage: %s"), appname.c_str());
// the switch char is usually '-' but this can be changed with
// SetSwitchChars() and then the first one of possible chars is used
wxChar chSwitch = !m_data->m_switchChars ? wxT('-')
: m_data->m_switchChars[0u];
bool areLongOptionsEnabled = AreLongOptionsEnabled();
size_t n, count = m_data->m_options.GetCount();
for ( n = 0; n < count; n++ )
{
wxCmdLineOption& opt = m_data->m_options[n];
wxString option;
if ( opt.kind != wxCMD_LINE_USAGE_TEXT )
{
usage << wxT(' ');
if ( !(opt.flags & wxCMD_LINE_OPTION_MANDATORY) )
{
usage << wxT('[');
}
if ( !opt.shortName.empty() )
{
usage << chSwitch << opt.shortName;
}
else if ( areLongOptionsEnabled && !opt.longName.empty() )
{
usage << wxT("--") << opt.longName;
}
else
{
if (!opt.longName.empty())
{
wxFAIL_MSG( wxT("option with only a long name while long ")
wxT("options are disabled") );
}
else
{
wxFAIL_MSG( wxT("option without neither short nor long name") );
}
}
if ( !opt.shortName.empty() )
{
option << wxT(" ") << chSwitch << opt.shortName;
}
if ( areLongOptionsEnabled && !opt.longName.empty() )
{
option << (option.empty() ? wxT(" ") : wxT(", "))
<< wxT("--") << opt.longName;
}
if ( opt.kind != wxCMD_LINE_SWITCH )
{
wxString val;
val << wxT('<') << GetTypeName(opt.type) << wxT('>');
usage << wxT(' ') << val;
option << (!opt.longName ? wxT(':') : wxT('=')) << val;
}
if ( !(opt.flags & wxCMD_LINE_OPTION_MANDATORY) )
{
usage << wxT(']');
}
}
namesOptions.push_back(option);
descOptions.push_back(opt.description);
}
count = m_data->m_paramDesc.GetCount();
for ( n = 0; n < count; n++ )
{
wxCmdLineParam& param = m_data->m_paramDesc[n];
//.........这里部分代码省略.........
示例11: EventGenerator
EventGenerator(const wxFileName& path) : m_base(path)
{
m_old = wxFileName();
m_file = RandomName();
m_new = RandomName();
}
示例12: OnOptions2
void OnOptions2(int event_id)
{//==========================
wxString string;
int value;
switch(event_id)
{
case MENU_OPT_SPEED:
value = wxGetNumberFromUser(_T(""),_T(""),_T("Speed"),option_speed,80,500);
if(value > 0)
{
option_speed = value;
SetParameter(espeakRATE,option_speed,0);
SetSpeed(3);
}
break;
case MENU_OPT_PUNCT:
transldlg->t_source->SetValue(_T("<tts:style field=\"punctuation\" mode=\"all\">\n"));
transldlg->t_source->SetInsertionPointEnd();
notebook->SetSelection(1);
break;
case MENU_OPT_SPELL:
transldlg->t_source->SetValue(_T("<say-as interpret-as=\"characters\">\n"));
transldlg->t_source->SetInsertionPointEnd();
notebook->SetSelection(1);
break;
case MENU_OPT_SPELL2:
transldlg->t_source->SetValue(_T("<say-as interpret-as=\"tts:char\">\n"));
transldlg->t_source->SetInsertionPointEnd();
notebook->SetSelection(1);
break;
case MENU_PATH_DATA:
string = wxDirSelector(_T("espeak_data directory"), wxEmptyString);
if(!string.IsEmpty())
{
if(!wxDirExists(string+_T("/voices")))
{
wxLogError(_T("No 'voices' directory in ") + string);
break;
}
path_espeakdata = string;
wxLogMessage(_T("Quit and restart espeakedit to use the new espeak_data location"));
}
break;
case MENU_PATH0:
string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(),
_T("phonemes"),_T(""),_T("*"),wxOPEN);
if(!string.IsEmpty())
{
path_phfile = string;
}
break;
case MENU_PATH1:
string = wxDirSelector(_T("Phoneme source directory"),path_phsource);
if(!string.IsEmpty())
{
path_phsource = string;
}
break;
case MENU_PATH2:
string = wxDirSelector(_T("Dictionary source directory"),path_dictsource);
if(!string.IsEmpty())
{
path_dictsource = string;
}
break;
case MENU_PATH3:
string = wxFileSelector(_T("Sound output file"),wxFileName(path_speech).GetPath(),
_T(""),_T("WAV"),_T("*"),wxSAVE);
if(!string.IsEmpty())
{
path_speech = string;
}
break;
case MENU_PATH4:
string = wxFileSelector(_T("Voice file to modify formant peaks"),wxFileName(path_speech).GetPath(),
_T(""),_T(""),_T("*"),wxOPEN);
if(!string.IsEmpty())
{
path_modifiervoice = string;
}
break;
}
ConfigSetPaths();
}
示例13: wxGetApp
// static
void ModuleManager::Initialize(CommandHandler &cmdHandler)
{
wxArrayString audacityPathList = wxGetApp().audacityPathList;
wxArrayString pathList;
wxArrayString files;
wxString pathVar;
size_t i;
// Code from LoadLadspa that might be useful in load modules.
pathVar = wxGetenv(wxT("AUDACITY_MODULES_PATH"));
if (pathVar != wxT(""))
wxGetApp().AddMultiPathsToPathList(pathVar, pathList);
for (i = 0; i < audacityPathList.GetCount(); i++) {
wxString prefix = audacityPathList[i] + wxFILE_SEP_PATH;
wxGetApp().AddUniquePathToPathList(prefix + wxT("modules"),
pathList);
}
#if defined(__WXMSW__)
wxGetApp().FindFilesInPathList(wxT("*.dll"), pathList, files);
#else
wxGetApp().FindFilesInPathList(wxT("*.so"), pathList, files);
#endif
wxString saveOldCWD = ::wxGetCwd();
for (i = 0; i < files.GetCount(); i++) {
// As a courtesy to some modules that might be bridges to
// open other modules, we set the current working
// directory to be the module's directory.
wxString prefix = ::wxPathOnly(files[i]);
::wxSetWorkingDirectory(prefix);
#ifdef EXPERIMENTAL_MODULE_PREFS
int iModuleStatus = ModulePrefs::GetModuleStatus( files[i] );
if( iModuleStatus == kModuleDisabled )
continue;
if( iModuleStatus == kModuleFailed )
continue;
// New module? You have to go and explicitly enable it.
if( iModuleStatus == kModuleNew ){
// To ensure it is noted in config file and so
// appears on modules page.
ModulePrefs::SetModuleStatus( files[i], kModuleNew);
continue;
}
if( iModuleStatus == kModuleAsk )
#endif
// JKC: I don't like prompting for the plug-ins individually
// I think it would be better to show the module prefs page,
// and let the user decide for each one.
{
wxString ShortName = wxFileName( files[i] ).GetName();
wxString msg;
msg.Printf(_("Module \"%s\" found."), ShortName);
msg += _("\n\nOnly use modules from trusted sources");
const wxChar *buttons[] = {_("Yes"), _("No"), NULL}; // could add a button here for 'yes and remember that', and put it into the cfg file. Needs more thought.
int action;
action = ShowMultiDialog(msg, _("Audacity Module Loader"), buttons, _("Try and load this module?"), false);
#ifdef EXPERIMENTAL_MODULE_PREFS
// If we're not prompting always, accept the answer permanantly
if( iModuleStatus == kModuleNew ){
iModuleStatus = (action==1)?kModuleDisabled : kModuleEnabled;
ModulePrefs::SetModuleStatus( files[i], iModuleStatus );
}
#endif
if(action == 1){ // "No"
continue;
}
}
#ifdef EXPERIMENTAL_MODULE_PREFS
// Before attempting to load, we set the state to bad.
// That way, if we crash, we won't try again.
ModulePrefs::SetModuleStatus( files[i], kModuleFailed );
#endif
auto umodule = make_movable<Module>(files[i]);
if (umodule->Load()) // it will get rejected if there are version problems
{
auto module = umodule.get();
Get().mModules.push_back(std::move(umodule));
// We've loaded and initialised OK.
// So look for special case functions:
wxLogNull logNo; // Don't show wxWidgets errors if we can't do these. (Was: Fix bug 544.)
// (a) for scripting.
if( scriptFn == NULL )
scriptFn = (tpRegScriptServerFunc)(module->GetSymbol(wxT(scriptFnName)));
// (b) for hijacking the entire Audacity panel.
if( pPanelHijack==NULL )
{
pPanelHijack = (tPanelFn)(module->GetSymbol(wxT(mainPanelFnName)));
}
#ifdef EXPERIMENTAL_MODULE_PREFS
// Loaded successfully, restore the status.
ModulePrefs::SetModuleStatus( files[i], iModuleStatus);
#endif
}
}
//.........这里部分代码省略.........
示例14: WXUNUSED
int ExportOGG::Export(AudacityProject *project,
int numChannels,
wxString fName,
bool selectionOnly,
double t0,
double t1,
MixerSpec *mixerSpec,
Tags *metadata,
int WXUNUSED(subformat))
{
double rate = project->GetRate();
TrackList *tracks = project->GetTracks();
double quality = (gPrefs->Read(wxT("/FileFormats/OggExportQuality"), 50)/(float)100.0);
wxLogNull logNo; // temporarily disable wxWidgets error messages
int updateResult = eProgressSuccess;
int eos = 0;
FileIO outFile(fName, FileIO::Output);
if (!outFile.IsOpened()) {
wxMessageBox(_("Unable to open target file for writing"));
return false;
}
// All the Ogg and Vorbis encoding data
ogg_stream_state stream;
ogg_page page;
ogg_packet packet;
vorbis_info info;
vorbis_comment comment;
vorbis_dsp_state dsp;
vorbis_block block;
// Encoding setup
vorbis_info_init(&info);
vorbis_encode_init_vbr(&info, numChannels, int(rate + 0.5), quality);
// Retrieve tags
if (!FillComment(project, &comment, metadata)) {
return false;
}
// Set up analysis state and auxiliary encoding storage
vorbis_analysis_init(&dsp, &info);
vorbis_block_init(&dsp, &block);
// Set up packet->stream encoder. According to encoder example,
// a random serial number makes it more likely that you can make
// chained streams with concatenation.
srand(time(NULL));
ogg_stream_init(&stream, rand());
// First we need to write the required headers:
// 1. The Ogg bitstream header, which contains codec setup params
// 2. The Vorbis comment header
// 3. The bitstream codebook.
//
// After we create those our responsibility is complete, libvorbis will
// take care of any other ogg bistream constraints (again, according
// to the example encoder source)
ogg_packet bitstream_header;
ogg_packet comment_header;
ogg_packet codebook_header;
vorbis_analysis_headerout(&dsp, &comment, &bitstream_header, &comment_header,
&codebook_header);
// Place these headers into the stream
ogg_stream_packetin(&stream, &bitstream_header);
ogg_stream_packetin(&stream, &comment_header);
ogg_stream_packetin(&stream, &codebook_header);
// Flushing these headers now guarentees that audio data will
// start on a NEW page, which apparently makes streaming easier
while (ogg_stream_flush(&stream, &page)) {
outFile.Write(page.header, page.header_len);
outFile.Write(page.body, page.body_len);
}
int numWaveTracks;
WaveTrack **waveTracks;
tracks->GetWaveTracks(selectionOnly, &numWaveTracks, &waveTracks);
Mixer *mixer = CreateMixer(numWaveTracks, waveTracks,
tracks->GetTimeTrack(),
t0, t1,
numChannels, SAMPLES_PER_RUN, false,
rate, floatSample, true, mixerSpec);
delete [] waveTracks;
ProgressDialog *progress = new ProgressDialog(wxFileName(fName).GetName(),
selectionOnly ?
_("Exporting the selected audio as Ogg Vorbis") :
_("Exporting the entire project as Ogg Vorbis"));
while (updateResult == eProgressSuccess && !eos) {
float **vorbis_buffer = vorbis_analysis_buffer(&dsp, SAMPLES_PER_RUN);
sampleCount samplesThisRun = mixer->Process(SAMPLES_PER_RUN);
//.........这里部分代码省略.........
示例15: AddModuleMenuEntry
void ShellExtensions::BuildModuleMenu(const ModuleType type, wxMenu* menu, const FileTreeData* data)
{
//Some library module is ready to display a pop-up menu.
//Check the parameter \"type\" and see which module it is
//and append any items you need in the menu...
//TIP: for consistency, add a separator as the first item...
m_contextvec.Empty();
if(type==mtProjectManager)
{
if(data)
{
if(data->GetKind()==FileTreeData::ftdkProject)
{
cbProject* prj = data->GetProject();
wxString filename=wxFileName(prj->GetFilename()).GetPath();
wxString name=_T("");
size_t sep_pos=menu->GetMenuItemCount();
size_t added=0;
for(unsigned int i=0;i<m_ic.interps.size();i++)
if(WildCardListMatch(m_ic.interps[i].wildcards,name))
{
m_RunTarget=filename;
if(m_ic.interps[i].command.Find(_T("$dir"))>=0 ||
m_ic.interps[i].command.Find(_T("$reldir"))>=0 ||
m_ic.interps[i].command.Find(_T("$path"))>=0 ||
m_ic.interps[i].command.Find(_T("$relpath"))>=0 ||
m_ic.interps[i].command.Find(_T("$mpaths"))>=0)
{
wxString menutext=m_ic.interps[i].name;
m_contextvec.Add(i);
AddModuleMenuEntry(menu,i,added);
added++;
}
}
menu->Append( ID_ProjectOpenInFileBrowser, _T("Open Project Folder in File Browser"), _("Opens the folder containing the project file in the file browser"));
if(added>0)
menu->InsertSeparator(sep_pos);
}
if(data->GetKind()==FileTreeData::ftdkFile)
{
ProjectFile *f=data->GetProjectFile();
if(f)
{
wxString filename=f->file.GetFullPath();
wxString name=f->file.GetFullName();
size_t sep_pos=menu->GetMenuItemCount();
size_t added=0;
for(unsigned int i=0;i<m_ic.interps.size();i++)
if(WildCardListMatch(m_ic.interps[i].wildcards,name))
{
m_RunTarget=filename;
if(m_ic.interps[i].command.Find(_T("$file"))>=0 ||
m_ic.interps[i].command.Find(_T("$relfile"))>=0 ||
m_ic.interps[i].command.Find(_T("$fname"))>=0 ||
m_ic.interps[i].command.Find(_T("$fext"))>=0 ||
m_ic.interps[i].command.Find(_T("$path"))>=0 ||
m_ic.interps[i].command.Find(_T("$relpath"))>=0 ||
m_ic.interps[i].command.Find(_T("$mpaths"))>=0)
{
wxString menutext=m_ic.interps[i].name;
m_contextvec.Add(i);
AddModuleMenuEntry(menu,i,added);
added++;
}
}
if(added>0)
menu->InsertSeparator(sep_pos);
}
}
}
}
if(type==mtEditorManager) // also type==mtOpenFilesList - not sure how to find out which file has been right clicked.
{
EditorManager* edMan = Manager::Get()->GetEditorManager();
wxFileName activefile(edMan->GetActiveEditor()->GetFilename());
wxString filename=activefile.GetFullPath();
wxString name=activefile.GetFullName();
size_t sep_pos=menu->GetMenuItemCount();
size_t added=0;
for(unsigned int i=0;i<m_ic.interps.size();i++)
if(WildCardListMatch(m_ic.interps[i].wildcards,name))
{
m_RunTarget=filename;
if(m_ic.interps[i].command.Find(_T("$file"))>=0 ||
m_ic.interps[i].command.Find(_T("$relfile"))>=0 ||
m_ic.interps[i].command.Find(_T("$fname"))>=0 ||
m_ic.interps[i].command.Find(_T("$fext"))>=0 ||
m_ic.interps[i].command.Find(_T("$path"))>=0 ||
m_ic.interps[i].command.Find(_T("$relpath"))>=0 ||
m_ic.interps[i].command.Find(_T("$mpaths"))>=0)
{
wxString menutext=m_ic.interps[i].name;
m_contextvec.Add(i);
AddModuleMenuEntry(menu,i,added);
added++;
}
}
if(added>0)
menu->InsertSeparator(sep_pos);
}
//.........这里部分代码省略.........