File: ImportExport.cpp

package info (click to toggle)
audacity 3.7.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 125,252 kB
  • sloc: cpp: 358,238; ansic: 75,458; lisp: 7,761; sh: 3,410; python: 1,503; xml: 1,385; perl: 854; makefile: 122
file content (64 lines) | stat: -rw-r--r-- 1,723 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/* SPDX-License-Identifier: GPL-2.0-or-later */
/**********************************************************************

  Audacity: A Digital Audio Editor

  ImportExport.cpp

  Vitaly Sverchinsky

**********************************************************************/

#include "ImportExport.h"

#include "Project.h"
#include "XMLWriter.h"
#include "XMLAttributeValueView.h"

static const AudacityProject::AttachedObjects::RegisteredFactory
sKey{
  []( AudacityProject &){
     auto result = std::make_shared< ImportExport >();
     return result;
   }
};

ImportExport& ImportExport::Get(AudacityProject& project)
{
   return project.AttachedObjects::Get<ImportExport>(sKey);
}

const ImportExport& ImportExport::Get(const AudacityProject &project)
{
   return Get(const_cast<AudacityProject&>(project));
}

ImportExport::ImportExport() = default;

double ImportExport::GetPreferredExportRate() const
{
   return mExportRate;
}

void ImportExport::SetPreferredExportRate(double rate)
{
   assert(rate > 0 || rate == InvalidRate);
   if(rate > 0 || rate == InvalidRate)
      mExportRate = rate;
}

static ProjectFileIORegistry::AttributeWriterEntry entry {
[](const AudacityProject &project, XMLWriter &xmlFile){
   xmlFile.WriteAttr(wxT("preferred_export_rate"), ImportExport::Get(project).GetPreferredExportRate());
}
};

static ProjectFileIORegistry::AttributeReaderEntries entries {
// Just a pointer to function, but needing overload resolution as non-const:
(ImportExport& (*)(AudacityProject &)) &ImportExport::Get, {
   { "preferred_export_rate", [](auto &settings, auto value){
      const double rate = value.Get(settings.GetPreferredExportRate());
      settings.SetPreferredExportRate( rate );
   } }
} };