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