示例#1
0
void GetSupportedFileFormats(QList<QByteArray> &g_supportedFormats)
{

    // Assemble list of supported Image Formats from our plugin
    int numPlugins = g_pluginManager.getNumPlugins();
    for (int i = 0; i< numPlugins; i++)
    {
        if (strcmp(g_pluginManager.getPluginType(i), "IMAGE") == 0)
        {
            QByteArray bArray = g_pluginManager.getPluginName(i);
            QByteArray fformat = bArray.toUpper();
            if (!g_supportedFormats.contains(fformat))
                g_supportedFormats.append(fformat);
        }
    }

    // Get a list of all Supported file formats from Qt Plugins
    QList<QByteArray> QtFormats = QImageReader::supportedImageFormats();

    // Upppercase List
    QList<QByteArray>::Iterator i;
    for (i = QtFormats.begin(); i != QtFormats.end(); ++i)
    {
        QByteArray fformat = (*i);
        fformat = fformat.toUpper();
        if (!g_supportedFormats.contains(fformat))
            g_supportedFormats.append(fformat);
    }
    
    // Sort the list to alphabetical order
    std::sort(g_supportedFormats.begin(), g_supportedFormats.end());

}
示例#2
0
void KstApp::showPluginManager() {
  PluginManager *pm = new PluginManager(this, "Plugin Manager");
  pm->exec();
  delete pm;

  KstPluginDialogI::globalInstance()->updatePluginList();
}
示例#3
0
void CscopePlugin::BuildModuleMenu(const ModuleType type, wxMenu* menu, const FileTreeData* /*data*/)
{
    if ( !IsAttached() || m_pProcess) return;

    if(type != mtEditorManager || !menu ) return;

    EditorManager* emngr = Manager::Get()->GetEditorManager();
    if ( !emngr ) return;

    EditorBase *edb = emngr->GetActiveEditor();
    if ( !edb || !edb->IsBuiltinEditor() ) return;

    cbStyledTextCtrl* stc = ((cbEditor*)edb)->GetControl();
    if ( !stc ) return;

    if ( stc->GetLexer()  != wxSCI_LEX_CPP) return;

    wxString word = GetWordAtCaret();
    if ( word.IsEmpty() ) return;

    PluginManager *pluginManager = Manager::Get()->GetPluginManager();
    int idximp = pluginManager->GetFindMenuItemFirst() + pluginManager->GetFindMenuItemCount();
    menu->Insert(idximp++, idOnFindFunctionsCalledByThisFuncion, _("Find functions called by '") + word + _T("'"));
    menu->Insert(idximp++, idOnFindFunctionsCallingThisFunction, _("Find functions calling '") + word + _T("'"));
    pluginManager->RegisterFindMenuItems(false, 2);
}
示例#4
0
void Preferences::setPluginEnabled(const QString &fileName, bool enabled)
{
    PluginManager::instance()->setPluginState(fileName, enabled ? PluginEnabled : PluginDisabled);

    QStringList disabledPlugins;
    QStringList enabledPlugins;

    PluginManager *pluginManager = PluginManager::instance();
    auto &states = pluginManager->pluginStates();

    for (auto it = states.begin(), it_end = states.end(); it != it_end; ++it) {
        const QString &fileName = it.key();
        PluginState state = it.value();
        switch (state) {
        case PluginEnabled:
            enabledPlugins.append(fileName);
            break;
        case PluginDisabled:
            disabledPlugins.append(fileName);
            break;
        case PluginDefault:
        case PluginStatic:
            break;
        }
    }

    mSettings->setValue(QLatin1String("Plugins/Disabled"), disabledPlugins);
    mSettings->setValue(QLatin1String("Plugins/Enabled"), enabledPlugins);
}
示例#5
0
bool MapDocument::save(const QString &fileName, QString *error)
{
    PluginManager *pm = PluginManager::instance();

    MapWriterInterface *chosenWriter = 0;
    if (const Plugin *plugin = pm->pluginByFileName(mWriterPluginFileName))
        chosenWriter = qobject_cast<MapWriterInterface*>(plugin->instance);

    TmxMapWriter mapWriter;
    if (!chosenWriter)
        chosenWriter = &mapWriter;

    if (!chosenWriter->write(map(), fileName)) {
        if (error)
            *error = chosenWriter->errorString();
        return false;
    }

    undoStack()->setClean();
    setFileName(fileName);
    mLastSaved = QFileInfo(fileName).lastModified();

    emit saved();
    return true;
}
示例#6
0
//=================================================================================
// It's important to note that we can't just unload the plugin here and now,
// because the plugin code is still running the call-stack.
/*virtual*/ bool PluginManager::PluginAssistant::UnloadPlugin( const wxString& libraryPath )
{
	PluginManager* pluginManager = wxGetApp().GetPluginManager();
	Cornucopia::Path path( ( const char* )libraryPath.c_str() );
	if( pluginManager && pluginManager->UnloadPluginLater( path ) )
		return true;
	return false;
}
示例#7
0
int main()
{
	PluginManager pluginManager;
	pluginManager.loadAllPlugins();
	
	pluginManager.destroyAllPlugins();
	return 0;
}
void MainWindowBase::unloadPlugins(){
    qDebug()<<"--MainWindowBase::unloadPlugins()";

    PluginManager *pluginManager = PluginManager::instance();
    pluginManager->unloadPlugins();

    //delete pluginManager();

}
示例#9
0
void ProjectManagerPlugin::onItemClicked(const QModelIndex &index)
{
    FileItem* item = static_cast<FileItem*>(index.internalPointer());
    if (item->isDirectory)
        return;
    PluginManager *pluginManager = dynamic_cast<PluginManager*>(mdiServer->mdiHost);
    if (pluginManager)
        pluginManager->openFile(item->fullPath);
}
示例#10
0
/*!
    \fn IPlugin::~IPlugin()
    \internal
*/
IPlugin::~IPlugin()
{
    PluginManager *pm = PluginManager::instance();
    foreach (QObject *obj, d->addedObjectsInReverseOrder)
        pm->removeObject(obj);
    qDeleteAll(d->addedObjectsInReverseOrder);
    d->addedObjectsInReverseOrder.clear();
    delete d;
    d = 0;
}
示例#11
0
void MainWindowBase::loadPlugins(const QString &pluginsDirPath) {
    qDebug() << "----MainWindowBase::loadPlugins(...)~~Plugins Path:"<< pluginsDirPath;

    PluginManager *pluginManager = PluginManager::instance();
    connect(pluginManager, SIGNAL(signalPluginLoaded(AbstractPluginInterface*)), this, SLOT(slotInitPlugin(AbstractPluginInterface*)));
    pluginManager->loadPlugins(pluginsDirPath);

    //        plugins = PluginManager::instance()->pluginsList();
    //        for (int i = 0; i < plugins.size(); i++) {
    //                AbstractPluginInterface *plugin = plugins.value(i);
    //		HEHUI::GUIInterface *guiInterface =
    //				static_cast<HEHUI::GUIInterface *> (plugin);
    //		if (guiInterface) {
    //			guiPlugins.append(guiInterface);
    //		}
    //	}
    //
    //	return;

    /*

  QDir pluginsDir(pluginsPath);
  foreach(QString fileName, pluginsDir.entryList(QDir::Files))
  {
  qDebug() << QString("~~ Testing library %1").arg(
  pluginsDir.absoluteFilePath(fileName));
  QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
  QObject *plugin = pluginLoader.instance();
  if (plugin) {
         HEHUI::AbstractInterface *coreInterface = qobject_cast<HEHUI::AbstractInterface *> (plugin);
  if (coreInterface) {
  corePlugins.append(coreInterface);
  qDebug() << QString("~~ Loading Core Plugin %1").arg(fileName);

  HEHUI::GUIInterface *guiInterface = qobject_cast<HEHUI::GUIInterface *> (plugin);
  if (guiInterface) {
  guiPlugins.append(guiInterface);
  qDebug() << QString("~~ Loading GUI Plugin %1").arg(fileName);
  }

  } else {
  qCritical() << QString("XX Unknown Plugin! ");
  break;
  }

  } else {
  qDebug() << QString("XX An error occurred while loading plugin : %1").arg(
  pluginLoader.errorString());
  }

  }

  */

}
示例#12
0
IPlugin::IPlugin(const QString& depInterfaces)
{
    PluginManager *pluginManager = PluginManager::instance();
    m_depModulList = depInterfaces.split(" ");
    foreach (const QString &depPlugin, depModulList()) {
        if (!depPlugin.isEmpty())
            pluginManager->nextLoadPlugins(depPlugin);
    }
    if (pluginManager->settings())
        setSettings(pluginManager->settings());
}
示例#13
0
int main(int argc,const char**argv) {
    using namespace Sirikata;
    OptionSet::getOptions("")->parse(argc,argv);
    PluginManager plugins;
    plugins.load( DynamicLibrary::filename("tcpsst") );
    plugins.load( DynamicLibrary::filename("prox") );

    Network::IOService*io=Network::IOServiceFactory::makeIOService();
    Proximity::ProximitySystemFactory::getSingleton().getDefaultConstructor()(io,"",&Sirikata::Proximity::ProximitySystem::defaultNoAddressProximityCallback);
    io->run();
    return 0;
}
示例#14
0
int main(int argc,const char**argv) {
    using namespace Sirikata;
    OptionSet::getOptions("")->parse(argc,argv);
    Network::IOService*io=Network::IOServiceFactory::makeIOService();
    //FIXME
    //Network::IOServiceFactory::runService(io);
    PluginManager plugins;    
    const char* pluginNames[] = { "mono", NULL};
    for(const char** plugin_name = pluginNames; *plugin_name != NULL; plugin_name++)
        plugins.load( DynamicLibrary::filename(*plugin_name) );

    return 0;
}
示例#15
0
void
VisItDataServerPrivate::LoadPluginsNow(PluginManager &plugins)
{
    // Enable all plugins
    for(int i = 0; i < plugins.GetNAllPlugins(); ++i)
    {
        // Get a pointer to the GUI portion of the Operator plugin information.
        plugins.EnablePlugin(plugins.GetAllID(i));
    }

    // Load the plugins
    plugins.LoadPluginsNow();
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void WriteWebServerJSON(const QString& filePath)
{


  // Register all the filters including trying to load those from Plugins
  FilterManager* fm = FilterManager::Instance();
  DREAM3DPluginLoader::LoadPluginFilters(fm);
  PluginManager* pm = PluginManager::Instance();
  QVector<IDREAM3DPlugin*> plugins = pm->getPluginsVector();

  // Send progress messages from PipelineBuilder to this object for display
  QMetaObjectUtilities::RegisterMetaTypes();


  // Write our File Version and DREAM3D Version strings
  QJsonObject meta;

  meta["Release Date"] = QDate::currentDate().toString();
  meta["Release Type"] = DREAM3DProj_RELEASE_TYPE;
  meta["Major"] = DREAM3DLib::Version::Major();
  meta["Minor"] = DREAM3DLib::Version::Minor();
  meta["Patch"] = DREAM3DLib::Version::Patch();
  meta["Revision"] = DREAM3DLib::Version::Revision();
  meta["Download WebSite"] = "http://dream3d.bluequartz.net/?page_id=32";
  QJsonObject m_Root;
  m_Root["DREAM3D"] = meta;


  QJsonArray plugArray;

  for(int i = 0; i < plugins.size(); i++)
  {
    IDREAM3DPlugin* plug = plugins[i];
    QJsonObject jobj;
    jobj["Plugin Name"] = plug->getPluginName();
    jobj["Plugin Version"] = plug->getVersion();
    jobj["Plugin Vendor"] = plug->getVendor();
    plugArray.append(jobj);
  }
  m_Root["Plugins"] = plugArray;

  QJsonDocument doc(m_Root);
  QFile outputFile(filePath);
  if (outputFile.open(QIODevice::WriteOnly))
  {
    outputFile.write(doc.toJson());
    outputFile.close();
  }

}
示例#17
0
static int dfhack_open_plugin(lua_State *L)
{
    luaL_checktype(L, 1, LUA_TTABLE);
    luaL_checktype(L, 2, LUA_TSTRING);
    const char *name = lua_tostring(L, 2);

    PluginManager *pmgr = Core::getInstance().getPluginManager();
    Plugin *plugin = pmgr->getPluginByName(name);

    if (!plugin)
        luaL_error(L, "plugin not found: '%s'", name);

    plugin->open_lua(L, 1);
    return 0;
}
示例#18
0
void DebuggerMenuHandler::BuildContextMenu(wxMenu &menu, const wxString& word_at_caret, bool is_running)
{
    cbDebuggerPlugin *plugin = Manager::Get()->GetDebuggerManager()->GetActiveDebugger();
    if (!plugin)
        return;

    PluginManager *pluginManager = Manager::Get()->GetPluginManager();

    int initialItem;
    if (is_running)
    {
        // we want debugger menu items to be at the top when debugging
        initialItem = pluginManager->GetFindMenuItemFirst();
    }
    else
        initialItem = pluginManager->GetFindMenuItemFirst() + pluginManager->GetFindMenuItemCount();
    int item = initialItem;

    // Insert Run to Cursor
    if (plugin->SupportsFeature(cbDebuggerFeature::RunToCursor))
        menu.Insert(item++, idMenuRunToCursor, _("Run to cursor"));
    if (is_running)
    {
        if (plugin->SupportsFeature(cbDebuggerFeature::SetNextStatement))
            menu.Insert(item++, idMenuSetNextStatement, _("Set next statement"));
        if (item > 0)
            menu.InsertSeparator(item++);
        if (!word_at_caret.empty())
        {
            if (plugin->SupportsFeature(cbDebuggerFeature::Watches))
                menu.Insert(item++, idMenuDebuggerAddWatch, wxString::Format(_("Watch '%s'"), word_at_caret.c_str()));
            // data breakpoint
            if (plugin->SupportsFeature(cbDebuggerFeature::Breakpoints))
            {
                menu.Insert(item++, idMenuAddDataBreakpoint,
                            wxString::Format(_("Add data breakpoint for '%s'"), word_at_caret.c_str()));
            }
        }
    }
    // Insert toggle breakpoint
    if (plugin->SupportsFeature(cbDebuggerFeature::Breakpoints))
        menu.Insert(item++, idMenuToggleBreakpoint, _("Toggle breakpoint"));
    if (item > 0)
        menu.InsertSeparator(item++);

    if (is_running)
        pluginManager->RegisterFindMenuItems(true, item - initialItem);
}
示例#19
0
    void setUp() {
        if (!_initialized) {
            _initialized = 1;
            _pmgr.load(_plugin);
        }

        // Storage is tied to the main event loop, which requires quite a bit of setup
        ObjectHostID oh_id(1);
        _trace = new Trace::Trace("dummy.trace");
        _ios = new Network::IOService("StorageTest");
        _mainStrand = _ios->createStrand("StorageTest");
        _work = new Network::IOWork(*_ios, "StorageTest");
        Time start_time = Timer::now(); // Just for stats in ObjectHostContext.
        Duration duration = Duration::zero(); // Indicates to run forever.
        _sstConnMgr = new ODPSST::ConnectionManager();
        _ohSSTConnMgr = new OHDPSST::ConnectionManager();

        _ctx = new ObjectHostContext("test", oh_id, _sstConnMgr, _ohSSTConnMgr, _ios, _mainStrand, _trace, start_time, duration);

        _storage = OH::StorageFactory::getSingleton().getConstructor(_type)(_ctx, _args);

        for(int i = 0; i < 2; i++)
            _storage->leaseBucket(_buckets[i]);

        _ctx->add(_ctx);
        _ctx->add(_storage);

        // Run the context, but we need to make sure it only lives in other
        // threads, otherwise we'd block up this one.  We include 4 threads to
        // exercise support for multiple threads.
        _ctx->run(4, Context::AllNew);
    }
AccessControlDataBackendManager::AccessControlDataBackendManager( PluginManager& pluginManager ) :
	m_backends(),
	m_defaultBackend( nullptr ),
	m_configuredBackend( nullptr )
{
	for( auto pluginObject : pluginManager.pluginObjects() )
	{
		auto pluginInterface = qobject_cast<PluginInterface *>( pluginObject );
		auto accessControlDataBackendInterface = qobject_cast<AccessControlDataBackendInterface *>( pluginObject );

		if( pluginInterface && accessControlDataBackendInterface )
		{
			m_backends[pluginInterface->uid()] = accessControlDataBackendInterface;

			if( pluginInterface->flags().testFlag( Plugin::ProvidesDefaultImplementation ) )
			{
				m_defaultBackend = accessControlDataBackendInterface;
			}
		}
	}

	if( m_defaultBackend == nullptr )
	{
		qCritical( "AccessControlDataBackendManager: no default plugin available!" );
	}

	reloadConfiguration();
}
示例#21
0
int main(int argc, char** argv) {
    using namespace Sirikata;

    InitOptions();
    Trace::Trace::InitOptions();
    OHTrace::InitOptions();
    InitSimOHOptions();
    ParseOptions(argc, argv);

    PluginManager plugins;
    plugins.loadList( GetOptionValue<String>(OPT_PLUGINS) );
    plugins.loadList( GetOptionValue<String>(OPT_OH_PLUGINS) );

    String trace_file = GetPerServerFile(STATS_OH_TRACE_FILE, 1);
    Trace::Trace* gTrace = new Trace::Trace(trace_file);

    BoundingBox3f region = GetOptionValue<BoundingBox3f>("region");
    Duration duration = GetOptionValue<Duration>("duration");

    // Get the starting time
    Time start_time = Timer::now();

    srand( GetOptionValue<uint32>("rand-seed") );

    Network::IOService* ios = Network::IOServiceFactory::makeIOService();
    Network::IOStrand* mainStrand = ios->createStrand();

    ObjectHostContext* ctx = new ObjectHostContext(ObjectHostID(1), ios, mainStrand, gTrace, start_time, duration);
    ObjectFactory* obj_factory = new ObjectFactory(ctx, region, duration);

    // Nothing actually runs here -- we only cared about getting the
    // object factory setup so it could dump the object pack data.

    gTrace->prepareShutdown();

    delete obj_factory;
    delete ctx;

    gTrace->shutdown();
    delete gTrace;
    gTrace = NULL;

    delete mainStrand;
    Network::IOServiceFactory::destroyIOService(ios);

    return 0;
}
void PCommandManager::Init(void)
{
	commandMap		= map<BString,PCommand *>();
	undoList		= new BList();
	macroList		= new BList();
	undoStatus		= 0;
	recording		= NULL;

	PluginManager	*pluginManager	= (doc->BelongTo())->GetPluginManager();
	BList 			*commands		= pluginManager->GetPluginsByType(P_C_COMMANDO_PLUGIN_TYPE);
	if (commands)
	{
		for (int32 i=0; i<commands->CountItems();i++)
		{
			RegisterPCommand((BasePlugin *)commands->ItemAt(i));
		}
	}
}
示例#23
0
void pluginManagerTest() {
	sout << "### PluginManager Test ###" << std::endl << std::endl;

	PluginManager* man = new PluginManager(MODULE_DIR);

	ParameterFile file;
	// setup a dummy module that gets data from dynamic dummy module
	file.set("dynamic.type", "dynamicdummymodule");
	file.set("dummy.type", "dummymodule");
	file.set("dynamic.input", 0);
	file.set("dynamic.output", 1);
	file.set("dynamic.out1", "dummy.in");
	file.set("dummy.in", "dynamic.out1");

	man->loadParameterFile(file);

	sout << std::endl;
	man->runWorkflow();
	sout << std::endl;

	sout << "~~~~~~~" << std::endl;
	
	// add dynamic dummy module and connect it to first dynamic module
	file.set("dynamic2.type", "dynamicdummymodule");
	file.set("dynamic.input", 2);
	file.set("dynamic2.input", 0);
	file.set("dynamic2.output", 2);
	file.set("dynamic2.parameters", 5);
	file.set("dynamic2.param4", 999);
	file.set("dynamic.in1", "dynamic2.out1");
	file.set("dynamic2.out1", "dynamic.in1");
	file.set("dynamic.in2", "dynamic2.out2");
	file.set("dynamic2.out2", "dynamic.in2");

	man->loadParameterFile(file);

	sout << std::endl;
	man->runWorkflow();
	sout << std::endl;

	delete man;

	sout << std::endl << "### End of Test ###" << std::endl << std::endl;
}
示例#24
0
PointCloudBase::PointCloudBase( const std::string& name, VisualizationManager* manager )
: Display( name, manager )
, spinner_(1, &cbqueue_)
, new_cloud_(false)
, new_xyz_transformer_(false)
, new_color_transformer_(false)
, needs_retransform_(false)
, style_( Billboards )
, billboard_size_( 0.01 )
, point_decay_time_(0.0f)
, selectable_(false)
, coll_handle_(0)
, messages_received_(0)
, total_point_count_(0)
{
  cloud_ = new ogre_tools::PointCloud();
  scene_node_ = scene_manager_->getRootSceneNode()->createChildSceneNode();
  scene_node_->attachObject(cloud_);
  coll_handler_ = PointCloudSelectionHandlerPtr(new PointCloudSelectionHandler(this));

  setStyle( style_ );
  setBillboardSize( billboard_size_ );
  setAlpha(1.0f);

  setSelectable(true);

  PluginManager* pman = vis_manager_->getPluginManager();
  const L_Plugin& plugins = pman->getPlugins();
  L_Plugin::const_iterator it = plugins.begin();
  L_Plugin::const_iterator end = plugins.end();
  for (; it != end; ++it)
  {
    const PluginPtr& plugin = *it;
    PluginConns pc;
    pc.loaded = plugin->getLoadedSignal().connect(boost::bind(&PointCloudBase::onPluginLoaded, this, _1));
    pc.unloading = plugin->getUnloadingSignal().connect(boost::bind(&PointCloudBase::onPluginUnloading, this, _1));
    loadTransformers(plugin.get());
    plugin_conns_[plugin.get()] = pc;
  }

  threaded_nh_.setCallbackQueue(&cbqueue_);
  spinner_.start();
}
示例#25
0
文件: main.cpp 项目: lnmcc/SyncPlayer
int main(int argc, char **argv) {

	std::cerr << "Main begin " << std::endl;

	Context *context = Context::GetContext();
	context->setScreenWidth(800);
	context->setScreenHeight(600);
	context->setScreenXOffset(0);
	context->setScreenYOffset(0);

	xlibEnv::xlibEnv::GetXlibEnv(context);

	PluginManager *pluginMgr = PluginManager::GetManager(
			context);
	context->setPluginManager(pluginMgr);
	pluginMgr->start();

	openGlPaintPlugin *openglpaintplugin =
			new openGlPaintPlugin(context);
	context->setOpenGlPaintPlugin(openglpaintplugin);

	ParseEvent *parseEvent = ParseEvent::GetParseEvent(context);
	context->setEventParse(parseEvent);
	//parseEvent.parseFile2Event("/home/lnmcc/Documents/test.json");
	//parseEvent.parseFile2Event("/home/lnmcc/Documents/test2.json");
	//parseEvent.parseFile2Event("/home/lnmcc/Documents/test3.json");
	//parseEvent.parseFile2Event("/home/lnmcc/Documents/test4.json");

	//parseEvent->dump();
	parseEvent->start();

	Socket mysocket(context);
	mysocket.start();


	//openglpaintplugin->setThreadPriority(99);
	openglpaintplugin->start();

	pause();

	return 0;
}
示例#26
0
ClientToolModel::ClientToolModel(QObject* parent) : QSortFilterProxyModel(parent)
{
  insertFactory(new ConnectionInspectorFactory);
  insertFactory(new LocaleInspectorFactory);
  insertFactory(new MessageHandlerFactory);
  insertFactory(new MetaObjectBrowserFactory);
  insertFactory(new MetaTypeBrowserFactory);
  insertFactory(new MimeTypesFactory);
  insertFactory(new ModelInspectorFactory);
  insertFactory(new ObjectInspectorFactory);
  insertFactory(new ResourceBrowserFactory);
  insertFactory(new StandardPathsFactory);
  insertFactory(new TextDocumentInspectorFactory);

  PluginManager<ToolUiFactory, ProxyToolUiFactory> pm;
  foreach(ToolUiFactory* factory, pm.plugins())
    insertFactory(factory);

  connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(updateToolInitialization(QModelIndex,QModelIndex)));
}
示例#27
0
void ServerCore::Unload(void)
{
	//TODO:
	//1. Politely kick all players.
	//2. Destroy all vehicles.
	vmm.UnloadGameMode(); //3. Unload all virtual machines.
	vmm.UnloadFilterScripts(); //3. Unload all virtual machines.
	plugm.UnloadPlugins(); //4. Unload all plugins.
	nm.Unload();
	//5. Clean up all remaining data - destructors.
}
示例#28
0
bool PluginThread::initPlugin()
{
    PluginManager* manager = Carbon::get()->getPluginManager();

    //For new plugins, executable denotes the executable plugin, class mainScript the plugin caption and secondary script the plugin type (as integer)
    AbstractPlugin* plugin = manager->findPlugin(getTaskDefinition().getFirst(), getTaskDefinition().getSecond(),
        getTaskDefinition().getThird().compare("") == 0 ? -1 : getTaskDefinition().getThird().toInt());

    if (plugin == 0)
    {
        LOG_ERROR() << "Could not initialize PluginThread because plugin to start with was not found.";
        mPlugin = 0;
        return false;
    }

    if (plugin->getPluginType() == PT_FRAME)
    {
        LOG_ERROR() << "Could not initialize PluginThread because plugin is of type AttachableFrame. AttachableFrame plugins can only be started in the main thread.";
        mPlugin = 0;
        return false;
    }

    if (plugin->getExecutionType() == AbstractPlugin::ET_NEVER)
    {
        LOG_ERROR() << "Could not initialize PluginThread because the plugin is not executable. It has to have an execution type of ONCE, LOOP or ANY.";
        mPlugin = 0;
        return false;
    }

    mPlugin = plugin;

    if (mPlugin->isQObject())
    {
        //Connect to plugin update functions
        connect(mPlugin->getQObject(), SIGNAL(paused()), this, SLOT(pluginPaused()));
        connect(mPlugin->getQObject(), SIGNAL(running()), this, SLOT(pluginRunning()));
        connect(mPlugin->getQObject(), SIGNAL(finished()), this, SLOT(pluginFinished()));
    }

    return true;
}
示例#29
0
int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);

	CommandLineParser parser;
	Commands commands;

	parser.registerDataSink( &commands );
	if ( !parser.parse( true ) ) {
		a.quit();
		return -1;
	}

	Log::instance()->setMessageTypeEnabled( QtDebugMsg, commands.verbose );
	PluginManager* pluginManager = PluginManager::instance();
	pluginManager->loadPlugins();
	if ( commands.listPlugins ) {
		printf( "%s\n\n", printStringTable( pluginManager->importerPlugins(), 1, "Importer Plugins" ).toUtf8().constData() );
		printf( "%s\n\n", printStringTable( pluginManager->routerPlugins(), 1, "Router Plugins" ).toUtf8().constData() );
		printf( "%s\n\n", printStringTable( pluginManager->gpsLookupPlugins(), 1, "GPS Lookup Plugins" ).toUtf8().constData() );
		printf( "%s\n\n", printStringTable( pluginManager->rendererPlugins(), 1, "Renderer Plugins" ).toUtf8().constData() );
		printf( "%s\n\n", printStringTable( pluginManager->addressLookupPlugins(), 1, "Address Lookup Plugins" ).toUtf8().constData() );
		a.quit();
		return 0;
	}

	if ( !commands.settings.isEmpty() ) {
		QSettings settings( commands.settings, QSettings::IniFormat );
		pluginManager->loadSettings( &settings );

		commands.importer = settings.value( "importer" ).toString();
		commands.router = settings.value( "router" ).toString();
		commands.gpsLookup = settings.value( "gpsLookup" ).toString();
		commands.renderer = settings.value( "renderer" ).toString();
		commands.addressLookup = settings.value( "addressLookup" ).toString();
	}

	// parse a second time including all plugins
	// otherwise console settings would be overwritten by the settings file
	QVector< QObject* > plugins = pluginManager->plugins();
	foreach( QObject* plugin, plugins ) {
		IConsoleSettings* settings = qobject_cast< IConsoleSettings* >( plugin );
		if ( settings!= NULL ) {
			parser.registerDataSink( settings );
		}
	}
