--- a/PLCOpenEditor.py Wed Aug 01 12:44:51 2012 +0200
+++ b/PLCOpenEditor.py Fri Aug 10 00:32:05 2012 +0200
@@ -113,7 +113,7 @@
from PLCControler import *
from SearchResultPanel import SearchResultPanel
from controls import CustomTree, LibraryPanel, PouInstanceVariablesPanel, DebugVariablePanel
-from dialogs import ProjectDialog, PouTransitionDialog, PouActionDialog
+from dialogs import ProjectDialog, PouTransitionDialog, PouActionDialog, FindInPouDialog
# Define PLCOpenEditor controls id
[ID_PLCOPENEDITOR, ID_PLCOPENEDITORLEFTNOTEBOOK,
@@ -135,8 +135,9 @@
[ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, ID_PLCOPENEDITOREDITMENUADDDATATYPE,
ID_PLCOPENEDITOREDITMENUADDFUNCTION, ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK,
ID_PLCOPENEDITOREDITMENUADDPROGRAM, ID_PLCOPENEDITOREDITMENUADDCONFIGURATION,
+ ID_PLCOPENEDITOREDITMENUFINDNEXT, ID_PLCOPENEDITOREDITMENUFINDPREVIOUS,
ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT,
-] = [wx.NewId() for _init_coll_EditMenu_Items in range(7)]
+] = [wx.NewId() for _init_coll_EditMenu_Items in range(9)]
# Define PLCOpenEditor DisplayMenu extra items id
[ID_PLCOPENEDITORDISPLAYMENURESETPERSPECTIVE,
@@ -446,8 +447,15 @@
AppendMenu(parent, help='', id=wx.ID_PASTE,
kind=wx.ITEM_NORMAL, text=_(u'Paste\tCTRL+V'))
parent.AppendSeparator()
+ AppendMenu(parent, help='', id=wx.ID_FIND,
+ kind=wx.ITEM_NORMAL, text=_(u'Find\tCTRL+F'))
+ AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUFINDNEXT,
+ kind=wx.ITEM_NORMAL, text=_(u'Find Next\tCTRL+K'))
+ AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUFINDPREVIOUS,
+ kind=wx.ITEM_NORMAL, text=_(u'Find Previous\tCTRL+SHIFT+K'))
+ parent.AppendSeparator()
AppendMenu(parent, help='', id=ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT,
- kind=wx.ITEM_NORMAL, text=_(u'Search in Project\tCTRL+F'))
+ kind=wx.ITEM_NORMAL, text=_(u'Search in Project\tCTRL+SHIFT+F'))
parent.AppendSeparator()
add_menu = wx.Menu(title='')
self._init_coll_AddMenu_Items(add_menu)
@@ -462,6 +470,13 @@
self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT)
self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY)
self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE)
+ self.Bind(wx.EVT_MENU, self.OnFindMenu, id=wx.ID_FIND)
+ self.Bind(wx.EVT_MENU, self.OnFindNextMenu,
+ id=ID_PLCOPENEDITOREDITMENUFINDNEXT)
+ self.Bind(wx.EVT_MENU, self.OnFindPreviousMenu,
+ id=ID_PLCOPENEDITOREDITMENUFINDPREVIOUS)
+ self.Bind(wx.EVT_MENU, self.OnSearchInProjectMenu,
+ id=ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT)
self.Bind(wx.EVT_MENU, self.OnSearchInProjectMenu,
id=ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT)
self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu,
@@ -693,6 +708,9 @@
self.AUIManager.Update()
+ self.FindDialog = FindInPouDialog(self)
+ self.FindDialog.Hide()
+
## Constructor of the PLCOpenEditor class.
# @param parent The parent window.
# @param controler The controler been used by PLCOpenEditor (default: None).
@@ -750,6 +768,7 @@
self.CurrentEditorToolBar = []
self.CurrentMenu = None
self.SelectedItem = None
+ self.SearchParams = None
self.Highlights = {}
self.DrawingMode = FREEDRAWING_MODE
#self.DrawingMode = DRIVENDRAWING_MODE
@@ -766,6 +785,9 @@
self.SetRefreshFunctions()
+ def __del__(self):
+ self.FindDialog.Destroy()
+
def ResetStarting(self):
self.Starting = False
@@ -1066,9 +1088,11 @@
# Refresh all window elements that have changed
wx.CallAfter(self._Refresh, TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
wx.CallAfter(self.RefreshTabCtrlEvent)
+ wx.CallAfter(self.CloseFindInPouDialog)
event.Skip()
else:
event.Veto()
+
def GetCopyBuffer(self):
data = None
@@ -1278,6 +1302,11 @@
#self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO, True)
#self.EditMenu.Check(ID_PLCOPENEDITOREDITMENUENABLEUNDOREDO,
# self.Controler.IsProjectBufferEnabled())
+ self.EditMenu.Enable(wx.ID_FIND, selected > -1)
+ self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUFINDNEXT,
+ selected > -1 and self.SearchParams is not None)
+ self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUFINDPREVIOUS,
+ selected > -1 and self.SearchParams is not None)
self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, True)
self.EditMenu.Enable(wx.ID_ADD, True)
@@ -1315,6 +1344,9 @@
self.EditMenu.Enable(wx.ID_PASTE, False)
MenuToolBar.EnableTool(wx.ID_PASTE, False)
self.EditMenu.Enable(wx.ID_SELECTALL, False)
+ self.EditMenu.Enable(wx.ID_FIND, False)
+ self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUFINDNEXT, False)
+ self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUFINDPREVIOUS, False)
self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
MenuToolBar.EnableTool(ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, False)
self.EditMenu.Enable(wx.ID_ADD, False)
@@ -1394,6 +1426,29 @@
event.m_keyCode = wx.WXK_DELETE
window.ProcessEvent(event)
+ def OnFindMenu(self, event):
+ if not self.FindDialog.IsShown():
+ self.FindDialog.Show()
+
+ def CloseFindInPouDialog(self):
+ selected = self.TabsOpened.GetSelection()
+ if selected == -1 and self.FindDialog.IsShown():
+ self.FindDialog.Hide()
+
+ def OnFindNextMenu(self, event):
+ self.FindInPou(1)
+
+ def OnFindPreviousMenu(self, event):
+ self.FindInPou(-1)
+
+ def FindInPou(self, direction, search_params=None):
+ if search_params is not None:
+ self.SearchParams = search_params
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ window = self.TabsOpened.GetPage(selected)
+ window.Find(direction, self.SearchParams)
+
def OnSearchInProjectMenu(self, event):
dialog = SearchInProjectDialog(self)
if dialog.ShowModal() == wx.ID_OK: