plugins/c_ext/CFileEditor.py
changeset 658 94417ab25510
parent 656 c1792dfc8c7e
child 665 aec7aca89f3e
equal deleted inserted replaced
657:340c0b9caeca 658:94417ab25510
   208                         self.StartBuffering()
   208                         self.StartBuffering()
   209                     elif self.CurrentAction[0] != "Add" or self.CurrentAction[1] != event.GetPosition() - 1:
   209                     elif self.CurrentAction[0] != "Add" or self.CurrentAction[1] != event.GetPosition() - 1:
   210                         self.Controler.EndBuffering()
   210                         self.Controler.EndBuffering()
   211                         self.StartBuffering()
   211                         self.StartBuffering()
   212                     self.CurrentAction = ("Add", event.GetPosition())
   212                     self.CurrentAction = ("Add", event.GetPosition())
       
   213                     wx.CallAfter(self.RefreshModel)
   213                 elif mod_type&wx.stc.STC_MOD_BEFOREDELETE:
   214                 elif mod_type&wx.stc.STC_MOD_BEFOREDELETE:
   214                     if self.CurrentAction == None:
   215                     if self.CurrentAction == None:
   215                         self.StartBuffering()
   216                         self.StartBuffering()
   216                     elif self.CurrentAction[0] != "Delete" or self.CurrentAction[1] != event.GetPosition() + 1:
   217                     elif self.CurrentAction[0] != "Delete" or self.CurrentAction[1] != event.GetPosition() + 1:
   217                         self.Controler.EndBuffering()
   218                         self.Controler.EndBuffering()
   218                         self.StartBuffering()
   219                         self.StartBuffering()
   219                     self.CurrentAction = ("Delete", event.GetPosition())
   220                     self.CurrentAction = ("Delete", event.GetPosition())
       
   221                     wx.CallAfter(self.RefreshModel)
   220         event.Skip()
   222         event.Skip()
   221     
   223     
   222     def OnDoDrop(self, event):
   224     def OnDoDrop(self, event):
   223         self.ResetBuffer()
   225         self.ResetBuffer()
   224         wx.CallAfter(self.RefreshModel)
   226         wx.CallAfter(self.RefreshModel)
   225         event.Skip()
   227         event.Skip()
   226 
   228 
   227     def IsViewing(self, name):
       
   228         return self.Name == name
       
   229 
       
   230     # Buffer the last model state
   229     # Buffer the last model state
   231     def RefreshBuffer(self):
   230     def RefreshBuffer(self):
   232         self.Controler.BufferCFile()
   231         self.Controler.BufferCFile()
   233         if self.ParentWindow:
   232         if self.ParentWindow is not None:
   234             self.ParentWindow.RefreshTitle()
   233             self.ParentWindow.RefreshTitle()
   235             self.ParentWindow.RefreshFileMenu()
   234             self.ParentWindow.RefreshFileMenu()
   236             self.ParentWindow.RefreshEditMenu()
   235             self.ParentWindow.RefreshEditMenu()
   237             self.ParentWindow.RefreshPageTitles()
   236             self.ParentWindow.RefreshPageTitles()
   238     
   237     
   239     def StartBuffering(self):
   238     def StartBuffering(self):
   240         self.Controler.StartBuffering()
   239         self.Controler.StartBuffering()
   241         if self.ParentWindow:
   240         if self.ParentWindow is not None:
   242             self.ParentWindow.RefreshTitle()
   241             self.ParentWindow.RefreshTitle()
   243             self.ParentWindow.RefreshFileMenu()
   242             self.ParentWindow.RefreshFileMenu()
   244             self.ParentWindow.RefreshEditMenu()
   243             self.ParentWindow.RefreshEditMenu()
   245             self.ParentWindow.RefreshPageTitles()
   244             self.ParentWindow.RefreshPageTitles()
   246     
   245     
   293                 self.AutoCompSetIgnoreCase(False)  # so this needs to match
   292                 self.AutoCompSetIgnoreCase(False)  # so this needs to match
   294 
   293 
   295                 # Images are specified with a appended "?type"
   294                 # Images are specified with a appended "?type"
   296                 self.AutoCompShow(0, " ".join([word + "?1" for word in CPP_KEYWORDS]))
   295                 self.AutoCompShow(0, " ".join([word + "?1" for word in CPP_KEYWORDS]))
   297         else:
   296         else:
   298             wx.CallAfter(self.RefreshModel)
       
   299             event.Skip()
   297             event.Skip()
   300 
   298 
   301     def OnKillFocus(self, event):
   299     def OnKillFocus(self, event):
   302         self.AutoCompCancel()
   300         self.AutoCompCancel()
   303         event.Skip()
   301         event.Skip()
   615             attr.SetAlignment(self.ColAlignements[col], wx.ALIGN_CENTRE)
   613             attr.SetAlignment(self.ColAlignements[col], wx.ALIGN_CENTRE)
   616             self.VariablesGrid.SetColAttr(col, attr)
   614             self.VariablesGrid.SetColAttr(col, attr)
   617             self.VariablesGrid.SetColSize(col, self.ColSizes[col])
   615             self.VariablesGrid.SetColSize(col, self.ColSizes[col])
   618         self.Table.ResetView(self.VariablesGrid)
   616         self.Table.ResetView(self.VariablesGrid)
   619 
   617 
   620     def __del__(self):
       
   621         self.Controler.OnCloseEditor()
       
   622 
       
   623     def IsViewing(self, name):
       
   624         return name == "Variables"
       
   625 
       
   626     def RefreshModel(self):
   618     def RefreshModel(self):
   627         self.Controler.SetVariables(self.Table.GetData())
   619         self.Controler.SetVariables(self.Table.GetData())
   628         self.RefreshBuffer()
   620         self.RefreshBuffer()
   629         
   621         
   630     def ResetBuffer(self):
       
   631         pass
       
   632 
       
   633     # Buffer the last model state
   622     # Buffer the last model state
   634     def RefreshBuffer(self):
   623     def RefreshBuffer(self):
   635         self.Controler.BufferCFile()
   624         self.Controler.BufferCFile()
   636         self.ParentWindow.RefreshTitle()
   625         self.ParentWindow.RefreshTitle()
   637         self.ParentWindow.RefreshFileMenu()
   626         self.ParentWindow.RefreshFileMenu()
   851 ] = [wx.NewId() for _init_ctrls in range(4)]
   840 ] = [wx.NewId() for _init_ctrls in range(4)]
   852 
   841 
   853 class CFileEditor(EditorPanel):
   842 class CFileEditor(EditorPanel):
   854     
   843     
   855     def _init_Editor(self, prnt):
   844     def _init_Editor(self, prnt):
   856         self.Editor = wx.Panel(id=-1, parent=prnt, pos=wx.Point(0, 0), 
   845         self.Editor = wx.Panel(id=ID_CFILEEDITOR, parent=prnt, pos=wx.Point(0, 0), 
   857                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   846                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   858         
   847         
   859         self.Panels = {}
   848         self.Panels = {}
   860         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2 * len(CFILE_PARTS) + 1, vgap=0)
   849         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2 * len(CFILE_PARTS) + 1, vgap=0)
   861         self.MainSizer.AddGrowableCol(0)
   850         self.MainSizer.AddGrowableCol(0)
   890         EditorPanel.__init__(self, parent, "", window, controler)
   879         EditorPanel.__init__(self, parent, "", window, controler)
   891         
   880         
   892         img = wx.Bitmap(self.Controler.GetIconPath("Cfile.png"), wx.BITMAP_TYPE_PNG).ConvertToImage()
   881         img = wx.Bitmap(self.Controler.GetIconPath("Cfile.png"), wx.BITMAP_TYPE_PNG).ConvertToImage()
   893         self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16)))
   882         self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16)))
   894         
   883         
       
   884     def __del__(self):
       
   885         self.Controler.OnCloseEditor()
       
   886     
   895     def GetTitle(self):
   887     def GetTitle(self):
   896         fullname = self.Controler.PlugFullName()
   888         fullname = self.Controler.PlugFullName()
   897         if not self.Controler.CFileIsSaved():
   889         if not self.Controler.CFileIsSaved():
   898             return "~%s~" % fullname
   890             return "~%s~" % fullname
   899         return fullname
   891         return fullname