def __init__(self): super(Server, self).__init__() self.config = Config() self.log_level = levels[self.config.get("server.log_level", "info")] self.motd = self.config.get("server.motd", "PyMine Server") self.online_mode = self.config.get("server.online_mode", True) self.max_players = self.config.get("server.max_players", 10) self.logger = logging.getLogger("Server") self.logger.setLevel(self.log_level) file = os.path.join(os.path.dirname(__file__), "..", "logs", "server.log") filehandler = logging.handlers.RotatingFileHandler(file, maxBytes=10000, backupCount=1) filehandler.setLevel(self.logger.level) filehandler.setFormatter( logging.Formatter("%(asctime)s - %(levelname)s : %(message)s")) self.logger.addHandler(filehandler) self.logger.info("Server started on {}:{}.".format( self.config.get("server.ip", "127.0.0.2"), self.config.get("server.port", 25565))) self.command_manager = CommandManager(self) self.plugin_manager = PluginManager(self, self.config.get("plugins", [])) self.plugin_manager.call("start", self)
def test_call(self): try: p0 = Plugin('mock0', 'mock') p0.save() pm = PluginManager() self.assertEqual(pm.call_plugin('mock0', 'test'), 'test') finally: p0.delete()
def test_loading(self): try: p0 = Plugin('mock0', 'mock') p0.save() p1 = Plugin('mock1', 'mock') p1.save() pm = PluginManager() self.assertEqual(pm.list_all().sort(), ['mock0', 'mock1'].sort()) finally: p0.delete() p1.delete()
def __init__(self): # Setup logger and load config self.setup_logger() self.config = self.load_config("settings") self.bot_name = self.config.name # Setup managers self.watchdog = Watchdog(self) self.plugin = PluginManager(self) self.event = EventManager(self) self.command = CommandManager(self) self.ACL = ACL() self.workers = Workers(self.config.worker_queue_size, self.config.worker_threads) # Setup connection self.connection = self.load_connector(self) # Load plugins self.logger.info("Loading Plugins") self.load_plugins()
def __init__(self): # Setup logger and load config self.setupLogger() self.logger.info("Starting new bot session") self.logger.info("Loading bot configuration") self.config = self.loadConfig("settings") # Setup managers self.watchdog = Watchdog(self) self.plugin = PluginManager(self) self.event = EventManager(self) self.command = CommandManager(self) self.ACL = ACL() self.threadPool = ThreadPool(self.config.threadPoolQueueSize, self.config.threadedWorkers) # Setup connection self.connection = self.loadConnector(self) # Load plugins self.logger.info("Loading Plugins") self.loadPlugins()
def testCreatePass(self): parameterHelper = ParameterHelper() parameterHelper.setParameters(['-s=orcl']) configReader = ConfigReader('project.conf') connector = OracleConnectorStub() sqlLoaderConnector = SqlLoaderConnectorStub() createPlugin = CreatePlugin() createPlugin.setConfigReader(configReader) createPlugin.setConnector(connector) createPlugin.setSqlLoaderConnector(sqlLoaderConnector) app = NoOraApp() pluginManager = PluginManager() createPlugin.execute(app,parameterHelper,pluginManager)
def getClassesFromProperties(self) -> Dict[str, HierarchyPropertyParser]: hpps = dict() className = self.m_ClassType.__name__ cls = PluginManager.getPluginNamesOfType(className) if cls is None: return hpps b = "" for s in cls: b += s + "," listS = b[0:-1] typeOptions = self.sortClassesByRoot(listS) Utils.debugOut("All Class:", typeOptions) if typeOptions is not None: enm = typeOptions.keys() for root in enm: typeOption = typeOptions.get(root) hpp = HierarchyPropertyParser() hpp.build(typeOption, ',') hpps.update({root: hpp}) return hpps
def loadProperties(self): try: cf = ConfigParser() cf.read("./core/config/GenericObject.conf") kvs = cf.items("Classifier") for item in kvs: PluginManager.addPlugin("Classifier", item[1]) kvs = cf.items("Clusterer") for item in kvs: PluginManager.addPlugin("Clusterer",item[1]) kvs = cf.items("Filter") for item in kvs: PluginManager.addPlugin("Filter", item[1]) except BaseException as e: print(repr(e))
def main(self): #TODO: Print banner, try: self.wsdlhelper = WSDLHelper() self.proj_manager = ProjectManager() self.analyzer = responseAnalyzer() self.plugin_manager = PluginManager() self.core = Core() self.gui.start(self) """ #paths['main_path'] = self.mainPath() #logger.debug("Main path is: %s" % paths['main_path']) parser = optparse.OptionParser('usage %prog -t <seconds>') parser.add_option('-t', dest='tout', type='int', default='60', help='specify HTTP timeout in seconds') (opts, args) = parser.parse_args() if opts.tout: socket.setdefaulttimeout(opts.tout) else: socket.setdefaulttimeout(60) logger.info("Setting default timeout to %d seconds" % socket.getdefaulttimeout()) """ except antaresDependenciesException: logger.debug("antaresDependenciesException @ Launcher")
def __init__( self ): # Appel au constructeur de la classe mere QtGui.QMainWindow.__init__( self ) ########### # Fenetre # ########### ### # Reglages de la fenetre principale ### # Nom de la fenetre self.setWindowTitle( "%s %s" %( Constantes.TVD_NOM, Constantes.TVD_VERSION ) ) # Mise en place de son icone self.setWindowIcon( QtGui.QIcon( "ico/TVDownloader.png" ) ) ### # Mise en place des widgets dans la fenetre ### # Widget central qui contiendra tout self.centralWidget = QtGui.QWidget( self ) # # Onglets # # Gestionnaire onglets self.tabWidget = QtGui.QTabWidget( self.centralWidget ) # Onglet Fichiers self.tabFichiers = QtGui.QWidget( self.centralWidget ) self.tabWidget.addTab( self.tabFichiers, u"Fichiers" ) # Onglet Telechargements self.tabTelechargements = QtGui.QWidget( self.centralWidget ) self.tabWidget.addTab( self.tabTelechargements, u"Téléchargements" ) # # Onglet Fichiers # # Layout de grille qui contient les elements de l'onglet Fichier self.gridLayoutFichiers = QtGui.QGridLayout( self.tabFichiers ) # Liste des plugins self.listWidgetPlugins = QtGui.QListWidget( self.tabFichiers ) self.listWidgetPlugins.setIconSize( QtCore.QSize( 75, 75 ) ) self.gridLayoutFichiers.addWidget( self.listWidgetPlugins, 0, 0, 4, 1 ) # Liste des chaines self.listWidgetChaines = QtGui.QListWidget( self.tabFichiers ) self.gridLayoutFichiers.addWidget( self.listWidgetChaines, 0, 1, 1, 1 ) # Liste des emissions self.listWidgetEmissions = QtGui.QListWidget( self.tabFichiers ) self.gridLayoutFichiers.addWidget( self.listWidgetEmissions, 0, 2, 1, 1 ) # Logo de l'emission self.logoFichierDefaut = QtGui.QPixmap() self.logoFichierDefaut.load( "img/logoVide.svg" ) self.labelLogo = QtGui.QLabel( self.tabFichiers ) self.labelLogo.setScaledContents( True ) self.labelLogo.setPixmap( self.logoFichierDefaut.scaled( QtCore.QSize( 150, 150 ), QtCore.Qt.KeepAspectRatio ) ) self.gridLayoutFichiers.addWidget( self.labelLogo, 0, 3, 1, 1 ) # Descriptif du fichier # self.plainTextEditDescriptif = QtGui.QPlainTextEdit( self.tabFichiers ) # self.gridLayoutFichiers.addWidget( self.plainTextEditDescriptif, 3, 1, 1, 3 ) # # Onglet Fichiers - Liste des fichiers # # Layout de grille qui contient le tableau qui liste les fichiers et ses boutons self.gridLayoutListeFichiers = QtGui.QGridLayout( self.tabFichiers ) # Tableau qui contient la liste des fichiers disponibles pour l'emission courante self.tableWidgetFichier = MyQTableWidget( self.tabFichiers ) # Il a 4 colonnes et 0 ligne (pour l'instant) self.tableWidgetFichier.setColumnCount( 3 ) self.tableWidgetFichier.setRowCount( 0 ) # On ajoute les titres self.tableWidgetFichier.setHorizontalHeaderItem( 0, self.tableWidgetFichier.creerItem( "" ) ) self.tableWidgetFichier.setHorizontalHeaderItem( 1, self.tableWidgetFichier.creerItem( "Date" ) ) self.tableWidgetFichier.setHorizontalHeaderItem( 2, self.tableWidgetFichier.creerItem( "Emission" ) ) # Ajout au layout self.gridLayoutListeFichiers.addWidget( self.tableWidgetFichier, 0, 1, 4, 3 ) # Icones du tableWidget self.iconeFichier = QtGui.QIcon( "ico/gtk-file.svg" ) self.iconeAjoute = QtGui.QIcon( "ico/gtk-add.svg" ) self.iconeTelecharge = QtGui.QIcon( "ico/gtk-apply.svg" ) # Bouton pour lire le fichier selectionnne self.pushButtonLire = MyQPushButton( self.tabFichiers ) self.pushButtonLire.setIcon( QtGui.QIcon( "ico/gtk-media-play-ltr.svg" ) ) self.pushButtonLire.setToolTip( u"Lire la vidéo selectionnée" ) self.gridLayoutListeFichiers.addWidget( self.pushButtonLire, 0, 0, 1, 1 ) # Bouton pour ajouter tous les fichiers a la liste des telechargements self.pushButtonToutAjouter = MyQPushButton( self.tabFichiers ) self.pushButtonToutAjouter.setIcon( QtGui.QIcon( "ico/gtk-add.svg" ) ) self.pushButtonToutAjouter.setToolTip( u"Ajouter tous les fichiers à la liste des téléchargements" ) self.gridLayoutListeFichiers.addWidget( self.pushButtonToutAjouter, 1, 0, 1, 1 ) # Bouton pour rafraichir le plugin courant self.pushButtonRafraichirPlugin = MyQPushButton( self.tabFichiers ) self.pushButtonRafraichirPlugin.setIcon( QtGui.QIcon( "ico/gtk-refresh.svg" ) ) self.pushButtonRafraichirPlugin.setToolTip( "Rafraichir le plugin" ) self.gridLayoutListeFichiers.addWidget( self.pushButtonRafraichirPlugin, 2, 0, 1, 1 ) # Bouton pour ouvrir la fenetre des preferences du plugin courant self.pushButtonPreferencesPlugin = MyQPushButton( self.tabFichiers ) self.pushButtonPreferencesPlugin.setIcon( QtGui.QIcon( "ico/gtk-preferences.svg" ) ) self.pushButtonPreferencesPlugin.setToolTip( u"Ouvrir les préférences du plugin" ) self.gridLayoutListeFichiers.addWidget( self.pushButtonPreferencesPlugin, 3, 0, 1, 1 ) # Mise en place du layout sur un widget self.widgetFichiers = QtGui.QWidget( self.tabFichiers ) self.widgetFichiers.setLayout( self.gridLayoutListeFichiers ) self.gridLayoutFichiers.addWidget( self.widgetFichiers, 1, 1, 2, 3 ) # # Barre progression de telechargement d'un fichier # self.progressBarTelechargementFichier = QtGui.QProgressBar( self.centralWidget ) self.progressBarTelechargementFichier.setProperty( "value", 0 ) # # Barre de progression de telechargement des fichiers # self.progressBarTelechargement = QtGui.QProgressBar( self.centralWidget ) self.progressBarTelechargement.setProperty( "value", 0 ) # # Boutons du bas pour gerer ajouter/supprimer/lancer telechargements # # Layout horizontal qui contiendra les boutons self.horizontalLayoutBarreBas = QtGui.QHBoxLayout() # Bouton pour lancer les telechargements self.pushButtonLancer = QtGui.QPushButton( QtGui.QIcon( "ico/gtk-media-play-ltr.svg" ), u"Lancer téléchargement", self.centralWidget ) self.horizontalLayoutBarreBas.addWidget( self.pushButtonLancer ) # Bouton pour stopper les telechargements self.pushButtonStop = QtGui.QPushButton( QtGui.QIcon( "ico/gtk-media-stop.svg" ), u"Stopper le téléchargement", self.centralWidget ) self.pushButtonStop.setEnabled( False ) self.horizontalLayoutBarreBas.addWidget( self.pushButtonStop ) ### # Positionnement des differents widgets/layouts sur le layout de grille ### # Layout de grille dans lequel on va placer nos widgets/layouts self.gridLayout = QtGui.QGridLayout( self.centralWidget ) self.gridLayout.addWidget( self.tabWidget, 0, 0, 1, 2 ) self.gridLayout.addWidget( self.progressBarTelechargementFichier, 2, 0, 1, 3 ) self.gridLayout.addWidget( self.progressBarTelechargement, 3, 0, 1, 3 ) self.gridLayout.addLayout( self.horizontalLayoutBarreBas, 4, 0, 1, 3 ) ### # Mise en place du central widget dans la fenetre ### self.setCentralWidget( self.centralWidget ) ### # Mise en place du menu ### # Menu barre self.menubar = QtGui.QMenuBar( self ) self.menubar.setGeometry( QtCore.QRect( 0, 0, 480, 25 ) ) # Menu Fichier self.menuFichier = QtGui.QMenu( "&Fichier", self.menubar ) self.menubar.addAction( self.menuFichier.menuAction() ) # Action Fichier -> Quitter self.actionQuitter = QtGui.QAction( QtGui.QIcon( "ico/gtk-quit.svg" ), "&Quitter", self.menuFichier ) self.actionQuitter.setIconVisibleInMenu( True ) self.menuFichier.addAction( self.actionQuitter ) # Menu Edition self.menuEdition = QtGui.QMenu( "&Edition", self.menubar ) self.menubar.addAction( self.menuEdition.menuAction() ) # Action Edition -> Mise a jour self.actionMAJ = QtGui.QAction( QtGui.QIcon( "ico/gtk-refresh.svg" ), u"&Mise à jour des plugins", self.menuEdition ) self.actionMAJ.setIconVisibleInMenu( True ) self.menuEdition.addAction( self.actionMAJ ) # Action Edition -> Preferences self.actionPreferences = QtGui.QAction( QtGui.QIcon( "ico/gtk-preferences.svg" ), u"&Préférences", self.menuEdition ) self.actionPreferences.setIconVisibleInMenu( True ) self.menuEdition.addAction( self.actionPreferences ) # Menu Aide self.menuAide = QtGui.QMenu( "&Aide", self.menubar ) self.menubar.addAction( self.menuAide.menuAction() ) # Action Aide -> A propos self.actionAPropos = QtGui.QAction( QtGui.QIcon( "ico/gtk-about.svg" ), u"À p&ropos", self.menuAide ) self.actionAPropos.setIconVisibleInMenu( True ) self.menuAide.addAction( self.actionAPropos ) # Ajout du menu a l'interface self.setMenuBar( self.menubar ) self.resize( 500, 500 ) ################################################ # Instanciations + initialisation de variables # ################################################ # Plugin Manager self.pluginManager = PluginManager() # Mise en place des plugins self.ajouterPlugins( [ ( inst.nom, inst.logo ) for inst in self.pluginManager.getPluginListeInstances() ] )
class Bot(): def __init__(self): # Setup logger and load config self.setup_logger() self.config = self.load_config("settings") self.bot_name = self.config.name # Setup managers self.watchdog = Watchdog(self) self.plugin = PluginManager(self) self.event = EventManager(self) self.command = CommandManager(self) self.ACL = ACL() self.workers = Workers(self.config.worker_queue_size, self.config.worker_threads) # Setup connection self.connection = self.load_connector(self) # Load plugins self.logger.info("Loading Plugins") self.load_plugins() def login(self): self.connection.connect() def logout(self): self.connection.disconnect() def exit(self): """ Summary: Does any nessessary clean up (like killing threads) before the bot exits Args: None Returns: None """ for plugin in config.plugins: self.plugin.unload(plugin) self.logout() self.workers.threads = 0 def setup_logger(self): """ Summary: Creates global settings for all logging Pretty colors are pretty Args: None Returns: None """ from colorlog import ColoredFormatter logging.getLogger("requests").setLevel(logging.WARNING) logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING) logging.getLogger('peewee').setLevel(logging.WARNING) log = logging.getLogger('') log.setLevel(logging.INFO) # Create console handler console_hdlr = logging.StreamHandler(stdout) console_formatter = ColoredFormatter( "%(asctime)s %(log_color)s%(levelname)-8s%(reset)s %(blue)s%(name)-25.25s%(reset)s %(white)s%(message)s%(reset)s", datefmt="[%m/%d/%Y %H:%M:%S]", reset=True, log_colors={ 'DEBUG': 'cyan', 'INFO': 'green', 'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'bg_red', }) console_hdlr.setFormatter(console_formatter) console_hdlr.setLevel(logging.INFO) log.addHandler(console_hdlr) # Create log file handler file_hdlr = logging.handlers.TimedRotatingFileHandler("logs/botlog", when="midnight") file_formatter = logging.Formatter( "%(asctime)s %(levelname)-8s %(name)-25.25s %(message)s", datefmt="[%m/%d/%Y %H:%M:%S]") file_hdlr.setFormatter(file_formatter) file_hdlr.setLevel(logging.INFO) log.addHandler(file_hdlr) self.logger = logging.getLogger(__name__) def load_config(self, name): """ Summary: Establishes a connection to the server Emits login event Starts message consumer thread Expects to have already loaded connection module Exits if it cannot find or load the config Args: name (str): Name of the config module to be loaded Returns: (Config): instance of Config class, storing all global config options """ path.append("conf") try: config_canadiate = find_module(name, path=['conf']) config_module = load_module(name, *config_canadiate) self.logger.info("Loaded configuration from \"" + config_canadiate[1] + "\"") logging.getLogger('').setLevel(config_module.log_level) return config_module except ImportError as e: self.logger.critical("ImportError: " + str(e)) exit(1) except AttributeError as e: self.logger.critical("Config class not found in conf/" + name) exit(1) def load_connector(self, core): """ Summary: Looks for and loads the connector defined in config Will exit if cannot find or load the connector module Args: None Returns: (Connector): The low level connection manager instance """ path.append("connectors") try: connector_candidate = find_module(config.connector, path=["connectors"]) connector_module = load_module(config.connector, *connector_candidate) connector = getattr(connector_module, config.connector)(core, **config.connector_options) self.logger.info("Loaded connector from: \"" + connector_candidate[1] + "\"") return connector except ImportError as e: self.logger.critical("ImportError: " + str(e)) exit(1) except AttributeError as e: print(e) self.logger.critical("Could not find connector class: " + config.connector) exit(1) def load_plugins(self): """ Summary: Looks in plugins list in config and attempts to load each Args: None Returns: None """ for plugin in config.plugins: self.plugin.load(plugin)
def __init__(self): # Appel au constructeur de la classe mere QtGui.QMainWindow.__init__(self) ########### # Fenetre # ########### ### # Reglages de la fenetre principale ### # Nom de la fenetre self.setWindowTitle("%s %s" % (Constantes.TVD_NOM, Constantes.TVD_VERSION)) # Mise en place de son icone self.setWindowIcon(QtGui.QIcon("ico/TVDownloader.png")) ### # Mise en place des widgets dans la fenetre ### # Widget central qui contiendra tout self.centralWidget = QtGui.QWidget(self) # # Onglets # # Gestionnaire onglets self.tabWidget = QtGui.QTabWidget(self.centralWidget) # Onglet Fichiers self.tabFichiers = QtGui.QWidget(self.centralWidget) self.tabWidget.addTab(self.tabFichiers, u"Fichiers") # Onglet Telechargements self.tabTelechargements = QtGui.QWidget(self.centralWidget) self.tabWidget.addTab(self.tabTelechargements, u"Téléchargements") # # Onglet Fichiers # # Layout de grille qui contient les elements de l'onglet Fichier self.gridLayoutFichiers = QtGui.QGridLayout(self.tabFichiers) # Liste des plugins self.listWidgetPlugins = QtGui.QListWidget(self.tabFichiers) self.listWidgetPlugins.setIconSize(QtCore.QSize(75, 75)) self.gridLayoutFichiers.addWidget(self.listWidgetPlugins, 0, 0, 4, 1) # Liste des chaines self.listWidgetChaines = QtGui.QListWidget(self.tabFichiers) self.gridLayoutFichiers.addWidget(self.listWidgetChaines, 0, 1, 1, 1) # Liste des emissions self.listWidgetEmissions = QtGui.QListWidget(self.tabFichiers) self.gridLayoutFichiers.addWidget(self.listWidgetEmissions, 0, 2, 1, 1) # Logo de l'emission self.logoFichierDefaut = QtGui.QPixmap() self.logoFichierDefaut.load("img/logoVide.svg") self.labelLogo = QtGui.QLabel(self.tabFichiers) self.labelLogo.setScaledContents(True) self.labelLogo.setPixmap( self.logoFichierDefaut.scaled(QtCore.QSize(150, 150), QtCore.Qt.KeepAspectRatio)) self.gridLayoutFichiers.addWidget(self.labelLogo, 0, 3, 1, 1) # Descriptif du fichier # self.plainTextEditDescriptif = QtGui.QPlainTextEdit( self.tabFichiers ) # self.gridLayoutFichiers.addWidget( self.plainTextEditDescriptif, 3, 1, 1, 3 ) # # Onglet Fichiers - Liste des fichiers # # Layout de grille qui contient le tableau qui liste les fichiers et ses boutons self.gridLayoutListeFichiers = QtGui.QGridLayout(self.tabFichiers) # Tableau qui contient la liste des fichiers disponibles pour l'emission courante self.tableWidgetFichier = MyQTableWidget(self.tabFichiers) # Il a 4 colonnes et 0 ligne (pour l'instant) self.tableWidgetFichier.setColumnCount(3) self.tableWidgetFichier.setRowCount(0) # On ajoute les titres self.tableWidgetFichier.setHorizontalHeaderItem( 0, self.tableWidgetFichier.creerItem("")) self.tableWidgetFichier.setHorizontalHeaderItem( 1, self.tableWidgetFichier.creerItem("Date")) self.tableWidgetFichier.setHorizontalHeaderItem( 2, self.tableWidgetFichier.creerItem("Emission")) # Ajout au layout self.gridLayoutListeFichiers.addWidget(self.tableWidgetFichier, 0, 1, 4, 3) # Icones du tableWidget self.iconeFichier = QtGui.QIcon("ico/gtk-file.svg") self.iconeAjoute = QtGui.QIcon("ico/gtk-add.svg") self.iconeTelecharge = QtGui.QIcon("ico/gtk-apply.svg") # Bouton pour lire le fichier selectionnne self.pushButtonLire = MyQPushButton(self.tabFichiers) self.pushButtonLire.setIcon(QtGui.QIcon("ico/gtk-media-play-ltr.svg")) self.pushButtonLire.setToolTip(u"Lire la vidéo selectionnée") self.gridLayoutListeFichiers.addWidget(self.pushButtonLire, 0, 0, 1, 1) # Bouton pour ajouter tous les fichiers a la liste des telechargements self.pushButtonToutAjouter = MyQPushButton(self.tabFichiers) self.pushButtonToutAjouter.setIcon(QtGui.QIcon("ico/gtk-add.svg")) self.pushButtonToutAjouter.setToolTip( u"Ajouter tous les fichiers à la liste des téléchargements") self.gridLayoutListeFichiers.addWidget(self.pushButtonToutAjouter, 1, 0, 1, 1) # Bouton pour rafraichir le plugin courant self.pushButtonRafraichirPlugin = MyQPushButton(self.tabFichiers) self.pushButtonRafraichirPlugin.setIcon( QtGui.QIcon("ico/gtk-refresh.svg")) self.pushButtonRafraichirPlugin.setToolTip("Rafraichir le plugin") self.gridLayoutListeFichiers.addWidget(self.pushButtonRafraichirPlugin, 2, 0, 1, 1) # Bouton pour ouvrir la fenetre des preferences du plugin courant self.pushButtonPreferencesPlugin = MyQPushButton(self.tabFichiers) self.pushButtonPreferencesPlugin.setIcon( QtGui.QIcon("ico/gtk-preferences.svg")) self.pushButtonPreferencesPlugin.setToolTip( u"Ouvrir les préférences du plugin") self.gridLayoutListeFichiers.addWidget( self.pushButtonPreferencesPlugin, 3, 0, 1, 1) # Mise en place du layout sur un widget self.widgetFichiers = QtGui.QWidget(self.tabFichiers) self.widgetFichiers.setLayout(self.gridLayoutListeFichiers) self.gridLayoutFichiers.addWidget(self.widgetFichiers, 1, 1, 2, 3) # # Barre progression de telechargement d'un fichier # self.progressBarTelechargementFichier = QtGui.QProgressBar( self.centralWidget) self.progressBarTelechargementFichier.setProperty("value", 0) # # Barre de progression de telechargement des fichiers # self.progressBarTelechargement = QtGui.QProgressBar(self.centralWidget) self.progressBarTelechargement.setProperty("value", 0) # # Boutons du bas pour gerer ajouter/supprimer/lancer telechargements # # Layout horizontal qui contiendra les boutons self.horizontalLayoutBarreBas = QtGui.QHBoxLayout() # Bouton pour lancer les telechargements self.pushButtonLancer = QtGui.QPushButton( QtGui.QIcon("ico/gtk-media-play-ltr.svg"), u"Lancer téléchargement", self.centralWidget) self.horizontalLayoutBarreBas.addWidget(self.pushButtonLancer) # Bouton pour stopper les telechargements self.pushButtonStop = QtGui.QPushButton( QtGui.QIcon("ico/gtk-media-stop.svg"), u"Stopper le téléchargement", self.centralWidget) self.pushButtonStop.setEnabled(False) self.horizontalLayoutBarreBas.addWidget(self.pushButtonStop) ### # Positionnement des differents widgets/layouts sur le layout de grille ### # Layout de grille dans lequel on va placer nos widgets/layouts self.gridLayout = QtGui.QGridLayout(self.centralWidget) self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 2) self.gridLayout.addWidget(self.progressBarTelechargementFichier, 2, 0, 1, 3) self.gridLayout.addWidget(self.progressBarTelechargement, 3, 0, 1, 3) self.gridLayout.addLayout(self.horizontalLayoutBarreBas, 4, 0, 1, 3) ### # Mise en place du central widget dans la fenetre ### self.setCentralWidget(self.centralWidget) ### # Mise en place du menu ### # Menu barre self.menubar = QtGui.QMenuBar(self) self.menubar.setGeometry(QtCore.QRect(0, 0, 480, 25)) # Menu Fichier self.menuFichier = QtGui.QMenu("&Fichier", self.menubar) self.menubar.addAction(self.menuFichier.menuAction()) # Action Fichier -> Quitter self.actionQuitter = QtGui.QAction(QtGui.QIcon("ico/gtk-quit.svg"), "&Quitter", self.menuFichier) self.actionQuitter.setIconVisibleInMenu(True) self.menuFichier.addAction(self.actionQuitter) # Menu Edition self.menuEdition = QtGui.QMenu("&Edition", self.menubar) self.menubar.addAction(self.menuEdition.menuAction()) # Action Edition -> Mise a jour self.actionMAJ = QtGui.QAction(QtGui.QIcon("ico/gtk-refresh.svg"), u"&Mise à jour des plugins", self.menuEdition) self.actionMAJ.setIconVisibleInMenu(True) self.menuEdition.addAction(self.actionMAJ) # Action Edition -> Preferences self.actionPreferences = QtGui.QAction( QtGui.QIcon("ico/gtk-preferences.svg"), u"&Préférences", self.menuEdition) self.actionPreferences.setIconVisibleInMenu(True) self.menuEdition.addAction(self.actionPreferences) # Menu Aide self.menuAide = QtGui.QMenu("&Aide", self.menubar) self.menubar.addAction(self.menuAide.menuAction()) # Action Aide -> A propos self.actionAPropos = QtGui.QAction(QtGui.QIcon("ico/gtk-about.svg"), u"À p&ropos", self.menuAide) self.actionAPropos.setIconVisibleInMenu(True) self.menuAide.addAction(self.actionAPropos) # Ajout du menu a l'interface self.setMenuBar(self.menubar) self.resize(500, 500) ################################################ # Instanciations + initialisation de variables # ################################################ # Plugin Manager self.pluginManager = PluginManager() # Mise en place des plugins self.ajouterPlugins([ (inst.nom, inst.logo) for inst in self.pluginManager.getPluginListeInstances() ])