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)); }
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); }