RessourceEditor.py
changeset 714 131ea7f237b9
parent 684 f10449b18dbe
equal deleted inserted replaced
713:95a0a427f3ef 714:131ea7f237b9
    21 #You should have received a copy of the GNU General Public
    21 #You should have received a copy of the GNU General Public
    22 #License along with this library; if not, write to the Free Software
    22 #License along with this library; if not, write to the Free Software
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    24 
    24 
    25 import wx
    25 import wx
       
    26 import wx.lib.buttons
    26 import wx.grid
    27 import wx.grid
    27 
    28 
    28 from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD
    29 from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD
    29 from controls import CustomGrid, CustomTable, EditorPanel, DurationCellEditor
    30 from controls import CustomGrid, CustomTable, EditorPanel, DurationCellEditor
       
    31 from utils.BitmapLibrary import GetBitmap
    30 
    32 
    31 #-------------------------------------------------------------------------------
    33 #-------------------------------------------------------------------------------
    32 #                          Configuration Editor class
    34 #                          Configuration Editor class
    33 #-------------------------------------------------------------------------------
    35 #-------------------------------------------------------------------------------
    34 
    36 
   185                     if highlight_type in col_highlights:
   187                     if highlight_type in col_highlights:
   186                         col_highlights.remove(highlight_type)
   188                         col_highlights.remove(highlight_type)
   187                     if len(col_highlights) == 0:
   189                     if len(col_highlights) == 0:
   188                         row_highlights.pop(col)
   190                         row_highlights.pop(col)
   189 
   191 
   190 [ID_RESOURCEEDITOR, ID_RESOURCEEDITORPANEL, ID_RESOURCEEDITORSTATICTEXT1,
   192 
   191  ID_RESOURCEEDITORSTATICTEXT2, ID_RESOURCEEDITORINSTANCESGRID,
       
   192  ID_RESOURCEEDITORTASKSGRID, ID_RESOURCEEDITORADDINSTANCEBUTTON,
       
   193  ID_RESOURCEEDITORDELETEINSTANCEBUTTON, ID_RESOURCEEDITORUPINSTANCEBUTTON,
       
   194  ID_RESOURCEEDITORDOWNINSTANCEBUTTON, ID_RESOURCEEDITORADDTASKBUTTON,
       
   195  ID_RESOURCEEDITORDELETETASKBUTTON, ID_RESOURCEEDITORUPTASKBUTTON,
       
   196  ID_RESOURCEEDITORDOWNTASKBUTTON,
       
   197 ] = [wx.NewId() for _init_ctrls in range(14)]
       
   198 
   193 
   199 class ResourceEditor(EditorPanel):
   194 class ResourceEditor(EditorPanel):
   200     
   195     
   201     ID = ID_RESOURCEEDITOR
       
   202     VARIABLE_PANEL_TYPE = "resource"
   196     VARIABLE_PANEL_TYPE = "resource"
   203     
   197 
   204     def _init_coll_InstancesSizer_Growables(self, parent):
   198     def _init_Editor(self, parent):
   205         parent.AddGrowableCol(0)
   199         self.Editor = wx.Panel(parent, style=wx.SUNKEN_BORDER|wx.TAB_TRAVERSAL)
   206         parent.AddGrowableRow(1)
   200         
   207 
   201         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   208     def _init_coll_InstancesSizer_Items(self, parent):
   202         main_sizer.AddGrowableCol(0)
   209         parent.AddSizer(self.InstancesButtonsSizer, 0, border=0, flag=wx.GROW)
   203         main_sizer.AddGrowableRow(0)
   210         parent.AddWindow(self.InstancesGrid, 0, border=0, flag=wx.GROW)
   204         main_sizer.AddGrowableRow(1)
   211 
   205         
   212     def _init_coll_InstancesButtonsSizer_Growables(self, parent):
   206         tasks_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   213         parent.AddGrowableCol(0)
   207         tasks_sizer.AddGrowableCol(0)
   214         parent.AddGrowableRow(0)
   208         tasks_sizer.AddGrowableRow(1)
   215 
   209         main_sizer.AddSizer(tasks_sizer, border=5, 
   216     def _init_coll_InstancesButtonsSizer_Items(self, parent):
   210               flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
   217         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.ALIGN_BOTTOM)
   211         
   218         parent.AddWindow(self.AddInstanceButton, 0, border=0, flag=0)
   212         tasks_buttons_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
   219         parent.AddWindow(self.DeleteInstanceButton, 0, border=0, flag=0)
   213         tasks_buttons_sizer.AddGrowableCol(0)
   220         parent.AddWindow(self.UpInstanceButton, 0, border=0, flag=0)
   214         tasks_buttons_sizer.AddGrowableRow(0)
   221         parent.AddWindow(self.DownInstanceButton, 0, border=0, flag=0)
   215         tasks_sizer.AddSizer(tasks_buttons_sizer, flag=wx.GROW)
   222 
   216         
   223     def _init_coll_TasksSizer_Growables(self, parent):
   217         tasks_label = wx.StaticText(self.Editor, label=_(u'Tasks:'))
   224         parent.AddGrowableCol(0)
   218         tasks_buttons_sizer.AddWindow(tasks_label, flag=wx.ALIGN_BOTTOM)
   225         parent.AddGrowableRow(1)
   219         
   226 
   220         for name, bitmap, help in [
   227     def _init_coll_TasksSizer_Items(self, parent):
   221                 ("AddTaskButton", "add_element", _("Add task")),
   228         parent.AddSizer(self.TasksButtonsSizer, 0, border=0, flag=wx.GROW)
   222                 ("DeleteTaskButton", "remove_element", _("Remove task")),
   229         parent.AddWindow(self.TasksGrid, 0, border=0, flag=wx.GROW)
   223                 ("UpTaskButton", "up", _("Move task up")),
   230 
   224                 ("DownTaskButton", "down", _("Move task down"))]:
   231     def _init_coll_TasksButtonsSizer_Growables(self, parent):
   225             button = wx.lib.buttons.GenBitmapButton(self.Editor, 
   232         parent.AddGrowableCol(0)
   226                   bitmap=GetBitmap(bitmap), size=wx.Size(28, 28), style=wx.NO_BORDER)
   233         parent.AddGrowableRow(0)
   227             button.SetToolTipString(help)
   234 
   228             setattr(self, name, button)
   235     def _init_coll_TasksButtonsSizer_Items(self, parent):
   229             tasks_buttons_sizer.AddWindow(button)
   236         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.ALIGN_BOTTOM)
   230         
   237         parent.AddWindow(self.AddTaskButton, 0, border=0, flag=0)
   231         self.TasksGrid = CustomGrid(self.Editor, style=wx.VSCROLL)
   238         parent.AddWindow(self.DeleteTaskButton, 0, border=0, flag=0)
   232         self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange)
   239         parent.AddWindow(self.UpTaskButton, 0, border=0, flag=0)
   233         tasks_sizer.AddWindow(self.TasksGrid, flag=wx.GROW)
   240         parent.AddWindow(self.DownTaskButton, 0, border=0, flag=0)
   234         
   241 
   235         instances_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   242     def _init_coll_MainGridSizer_Items(self, parent):
   236         instances_sizer.AddGrowableCol(0)
   243         parent.AddSizer(self.TasksSizer, 0, border=5, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
   237         instances_sizer.AddGrowableRow(1)
   244         parent.AddSizer(self.InstancesSizer, 0, border=5, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
   238         main_sizer.AddSizer(instances_sizer, border=5, 
   245 
   239               flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
   246     def _init_coll_MainGridSizer_Growables(self, parent):
   240         
   247         parent.AddGrowableCol(0)
   241         instances_buttons_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
   248         parent.AddGrowableRow(0)
   242         instances_buttons_sizer.AddGrowableCol(0)
   249         parent.AddGrowableRow(1)
   243         instances_buttons_sizer.AddGrowableRow(0)
   250 
   244         instances_sizer.AddSizer(instances_buttons_sizer, flag=wx.GROW)
   251     def _init_sizers(self):
   245         
   252         self.MainGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   246         instances_label = wx.StaticText(self.Editor, label=_(u'Instances:'))
   253         self.InstancesSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   247         instances_buttons_sizer.AddWindow(instances_label, flag=wx.ALIGN_BOTTOM)
   254         self.InstancesButtonsSizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
   248         
   255         self.TasksSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   249         for name, bitmap, help in [
   256         self.TasksButtonsSizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
   250                 ("AddInstanceButton", "add_element", _("Add instance")),
   257 
   251                 ("DeleteInstanceButton", "remove_element", _("Remove instance")),
   258         self._init_coll_MainGridSizer_Growables(self.MainGridSizer)
   252                 ("UpInstanceButton", "up", _("Move instance up")),
   259         self._init_coll_MainGridSizer_Items(self.MainGridSizer)
   253                 ("DownInstanceButton", "down", _("Move instance down"))]:
   260         self._init_coll_InstancesSizer_Growables(self.InstancesSizer)
   254             button = wx.lib.buttons.GenBitmapButton(self.Editor, 
   261         self._init_coll_InstancesSizer_Items(self.InstancesSizer)
   255                   bitmap=GetBitmap(bitmap), size=wx.Size(28, 28), style=wx.NO_BORDER)
   262         self._init_coll_InstancesButtonsSizer_Growables(self.InstancesButtonsSizer)
   256             button.SetToolTipString(help)
   263         self._init_coll_InstancesButtonsSizer_Items(self.InstancesButtonsSizer)
   257             setattr(self, name, button)
   264         self._init_coll_TasksSizer_Growables(self.TasksSizer)
   258             instances_buttons_sizer.AddWindow(button)
   265         self._init_coll_TasksSizer_Items(self.TasksSizer)
   259         
   266         self._init_coll_TasksButtonsSizer_Growables(self.TasksButtonsSizer)
   260         self.InstancesGrid = CustomGrid(self.Editor, style=wx.VSCROLL)
   267         self._init_coll_TasksButtonsSizer_Items(self.TasksButtonsSizer)
   261         self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, 
   268 
   262               self.OnInstancesGridCellChange)
   269         self.Editor.SetSizer(self.MainGridSizer)
   263         instances_sizer.AddWindow(self.InstancesGrid, flag=wx.GROW)
   270 
   264         
   271     def _init_Editor(self, prnt):
   265         self.Editor.SetSizer(main_sizer)
   272         self.Editor = wx.Panel(id=ID_RESOURCEEDITORPANEL, name='ResourceEditor', parent=prnt,
   266         
   273               size=wx.Size(0, 0), style=wx.SUNKEN_BORDER|wx.TAB_TRAVERSAL)
       
   274         
       
   275         self.staticText1 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT1,
       
   276               label=_(u'Tasks:'), name='staticText2', parent=self.Editor, pos=wx.Point(0,
       
   277               0), size=wx.DefaultSize, style=0)
       
   278 
       
   279         self.TasksGrid = CustomGrid(id=ID_RESOURCEEDITORTASKSGRID,
       
   280               name='TasksGrid', parent=self.Editor, pos=wx.Point(0, 0), 
       
   281               size=wx.Size(-1, -1), style=wx.VSCROLL)
       
   282         if wx.VERSION >= (2, 6, 0):
       
   283             self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange)
       
   284         else:
       
   285             wx.grid.EVT_GRID_CELL_CHANGE(self.TasksGrid, self.OnTasksGridCellChange)
       
   286         
       
   287         self.AddTaskButton = wx.Button(id=ID_RESOURCEEDITORADDTASKBUTTON, label=_('Add Task'),
       
   288               name='AddTaskButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   289               size=wx.DefaultSize, style=0)
       
   290         
       
   291         self.DeleteTaskButton = wx.Button(id=ID_RESOURCEEDITORDELETETASKBUTTON, label=_('Delete Task'),
       
   292               name='DeleteTaskButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   293               size=wx.DefaultSize, style=0)
       
   294         
       
   295         self.UpTaskButton = wx.Button(id=ID_RESOURCEEDITORUPTASKBUTTON, label='^',
       
   296               name='UpTaskButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   297               size=wx.Size(32, -1), style=0)
       
   298         
       
   299         self.DownTaskButton = wx.Button(id=ID_RESOURCEEDITORDOWNTASKBUTTON, label='v',
       
   300               name='DownTaskButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   301               size=wx.Size(32, -1), style=0)
       
   302         
       
   303         self.staticText2 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT2,
       
   304               label=_(u'Instances:'), name='staticText1', parent=self.Editor,
       
   305               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
       
   306 
       
   307         self.InstancesGrid = CustomGrid(id=ID_RESOURCEEDITORINSTANCESGRID,
       
   308               name='InstancesGrid', parent=self.Editor, pos=wx.Point(0, 0), 
       
   309               size=wx.Size(-1, -1), style=wx.VSCROLL)
       
   310         if wx.VERSION >= (2, 6, 0):
       
   311             self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange)
       
   312         else:
       
   313             wx.grid.EVT_GRID_CELL_CHANGE(self.InstancesGrid, self.OnInstancesGridCellChange)
       
   314         
       
   315         self.AddInstanceButton = wx.Button(id=ID_RESOURCEEDITORADDINSTANCEBUTTON, label=_('Add Instance'),
       
   316               name='AddInstanceButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   317               size=wx.DefaultSize, style=0)
       
   318         
       
   319         self.DeleteInstanceButton = wx.Button(id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON, label=_('Delete Instance'),
       
   320               name='DeleteInstanceButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   321               size=wx.DefaultSize, style=0)
       
   322         
       
   323         self.UpInstanceButton = wx.Button(id=ID_RESOURCEEDITORUPINSTANCEBUTTON, label='^',
       
   324               name='UpInstanceButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   325               size=wx.Size(32, -1), style=0)
       
   326         
       
   327         self.DownInstanceButton = wx.Button(id=ID_RESOURCEEDITORDOWNINSTANCEBUTTON, label='v',
       
   328               name='DownInstanceButton', parent=self.Editor, pos=wx.Point(0, 0),
       
   329               size=wx.Size(32, -1), style=0)
       
   330         
       
   331         self._init_sizers()
       
   332 
       
   333     def __init__(self, parent, tagname, window, controler):
   267     def __init__(self, parent, tagname, window, controler):
   334         EditorPanel.__init__(self, parent, tagname, window, controler)
   268         EditorPanel.__init__(self, parent, tagname, window, controler)
   335         
   269         
   336         self.RefreshHighlightsTimer = wx.Timer(self, -1)
   270         self.RefreshHighlightsTimer = wx.Timer(self, -1)
   337         self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)
   271         self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)