27 #include "../../utils/CentralizedCheckBoxDelegate.h" 
   28 #include "../../utils/ResourceChooser.h" 
   29 #include "../../../../plugin/AbstractPlugin.h" 
   30 #include "../../../../plugin/PluginInfo.h" 
   31 #include "../../../../plugin/PluginManager.h" 
   32 #include "../../../../plugin/Utils.h" 
   33 #include "../../help/HelpManager.h" 
   34 #include "../../Exception.h" 
   37 #include "ui_PluginManagerDialogForm.h" 
   43 #include <QtCore/QDir> 
   44 #include <QtCore/QFileInfo> 
   45 #include <QtCore/QUrl> 
   46 #include <QMessageBox> 
   48 #include <QtNetwork/QNetworkAccessManager> 
   49 #include <QtNetwork/QNetworkReply> 
   50 #include <QtNetwork/QNetworkRequest> 
   59   catch(te::plugin::Exception&)
 
   70   std::vector<std::string>::iterator it;
 
   72   for(it=plgs.begin(); it!=plgs.end(); ++it)
 
   74     std::string plgName = *it;
 
   77       deps.push_back(plgName);
 
   86   std::vector<std::string>::iterator it;
 
   88   for(it=plgs.begin(); it!=plgs.end(); ++it)
 
   90     std::string plgName = *it;
 
   94       QString msg(
"Unable to load <b>%1</b>. Dependency missed: <ul><li><b>%2</b></li></ul>.");
 
   95       msg = msg.arg(plg->
m_name.c_str(), plgName.c_str()); 
 
   97       throw te::qt::widgets::Exception(msg.toStdString());
 
  101       deps.push_back(plgName);
 
  111     std::vector<std::string>::const_iterator it;
 
  113     result = QObject::tr(
"Unloading <b>%1</b> will also unload the plugins: <ul>");
 
  114     result = result.arg(plg.c_str());
 
  116     for(it=dps.begin(); it!=dps.end(); ++it)
 
  118       result += QString(
"<li><b>%1</b></li>");
 
  119       result = result.arg((*it).c_str()); 
 
  122     result +=  QObject::tr(
"</ul> Did you want to continue?");
 
  134     std::vector<std::string>::const_iterator it;
 
  136     result = QObject::tr(
"In order to be able to load <b>%1</b> plugin, the following plugins must also be enabled: <ul>");
 
  137     result = result.arg(plg.c_str());
 
  139     for(it=dps.begin(); it!=dps.end(); ++it)
 
  141       result += QString(
"<li><b>%1</b></li>");
 
  142       result = result.arg((*it).c_str()); 
 
  145     result += QObject::tr(
"</ul> Allow them to be anabled?");
 
  151 void MakeRemove(
const std::vector<te::plugin::PluginInfo*>& plgs, 
const std::vector<te::qt::widgets::PluginsModel::PluginsStatus>& status, QWidget* parent)
 
  153   std::vector<std::string> dps;
 
  155   for(
size_t i=0; i<status.size(); i++)
 
  163         if(QMessageBox::question(parent, QObject::tr(
"Remove plugins"), msg, QMessageBox::No, QMessageBox::Yes) == QMessageBox::No)
 
  171 void MakeDisable(
const std::vector<te::plugin::PluginInfo*>& plgs, 
const std::vector<te::qt::widgets::PluginsModel::PluginsStatus>& status, QWidget* parent)
 
  173   std::vector<std::string> dps;
 
  175   for(
size_t i=0; i<status.size(); i++)
 
  183         if(QMessageBox::question(parent, QObject::tr(
"Unload plugins"), msg, QMessageBox::No, QMessageBox::Yes) == QMessageBox::No)
 
  191 void MakeAdd(
const std::vector<te::plugin::PluginInfo*>& plgs, 
const std::vector<te::qt::widgets::PluginsModel::PluginsStatus>& status)
 
  193   for(
size_t i=0; i<status.size(); i++)
 
  198 void MakeEnable(
const std::vector<te::plugin::PluginInfo*>& plgs, 
const std::vector<te::qt::widgets::PluginsModel::PluginsStatus>& status, QWidget* parent)
 
  200   std::vector<std::string> dps;
 
  201   std::vector<std::string>::iterator it;
 
  203   for(
size_t i=0; i<status.size(); i++)
 
  215           if(QMessageBox::question(parent, QObject::tr(
"Enable plugin"), msg, QMessageBox::No, QMessageBox::Yes) == QMessageBox::No)
 
  218           for(it=dps.begin(); it!=dps.end(); ++it)
 
  225     catch(
const std::exception& e)
 
  227       QMessageBox::warning(parent, QObject::tr(
"Fail to load plugin"), e.what());
 
  248   int rows = model->
rowCount(QModelIndex());
 
  249   int st = model->index(0,0).
data(Qt::CheckStateRole).toInt();
 
  251   for(
int i=1; i<rows; i++)
 
  253     int st2 = model->index(i,0).
