mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-03 17:19:43 +02:00
77 lines
2.1 KiB
C++
77 lines
2.1 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
Registrar.cpp
|
|
|
|
James Crook
|
|
|
|
Audacity is free software.
|
|
This file is licensed under the wxWidgets license, see License.txt
|
|
|
|
********************************************************************//**
|
|
|
|
\class Registrar
|
|
\brief Registrar is a class that other classes register resources of
|
|
various kinds with. It makes a system that is much more amenable to
|
|
plugging in of new resources.
|
|
|
|
*//********************************************************************/
|
|
|
|
#include <wx/wx.h>
|
|
#include "Registrar.h"
|
|
|
|
Registrar * pRegistrar = NULL;
|
|
|
|
// By defining the external function and including it here, we save ourselves maintaing two lists.
|
|
// Also we save ourselves recompiling Registrar each time the classes that regiser change.
|
|
// Part of the idea is that the Registrar knows very little about the classes that
|
|
// register with it.
|
|
#define DISPATCH( Name ) extern int Name##Dispatch( Registrar & R, t_RegistrarDispatchType Type );\
|
|
Name##Dispatch( *pRegistrar, Type )
|
|
|
|
// Not a class function, otherwise the functions called
|
|
// are treated as belonging to the class.
|
|
int RegistrarDispatch( t_RegistrarDispatchType Type )
|
|
{
|
|
wxASSERT( pRegistrar != NULL );
|
|
|
|
DISPATCH( SkewedRuler );
|
|
DISPATCH( MidiArtist );
|
|
DISPATCH( WaveArtist );
|
|
DISPATCH( EnvelopeArtist );
|
|
DISPATCH( LabelArtist );
|
|
DISPATCH( DragGridSizer );
|
|
DISPATCH( TrackPanel2 );
|
|
return 0;
|
|
}
|
|
|
|
// Start()
|
|
// Static function. Allocates Registrar.
|
|
void Registrar::Start()
|
|
{
|
|
wxASSERT( pRegistrar ==NULL );
|
|
pRegistrar = new Registrar();
|
|
|
|
RegistrarDispatch( RegResource );
|
|
RegistrarDispatch( RegArtist );
|
|
RegistrarDispatch( RegDataType );
|
|
RegistrarDispatch( RegCommand );
|
|
RegistrarDispatch( RegMenuItem );
|
|
}
|
|
|
|
// Finish()
|
|
// Static function. DeAllocates Registrar.
|
|
void Registrar::Finish()
|
|
{
|
|
wxASSERT( pRegistrar !=NULL );
|
|
delete pRegistrar;
|
|
pRegistrar = NULL;
|
|
}
|
|
|
|
void Registrar::ShowNewPanel()
|
|
{
|
|
wxASSERT( pRegistrar !=NULL );
|
|
if( pRegistrar->pShowFn != NULL)
|
|
pRegistrar->pShowFn();
|
|
} |