Package medite :: Package GUI :: Module TreePanel
[hide private]
[frames] | no frames]

Source Code for Module medite.GUI.TreePanel

  1  # -*- coding: iso-8859-1 -*- 
  2  # Copyright 2007, 2008: Julien Bourdaillet (julien.bourdaillet@lip6.fr), Jean-Gabriel Ganascia (jean-gabriel.ganascia@lip6.fr) 
  3  # This file is part of MEDITE. 
  4  # 
  5  #    MEDITE is free software; you can redistribute it and/or modify 
  6  #    it under the terms of the GNU General Public License as published by 
  7  #    the Free Software Foundation; either version 2 of the License, or 
  8  #    (at your option) any later version. 
  9  # 
 10  #    MEDITE is distributed in the hope that it will be useful, 
 11  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
 12  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 13  #    GNU General Public License for more details. 
 14  # 
 15  #    You should have received a copy of the GNU General Public License 
 16  #    along with Foobar; if not, write to the Free Software 
 17  #    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
 18  #---------------------------------------------------------------------------- 
 19  # Nom:          TreePanel.py 
 20  # Objet:        Panel affichant l'arbre des versions 
 21  # 
 22  # Authors:      Julien Bourdaillet 
 23  # 
 24  # Cree:         janvier 05 
 25  #         
 26  #---------------------------------------------------------------------------- 
 27   
 28  import wx,sys,os, Utile.constantesGUI, Donnees.arbre, Donnees.planTravail 
 29  import Controleurs.FInfoManager,Controleurs.DGManager 
 30  #import images 
 31   
 32   
33 -class TreePanel(wx.Panel):
34
35 - def __init__(self,parent,medite):
36 wx.Panel.__init__(self,parent) 37 self.fenetreMedite = medite 38 self.Bind(wx.EVT_SIZE,self.OnSize) 39 self.buildNewTree() 40 self.planTravail = plan = Donnees.planTravail.PlanTravail("","","","","","",Donnees.planTravail.Parametres())
41
42 - def isTreePanel(self):
43 return True
44
45 - def getTitre(self):
46 return "Arbre des versions"
47 48 # construit l'objet TreeCtrl à l'init du panel
49 - def buildNewTree(self):
50 tID = wx.NewId() 51 self.tree = wx.TreeCtrl(self, tID, wx.DefaultPosition, wx.DefaultSize, 52 wx.TR_HAS_BUTTONS | wx.TR_EDIT_LABELS 53 #| wx.TR_MULTIPLE | wx.TR_HIDE_ROOT 54 ) 55 56 isz = (16,16) 57 il = wx.ImageList(isz[0], isz[1]) 58 self.fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz)) 59 self.fldropenidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, isz)) 60 #self.fileidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_REPORT_VIEW, wx.ART_OTHER, isz)) 61 self.imgEtat = il.Add(self.__getImg('etat.bmp')) 62 self.imgVersion = il.Add(self.__getImg('version.bmp')) 63 64 self.tree.SetImageList(il) 65 self.il = il 66 67 # NOTE: For some reason tree items have to have a data object in 68 # order to be sorted. Since our compare just uses the labels 69 # we don't need any real data, so we'll just use None below for 70 # the item data. 71 self.root = self.tree.AddRoot("Arbre des versions") 72 self.tree.SetPyData(self.root, None) 73 self.tree.SetItemImage(self.root, self.fldridx, wx.TreeItemIcon_Normal) 74 self.tree.SetItemImage(self.root, self.fldropenidx, wx.TreeItemIcon_Expanded)
75 76 # 1e init du treeCtrl
77 - def initTree(self,auteur, oeuvre):
81 82 # rechargement du treeCtrl
83 - def reloadTree(self):
84 self.tree.DeleteChildren(self.root) 85 #self.tree.DeleteAllItems() 86 #del(self.tree) 87 #self.buildNewTree() 88 self.loadTree()
89 90 # chargmenent du treeCtrl à partir de l'objet Arbre
91 - def loadTree(self):
92 if self.fenetreMedite.DGLoaded: 93 #sys.stderr.write('DGLoaded\n') 94 #self.arbre = self.fenetreMedite.cinfos.getArbre(self.fenetreMedite.DGAuteur, self.fenetreMedite.DGOeuvre) 95 fim = Controleurs.FInfoManager.FInfoManager(Controleurs.DGManager.Auteur(self.fenetreMedite.DGAuteur),Controleurs.DGManager.Oeuvre(self.fenetreMedite.DGOeuvre)) 96 self.arbre= fim.getArbre() 97 for version in self.arbre.getListeVersions(): 98 #sys.stderr.write('Vi\n') 99 self.loadNode(version, self.root) 100 101 self.tree.Expand(self.root)
102 # self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, self.tree) 103 # self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, self.tree) 104 # self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.tree) 105 # self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnBeginEdit, self.tree) 106 # self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnEndEdit, self.tree) 107 # self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivate, self.tree) 108 # 109 # self.tree.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) 110 # self.tree.Bind(wx.EVT_RIGHT_DOWN, self.OnRightClick) 111 # self.tree.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) 112 113 # chargement d'un noeud
114 - def loadNode(self, node, pere):
115 #sys.stderr.write('loadNode '+node.getNom()+'\n') 116 child = self.tree.AppendItem(pere, node.getNom()) 117 self.tree.SetPyData(child, None) 118 if isinstance(node,Donnees.arbre.Etat): # état 119 self.tree.SetItemImage(child, self.imgEtat, wx.TreeItemIcon_Normal) 120 else: #version 121 self.tree.SetItemImage(child, self.imgVersion, wx.TreeItemIcon_Normal) 122 # self.tree.SetItemImage(child, fldropenidx, wx.TreeItemIcon_Expanded) 123 for fils in node.getListeFils(): 124 self.loadNode(fils, child)
125
126 - def OnSize(self, event):
127 w,h = self.GetClientSizeTuple() 128 self.tree.SetDimensions(0, 0, w, h)
129
130 - def __getImg(self,pNom):
131 chem=os.path.join(Utile.constantesGUI.REPIMG,pNom) 132 return wx.Bitmap(chem,wx.BITMAP_TYPE_BMP)
133