1 # -*- coding: utf-8 -*-
2 #Author: Pierre Ratinaud
3 #Copyright (c) 2008-2009 Pierre Ratinaud
8 from KeyFrame import AlcOptFrame
9 from chemins import ConstructConfigPath
10 from functions import DoConf
14 class OptionAlc(wx.Dialog):
15 def __init__(self, parent, parametres, *args, **kwds):
16 kwds['style'] = wx.DEFAULT_DIALOG_STYLE
17 wx.Dialog.__init__(self, parent, *args, **kwds)
19 self.parametres = parametres
20 self.DictPath = parametres['pathout']
21 self.AlcesteConf = parametres
24 self.label_1 = wx.StaticText(self, -1, u"Lemmatisation")
25 self.radio_1 = wx.RadioBox(self, -1, u"", choices=['oui', 'non'], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
27 self.label_12 = wx.StaticText(self, -1, u"Classification")
28 self.radio_box_2 = wx.RadioBox(self, -1, u"", choices=[u"double sur UC", u"simple sur UCE", u"simple sur UCI"], majorDimension=0, style=wx.RA_SPECIFY_ROWS) #, u"simple sur UCE (non implemente)"
29 self.label_2 = wx.StaticText(self, -1, u"taille uc 1")
30 self.spin_ctrl_1 = wx.SpinCtrl(self, -1, "formes actives",size = (100,30), min=0, max=100)
31 self.label_3 = wx.StaticText(self, -1, u"taille uc 2")
32 self.spin_ctrl_2 = wx.SpinCtrl(self, -1, "",size = (100,30), min=0, max=100)
33 self.lab_nbcl = wx.StaticText(self, -1, u"nombre de classes terminales de la phase 1")
34 self.spin_nbcl = wx.SpinCtrl(self, -1, "",size = (100,30), min=2, max=100)
35 txt = """Nombre minimum d'uce par classe
37 self.label_7 = wx.StaticText(self, -1, txt)
38 self.spin_ctrl_4 = wx.SpinCtrl(self, -1, "",size = (100,30), min=0, max=1000)
39 txt = u"""Fréquence minimum d'une forme
40 analysée (2 = automatique)"""
41 self.label_8 = wx.StaticText(self, -1, txt)
42 self.spin_ctrl_5 = wx.SpinCtrl(self, -1, "",size = (100,30), min=2, max=1000)
43 self.label_max_actives = wx.StaticText(self, -1, u"Nombre maximum de formes analysées")
44 self.spin_max_actives = wx.SpinCtrl(self, -1, "",size = (100,30), min=20, max=10000)
45 self.label_4 = wx.StaticText(self, -1, u"Configuration \ndes clés d'analyse")
46 self.button_5 = wx.Button(self, wx.ID_PREFERENCES, "")
47 self.button_1 = wx.Button(self, wx.ID_CANCEL, "")
48 self.button_2 = wx.Button(self, wx.ID_DEFAULT, u"Valeurs par défaut")
49 self.button_4 = wx.Button(self, wx.ID_OK, "")
50 self.static_line_1 = wx.StaticLine(self, -1)
52 self.__set_properties()
55 self.Bind(wx.EVT_BUTTON, self.OnKeyPref, self.button_5)
56 self.Bind(wx.EVT_BUTTON, self.OnDef, self.button_2)
58 def __set_properties(self):
59 self.SetTitle("Options")
60 #lang = self.AlcesteConf.get('ALCESTE', 'lang')
61 #self.choice_dict.SetSelection(self.langues.index(lang))
62 DefaultLem = self.parametres['lem']
64 self.radio_1.SetSelection(0)
66 self.radio_1.SetSelection(1)
67 self.radio_box_2.SetSelection(int(self.parametres['classif_mode']))
68 self.spin_ctrl_1.SetValue(int(self.parametres['tailleuc1']))
69 self.spin_ctrl_2.SetValue(int(self.parametres['tailleuc2']))
70 self.spin_ctrl_4.SetValue(int(self.parametres['mincl']))
71 self.spin_ctrl_5.SetValue(int(self.parametres['minforme']))
72 self.spin_ctrl_5.Disable()
73 self.spin_max_actives.SetValue(int(self.parametres['max_actives']))
74 self.spin_nbcl.SetValue(int(self.parametres['nbcl_p1']))
76 def __do_layout(self):
77 sizer_1 = wx.BoxSizer(wx.VERTICAL)
78 sizer_2 = wx.BoxSizer(wx.VERTICAL)
79 grid_sizer2 = wx.FlexGridSizer(15, 2, 0, 0)
80 grid_button = wx.FlexGridSizer(1, 3, 0, 0)
82 #grid_sizer2.Add(self.label_dict, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
83 #grid_sizer2.Add(self.choice_dict, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
85 grid_sizer2.Add(self.label_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
86 grid_sizer2.Add(self.radio_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
87 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
88 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
90 grid_sizer2.Add(self.label_12, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
91 grid_sizer2.Add(self.radio_box_2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
92 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
93 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
95 grid_sizer2.Add(self.label_2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
96 grid_sizer2.Add(self.spin_ctrl_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
97 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
98 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
100 grid_sizer2.Add(self.label_3, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
101 grid_sizer2.Add(self.spin_ctrl_2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
102 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
103 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
105 grid_sizer2.Add(self.lab_nbcl, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
106 grid_sizer2.Add(self.spin_nbcl, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
107 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
108 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
110 grid_sizer2.Add(self.label_7, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
111 grid_sizer2.Add(self.spin_ctrl_4, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
112 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
113 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
115 grid_sizer2.Add(self.label_8, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
116 grid_sizer2.Add(self.spin_ctrl_5, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
117 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
118 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
120 grid_sizer2.Add(self.label_max_actives, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
121 grid_sizer2.Add(self.spin_max_actives, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
122 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
123 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
125 grid_sizer2.Add(self.label_4, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
126 grid_sizer2.Add(self.button_5, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
127 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
128 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
130 grid_button.Add(self.button_1, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
131 grid_button.Add(self.button_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
132 grid_button.Add(self.button_4, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
133 sizer_2.Add(grid_sizer2, 3, wx.EXPAND, 0)
134 sizer_2.Add(grid_button, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
135 sizer_1.Add(sizer_2, 0, wx.EXPAND, 0)
136 self.SetSizer(sizer_1)
140 def OnKeyPref(self, event):
142 dial = AlcOptFrame(self.parent, self)
143 dial.CenterOnParent()
144 val = dial.ShowModal()
146 def OnDef(self, event):
147 ConfOri = ConstructConfigPath(self.parent.AppliPath, user=False)
148 ConfUser = ConstructConfigPath(self.parent.UserConfigPath)
149 shutil.copyfile(ConfOri['alceste'], ConfUser['alceste'])
150 corpus = self.parametres['corpus']
151 pathout = self.parametres['pathout']
152 self.parametres = DoConf(self.parent.ConfigPath['alceste']).getoptions('ALCESTE')
153 self.parametres['corpus'] = corpus
154 self.parametres['pathout'] = pathout
155 self.__set_properties()
157 ###################################################################################@
159 class OptionPam(wx.Dialog):
160 def __init__(self, parent, *args, **kwds):
161 kwds['style'] = wx.DEFAULT_DIALOG_STYLE
162 wx.Dialog.__init__(self, *args, **kwds)
164 self.DictPath = parent.DictPath
165 self.pamconf = parent.pamconf
166 self.type = parent.type
169 self.label_1 = wx.StaticText(self, -1, u"Lemmatisation")
170 self.radio_1 = wx.RadioBox(self, -1, u"", choices=['oui', 'non'], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
171 self.label_exp = wx.StaticText(self, -1, u"Utiliser le dict. des expressions")
172 self.radio_exp = wx.RadioBox(self, -1, u"", choices=['oui', 'non'], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
173 txt = u"""Methode de construction
174 de la matrice des distances"""
175 self.label_12 = wx.StaticText(self, -1, txt)
176 self.distance = [u"binary", u"euclidean", u"maximum", u'manhattan', u'canberra', u'minkowski']
177 self.choice_1 = wx.Choice(self, -1, (100,50), choices=self.distance)
178 self.label_13 = wx.StaticText(self, -1, u'Analyse')
179 self.cltype = [u'k-means (pam)', u'fuzzy (fanny)']
180 self.radio_box_3 = wx.RadioBox(self, -1, u"", choices=self.cltype, majorDimension=0, style=wx.RA_SPECIFY_ROWS)
181 self.label_classif = wx.StaticText(self, -1, u"Classification")
182 self.radio_box_classif = wx.RadioBox(self, -1, u"", choices=[u"sur UCE", u"sur UCI"], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
183 #self.label_2 = wx.StaticText(self, -1, "taille uc")
184 #self.spin_ctrl_1 = wx.SpinCtrl(self, -1, "formes actives", min=0, max=100)
185 self.label_max_actives = wx.StaticText(self, -1, u"Nombre maximum de formes analysées")
186 self.spin_max_actives = wx.SpinCtrl(self, -1, "",size = (100,30), min=20, max=10000)
187 txt = """Nombre de formes par uce
189 self.label_6 = wx.StaticText(self, -1, txt)
190 self.spin_ctrl_3 = wx.SpinCtrl(self, -1, "", size = (100,30), min=0, max=100000)
191 txt = "Nombre de classes"
192 self.label_7 = wx.StaticText(self, -1, txt)
193 self.spin_ctrl_4 = wx.SpinCtrl(self, -1, "", size = (100,30), min=0, max=1000)
194 self.label_4 = wx.StaticText(self, -1, u"Configuration \ndes clés d'analyse")
195 self.button_5 = wx.Button(self, wx.ID_PREFERENCES, "")
196 self.button_1 = wx.Button(self, wx.ID_CANCEL, "")
197 self.button_2 = wx.Button(self, wx.ID_DEFAULT, u"Valeurs par défaut")
198 self.button_4 = wx.Button(self, wx.ID_OK, "")
199 self.static_line_1 = wx.StaticLine(self, -1)
201 self.__set_properties()
204 self.Bind(wx.EVT_BUTTON, self.OnKeyPref, self.button_5)
205 self.Bind(wx.EVT_BUTTON, self.OnDef, self.button_2)
207 def __set_properties(self):
208 self.SetTitle("Options")
209 DefaultLem = self.pamconf.getboolean('pam', 'lem')
211 self.radio_1.SetSelection(0)
213 self.radio_1.SetSelection(1)
214 expressions = self.pamconf.getboolean('pam', 'expressions')
216 self.radio_exp.SetSelection(0)
218 self.radio_exp.SetSelection(1)
219 self.choice_1.SetSelection(self.distance.index(self.pamconf.get('pam', 'method')))
220 if self.pamconf.get('pam', 'cluster_type') == u'pam' :
221 self.radio_box_3.SetSelection(0)
223 self.radio_box_3.SetSelection(1)
224 self.radio_box_classif.SetSelection(int(self.pamconf.get('pam','type')))
225 self.spin_max_actives.SetValue(int(self.pamconf.get('pam','max_actives')))
226 self.spin_ctrl_3.SetValue(int(self.pamconf.get('pam', 'nbforme_uce')))
228 self.spin_ctrl_4.SetValue(int(self.pamconf.get('pam', cle)))
230 def __do_layout(self):
231 sizer_1 = wx.BoxSizer(wx.VERTICAL)
232 sizer_2 = wx.BoxSizer(wx.VERTICAL)
233 grid_sizer2 = wx.FlexGridSizer(11, 2, 2, 2)
234 grid_button = wx.FlexGridSizer(1, 3, 1, 1)
235 grid_sizer2.Add(self.label_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
236 grid_sizer2.Add(self.radio_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
237 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
238 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
240 grid_sizer2.Add(self.label_exp, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
241 grid_sizer2.Add(self.radio_exp, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
242 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
243 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
245 grid_sizer2.Add(self.label_12, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
246 grid_sizer2.Add(self.choice_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
247 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
248 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
250 grid_sizer2.Add(self.label_13, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
251 grid_sizer2.Add(self.radio_box_3, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
252 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
253 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
255 grid_sizer2.Add(self.label_classif, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
256 grid_sizer2.Add(self.radio_box_classif, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
257 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
258 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
260 #grid_sizer2.Add(self.label_2, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
261 #grid_sizer2.Add(self.spin_ctrl_1, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
262 #grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
263 #grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
265 grid_sizer2.Add(self.label_max_actives, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
266 grid_sizer2.Add(self.spin_max_actives, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
267 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
268 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
270 grid_sizer2.Add(self.label_6, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
271 grid_sizer2.Add(self.spin_ctrl_3, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
272 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
273 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
275 grid_sizer2.Add(self.label_7, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
276 grid_sizer2.Add(self.spin_ctrl_4, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
277 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
278 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
280 grid_sizer2.Add(self.label_4, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
281 grid_sizer2.Add(self.button_5, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
282 grid_sizer2.Add(wx.StaticLine(self), 0, wx.EXPAND | wx.ALL, 1)
283 grid_sizer2.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.ALL, 1)
285 grid_button.Add(self.button_1, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
286 grid_button.Add(self.button_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
287 grid_button.Add(self.button_4, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
288 sizer_2.Add(grid_sizer2, 3, wx.EXPAND, 0)
289 sizer_2.Add(grid_button, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
290 sizer_1.Add(sizer_2, 0, wx.EXPAND, 0)
291 self.SetSizer(sizer_1)
295 def OnKeyPref(self, event):
297 dial = AlcOptFrame(self.parent, self)
298 dial.CenterOnParent()
299 val = dial.ShowModal()
301 def OnDef(self, event):
302 ConfOri = ConstructConfigPath(self.parent.parent.AppliPath, user=False)
303 ConfUser = ConstructConfigPath(self.parent.parent.UserConfigPath)
304 shutil.copyfile(ConfOri['pam'], ConfUser['pam'])
305 self.parent.pamconf.read(self.parent.ConfigPath['pam'])
306 self.__set_properties()