editors/CodeFileEditor.py
changeset 1138 cf2a6a7c87e8
parent 1136 5fac491d3a0e
child 1139 f9cf74053b7d
equal deleted inserted replaced
1137:c37f8d379ab0 1138:cf2a6a7c87e8
   170                     wx.CallAfter(self.RefreshModel)
   170                     wx.CallAfter(self.RefreshModel)
   171         wx.CallAfter(self.RefreshSectionStyling)
   171         wx.CallAfter(self.RefreshSectionStyling)
   172         event.Skip()
   172         event.Skip()
   173     
   173     
   174     def OnDoDrop(self, event):
   174     def OnDoDrop(self, event):
   175         self.ResetBuffer()
   175         try:
   176         wx.CallAfter(self.RefreshModel)
   176             values = eval(event.GetDragText())
       
   177         except:
       
   178             values = event.GetDragText()
       
   179         if isinstance(values, tuple):
       
   180             message = None
       
   181             if values[3] == self.Controler.GetCurrentLocation():
       
   182                 self.ResetBuffer()
       
   183                 event.SetDragText(values[0])
       
   184                 wx.CallAfter(self.RefreshModel)
       
   185             else:
       
   186                 event.SetDragText("")
       
   187         else:
       
   188             self.ResetBuffer()
       
   189             wx.CallAfter(self.RefreshModel)
   177         event.Skip()
   190         event.Skip()
   178 
   191 
   179     # Buffer the last model state
   192     # Buffer the last model state
   180     def RefreshBuffer(self):
   193     def RefreshBuffer(self):
   181         self.Controler.BufferCodeFile()
   194         self.Controler.BufferCodeFile()
   729     def OnVariablesGridCellLeftClick(self, event):
   742     def OnVariablesGridCellLeftClick(self, event):
   730         if event.GetCol() == 0:
   743         if event.GetCol() == 0:
   731             row = event.GetRow()
   744             row = event.GetRow()
   732             data_type = self.Table.GetValueByName(row, "Type")
   745             data_type = self.Table.GetValueByName(row, "Type")
   733             var_name = self.Table.GetValueByName(row, "Name")
   746             var_name = self.Table.GetValueByName(row, "Name")
   734             location = "_".join(map(lambda x:str(x), self.Controler.GetCurrentLocation()))
   747             data = wx.TextDataObject(str((var_name, "Global", data_type, 
   735             data = wx.TextDataObject(str(("%s_%s" % (var_name, location), 
   748                     self.Controler.GetCurrentLocation())))
   736                                           "Global", data_type, "")))
       
   737             dragSource = wx.DropSource(self.VariablesGrid)
   749             dragSource = wx.DropSource(self.VariablesGrid)
   738             dragSource.SetData(data)
   750             dragSource.SetData(data)
   739             dragSource.DoDragDrop()
   751             dragSource.DoDragDrop()
   740             return
   752             return
   741         event.Skip()
   753         event.Skip()
   745 #                          CodeFileEditor Main Frame Class
   757 #                          CodeFileEditor Main Frame Class
   746 #-------------------------------------------------------------------------------
   758 #-------------------------------------------------------------------------------
   747 
   759 
   748 class CodeFileEditor(ConfTreeNodeEditor):
   760 class CodeFileEditor(ConfTreeNodeEditor):
   749     
   761     
   750     CONFNODEEDITOR_TABS = [
   762     CONFNODEEDITOR_TABS = []
   751         (_("Variables"), "_create_VariablesPanel")]
   763     CODE_EDITOR = None
   752     
   764     
   753     def _create_VariablesPanel(self, prnt):
   765     def _create_CodePanel(self, prnt):
   754         self.VariablesPanel = VariablesEditor(prnt, self.ParentWindow, self.Controler)
   766         self.CodeEditorPanel = wx.SplitterWindow(prnt)
   755         
   767         self.CodeEditorPanel.SetMinimumPaneSize(1)
   756         return self.VariablesPanel
   768         
       
   769         self.VariablesPanel = VariablesEditor(self.CodeEditorPanel, 
       
   770                 self.ParentWindow, self.Controler)
       
   771         
       
   772         if self.CODE_EDITOR is not None:
       
   773             self.CodeEditor = self.CODE_EDITOR(self.CodeEditorPanel, 
       
   774                         self.ParentWindow, self.Controler)
       
   775             
       
   776             self.CodeEditorPanel.SplitHorizontally(self.VariablesPanel, 
       
   777                     self.CodeEditor, 150)
       
   778         else:
       
   779             self.CodeEditorPanel.Initialize(self.VariablesPanel)
       
   780         
       
   781         return self.CodeEditorPanel
   757     
   782     
   758     def __init__(self, parent, controler, window):
   783     def __init__(self, parent, controler, window):
   759         ConfTreeNodeEditor.__init__(self, parent, controler, window)
   784         ConfTreeNodeEditor.__init__(self, parent, controler, window)
       
   785         
       
   786         wx.CallAfter(self.CodeEditorPanel.SetSashPosition, 150)
   760     
   787     
   761     def GetBufferState(self):
   788     def GetBufferState(self):
   762         return self.Controler.GetBufferState()
   789         return self.Controler.GetBufferState()
   763         
   790         
   764     def Undo(self):
   791     def Undo(self):
   771     
   798     
   772     def RefreshView(self):
   799     def RefreshView(self):
   773         ConfTreeNodeEditor.RefreshView(self)
   800         ConfTreeNodeEditor.RefreshView(self)
   774         
   801         
   775         self.VariablesPanel.RefreshView()
   802         self.VariablesPanel.RefreshView()
   776             
   803         self.CodeEditor.RefreshView()
       
   804     
       
   805     def Find(self, direction, search_params):
       
   806         self.CodeEditor.Find(direction, search_params)
       
   807