Audacity  3.0.0
Public Member Functions | Private Attributes | List of all members
ImportXMLTagHandler Class Referencefinal
Inheritance diagram for ImportXMLTagHandler:
[legend]
Collaboration diagram for ImportXMLTagHandler:
[legend]

Public Member Functions

 ImportXMLTagHandler (AudacityProject *pProject)
 
bool HandleXMLTag (const wxChar *tag, const wxChar **attrs) override
 
XMLTagHandlerHandleXMLChild (const wxChar *WXUNUSED(tag)) override
 
- Public Member Functions inherited from XMLTagHandler
 XMLTagHandler ()
 
virtual ~XMLTagHandler ()
 
virtual void HandleXMLEndTag (const wxChar *WXUNUSED(tag))
 
virtual void HandleXMLContent (const wxString &WXUNUSED(content))
 
virtual XMLTagHandlerHandleXMLChild (const wxChar *tag)=0
 
bool ReadXMLTag (const char *tag, const char **attrs)
 
void ReadXMLEndTag (const char *tag)
 
void ReadXMLContent (const char *s, int len)
 
XMLTagHandlerReadXMLChild (const char *tag)
 

Private Attributes

AudacityProjectmProject
 

Detailed Description

Definition at line 776 of file ProjectFileManager.cpp.

Constructor & Destructor Documentation

◆ ImportXMLTagHandler()

ImportXMLTagHandler::ImportXMLTagHandler ( AudacityProject pProject)
inline

Definition at line 779 of file ProjectFileManager.cpp.

779 { mProject = pProject; }

References mProject.

Member Function Documentation

◆ HandleXMLChild()

XMLTagHandler* ImportXMLTagHandler::HandleXMLChild ( const wxChar *  WXUNUSEDtag)
inlineoverride

Definition at line 782 of file ProjectFileManager.cpp.

783  { return NULL; }

◆ HandleXMLTag()

bool ImportXMLTagHandler::HandleXMLTag ( const wxChar *  tag,
const wxChar **  attrs 
)
overridevirtual

Implements XMLTagHandler.

Definition at line 793 of file ProjectFileManager.cpp.

794 {
795  if (wxStrcmp(tag, wxT("import")) || attrs==NULL || (*attrs)==NULL || wxStrcmp(*attrs++, wxT("filename")))
796  return false;
797  wxString strAttr = *attrs;
798 
799  WaveTrackArray trackArray;
800 
801  // Guard this call so that C++ exceptions don't propagate through
802  // the expat library
803  GuardedCall(
804  [&] {
805  ProjectFileManager::Get( *mProject ).Import(strAttr, &trackArray); },
806  [&] (AudacityException*) { trackArray.clear(); }
807  );
808 
809  if (trackArray.empty())
810  return false;
811 
812  // Handle other attributes, now that we have the tracks.
813  attrs++;
814  const wxChar** pAttr;
815  bool bSuccess = true;
816 
817  for (size_t i = 0; i < trackArray.size(); i++)
818  {
819  // Most of the "import" tag attributes are the same as for "wavetrack" tags,
820  // so apply them via WaveTrack::HandleXMLTag().
821  bSuccess = trackArray[i]->HandleXMLTag(wxT("wavetrack"), attrs);
822 
823  // "offset" tag is ignored in WaveTrack::HandleXMLTag except for legacy projects,
824  // so handle it here.
825  double dblValue;
826  pAttr = attrs;
827  while (*pAttr)
828  {
829  const wxChar *attr = *pAttr++;
830  const wxChar *value = *pAttr++;
831  const wxString strValue = value;
832  if (!wxStrcmp(attr, wxT("offset")) &&
833  XMLValueChecker::IsGoodString(strValue) &&
834  Internat::CompatibleToDouble(strValue, &dblValue))
835  trackArray[i]->SetOffset(dblValue);
836  }
837  }
838  return bSuccess;
839 };

References Internat::CompatibleToDouble(), ProjectFileManager::Get(), GuardedCall(), ProjectFileManager::Import(), and XMLValueChecker::IsGoodString().

Here is the call graph for this function:

Member Data Documentation

◆ mProject

AudacityProject* ImportXMLTagHandler::mProject
private

Definition at line 790 of file ProjectFileManager.cpp.

Referenced by ImportXMLTagHandler().


The documentation for this class was generated from the following file:
WaveTrackArray
std::vector< std::shared_ptr< WaveTrack > > WaveTrackArray
Definition: AudioIO.h:62
ProjectFileManager::Import
bool Import(const FilePath &fileName, WaveTrackArray *pTrackArray=nullptr, bool addToHistory=true)
Definition: ProjectFileManager.cpp:1117
ImportXMLTagHandler::mProject
AudacityProject * mProject
Definition: ProjectFileManager.cpp:790
XMLValueChecker::IsGoodString
static bool IsGoodString(const wxString &str)
Definition: XMLTagHandler.cpp:37
AudacityException
Base class for exceptions specially processed by the application.
Definition: AudacityException.h:25
ProjectFileManager::Get
static ProjectFileManager & Get(AudacityProject &project)
Definition: ProjectFileManager.cpp:64
GuardedCall
R GuardedCall(const F1 &body, const F2 &handler=F2::Default(), const F3 &delayedHandler={})
Execute some code on any thread; catch any AudacityException; enqueue error report on the main thread...
Definition: AudacityException.h:181
Internat::CompatibleToDouble
static bool CompatibleToDouble(const wxString &stringToConvert, double *result)
Convert a string to a number.
Definition: Internat.cpp:126