void ApplicationPlugins::updatePlugins()
{
    qDeleteAll(m_plugins);
    m_plugins.clear();

    for (QString path: m_searchPaths) {
        if (!QDir(path).exists())
        {
            continue;
        }

        QDirIterator dirIterator(path, QDirIterator::FollowSymlinks | QDirIterator::Subdirectories);
        while (dirIterator.hasNext())
        {
            dirIterator.next();
            QFileInfo info = dirIterator.fileInfo();
            if (info.isFile() && info.fileName() == "plugin.ini")
            {
                readPluginFile(info.filePath());
            }
        }
    }

    emit pluginsChanged(QQmlListProperty<ApplicationPluginItem>(this, m_plugins));
}
Exemple #2
0
void
loadPluginFromFile(GtkWidget *btn, ggobid *gg)
{
 char *fileName;
 GtkWidget *fileSelect;
 GGobiPluginInfo *plugin;

 fileSelect = gtk_widget_get_toplevel(btn);
 fileName = gtk_file_selection_get_filename(GTK_FILE_SELECTION(fileSelect));

 fprintf(stderr, "Reading plugin file %s\n", fileName);

 plugin = readPluginFile(fileName, sessionOptions->info);
 if(plugin) {
   registerPlugin(gg, plugin); 
 }

 gtk_widget_hide(fileSelect);
 gtk_widget_destroy(fileSelect);
}