tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | Friends | List of all members
tracktion::engine::Project Class Reference

A tracktion project. More...

#include "tracktion_Project.h"

Inheritance diagram for tracktion::engine::Project:
juce::ReferenceCountedObject tracktion::engine::Selectable juce::AsyncUpdater

Public Types

enum  NagMode { nagAsk , nagAutoYes , nagAutoNo }
 General enum for requests that have a project setting and so can return true without asking the user. More...
 
enum  ProjectSortType {
  SortByName , SortByDesc , SortByType , SortByLength ,
  SortBySize , SortByModified , SortByCreated
}
 
using Ptr = juce::ReferenceCountedObjectPtr< Project >
 
- Public Types inherited from tracktion::engine::Selectable
using WeakRef = juce::WeakReference< Selectable >
 

Public Member Functions

bool save ()
 only saves if a change has been made since last time

 
void handleAsyncUpdate () override
 
bool isValid () const
 true if it's got a proper project ID.
 
bool isReadOnly () const
 
bool isTemporary () const
 
int getProjectID () const
 
juce::String getName () const
 
juce::String getDescription () const
 
const juce::FilegetProjectFile () const noexcept
 
juce::File getDefaultDirectory () const
 
juce::File getDirectoryForMedia (ProjectItem::Category category) const
 
void setName (const juce::String &newName)
 
void setDescription (const juce::String &newDesc)
 
void createNewProjectId ()
 
juce::String getProjectProperty (const juce::String &name) const
 
void setProjectProperty (const juce::String &name, const juce::String &value)
 
void refreshProjectPropertiesFromFile ()
 
bool isLibraryProject () const
 
bool askAboutTempoDetect (const juce::File &, bool &shouldSetAutoTempo) const
 
juce::Array< ProjectItemIDfindOrphanItems ()
 
int getNumProjectItems ()
 
ProjectItemID getProjectItemID (int index)
 
juce::Array< ProjectItemIDgetAllProjectItemIDs () const
 
juce::Array< intgetAllItemIDs () const
 
ProjectItem::Ptr getProjectItemAt (int index)
 
juce::Array< ProjectItem::PtrgetAllProjectItems ()
 
int getIndexOf (ProjectItemID) const
 
ProjectItem::Ptr getProjectItemForID (ProjectItemID)
 
ProjectItem::Ptr getProjectItemForFile (const juce::File &file)
 
ProjectItem::Ptr createNewItem (const juce::File &fileToReference, const juce::String &type, const juce::String &name, const juce::String &description, const ProjectItem::Category cat, bool atTopOfList)
 Returns an existing object if there is one.
 
bool removeProjectItem (ProjectItemID, bool deleteSourceMaterial)
 
void moveProjectItem (int indexToMoveFrom, int indexToMoveTo)
 
ProjectItem::Ptr createNewEdit ()
 
void redirectIDsFromProject (int oldProjId, int newProjId)
 Tells all exportables in all edits to change this project ID.
 
void mergeArchiveContents (const juce::File &archiveFile)
 
void mergeOtherProjectIntoThis (const juce::File &otherProject)
 
void refreshFolderStructure ()
 makes sure all media is in the correct sub folder
 
void createDefaultFolders ()
 
void searchFor (juce::Array< ProjectItemID > &results, SearchOperation &)
 this will load the keyword table, and do a search
 
juce::String getSelectableDescription () override
 Subclasses must return a description of what they are.
 
void lockFile ()
 Stops anyone writing/moving the project file.
 
void unlockFile ()
 
- Public Member Functions inherited from juce::ReferenceCountedObject
void incReferenceCount () noexcept
 
void decReferenceCount () noexcept
 
bool decReferenceCountWithoutDeleting () noexcept
 
int getReferenceCount () const noexcept
 
- Public Member Functions inherited from tracktion::engine::Selectable
virtual void selectionStatusChanged (bool isNowSelected)
 Can be overridden to tell this object that it has just been selected or deselected.
 
virtual void selectableAboutToBeDeleted ()
 Called just before the selectable is about to be deleted so any subclasses should still be valid at this point.
 
void addListener (SelectableListener *)
 
void removeListener (SelectableListener *)
 
void addSelectableListener (SelectableListener *)
 
void removeSelectableListener (SelectableListener *)
 
void cancelAnyPendingUpdates ()
 If changed() has been called, this will cancel any pending async change notificaions.
 
void deselect ()
 
void propertiesChanged ()
 
void notifyListenersOfDeletion ()
 
WeakRef getWeakRef ()
 

Public Attributes

Engineengine
 
ProjectManagerprojectManager
 
- Public Attributes inherited from tracktion::engine::Selectable
WeakRef::Master masterReference
 

Friends

class ProjectItem
 
class ProjectManager
 

Additional Inherited Members

- Static Public Member Functions inherited from tracktion::engine::Selectable
static void initialise ()
 
static bool isSelectableValid (const Selectable *) noexcept
 checks whether this object has been deleted.
 
