void ScriptingWidget::insertFromMimeData(const QMimeData* pSource) { QString filePath; QString text; if (mDropOccurring && pSource->hasUrls()) { QList<QUrl> urls = pSource->urls(); if (!urls.empty()) { filePath = urls.front().toLocalFile(); } } if (pSource->hasText()) { text = pSource->text(); int numNewlines = text.count("\n"); QString trimmedText = text.trimmed(); bool haveFile = false; if (mDropOccurring && numNewlines <= 1 && QFile::exists(trimmedText)) { filePath = trimmedText; } } if (!filePath.isEmpty()) { //don't get here if mDropOccurring == false InterpreterManager* pInterMgr = dynamic_cast<InterpreterManager*>(mInterpreter.get()); bool bMatch = false; if (pInterMgr != NULL) { QString strInterpreterExtensions = QString::fromStdString(pInterMgr->getFileExtensions()); if (!strInterpreterExtensions.isEmpty()) { QStringList filterListCandidates = strInterpreterExtensions.split(";;", QString::SkipEmptyParts); QStringList filterList; for (int i = 0; i < filterListCandidates.count(); i++) { QString strExtensions = filterListCandidates[i]; if (strExtensions.isEmpty() == false) { int iOpenPos = strExtensions.indexOf("("); int iClosePos = strExtensions.lastIndexOf(")"); strExtensions = strExtensions.mid(iOpenPos + 1, iClosePos - iOpenPos - 1); QStringList globPatterns = strExtensions.split(QString(" "), QString::SkipEmptyParts); QString catchAll = QString::fromStdString("*"); QString catchAll2 = QString::fromStdString("*.*"); for (int globCount = 0; globCount < globPatterns.count(); ++globCount) { QString pattern = globPatterns[globCount]; if ((pattern != catchAll) && (pattern != catchAll2)) { filterList << pattern; } } } } bMatch = QDir::match(filterList, filePath); } } QFile file(filePath); if (bMatch && file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream reader(&file); QString fileContent = reader.readAll(); QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::End); cursor.insertText("\n"); executeCommand(fileContent); return; } } if (!text.isEmpty()) { bool insertText = true; if (mDropOccurring) { if (getCommandText().isEmpty()) { insertText = false; QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::End); cursor.insertText("\n"); executeCommand(text); } } if (insertText) { QTextCursor cursor = textCursor(); cursor.insertText(text, currentCharFormat()); } } }
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()); }