Bonjour,

je n'arrive pas à trouver la méthode propre pour rendre une classe implémentée en ITCL accessible à un code tiers.

Mon idée était de créer une classe de base "myMumClass", de générer un package puis d'invoquer un "package require myMumClass" en début de script, mais cela ne fonctionne pas.
Entres autres écueils, l'appel de pkg_mkIndex sur myMumClass.tcl génère un fichier vide.

Un exemple pour illustrer mon propos :
Voici une classe de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
package provide vidObj
  package require Itcl
  namespace import itcl::*
 
#  class vidObj 
itcl::class vidObj {
    public variable m_Raster ""
 
# exportations
  namespace export {*}
 
    constructor {aRaster} {
	  set m_Raster $aRaster
	  puts "$this is been creating, its raster : $m_Raster"
    }
 
	destructor { 
	    # you should delete any dynamically allocated items here
		puts "vidObj::dectructor : $this is being deleted"
	}
 
	method showRaster {} {
	puts $m_Raster}
 
}
voici une classe dans un autre script qui voudrait s'appuyer sur la classe vidObj :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
package require Itcl
namespace import itcl::*
 
package require vidObj
namespace import vidObj::*
 
#  class cGfx 
itcl::class cGfx {
    inherit vidObj
 
    public variable m_Name ""
    public variable m_Color ""
 
    constructor {aRaster aColor { aLabel "noLabel" } } {
	  vidObj::constructor $aRaster    } {
	  set m_Name  $aLabel
	  set m_Color $aColor
	  puts "$this has been created, its name : $m_Name, its color : $m_Color	"
    }
 
	destructor { 
	    # you should delete any dynamically allocated items here
		puts "cGfx::dectructor : $this is being deleted"
	}
}
mais la directive "package require vidObj" échoue.

MErci pour vos avis