- Protected Member Functions inherited from juce::ReferenceCountedObject
 ReferenceCountedObject (const ReferenceCountedObject &) noexcept
 
 ReferenceCountedObject (ReferenceCountedObject &&) noexcept
 
ReferenceCountedObjectoperator= (const ReferenceCountedObject &) noexcept
 
ReferenceCountedObjectoperator= (ReferenceCountedObject &&) noexcept
 
void resetReferenceCount () noexcept
 

Detailed Description

A tracktion project.

The projects contain a set of ProjectItems to represent each item in it, which may be edits, wave files, etc.

Originally these were designed to hold huge numbers of items (so I could use them for holding sound-libraries and searching them), so some of the implementation might seem like overkill, such as the reverse-index text search stuff.

See also
ProjectManager

Definition at line 26 of file tracktion_Project.h.

Member Typedef Documentation

◆ Ptr

Definition at line 141 of file tracktion_Project.h.

Member Enumeration Documentation

◆ NagMode

General enum for requests that have a project setting and so can return true without asking the user.

Enumerator
nagAsk 

Should ask user.

nagAutoYes 

Should do task automatically.

nagAutoNo 

Should not do task automatically.

Definition at line 103 of file tracktion_Project.h.

◆ ProjectSortType

enum tracktion::engine::Project::ProjectSortType

Definition at line 119 of file tracktion_Project.h.

Constructor & Destructor Documentation

◆ ~Project()

tracktion::engine::Project::~Project ( )
override

Definition at line 35 of file tracktion_Project.cpp.

Member Function Documentation

◆ askAboutTempoDetect()

bool tracktion::engine::Project::askAboutTempoDetect ( const juce::File f,
bool &  shouldSetAutoTempo 
) const

Definition at line 808 of file tracktion_Project.cpp.

◆ createDefaultFolders()

void tracktion::engine::Project::createDefaultFolders ( )

Definition at line 862 of file tracktion_Project.cpp.

◆ createNewEdit()

ProjectItem::Ptr tracktion::engine::Project::createNewEdit ( )

Definition at line 657 of file tracktion_Project.cpp.

◆ createNewItem()

ProjectItem::Ptr tracktion::engine::Project::createNewItem ( const juce::File fileToReference,
const juce::String type,
const juce::String name,
const juce::String description,
const ProjectItem::Category  cat,
bool  atTopOfList 
)

Returns an existing object if there is one.

If not, it will use the given name and description to create a new one

Definition at line 531 of file tracktion_Project.cpp.

◆ createNewProjectId()

void tracktion::engine::Project::createNewProjectId ( )

Definition at line 354 of file tracktion_Project.cpp.

◆ findOrphanItems()

juce::Array< ProjectItemID > tracktion::engine::Project::findOrphanItems ( )

Definition at line 775 of file tracktion_Project.cpp.

◆ getAllItemIDs()

juce::Array< int > tracktion::engine::Project::getAllItemIDs ( ) const

Definition at line 422 of file tracktion_Project.cpp.

◆ getAllProjectItemIDs()

juce::Array< ProjectItemID > tracktion::engine::Project::getAllProjectItemIDs ( ) const

Definition at line 432 of file tracktion_Project.cpp.

◆ getAllProjectItems()

juce::Array< ProjectItem::Ptr > tracktion::engine::Project::getAllProjectItems ( )

Definition at line 461 of file tracktion_Project.cpp.

◆ getDefaultDirectory()

juce::File tracktion::engine::Project::getDefaultDirectory ( ) const

Definition at line 652 of file tracktion_Project.cpp.

◆ getDescription()

juce::String tracktion::engine::Project::getDescription ( ) const

Definition at line 321 of file tracktion_Project.cpp.

◆ getDirectoryForMedia()

juce::File tracktion::engine::Project::getDirectoryForMedia ( ProjectItem::Category  category) const

Definition at line 627 of file tracktion_Project.cpp.

◆ getIndexOf()

int tracktion::engine::Project::getIndexOf ( ProjectItemID  mo) const

Definition at line 501 of file tracktion_Project.cpp.

◆ getName()

juce::String tracktion::engine::Project::getName ( ) const

Definition at line 316 of file tracktion_Project.cpp.

◆ getNumProjectItems()

int tracktion::engine::Project::getNumProjectItems ( )

Definition at line 407 of file tracktion_Project.cpp.

◆ getProjectFile()

const juce::File & tracktion::engine::Project::getProjectFile ( ) const
noexcept

Definition at line 48 of file tracktion_Project.h.

◆ getProjectID()

int tracktion::engine::Project::getProjectID ( ) const

Definition at line 298 of file tracktion_Project.cpp.

◆ getProjectItemAt()

ProjectItem::Ptr tracktion::engine::Project::getProjectItemAt ( int  index)

Definition at line 444 of file tracktion_Project.cpp.

◆ getProjectItemForFile()

