72 |
72 |
73 #------------------------------------------------------------------------------- |
73 #------------------------------------------------------------------------------- |
74 # Resource Editor class |
74 # Resource Editor class |
75 #------------------------------------------------------------------------------- |
75 #------------------------------------------------------------------------------- |
76 |
76 |
|
77 def GetTasksTableColnames(): |
|
78 _ = lambda x : x |
|
79 return [_("Name"), _("Single"), _("Interval"), _("Priority")] |
|
80 |
|
81 def GetInstancesTableColnames(): |
|
82 _ = lambda x : x |
|
83 return [_("Name"), _("Type"), _("Task")] |
|
84 |
77 class ResourceTable(wx.grid.PyGridTableBase): |
85 class ResourceTable(wx.grid.PyGridTableBase): |
78 |
86 |
79 """ |
87 """ |
80 A custom wx.grid.Grid Table using user supplied data |
88 A custom wx.grid.Grid Table using user supplied data |
81 """ |
89 """ |
111 return len(self.colnames) |
119 return len(self.colnames) |
112 |
120 |
113 def GetNumberRows(self): |
121 def GetNumberRows(self): |
114 return len(self.data) |
122 return len(self.data) |
115 |
123 |
116 def GetColLabelValue(self, col): |
124 def GetColLabelValue(self, col, translate=True): |
117 if col < len(self.colnames): |
125 if col < len(self.colnames): |
|
126 if translate: |
|
127 return _(self.colnames[col]) |
118 return self.colnames[col] |
128 return self.colnames[col] |
119 |
129 |
120 def GetRowLabelValues(self, row): |
130 def GetRowLabelValues(self, row, translate=True): |
121 return row |
131 return row |
122 |
132 |
123 def GetValue(self, row, col): |
133 def GetValue(self, row, col): |
124 if row < self.GetNumberRows(): |
134 if row < self.GetNumberRows(): |
125 name = str(self.data[row].get(self.GetColLabelValue(col), "")) |
135 name = str(self.data[row].get(self.GetColLabelValue(col, False), "")) |
126 return name |
136 return name |
127 |
137 |
128 def GetValueByName(self, row, colname): |
138 def GetValueByName(self, row, colname): |
129 return self.data[row].get(colname) |
139 return self.data[row].get(colname) |
130 |
140 |
131 def SetValue(self, row, col, value): |
141 def SetValue(self, row, col, value): |
132 if col < len(self.colnames): |
142 if col < len(self.colnames): |
133 self.data[row][self.GetColLabelValue(col)] = value |
143 self.data[row][self.GetColLabelValue(col, False)] = value |
134 |
144 |
135 def SetValueByName(self, row, colname, value): |
145 def SetValueByName(self, row, colname, value): |
136 if colname in self.colnames: |
146 if colname in self.colnames: |
137 self.data[row][colname] = value |
147 self.data[row][colname] = value |
138 |
148 |
186 |
196 |
187 for row in range(self.GetNumberRows()): |
197 for row in range(self.GetNumberRows()): |
188 for col in range(self.GetNumberCols()): |
198 for col in range(self.GetNumberCols()): |
189 editor = None |
199 editor = None |
190 renderer = None |
200 renderer = None |
191 colname = self.GetColLabelValue(col) |
201 colname = self.GetColLabelValue(col, False) |
192 grid.SetReadOnly(row, col, False) |
202 grid.SetReadOnly(row, col, False) |
193 if colname in ["Name","Interval"]: |
203 if colname in ["Name","Interval"]: |
194 editor = wx.grid.GridCellTextEditor() |
204 editor = wx.grid.GridCellTextEditor() |
195 renderer = wx.grid.GridCellStringRenderer() |
205 renderer = wx.grid.GridCellStringRenderer() |
196 if colname == "Interval" and self.GetValueByName(row, "Single") != "": |
206 if colname == "Interval" and self.GetValueByName(row, "Single") != "": |
343 def _init_ctrls(self, prnt): |
353 def _init_ctrls(self, prnt): |
344 wx.Panel.__init__(self, id=ID_RESOURCEEDITOR, name='', parent=prnt, |
354 wx.Panel.__init__(self, id=ID_RESOURCEEDITOR, name='', parent=prnt, |
345 size=wx.Size(0, 0), style=wx.SUNKEN_BORDER) |
355 size=wx.Size(0, 0), style=wx.SUNKEN_BORDER) |
346 |
356 |
347 self.staticText1 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT1, |
357 self.staticText1 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT1, |
348 label=u'Tasks:', name='staticText2', parent=self, pos=wx.Point(0, |
358 label=_(u'Tasks:'), name='staticText2', parent=self, pos=wx.Point(0, |
349 0), size=wx.Size(60, 17), style=wx.ALIGN_CENTER) |
359 0), size=wx.DefaultSize, style=wx.ALIGN_CENTER) |
350 |
360 |
351 self.TasksGrid = wx.grid.Grid(id=ID_RESOURCEEDITORTASKSGRID, |
361 self.TasksGrid = wx.grid.Grid(id=ID_RESOURCEEDITORTASKSGRID, |
352 name='TasksGrid', parent=self, pos=wx.Point(0, 0), |
362 name='TasksGrid', parent=self, pos=wx.Point(0, 0), |
353 size=wx.Size(-1, -1), style=wx.VSCROLL) |
363 size=wx.Size(-1, -1), style=wx.VSCROLL) |
354 self.TasksGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
364 self.TasksGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
358 if wx.VERSION >= (2, 5, 0): |
368 if wx.VERSION >= (2, 5, 0): |
359 self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange) |
369 self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange) |
360 else: |
370 else: |
361 wx.grid.EVT_GRID_CELL_CHANGE(self.TasksGrid, self.OnTasksGridCellChange) |
371 wx.grid.EVT_GRID_CELL_CHANGE(self.TasksGrid, self.OnTasksGridCellChange) |
362 |
372 |
363 self.AddTaskButton = wx.Button(id=ID_RESOURCEEDITORADDTASKBUTTON, label='Add Task', |
373 self.AddTaskButton = wx.Button(id=ID_RESOURCEEDITORADDTASKBUTTON, label=_('Add Task'), |
364 name='AddTaskButton', parent=self, pos=wx.Point(0, 0), |
374 name='AddTaskButton', parent=self, pos=wx.Point(0, 0), |
365 size=wx.Size(102, 32), style=0) |
375 size=wx.DefaultSize, style=0) |
366 self.Bind(wx.EVT_BUTTON, self.OnAddTaskButton, id=ID_RESOURCEEDITORADDTASKBUTTON) |
376 self.Bind(wx.EVT_BUTTON, self.OnAddTaskButton, id=ID_RESOURCEEDITORADDTASKBUTTON) |
367 |
377 |
368 self.DeleteTaskButton = wx.Button(id=ID_RESOURCEEDITORDELETETASKBUTTON, label='Delete Task', |
378 self.DeleteTaskButton = wx.Button(id=ID_RESOURCEEDITORDELETETASKBUTTON, label=_('Delete Task'), |
369 name='DeleteTaskButton', parent=self, pos=wx.Point(0, 0), |
379 name='DeleteTaskButton', parent=self, pos=wx.Point(0, 0), |
370 size=wx.Size(102, 32), style=0) |
380 size=wx.DefaultSize, style=0) |
371 self.Bind(wx.EVT_BUTTON, self.OnDeleteTaskButton, id=ID_RESOURCEEDITORDELETETASKBUTTON) |
381 self.Bind(wx.EVT_BUTTON, self.OnDeleteTaskButton, id=ID_RESOURCEEDITORDELETETASKBUTTON) |
372 |
382 |
373 self.UpTaskButton = wx.Button(id=ID_RESOURCEEDITORUPTASKBUTTON, label='^', |
383 self.UpTaskButton = wx.Button(id=ID_RESOURCEEDITORUPTASKBUTTON, label='^', |
374 name='UpTaskButton', parent=self, pos=wx.Point(0, 0), |
384 name='UpTaskButton', parent=self, pos=wx.Point(0, 0), |
375 size=wx.Size(32, 32), style=0) |
385 size=wx.Size(32, 32), style=0) |
379 name='DownTaskButton', parent=self, pos=wx.Point(0, 0), |
389 name='DownTaskButton', parent=self, pos=wx.Point(0, 0), |
380 size=wx.Size(32, 32), style=0) |
390 size=wx.Size(32, 32), style=0) |
381 self.Bind(wx.EVT_BUTTON, self.OnDownTaskButton, id=ID_RESOURCEEDITORDOWNTASKBUTTON) |
391 self.Bind(wx.EVT_BUTTON, self.OnDownTaskButton, id=ID_RESOURCEEDITORDOWNTASKBUTTON) |
382 |
392 |
383 self.staticText2 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT2, |
393 self.staticText2 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT2, |
384 label=u'Instances:', name='staticText1', parent=self, |
394 label=_(u'Instances:'), name='staticText1', parent=self, |
385 pos=wx.Point(0, 0), size=wx.Size(85, 17), style=wx.ALIGN_CENTER) |
395 pos=wx.Point(0, 0), size=wx.DefaultSize, style=wx.ALIGN_CENTER) |
386 |
396 |
387 self.InstancesGrid = wx.grid.Grid(id=ID_RESOURCEEDITORINSTANCESGRID, |
397 self.InstancesGrid = wx.grid.Grid(id=ID_RESOURCEEDITORINSTANCESGRID, |
388 name='InstancesGrid', parent=self, pos=wx.Point(0, 0), |
398 name='InstancesGrid', parent=self, pos=wx.Point(0, 0), |
389 size=wx.Size(-1, -1), style=wx.VSCROLL) |
399 size=wx.Size(-1, -1), style=wx.VSCROLL) |
390 self.InstancesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
400 self.InstancesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
394 if wx.VERSION >= (2, 5, 0): |
404 if wx.VERSION >= (2, 5, 0): |
395 self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange) |
405 self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange) |
396 else: |
406 else: |
397 wx.grid.EVT_GRID_CELL_CHANGE(self.InstancesGrid, self.OnInstancesGridCellChange) |
407 wx.grid.EVT_GRID_CELL_CHANGE(self.InstancesGrid, self.OnInstancesGridCellChange) |
398 |
408 |
399 self.AddInstanceButton = wx.Button(id=ID_RESOURCEEDITORADDINSTANCEBUTTON, label='Add Instance', |
409 self.AddInstanceButton = wx.Button(id=ID_RESOURCEEDITORADDINSTANCEBUTTON, label=_('Add Instance'), |
400 name='AddInstanceButton', parent=self, pos=wx.Point(0, 0), |
410 name='AddInstanceButton', parent=self, pos=wx.Point(0, 0), |
401 size=wx.Size(122, 32), style=0) |
411 size=wx.DefaultSize, style=0) |
402 self.Bind(wx.EVT_BUTTON, self.OnAddInstanceButton, id=ID_RESOURCEEDITORADDINSTANCEBUTTON) |
412 self.Bind(wx.EVT_BUTTON, self.OnAddInstanceButton, id=ID_RESOURCEEDITORADDINSTANCEBUTTON) |
403 |
413 |
404 self.DeleteInstanceButton = wx.Button(id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON, label='Delete Instance', |
414 self.DeleteInstanceButton = wx.Button(id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON, label=_('Delete Instance'), |
405 name='DeleteInstanceButton', parent=self, pos=wx.Point(0, 0), |
415 name='DeleteInstanceButton', parent=self, pos=wx.Point(0, 0), |
406 size=wx.Size(122, 32), style=0) |
416 size=wx.DefaultSize, style=0) |
407 self.Bind(wx.EVT_BUTTON, self.OnDeleteInstanceButton, id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON) |
417 self.Bind(wx.EVT_BUTTON, self.OnDeleteInstanceButton, id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON) |
408 |
418 |
409 self.UpInstanceButton = wx.Button(id=ID_RESOURCEEDITORUPINSTANCEBUTTON, label='^', |
419 self.UpInstanceButton = wx.Button(id=ID_RESOURCEEDITORUPINSTANCEBUTTON, label='^', |
410 name='UpInstanceButton', parent=self, pos=wx.Point(0, 0), |
420 name='UpInstanceButton', parent=self, pos=wx.Point(0, 0), |
411 size=wx.Size(32, 32), style=0) |
421 size=wx.Size(32, 32), style=0) |
424 self.ParentWindow = window |
434 self.ParentWindow = window |
425 self.Controler = controler |
435 self.Controler = controler |
426 self.TagName = tagname |
436 self.TagName = tagname |
427 |
437 |
428 self.TasksDefaultValue = {"Name" : "", "Single" : "", "Interval" : "", "Priority" : 0} |
438 self.TasksDefaultValue = {"Name" : "", "Single" : "", "Interval" : "", "Priority" : 0} |
429 self.TasksTable = ResourceTable(self, [], ["Name", "Single", "Interval", "Priority"]) |
439 self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) |
430 self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) |
440 self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) |
431 self.TasksTable.SetColSizes([200, 100, 100, 100]) |
441 self.TasksTable.SetColSizes([200, 100, 100, 100]) |
432 self.TasksGrid.SetTable(self.TasksTable) |
442 self.TasksGrid.SetTable(self.TasksTable) |
433 self.TasksGrid.SetRowLabelSize(0) |
443 self.TasksGrid.SetRowLabelSize(0) |
434 self.TasksTable.ResetView(self.TasksGrid) |
444 self.TasksTable.ResetView(self.TasksGrid) |
435 |
445 |
436 self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} |
446 self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} |
437 self.InstancesTable = ResourceTable(self, [], ["Name", "Type", "Task"]) |
447 self.InstancesTable = ResourceTable(self, [], GetInstancesTableColnames()) |
438 self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]) |
448 self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]) |
439 self.InstancesTable.SetColSizes([200, 150, 150]) |
449 self.InstancesTable.SetColSizes([200, 150, 150]) |
440 self.InstancesGrid.SetTable(self.InstancesTable) |
450 self.InstancesGrid.SetTable(self.InstancesTable) |
441 self.InstancesGrid.SetRowLabelSize(0) |
451 self.InstancesGrid.SetRowLabelSize(0) |
442 self.InstancesTable.ResetView(self.InstancesGrid) |
452 self.InstancesTable.ResetView(self.InstancesGrid) |