示例#30
0
void PluginClass::setPluginData(Plugin::PluginType type, int index)
{
	PluginManager* pm = AccessClass::getPluginManager();
	String name;
	pluginType = type;
	pluginIndex = index;
	switch (type)
	{
	case Plugin::ProcessorPlugin:
	{
		Plugin::ProcessorInfo i = pm->getProcessorInfo(index);
		name = i.name;
	}
	break;
	case Plugin::RecordEnginePlugin:
	{
		Plugin::RecordEngineInfo i = pm->getRecordEngineInfo(index);
		name = i.name;
	}
	break;
	case Plugin::DatathreadPlugin:
	{
		Plugin::DataThreadInfo i = pm->getDataThreadInfo(index);
		name = i.name;
	}
	break;
	case Plugin::FileSourcePlugin:
	{
		Plugin::FileSourceInfo i = pm->getFileSourceInfo(index);
		name = i.name;
	}
	break;
	case Plugin::NotAPlugin:
	{
		String pName;
		int pType;
		ProcessorManager::getProcessorNameAndType(BuiltInProcessor, index, pName, pType);
		name = pName;
	}
	default:
		return;
	}
	pluginName = name;
	libName = pm->getLibraryName(pm->getLibraryIndexFromPlugin(type, index));
	libVersion = pm->getLibraryVersion(pm->getLibraryIndexFromPlugin(type, index));
}