...
[iramuteq] / KeyFrame.py
1 # -*- coding: utf-8 -*-
2 #Author: Pierre Ratinaud
3 #Copyright (c) 2008 Pierre Ratinaud
4 #Lisense: GNU/GPL
5
6 import wx
7 from functions import sortedby
8
9 # begin wxGlade: extracode
10 # end wxGlade
11
12 class AlcOptFrame(wx.Dialog):
13     def __init__(self,parent, *args, **kwds):
14         # begin wxGlade: AlcOptFrame.__init__
15         kwds["style"] = wx.DEFAULT_DIALOG_STYLE
16         wx.Dialog.__init__(self, *args, **kwds)
17         self.cle={
18         'adj_sup': [wx.NewId(),wx.NewId(),u"Adjectif supplémentaire"],
19         'art_ind': [wx.NewId(),wx.NewId(),u"Article indéfini"],
20         'adj_pos': [wx.NewId(),wx.NewId(),u"Adjectif possessif"],
21         'adv_sup': [wx.NewId(),wx.NewId(),u"Adverbe supplémentaire"],
22         'pro_dem': [wx.NewId(),wx.NewId(),u"Pronom démonstratif"],
23         'art_def': [wx.NewId(),wx.NewId(),u"Article défini"],
24         'con': [wx.NewId(),wx.NewId(),u"Conjonction"],
25         'pre': [wx.NewId(),wx.NewId(),u"Préposition"],
26         'ono': [wx.NewId(),wx.NewId(),u"Onomatopée"],
27         'adj_dem': [wx.NewId(),wx.NewId(),u"Adjectif démonstratif"],
28         'nom_sup': [wx.NewId(),wx.NewId(),u"Nom supplémentaire"],
29         'adv': [wx.NewId(),wx.NewId(),u"Adverbe"],
30         'pro_per': [wx.NewId(),wx.NewId(),u"Pronom personnel"],
31         'ver': [wx.NewId(),wx.NewId(),u"Verbe"],
32         'adj_num': [wx.NewId(),wx.NewId(),u"Adjectif numérique"],
33         'pro_rel': [wx.NewId(),wx.NewId(),u"Pronom relatif"],
34         'adj_ind': [wx.NewId(),wx.NewId(),u"Adjectif indéfini"],
35         'pro_ind': [wx.NewId(),wx.NewId(),u"Pronom indéfini"],
36         'pro_pos': [wx.NewId(),wx.NewId(),u"Pronom possessif"],
37         'aux': [wx.NewId(),wx.NewId(),u"Auxiliaire"],
38         'ver_sup': [wx.NewId(),wx.NewId(),u"Verbe supplémentaire"],
39         'adj': [wx.NewId(),wx.NewId(),u"Adjectif"],
40         'adj_int': [wx.NewId(),wx.NewId(),u"Adjectif interrogatif"],
41         'nom': [wx.NewId(),wx.NewId(),u"Nom commun"],
42         'num' : [wx.NewId(),wx.NewId(),u"Chiffre"],
43         'nr' : [wx.NewId(),wx.NewId(),u"Formes non reconnues"],
44         }
45         self.parent=parent
46         self.KeyConf=self.parent.KeyConf
47         self.listlabel=[]
48         self.listspin=[]
49         self.listbutton=[]
50         self.listcle=[]
51         self.listids=[]
52         self.listidb=[]
53         
54         self.label_1 = wx.StaticText(self, -1, u"        Choix des clés d'analyse\n0=éliminé ; 1=active ; 2=supplémentaire\n")
55         self.listcleori=[[cle]+self.cle[cle] for cle in self.cle]
56         self.listcleori=sortedby(self.listcleori,1,3)
57
58         for line in self.listcleori:
59             cle,ids,idb,label=line
60             self.listlabel.append(wx.StaticText(self, -1, label))
61             self.listspin.append(wx.SpinCtrl(self, ids,self.KeyConf.get('KEYS',cle), min=0, max=2))
62             #if cle != 'nr' and cle!= 'num' : 
63             self.listbutton.append(wx.Button(self, idb, u"voir liste"))
64             self.listids.append(ids)
65             self.listidb.append(idb)
66             self.listcle.append(cle)
67             
68
69         self.button_val = wx.Button(self,wx.ID_APPLY)
70         
71         for button in self.listbutton :
72             self.Bind(wx.EVT_BUTTON,self.OnShowList,button)
73         
74         self.Bind(wx.EVT_BUTTON, self.OnApply, self.button_val)
75         
76         self.dico=self.parent.parent.lexique#'dictionnaires/lexique.txt')
77
78         self.__set_properties()
79         self.__do_layout()
80         # end wxGlade
81
82     def __set_properties(self):
83         # begin wxGlade: AlcOptFrame.__set_properties
84         self.SetTitle(u"Clés d'analyse")
85         # end wxGlade
86
87     def __do_layout(self):
88         # begin wxGlade: AlcOptFrame.__do_layout
89         sizer_1 = wx.BoxSizer(wx.VERTICAL)
90         sizer_2 = wx.BoxSizer(wx.VERTICAL)
91         sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
92         grid_sizer_1 = wx.GridSizer(14, 3, 0, 0)
93         grid_sizer_2 = wx.GridSizer(14, 3, 0, 0)
94         sizer_2.Add(self.label_1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
95         for i in range(0,14):
96             grid_sizer_1.Add(self.listlabel[i], 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
97             grid_sizer_1.Add(self.listspin[i], 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
98             grid_sizer_1.Add(self.listbutton[i], 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
99         for i in range(13,len(self.listlabel)):
100             grid_sizer_2.Add(self.listlabel[i], 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
101             grid_sizer_2.Add(self.listspin[i], 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
102             grid_sizer_2.Add(self.listbutton[i], 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
103         sizer_3.Add(grid_sizer_1, 1, wx.EXPAND, 0)
104         sizer_3.Add(grid_sizer_2, 1, wx.EXPAND, 0)
105         sizer_2.Add(sizer_3, 1, wx.EXPAND, 8)
106         sizer_2.Add(self.button_val,0, wx.ALIGN_CENTER_HORIZONTAL, 0)
107         sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
108         self.SetSizer(sizer_1)
109         sizer_1.Fit(self)
110         self.Layout()
111         # end wxGlade
112
113     def OnShowList(self,evt):
114         id=evt.GetEventObject().GetId()
115         pos=self.listidb.index(id)
116         type=self.listcle[pos]
117         self.CreateList(type)
118         
119     def CreateList(self,type):
120         if type=='ver_sup' or type=='ver':
121             liste=[descr[0] for item,descr in self.dico.iteritems() if descr[1]==type]
122             liste=list(set(liste))
123         else:
124             liste=[item for item,descr in self.dico.iteritems() if descr[1]==type]
125         liste.sort()
126         txt=('\n').join(liste)
127         ListViewFrame=ListView(self.parent.parent)
128         ListViewFrame.text_ctrl_1.WriteText(txt)
129         ListViewFrame.text_ctrl_1.SetSelection(0,0)
130         ListViewFrame.text_ctrl_1.SetInsertionPoint(0)
131         ListViewFrame.CenterOnParent()
132         val=ListViewFrame.ShowModal()
133     
134     def OnApply(self,evt):
135         for i in range(0,len(self.listlabel)):
136             self.KeyConf.set('KEYS',self.listcle[i],`self.listspin[i].GetValue()`)
137         self.Destroy()
138
139
140 class ListView(wx.Dialog):
141     def __init__(self, parent):
142         wx.Dialog.__init__(self, parent, size=wx.Size(200, 400),style=wx.DEFAULT_DIALOG_STYLE)
143         self.text_ctrl_1 = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_RICH2)
144         self.text_ctrl_1.SetMinSize(wx.Size(200, 400))
145         self.btn = wx.Button(self, wx.ID_OK)
146         self.SetMinSize(wx.Size(200, 400))
147         self.__set_properties()
148         self.__do_layout()
149
150     def __set_properties(self):
151         self.SetTitle("Liste")
152
153     def __do_layout(self):
154         sizer_1 = wx.BoxSizer(wx.VERTICAL)
155         sizer_1.Add(self.text_ctrl_1, 1, wx.EXPAND, 0)
156         sizer_1.Add(self.btn,0,wx.EXPAND,0)
157         self.SetSizer(sizer_1)
158         sizer_1.Fit(self)
159         self.Layout()
160