RessourceEditor.py
changeset 391 07447ee3538e
parent 365 7bfd014652e0
child 407 0a324a874981
equal deleted inserted replaced
390:020420ad8914 391:07447ee3538e
    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)