Esempio n. 1
0
XERCES_CPP_NAMESPACE_USE

PlugInDescriptorImp::PlugInDescriptorImp(const string& id, PlugIn* pPlugIn) :
   SessionItemImp(id),
   mPlugInNumber(0),
   mProductionStatus(false),
   mAllowMultipleInstances(false),
   mExecutableInterface(false),
   mExecuteOnStartup(false),
   mDestroyAfterExecute(true),
   mAbort(false),
   mWizardSupport(false),
   mBatchSupport(false),
   mInteractiveSupport(false),
   mpBatchInArgList(NULL),
   mpInteractiveInArgList(NULL),
   mpBatchOutArgList(NULL),
   mpInteractiveOutArgList(NULL),
   mImporterInterface(false),
   mExporterInterface(false),
   mInterpreterInterface(false),
   mTestableInterface(false),
   mTestable(false)
{
   if (pPlugIn != NULL)
   {
      setName(pPlugIn->getName());
      mVersion = pPlugIn->getVersion();
      mProductionStatus = pPlugIn->isProduction();
      mCreator = pPlugIn->getCreator();
      mCopyright = pPlugIn->getCopyright();
      mDependencyCopyright = pPlugIn->getDependencyCopyright();
      mDescription = pPlugIn->getDescription();
      mShortDescription = pPlugIn->getShortDescription();
      mType = pPlugIn->getType();
      mSubtype = pPlugIn->getSubtype();
      mAllowMultipleInstances = pPlugIn->areMultipleInstancesAllowed();

      if (Service<ApplicationServices>()->isInteractive())
      {
         setIcon(pPlugIn->getIcon());
      }

      Executable* pExecutable = dynamic_cast<Executable*>(pPlugIn);
      if (pExecutable != NULL)
      {
         mExecutableInterface = true;
         mExecuteOnStartup = pExecutable->isExecutedOnStartup();
         mDestroyAfterExecute = pExecutable->isDestroyedAfterExecute();
         mMenuLocations = pExecutable->getMenuLocations();

         mAbort = pExecutable->hasAbort();
         mWizardSupport = pExecutable->hasWizardSupport();

         mBatchSupport = pExecutable->setBatch();
         if (mBatchSupport)
         {
            pExecutable->getInputSpecification(mpBatchInArgList);
            pExecutable->getOutputSpecification(mpBatchOutArgList);
         }

         mInteractiveSupport = pExecutable->setInteractive();
         if (mInteractiveSupport)
         {
            pExecutable->getInputSpecification(mpInteractiveInArgList);
            pExecutable->getOutputSpecification(mpInteractiveOutArgList);
         }
      }

      Importer* pImporter = dynamic_cast<Importer*>(pPlugIn);
      if (pImporter != NULL)
      {
         mImporterInterface = true;
         mFileExtensions = pImporter->getDefaultExtensions();
      }

      Exporter* pExporter = dynamic_cast<Exporter*>(pPlugIn);
      if (pExporter != NULL)
      {
         mExporterInterface = true;
         mFileExtensions = pExporter->getDefaultExtensions();
      }

      InterpreterManager* pInterpreter = dynamic_cast<InterpreterManager*>(pPlugIn);
      if (pInterpreter != NULL)
      {
         mInterpreterInterface = true;
         mFileExtensions = pInterpreter->getFileExtensions();
      }

      Testable* pTestable = dynamic_cast<Testable*>(pPlugIn);
      if (pTestable != NULL)
      {
         mTestableInterface = true;
         mTestable = true;
      }
   }

   addPropertiesPage(PropertiesPlugInDescriptor::getName());
}