ProjectItem::Ptr tracktion::engine::Project::getProjectItemForFile ( const juce::File file)

Definition at line 484 of file tracktion_Project.cpp.

◆ getProjectItemForID()

ProjectItem::Ptr tracktion::engine::Project::getProjectItemForID ( ProjectItemID  targetId)

Definition at line 478 of file tracktion_Project.cpp.

◆ getProjectItemID()

ProjectItemID tracktion::engine::Project::getProjectItemID ( int  index)

Definition at line 412 of file tracktion_Project.cpp.

◆ getProjectProperty()

juce::String tracktion::engine::Project::getProjectProperty ( const juce::String name) const

Definition at line 303 of file tracktion_Project.cpp.

◆ getSelectableDescription()

juce::String tracktion::engine::Project::getSelectableDescription ( )
overridevirtual

Subclasses must return a description of what they are.

Implements tracktion::engine::Selectable.

Definition at line 802 of file tracktion_Project.cpp.

◆ handleAsyncUpdate()

void tracktion::engine::Project::handleAsyncUpdate ( )
overridevirtual

Implements juce::AsyncUpdater.

Definition at line 173 of file tracktion_Project.cpp.

◆ isLibraryProject()

bool tracktion::engine::Project::isLibraryProject ( ) const

Definition at line 395 of file tracktion_Project.cpp.

◆ isReadOnly()

bool tracktion::engine::Project::isReadOnly ( ) const

Definition at line 293 of file tracktion_Project.cpp.

◆ isTemporary()

bool tracktion::engine::Project::isTemporary ( ) const

Definition at line 43 of file tracktion_Project.h.

◆ isValid()

bool tracktion::engine::Project::isValid ( ) const

true if it's got a proper project ID.

Definition at line 288 of file tracktion_Project.cpp.

◆ lockFile()

void tracktion::engine::Project::lockFile ( )

Stops anyone writing/moving the project file.

Definition at line 42 of file tracktion_Project.cpp.

◆ mergeArchiveContents()

void tracktion::engine::Project::mergeArchiveContents ( const juce::File archiveFile)

Definition at line 709 of file tracktion_Project.cpp.

◆ mergeOtherProjectIntoThis()

void tracktion::engine::Project::mergeOtherProjectIntoThis ( const juce::File otherProject)

Definition at line 746 of file tracktion_Project.cpp.

◆ moveProjectItem()

void tracktion::engine::Project::moveProjectItem ( int  indexToMoveFrom,
int  indexToMoveTo 
)

Definition at line 517 of file tracktion_Project.cpp.

◆ redirectIDsFromProject()

void tracktion::engine::Project::redirectIDsFromProject ( int  oldProjId,
int  newProjId 
)

Tells all exportables in all edits to change this project ID.

Definition at line 368 of file tracktion_Project.cpp.

◆ refreshFolderStructure()

void tracktion::engine::Project::refreshFolderStructure ( )

makes sure all media is in the correct sub folder

Definition at line 872 of file tracktion_Project.cpp.

◆ refreshProjectPropertiesFromFile()

void tracktion::engine::Project::refreshProjectPropertiesFromFile ( )

Definition at line 93 of file tracktion_Project.cpp.

◆ removeProjectItem()

bool tracktion::engine::Project::removeProjectItem ( ProjectItemID  item,
bool  deleteSourceMaterial 
)

Definition at line 593 of file tracktion_Project.cpp.

◆ save()

bool tracktion::engine::Project::save ( )

only saves if a change has been made since last time

Definition at line 178 of file tracktion_Project.cpp.

◆ searchFor()

void tracktion::engine::Project::searchFor ( juce::Array< ProjectItemID > &  results,
SearchOperation searchOp 
)

this will load the keyword table, and do a search

Definition at line 687 of file tracktion_Project.cpp.

◆ setDescription()

void tracktion::engine::Project::setDescription ( const juce::String newDesc)

Definition at line 349 of file tracktion_Project.cpp.

◆ setName()

void tracktion::engine::Project::setName ( const juce::String newName)

Definition at line 326 of file tracktion_Project.cpp.

◆ setProjectProperty()

void tracktion::engine::Project::setProjectProperty ( const juce::String name,
const juce::String value 
)

Definition at line 309 of file tracktion_Project.cpp.

◆ unlockFile()

void tracktion::engine::Project::unlockFile ( )

Definition at line 48 of file tracktion_Project.cpp.

Friends And Related Symbol Documentation

◆ ProjectItem

friend class ProjectItem
friend

Definition at line 147 of file tracktion_Project.h.

◆ ProjectManager

friend class ProjectManager
friend

Definition at line 148 of file tracktion_Project.h.

Member Data Documentation

◆ engine

Engine& tracktion::engine::Project::engine

Definition at line 143 of file tracktion_Project.h.

◆ projectManager

ProjectManager& tracktion::engine::Project::projectManager

Definition at line 144 of file tracktion_Project.h.


The documentation for this class was generated from the following files: