X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2Fcomploader.py;h=9c823dfdfa1fd28944f68095997af456a5057828;hb=707191267222e680b5ace6edf6e4afa00acdb2d3;hp=1b9ddaa93299e75c91cf7ba7c6e26504428761d1;hpb=a2b6288a9353907ab7addcb88ab87bb935700b86;p=tools%2Feficas.git diff --git a/Editeur/comploader.py b/Editeur/comploader.py index 1b9ddaa9..9c823dfd 100644 --- a/Editeur/comploader.py +++ b/Editeur/comploader.py @@ -1,105 +1,100 @@ # -*- coding: utf-8 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# Copyright (C) 2007-2017 EDF R&D # -# THIS PROGRAM 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. +# This library 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 2.1 of the License. # -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# This library 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 +# Lesser General Public License for more details. # +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# ====================================================================== """ Module de chargement des composants et de mapping des objets du noyau Accas vers les items d'EFICAS - - composants : dictionnaire de stockage des relations entre types - d'objet du noyau et types d'item - - charger_composants() : fonction de chargement des composants. Retourne - le dictionnaire composants. - - gettreeitem(object) -> type d'item : fonction qui retourne un type - d'item correspondant au type de l'objet noyau fourni. - - make_objecttreeitem(appli,labeltext, object, setfunction=None) -> item : fonction qui retourne un item - correspondant à l'objet noyau fourni. + - composants : dictionnaire de stockage des relations entre types + d'objet du noyau et types d'item + - charger_composants() : fonction de chargement des composants. Retourne + le dictionnaire composants. + - gettreeitem(object) -> type d'item : fonction qui retourne un type + d'item correspondant au type de l'objet noyau fourni. + - make_objecttreeitem(appli,labeltext, object, setfunction=None) -> item : fonction qui retourne un item + correspondant a l'objet noyau fourni. """ -# import généraux +# import generaux +from __future__ import absolute_import import os,glob,types -# Dictionnaire {object : item} permettant d'associer un item à un object -# Ce dictionnaire est renseigné par la méthode charger_composants +# Dictionnaire {object : item} permettant d'associer un item a un object +# Ce dictionnaire est renseigne par la methode charger_composants composants = {} -def charger_composants(): +def charger_composants(Ihm="QT"): """ Cette fonction a pour but de charger tous les modules composants graphiques - (fichiers compo*.py dans le même répertoire que ce module ) - et de remplir le dictionnaire composants utilisé par make_objecttreeitem + (fichiers compo*.py dans le meme repertoire que ce module ) + et de remplir le dictionnaire composants utilise par make_objecttreeitem """ - repertoire=os.path.dirname(__file__) + reper=os.path.dirname(__file__) + if Ihm == "TK" : + repertoire=reper+"/../InterfaceTK" + package="InterfaceTK" + else : + repertoire=reper+"/../InterfaceQT4" + package="InterfaceQT4" listfich=glob.glob(os.path.join(repertoire, "compo*.py")) for fichier in listfich: m= os.path.basename(fichier)[:-3] - module=__import__(m,globals(),locals()) + module=__import__(package,globals(),locals(),[m]) + module = getattr(module, m) composants[module.objet]=module.treeitem return composants def gettreeitem(object): """ - Cette fonction retourne la classe item associée à l'objet object. - Cette classe item dépend bien sûr de la nature de object, d'où + Cette fonction retourne la classe item associee a l'objet object. + Cette classe item depend bien sur de la nature de object, d'ou l'interrogation du dictionnaire composants """ + # Si la definition de l'objet a un attribut itemeditor, il indique + # la classe a utiliser pour l'item + try: + return object.definition.itemeditor + except: + pass - - if type(object) == types.InstanceType: - # Si la definition de l'objet a un attribut itemeditor, il indique - # la classe a utiliser pour l'item - try: - return object.definition.itemeditor - except: - pass - - # On cherche ensuite dans les composants (plugins) - try: - itemtype= composants[object.__class__] - return itemtype - except: - pass - - try : - for e in composants.keys(): - if isinstance(object,e): - itemtype= composants[e] - return itemtype - except : - pass + # On cherche ensuite dans les composants (plugins) + try: + itemtype= composants[object.__class__] + return itemtype + except: + pass # Puis une eventuelle classe heritee (aleatoire car sans ordre) - for e in composants.keys(): - if isinstance(object,e): - itemtype= composants[e] - return itemtype + for e in list(composants.keys()): + if e and isinstance(object,e): + itemtype= composants[e] + return itemtype - # Apres poum ??? Les lignes suivantes sont elles utiles ? # Si on n'a rien trouve dans les composants on utilise l'objet par defaut - print itemtype - itemtype=ObjectTreeItem + itemtype=composants[None] return itemtype def make_objecttreeitem(appli,labeltext, object, setfunction=None): """ Cette fonction permet de construire et de retourner un objet - de type item associé à l'object passé en argument. + de type item associe a l'object passe en argument. """ c = gettreeitem(object) + #print appli,labeltext, object, setfunction return c(appli,labeltext, object, setfunction)