editors/TextViewer.py
changeset 1062 fd7c9a7cf882
parent 1060 ac9896336b90
child 1065 36b7ce528911
equal deleted inserted replaced
1053:b0ac30ba7eaf 1062:fd7c9a7cf882
    78     ERROR_HIGHLIGHT: STC_PLC_ERROR,
    78     ERROR_HIGHLIGHT: STC_PLC_ERROR,
    79     SEARCH_RESULT_HIGHLIGHT: STC_PLC_SEARCH_RESULT,
    79     SEARCH_RESULT_HIGHLIGHT: STC_PLC_SEARCH_RESULT,
    80 }
    80 }
    81 
    81 
    82 def GetCursorPos(old, new):
    82 def GetCursorPos(old, new):
       
    83     if old == "":
       
    84         return 0
    83     old_length = len(old)
    85     old_length = len(old)
    84     new_length = len(new)
    86     new_length = len(new)
    85     common_length = min(old_length, new_length)
    87     common_length = min(old_length, new_length)
    86     i = 0
    88     i = 0
    87     for i in xrange(common_length):
    89     for i in xrange(common_length):
   443         
   445         
   444         if self.Controler is not None:
   446         if self.Controler is not None:
   445             self.ResetBuffer()
   447             self.ResetBuffer()
   446             self.DisableEvents = True
   448             self.DisableEvents = True
   447             old_cursor_pos = self.GetCurrentPos()
   449             old_cursor_pos = self.GetCurrentPos()
       
   450             line = self.Editor.GetFirstVisibleLine()
       
   451             column = self.Editor.GetXOffset()
   448             old_text = self.GetText()
   452             old_text = self.GetText()
   449             new_text = self.Controler.GetEditedElementText(self.TagName, self.Debug)
   453             new_text = self.Controler.GetEditedElementText(self.TagName, self.Debug)
   450             self.SetText(new_text)
   454             if old_text != new_text:
   451             new_cursor_pos = GetCursorPos(old_text, new_text)
   455                 self.SetText(new_text)
   452             if new_cursor_pos != None:
   456                 new_cursor_pos = GetCursorPos(old_text, new_text)
   453                 self.Editor.GotoPos(new_cursor_pos)
   457                 self.Editor.LineScroll(column, line)
   454             else:
   458                 if new_cursor_pos != None:
   455                 self.Editor.GotoPos(old_cursor_pos)
   459                     self.Editor.GotoPos(new_cursor_pos)
   456             self.Editor.ScrollToColumn(0)
   460                 else:
   457             self.RefreshJumpList()
   461                     self.Editor.GotoPos(old_cursor_pos)
   458             self.Editor.EmptyUndoBuffer()
   462                 self.RefreshJumpList()
       
   463                 self.Editor.EmptyUndoBuffer()
   459             self.DisableEvents = False
   464             self.DisableEvents = False
   460             
   465             
   461             self.RefreshVariableTree()
   466             self.RefreshVariableTree()
   462             
   467             
   463             self.TypeNames = [typename.upper() for typename in self.Controler.GetDataTypes(self.TagName, True, self.Debug)]
   468             self.TypeNames = [typename.upper() for typename in self.Controler.GetDataTypes(self.TagName, True, self.Debug)]
   762         self.Editor.CmdKeyExecute(wx.stc.STC_CMD_PASTE)
   767         self.Editor.CmdKeyExecute(wx.stc.STC_CMD_PASTE)
   763         self.DisableEvents = False
   768         self.DisableEvents = False
   764         self.RefreshModel()
   769         self.RefreshModel()
   765         self.RefreshBuffer()
   770         self.RefreshBuffer()
   766     
   771     
       
   772     def Search(self, criteria):
       
   773         return self.Controler.SearchInPou(self.TagName, criteria, self.Debug)
       
   774     
   767     def Find(self, direction, search_params):
   775     def Find(self, direction, search_params):
   768         if self.SearchParams != search_params:
   776         if self.SearchParams != search_params:
   769             self.ClearHighlights(SEARCH_RESULT_HIGHLIGHT)
   777             self.ClearHighlights(SEARCH_RESULT_HIGHLIGHT)
   770             
   778             
   771             self.SearchParams = search_params
   779             self.SearchParams = search_params
   777                 "filter": "all"}
   785                 "filter": "all"}
   778             
   786             
   779             self.SearchResults = [
   787             self.SearchResults = [
   780                 (infos[1:], start, end, SEARCH_RESULT_HIGHLIGHT)
   788                 (infos[1:], start, end, SEARCH_RESULT_HIGHLIGHT)
   781                 for infos, start, end, text in 
   789                 for infos, start, end, text in 
   782                 self.Controler.SearchInPou(self.TagName, criteria, self.Debug)]
   790                 self.Search(criteria)]
       
   791             self.CurrentFindHighlight = None
   783         
   792         
   784         if len(self.SearchResults) > 0:
   793         if len(self.SearchResults) > 0:
   785             if self.CurrentFindHighlight is not None:
   794             if self.CurrentFindHighlight is not None:
   786                 old_idx = self.SearchResults.index(self.CurrentFindHighlight)
   795                 old_idx = self.SearchResults.index(self.CurrentFindHighlight)
   787                 if self.SearchParams["wrap"]:
   796                 if self.SearchParams["wrap"]:
   798             
   807             
   799         else:
   808         else:
   800             if self.CurrentFindHighlight is not None:
   809             if self.CurrentFindHighlight is not None:
   801                 self.RemoveHighlight(*self.CurrentFindHighlight)
   810                 self.RemoveHighlight(*self.CurrentFindHighlight)
   802             self.CurrentFindHighlight = None
   811             self.CurrentFindHighlight = None
       
   812     
       
   813         print self.CurrentFindHighlight
   803     
   814     
   804     def RefreshModel(self):
   815     def RefreshModel(self):
   805         self.RefreshJumpList()
   816         self.RefreshJumpList()
   806         self.Controler.SetEditedElementText(self.TagName, self.GetText())
   817         self.Controler.SetEditedElementText(self.TagName, self.GetText())
   807     
   818