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 |