File: PluginsListManager.h

package info (click to toggle)
tulip 3.7.0dfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 39,428 kB
  • sloc: cpp: 231,403; php: 11,023; python: 1,128; sh: 671; yacc: 522; makefile: 315; xml: 63; lex: 55
file content (100 lines) | stat: -rwxr-xr-x 4,107 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/**
 *
 * This file is part of Tulip (www.tulip-software.org)
 *
 * Authors: David Auber and the Tulip development Team
 * from LaBRI, University of Bordeaux 1 and Inria Bordeaux - Sud Ouest
 *
 * Tulip is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 3
 * of the License, or (at your option) any later version.
 *
 * Tulip is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 */

#ifndef _PLUGINSLISTMANAGER_H_
#define _PLUGINSLISTMANAGER_H_

#include "PluginInfo.h"
#include "TPWFonctor.h"

#include <QtXml/QDomElement>
#include <set>

namespace tlp {

enum ArrangementMethod {
  ARRANGEMENT_METHOD_BY_SERVER = 0,
  ARRANGEMENT_METHOD_BY_TYPE,
  ARRANGEMENT_METHOD_BY_NAME
};

enum ViewType {
  VIEW_BY_SERVER = 0,
  VIEW_BY_TYPE,
  VIEW_BY_NAME
};


class PluginsListManager {

  ArrangementMethod arrangementMethod;

  std::vector<PluginInfo*> pluginsList;
  std::vector<LocalPluginInfo*> localPluginsList;
  //std::vector<std::vector<std::string> > globalInstalledPluginsList;
  bool errorIsDisplayed;

  void addServerListRecursion(const std::string& serverName, const QDomElement& xmlElem);
  void modifyListWithInstalledPlugins();
  void clearInstalledPluginsList();

  bool LocalInstalledPluginsListIsCharged;

public:

  PluginsListManager(const std::vector<LocalPluginInfo> &pluginsList);

  void addServerList(const std::string& serverName, const std::string& xml);
  void addLocalPlugin(const DistPluginInfo *pluginInfo);
  void removeLocalPlugin(const LocalPluginInfo *pluginInfo);
  void removeServerList(const std::string& serverName);
  void modifyServerNameForEach(const std::string& serverName, const std::string& serverAddr);

  std::vector<int> getListPosition();
  void getPluginsList(CompletePluginsList &list);
  //std::vector<std::vector<std::string> > getPluginsListByType();

  void getPluginsInformation(const std::string &pluginName,std::vector<const PluginInfo *> &resultList);
  void getPluginsInformation(const std::string &pluginName,const std::string &pluginType,std::vector<const PluginInfo *> &resultList);
  void getPluginsInformation(const std::string &pluginName,const std::string &pluginType,const std::string &pluginVersion,std::vector<const PluginInfo *> &resultList);
  void getPluginsInformation(const std::string &pluginName,const std::string &pluginType,const std::string &pluginVersion,const std::string &serverName,std::vector<const PluginInfo *> &resultList);

  const PluginInfo* getPluginInformation(const std::string &pluginName);
  const PluginInfo* getPluginInformation(const std::string &pluginName,const std::string &pluginType);
  const PluginInfo* getPluginInformation(const std::string &pluginName,const std::string &pluginType,const std::string &pluginVersion);
  const PluginInfo* getPluginInformation(const std::string &pluginName,const std::string &pluginType,const std::string &pluginVersion,const std::string &serverName);

  bool pluginExist(const std::string &pluginName);
  bool pluginIsInstalled(const PluginInfo &plugin);
  bool getPluginDependencies(const PluginInfo &plugin, std::set<PluginDependency,PluginDependencyCmp> &dependencies,std::string &errorMessage);
  bool getPluginDependenciesNotInstalled(const PluginInfo &plugin, std::set<PluginDependency,PluginDependencyCmp> &dependencies,std::string &errorMessage);
  bool getPluginDependenciesToInstall(const PluginInfo &plugin, std::set<DistPluginInfo,PluginCmp> &toInstall,std::set<LocalPluginInfo,PluginCmp> &toRemove,std::string &errorMessage);
  bool getPluginDependenciesToRemove(const PluginInfo &plugin, std::set<LocalPluginInfo,PluginCmp> &toRemove);

  LocalPluginInfo *getLocalPlugin(const PluginInfo *plugin);

  void switchView(ViewType viewNumber);
  void updateInstalledPlugins();
  void newPluginsDirectory();

};

}

#endif //_PLUGINSLISTMANAGER_H_