107 self.data.append(value) |
107 self.data.append(value) |
108 self.RowAppended() |
108 self.RowAppended() |
109 self._saveData() |
109 self._saveData() |
110 |
110 |
111 colflags = dv.DATAVIEW_COL_RESIZABLE|dv.DATAVIEW_COL_SORTABLE |
111 colflags = dv.DATAVIEW_COL_RESIZABLE|dv.DATAVIEW_COL_SORTABLE |
|
112 COL_ID,COL_URI,COL_DESC,COL_LAST = range(4) |
112 |
113 |
113 class IDManager(wx.Panel): |
114 class IDManager(wx.Panel): |
114 def __init__(self, parent, ctr, SelectURICallBack, *args, **kwargs): |
115 def __init__(self, parent, ctr, SelectURICallBack=None, SelectIDCallBack=None, **kwargs): |
115 wx.Panel.__init__(self, parent, -1, size=(400,200)) |
116 wx.Panel.__init__(self, parent, -1, size=(400,200)) |
116 |
117 |
117 self.isManager = SelectURICallBack is None |
118 self.isManager = SelectURICallBack is None and SelectIDCallBack is None |
118 self.SelectURICallBack = SelectURICallBack |
119 self.SelectURICallBack = SelectURICallBack |
|
120 self.SelectIDCallBack = SelectIDCallBack |
119 |
121 |
120 dvStyle = wx.BORDER_THEME | dv.DV_ROW_LINES |
122 dvStyle = wx.BORDER_THEME | dv.DV_ROW_LINES |
121 if self.isManager : |
123 if self.isManager : |
122 # no multiple selection in selector mode |
124 # no multiple selection in selector mode |
123 dvStyle |= dv.DV_MULTIPLE |
125 dvStyle |= dv.DV_MULTIPLE |
124 self.dvc = dv.DataViewCtrl(self, style = dvStyle) |
126 self.dvc = dv.DataViewCtrl(self, style = dvStyle) |
125 |
127 |
126 args = lambda *a,**k:(a,k) |
128 args = lambda *a,**k:(a,k) |
127 |
129 |
128 ColumnsDesc = [ |
130 ColumnsDesc = [ |
129 args(_("ID"), 0, width = 100), |
131 args(_("ID"), COL_ID, width = 100), |
130 args(_("Last URI"), 1, width = 80), |
132 args(_("Last URI"), COL_URI, width = 80), |
131 args(_("Description"), 2, width = 200, |
133 args(_("Description"), COL_DESC, width = 200, |
132 mode = dv.DATAVIEW_CELL_EDITABLE |
134 mode = dv.DATAVIEW_CELL_EDITABLE |
133 if self.isManager |
135 if self.isManager |
134 else dv.DATAVIEW_CELL_INERT), |
136 else dv.DATAVIEW_CELL_INERT), |
135 args(_("Last connection"), 3, width = 100), |
137 args(_("Last connection"), COL_LAST, width = 100), |
136 ] |
138 ] |
137 |
139 |
138 self.model = IDManagerModel( |
140 self.model = IDManagerModel( |
139 os.path.join(str(ctr.ProjectPath), 'psk'), |
141 os.path.join(str(ctr.ProjectPath), 'psk'), |
140 len(ColumnsDesc)) |
142 len(ColumnsDesc)) |
170 |
172 |
171 else : |
173 else : |
172 # selector mode |
174 # selector mode |
173 # use last known URI button |
175 # use last known URI button |
174 # TODO : disable use URI button until something selected |
176 # TODO : disable use URI button until something selected |
175 selectButton = wx.Button(self, label=_("Use last URI")) |
177 self.useURIButton = wx.Button(self, label=_("Use last URI")) |
176 self.Bind(wx.EVT_BUTTON, self.OnSelectButton, selectButton) |
178 self.Bind(wx.EVT_BUTTON, self.OnUseURIButton, self.useURIButton) |
177 btnbox.Add(selectButton, 0, wx.LEFT|wx.RIGHT, 5) |
179 self.useURIButton.Disable() |
|
180 btnbox.Add(self.useURIButton, 0, wx.LEFT|wx.RIGHT, 5) |
178 |
181 |
179 self.Sizer.Add(btnbox, 0, wx.TOP|wx.BOTTOM, 5) |
182 self.Sizer.Add(btnbox, 0, wx.TOP|wx.BOTTOM, 5) |
|
183 self.Bind(dv.EVT_DATAVIEW_SELECTION_CHANGED, self.OnSelectionChanged, self.dvc) |
|
184 |
180 |
185 |
181 def OnDeleteButton(self, evt): |
186 def OnDeleteButton(self, evt): |
182 items = self.dvc.GetSelections() |
187 items = self.dvc.GetSelections() |
183 rows = [self.model.GetRow(item) for item in items] |
188 rows = [self.model.GetRow(item) for item in items] |
184 |
189 |
188 wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT) != wx.YES: |
193 wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT) != wx.YES: |
189 return |
194 return |
190 |
195 |
191 self.model.DeleteRows(rows) |
196 self.model.DeleteRows(rows) |
192 |
197 |
193 def OnSelectButton(self, evt): |
198 def OnSelectionChanged(self, evt): |
194 # TODO : call SetURICallback with URI from curent selection. |
199 if not self.isManager : |
195 wx.MessageBox(_('?'), |
200 items = self.dvc.GetSelections() |
196 _('Mhe'), |
201 somethingSelected = len(items) > 0 |
197 wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT) |
202 self.useURIButton.Enable(somethingSelected) |
|
203 if somethingSelected: |
|
204 row = self.model.GetRow(items[0]) |
|
205 ID = self.model.GetValueByRow(row, COL_ID) |
|
206 self.SelectIDCallBack(ID) |
|
207 |
|
208 |
|
209 def OnUseURIButton(self, evt): |
|
210 row = self.model.GetRow(self.dvc.GetSelections()[0]) |
|
211 URI = self.model.GetValueByRow(row, COL_URI) |
|
212 if URI: |
|
213 self.SelectURICallBack(URI) |
198 |
214 |
199 def OnExportButton(self, evt): |
215 def OnExportButton(self, evt): |
200 # TODO |
216 # TODO |
201 wx.MessageBox(_('?'), |
217 wx.MessageBox(_('?'), |
202 _('Mhe'), |
218 _('Mhe'), |