TracktionEngine
Public Types | Public Member Functions | Public Attributes | List of all members
tracktion::engine::Project Class Reference

A tracktion project. More...

Inheritance diagram for tracktion::engine::Project:

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

 ~Project () override
 
bool save ()
 only saves if a change has been made since last time
More...
 
void handleAsyncUpdate () override
 
bool isValid () const
 true if it's got a proper project ID. More...
 
bool isReadOnly () const
 
bool isTemporary () const
 
int getProjectID () const
 
juce::String getName () const
 
juce::String getDescription () const
 
const juce::File & getProjectFile () 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< int > getAllItemIDs () 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. More...
 
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. More...
 
void mergeArchiveContents (const juce::File &archiveFile)
 
void mergeOtherProjectIntoThis (const juce::File &otherProject)
 
void refreshFolderStructure ()
 makes sure all media is in the correct sub folder More...
 
void createDefaultFolders ()
 
void searchFor (juce::Array< ProjectItemID > &results, SearchOperation &)
 this will load the keyword table, and do a search More...
 
juce::String getSelectableDescription () override
 Subclasses must return a description of what they are. More...
 
void lockFile ()
 Stops anyone writing/moving the project file. More...
 
void unlockFile ()
 
- Public Member Functions inherited from tracktion::engine::Selectable
 Selectable ()
 
virtual ~Selectable ()
 
virtual void selectionStatusChanged (bool isNowSelected)
 Can be overridden to tell this object that it has just been selected or deselected. More...
 
virtual void selectableAboutToBeDeleted ()
 Called just before the selectable is about to be deleted so any subclasses should still be valid at this point. More...
 
void addSelectableListener (SelectableListener *)
 
void removeSelectableListener (SelectableListener *)
 
void cancelAnyPendingUpdates ()
 If changed() has been called, this will cancel any pending async change notificaions. More...
 
void deselect ()
 
void propertiesChanged ()
 
void notifyListenersOfDeletion ()
 
WeakRef getWeakRef ()
 

Public Attributes

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

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. More...
 

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

Member Typedef Documentation

◆ Ptr

using tracktion::engine::Project::Ptr = juce::ReferenceCountedObjectPtr<Project>

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.

◆ ProjectSortType

Enumerator
SortByName 
SortByDesc 
SortByType 
SortByLength 
SortBySize 
SortByModified 
SortByCreated 

Constructor & Destructor Documentation

◆ ~Project()

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

Member Function Documentation

◆ save()

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

only saves if a change has been made since last time

◆ handleAsyncUpdate()

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

◆ isValid()

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

true if it's got a proper project ID.

◆ isReadOnly()

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

◆ isTemporary()

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

◆ getProjectID()

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

◆ getName()

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

◆ getDescription()

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

◆ getProjectFile()

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

◆ getDefaultDirectory()

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

◆ getDirectoryForMedia()

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

◆ setName()

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

◆ setDescription()

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

◆ createNewProjectId()

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

◆ getProjectProperty()

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

◆ setProjectProperty()

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

◆ refreshProjectPropertiesFromFile()

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

◆ isLibraryProject()

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

◆ askAboutTempoDetect()

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

◆ findOrphanItems()

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

◆ getNumProjectItems()

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

◆ getProjectItemID()

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

◆ getAllProjectItemIDs()

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

◆ getAllItemIDs()

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

◆ getProjectItemAt()

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

◆ getAllProjectItems()

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

◆ getIndexOf()

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

◆ getProjectItemForID()

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

◆ getProjectItemForFile()

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

◆ 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

◆ removeProjectItem()

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

◆ moveProjectItem()

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

◆ createNewEdit()

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

◆ redirectIDsFromProject()

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

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

◆ mergeArchiveContents()

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

◆ mergeOtherProjectIntoThis()

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

◆ refreshFolderStructure()

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

makes sure all media is in the correct sub folder

◆ createDefaultFolders()

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

◆ searchFor()

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

this will load the keyword table, and do a search

◆ getSelectableDescription()

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

Subclasses must return a description of what they are.

Implements tracktion::engine::Selectable.

◆ lockFile()

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

Stops anyone writing/moving the project file.

◆ unlockFile()

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

Member Data Documentation

◆ engine

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

◆ projectManager

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

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