data(Qt::CheckStateRole).toInt();
 
  256       return Qt::PartiallyChecked;
 
  259   return (Qt::CheckState) st;
 
  263   : QDialog(parent, f),
 
  264     m_ui(new Ui::PluginManagerDialogForm)
 
  268   setWindowTitle(tr(
"Manage Application Plugins"));
 
  271   m_ui->m_installedPluginsTableWidget->setModel(
m_model);
 
  282   m_ui->m_addButton->setIcon(QIcon::fromTheme(
"list-add"));
 
  283   m_ui->m_removeButton->setIcon(QIcon::fromTheme(
"list-remove"));
 
  285   m_ui->m_installedPluginsTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
 
  287   m_ui->m_pluginsTabWidget->setTabEnabled(1, 
false);
 
  291   m_ui->m_helpPushButton->setPageReference(
"widgets/pluginmanager/PluginManager.html");
 
  300   std::vector<te::plugin::PluginInfo*> plgs;
 
  301   std::vector<te::qt::widgets::PluginsModel::PluginsStatus> status;
 
  303   m_model->getPluginsInfo(plgs, status);
 
  312   fillInstalledPlugins();
 
  314   m_ui->m_applyPushButton->setEnabled(
false);
 
  414       AddPlugin(info.absoluteFilePath(), m_model);
 
  418         throw tr(
"There's no resource selected, no plugins found.");
 
  421       filters <<
"*.teplg" <<
"*.TEPLG";
 
  423       QDir dir(info.canonicalFilePath());
 
  425       QString qdir_s = dir.absolutePath();
 
  427       QStringList plgs = dir.entryList(filters, QDir::Files);
 
  430         throw tr(
"There's no plugins found.");
 
  432       QStringList::iterator it;
 
  434       for(it = plgs.begin(); it != plgs.end(); ++it)
 
  435         AddPlugin(QDir::toNativeSeparators(dir.absoluteFilePath(*it)), m_model);
 
  438     m_ui->m_applyPushButton->setEnabled(
true);
 
  443     msg.setWindowTitle(tr(
"Fail to load plugin files"));
 
  444     msg.setIcon(QMessageBox::Warning);
 
  448   catch(te::plugin::Exception& exc)
 
  451     msg.setWindowTitle(tr(
"Fail to load plugin files"));
 
  452     msg.setIcon(QMessageBox::Warning);
 
  453     msg.setText(exc.what());
 
  460   QModelIndexList lst = m_ui->m_installedPluginsTableWidget->selectionModel()->selectedRows(0);
 
  466     q.setIcon(QMessageBox::Warning);
 
  467     q.setWindowTitle(tr(
"Remove installed plugins"));
 
  468     q.setText(tr(
"There are NOT selected plugins."));
 
  474   m_model->removePlugins(lst);
 
  476   m_ui->m_applyPushButton->setEnabled(
true);
 
  481   m_ui->m_applyPushButton->setEnabled(
true);
 
  492   Qt::CheckState state = (st) ? Qt::Checked : Qt::Unchecked;
 
  494   m_ui->m_enableAll->setCheckState(state);
 
  496     int nrows = m_model->rowCount(QModelIndex());
 
  498     for(
int i=0; i<nrows; i++)
 
  500       QModelIndex idx = m_model->index(i, 0);
 
  501       m_model->setData(idx, QVariant(state), Qt::CheckStateRole);
 
  512   std::vector<std::string> plugins = pm.
getPlugins();
 
  514   int nrows = 
static_cast<int>(plugins.size());
 
  516   for(
int i = 0; i < nrows; ++i)
 
  522   m_ui->m_installedPluginsTableWidget->resizeColumnsToContents();
 
  523   m_ui->m_installedPluginsTableWidget->sortByColumn(1, Qt::AscendingOrder);
 
  543   te::qt::widgets::PluginsModel::PluginsStatus st;
 
  555   m_model->addPlugin(&pinfo, st);
 
std::string m_name
The plugin name: an internal value used to identify the plugin in the system. Must be a unique value...
 
std::vector< std::string > m_requiredPlugins
The list of required plugins in order to lunch the plugin. 
 
void CheckRequiredDependencies(te::plugin::PluginInfo *plg, std::vector< std::string > &deps)
 
void MakeRemove(const std::vector< te::plugin::PluginInfo * > &plgs, const std::vector< te::qt::widgets::PluginsModel::PluginsStatus > &status, QWidget *parent)
 
A singleton for managing plugins. 
 
Qt::CheckState GetCheckState(te::qt::widgets::PluginsModel *model)
 
static PluginManager & getInstance()
It returns a reference to the singleton instance. 
 
std::vector< std::string > getPlugins() const 
It returns the list of plugins managed by PluginManager. 
 
void CheckLoadedDependencies(te::plugin::PluginInfo *plg, std::vector< std::string > &deps)
 
void MakeEnable(const std::vector< te::plugin::PluginInfo * > &plgs, const std::vector< te::qt::widgets::PluginsModel::PluginsStatus > &status, QWidget *parent)
 
QString GetPluginDepsMessage(const std::string &plg, const std::vector< std::string > &dps)
 
void MakeAdd(const std::vector< te::plugin::PluginInfo * > &plgs, const std::vector< te::qt::widgets::PluginsModel::PluginsStatus > &status)
 
bool PluginExists(const std::string &pluginName)
 
const PluginInfo & getPlugin(const std::string &name) const 
It returns the plugin identified by the given name. 
 
bool isLoaded(const std::string &pname) const 
It returns true if the plugin is loaded otherwise returns false. 
 
QString GetPluginReqsMessage(const std::string &plg, const std::vector< std::string > &dps)
 
A Qt dialog for plugin management. 
 
The basic information about a plugin. 
 
void MakeDisable(const std::vector< te::plugin::PluginInfo * > &plgs, const std::vector< te::qt::widgets::PluginsModel::PluginsStatus > &status, QWidget *parent)
 
void AddPlugin(const QString &fileName, te::qt::widgets::PluginsModel *model)
 
TEPLUGINEXPORT PluginInfo * GetInstalledPlugin(const std::string &pluginFilePath)
It returns information about a given plugin provided its plugin configuration file name or dir...