lgrAnnotationFactory.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00009 
00010 #ifndef lgrAnnotationFactory_H_
00011 #define lgrAnnotationFactory_H_
00012 
00013 #include "lgrAnn.h"
00014 
00015 #include <list>
00016 #include <map>
00017 #include <QtCore/QString>
00018 #include <QtCore/QStringList>
00019 #include <vlutil/vlString.h>
00020 
00021 class QPainter;
00022 class QWidget;
00023 class DtEnvObject;
00024 
00025 namespace MAKLogger
00026 {
00027    class DtLgrAnnotation;
00028    class DtLgrAnnotationManager;
00029    class DtLgrAnnotationSliderBar;
00030    class DtLgrGuiModel;
00031    class DtSliderBar;
00032    class DtTimeComponent;
00033 
00036    class DT_DLL_LGRANN DtLgrAnnotationDefinition
00037    {
00038    public:
00039 
00042       typedef DtLgrAnnotation* (*AnnotationCreator)(QWidget*,DtLgrGuiModel*);
00043 
00045       typedef void (*AnnotationModifier)(QWidget*,DtLgrAnnotation*,DtLgrGuiModel*);
00046 
00049       typedef DtLgrAnnotation* (*AnnotationLoader)(const DtEnvObject* object);
00050 
00052       typedef DtLgrAnnotationSliderBar* (*AnnotationBarCreator)(DtLgrAnnotation* annotation);
00053 
00055       typedef DtLgrAnnotation* (*AnnotationConvertor)(const DtLgrAnnotation* annotation);
00056 
00057       DtLgrAnnotationDefinition();
00058 
00059       DtLgrAnnotationDefinition(QString guiTypeName,
00060          QString accelerator,QString icon,DtString type,
00061          AnnotationCreator creator, AnnotationModifier modifier,
00062          AnnotationLoader loader,AnnotationBarCreator barCreator);
00063 
00065       DtLgrAnnotationDefinition(const DtLgrAnnotationDefinition& copy);
00066 
00068       DtLgrAnnotationDefinition& operator=(const DtLgrAnnotationDefinition& copy);
00069       ~DtLgrAnnotationDefinition();
00070 
00073       QString myGuiTypeName;
00074 
00076       QString myGuiAccelerator;
00077 
00079       QString myGuiIcon;
00080 
00082       DtString myType;
00083 
00085       AnnotationCreator myCreator;
00086 
00088       AnnotationModifier myModifier;
00089 
00091       AnnotationLoader myLoader;
00092 
00094       AnnotationBarCreator myBarCreator;
00095    };
00096 
00097    typedef std::map<DtString,DtLgrAnnotationDefinition> DtAnnotationTypeMap;
00098 
00101    class DT_DLL_LGRANN DtLgrAnnotationFactory
00102    {
00103    private:
00105       DtLgrAnnotationFactory();
00107       ~DtLgrAnnotationFactory();
00109       DtLgrAnnotationFactory(const DtLgrAnnotationFactory&);
00111       DtLgrAnnotationFactory& operator=(const DtLgrAnnotationFactory&);
00112 
00113    public:
00114 
00116       static const DtAnnotationTypeMap& annotationTypesMap();
00117 
00119       static const QStringList& annotationTypeNames();
00120 
00122       static DtLgrAnnotation* createAnnotation(const DtString& type,
00123          QWidget* parent,DtLgrGuiModel* model);
00124 
00126       static void editAnnotation(QWidget* parent,DtLgrAnnotation*,
00127          DtLgrGuiModel* model);
00128 
00132       static DtLgrAnnotation* convertAnnotation( const DtString& type,
00133          const DtLgrAnnotation* source);
00134 
00137       static DtLgrAnnotation* loadAnnotation(const DtEnvObject* object);
00138 
00140       static DtLgrAnnotationSliderBar* createSliderBar(DtLgrAnnotation*);
00141 
00143       static bool isAnnotationType(const DtString& type);
00144 
00147       static void registerAnnotationType(const DtLgrAnnotationDefinition&
00148          typeDefinition);
00149 
00150       static void registerAnnotationConversion(const DtString& destinationType,
00151          const DtString& sourceType,DtLgrAnnotationDefinition::AnnotationConvertor function);
00152 
00154       static const std::list<DtString>& availableConversions(const DtString& sourceType);
00155 
00156    protected:
00157 
00161       static DtLgrAnnotationDefinition& getKnownDefinition(const DtString& type);
00162 
00163       static DtString conversionKey(const DtString& destType,
00164          const DtString& srcType);
00165 
00167       static std::list<DtString> theAnnotationTypeList;
00168       static QStringList theAnnotationTypeNames;
00169 
00171       static DtAnnotationTypeMap theAnnotationTypes;
00172 
00173       typedef std::map<DtString,DtLgrAnnotationDefinition::AnnotationConvertor> ConvertorMap;
00174       typedef std::map<DtString, std::list<DtString> > ConversionListMap;
00175 
00177       static ConvertorMap theConvertorMap;
00178       static ConversionListMap theConversionListMap;
00179    };
00180 }
00181 
00182 #endif

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)