PLCOpenEditor.py
changeset 144 b67a5de5a24a
parent 138 9c74d00ce93e
child 145 4fb225afddf4
equal deleted inserted replaced
143:015a34da60eb 144:b67a5de5a24a
   516     def DeleteAllPages(self):
   516     def DeleteAllPages(self):
   517         if wx.VERSION >= (2, 8, 0):
   517         if wx.VERSION >= (2, 8, 0):
   518             notebook = self.GetNotebook()
   518             notebook = self.GetNotebook()
   519             if notebook is not None:
   519             if notebook is not None:
   520                 for idx in xrange(notebook.GetPageCount()):
   520                 for idx in xrange(notebook.GetPageCount()):
   521                     notebook.DeletePage(idx)
   521                     notebook.DeletePage(0)
   522         else:
   522         else:
   523             self.TabsOpened.DeleteAllPages()
   523             self.TabsOpened.DeleteAllPages()
   524 
   524 
   525     def SetPageText(self, idx, text):
   525     def SetPageText(self, idx, text):
   526         if wx.VERSION >= (2, 8, 0):
   526         if wx.VERSION >= (2, 8, 0):
   631         selected = self.GetPageSelection()
   631         selected = self.GetPageSelection()
   632         if selected != -1:
   632         if selected != -1:
   633             window = self.GetPage(selected)
   633             window = self.GetPage(selected)
   634             window.RefreshView()
   634             window.RefreshView()
   635             if variablepanel:
   635             if variablepanel:
   636                 self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName())
   636                 self.RefreshVariablePanel(window.GetTagName())
       
   637 
       
   638     def RefreshVariablePanel(self, tagname):
       
   639         self.VariablePanelIndexer.RefreshVariablePanel(tagname)
   637 
   640 
   638     def ShowProperties(self):
   641     def ShowProperties(self):
   639         old_values = self.Controler.GetProjectProperties()
   642         old_values = self.Controler.GetProjectProperties()
   640         dialog = ProjectDialog(self)
   643         dialog = ProjectDialog(self)
   641         dialog.SetValues(old_values)
   644         dialog.SetValues(old_values)
   682             self.RefreshEditMenu()
   685             self.RefreshEditMenu()
   683             self.RefreshProjectTree()
   686             self.RefreshProjectTree()
   684         event.Skip()
   687         event.Skip()
   685 
   688 
   686     def OnOpenProjectMenu(self, event):
   689     def OnOpenProjectMenu(self, event):
       
   690         if not self.Controler.ProjectIsSaved():
       
   691             dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)
       
   692             answer = dialog.ShowModal()
       
   693             dialog.Destroy()
       
   694             if answer == wx.ID_YES:
       
   695                 self.SaveProject()
       
   696             elif answer == wx.ID_CANCEL:
       
   697                 return
   687         filepath = self.Controler.GetFilePath()
   698         filepath = self.Controler.GetFilePath()
   688         if filepath != "":
   699         if filepath != "":
   689             directory = os.path.dirname(filepath)
   700             directory = os.path.dirname(filepath)
   690         else:
   701         else:
   691             directory = os.getcwd()
   702             directory = os.getcwd()
   692         dialog = wx.FileDialog(self, "Choose a file", directory, "",  "PLCOpen files (*.xml)|*.xml|All files|*.*", wx.OPEN)
   703         dialog = wx.FileDialog(self, "Choose a file", directory, "",  "PLCOpen files (*.xml)|*.xml|All files|*.*", wx.OPEN)
   693         if dialog.ShowModal() == wx.ID_OK:
   704         if dialog.ShowModal() == wx.ID_OK:
   694             filepath = dialog.GetPath()
   705             filepath = dialog.GetPath()
   695             if os.path.isfile(filepath):
   706             if os.path.isfile(filepath):
       
   707                 self.DeleteAllPages()
       
   708                 self.VariablePanelIndexer.RemoveAllPanels()
   696                 self.Controler.OpenXMLFile(filepath)
   709                 self.Controler.OpenXMLFile(filepath)
   697                 self.DeleteAllPages()
       
   698                 self.RefreshProjectTree()
   710                 self.RefreshProjectTree()
   699             self.RefreshTitle()
   711             self.RefreshTitle()
   700             self.RefreshFileMenu()
   712             self.RefreshFileMenu()
   701             self.RefreshEditMenu()
   713             self.RefreshEditMenu()
   702             self.RefreshToolBar()
   714             self.RefreshToolBar()
   719             self.RefreshEditMenu()
   731             self.RefreshEditMenu()
   720             self.RefreshToolBar()
   732             self.RefreshToolBar()
   721         event.Skip()
   733         event.Skip()
   722     
   734     
   723     def OnCloseProjectMenu(self, event):
   735     def OnCloseProjectMenu(self, event):
       
   736         if not self.Controler.ProjectIsSaved():
       
   737             dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)
       
   738             answer = dialog.ShowModal()
       
   739             dialog.Destroy()
       
   740             if answer == wx.ID_YES:
       
   741                 self.SaveProject()
       
   742             elif answer == wx.ID_CANCEL:
       
   743                 return
   724         self.DeleteAllPages()
   744         self.DeleteAllPages()
   725         self.VariablePanelIndexer.RemoveAllPanels()
   745         self.VariablePanelIndexer.RemoveAllPanels()
   726         self.ProjectTree.DeleteAllItems()
   746         self.ProjectTree.DeleteAllItems()
   727         self.Controler.Reset()
   747         self.Controler.Reset()
   728         self.RefreshTitle()
   748         self.RefreshTitle()
  2426         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  2446         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  2427         
  2447         
  2428         self.PouNames = []
  2448         self.PouNames = []
  2429         self.PouElementNames = []
  2449         self.PouElementNames = []
  2430         
  2450         
  2431         self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
  2451         if wx.VERSION >= (2, 8, 0):
  2432         
  2452             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(2).GetSizer().GetItem(1).GetSizer().GetAffirmativeButton().GetId())
       
  2453         elif wx.VERSION >= (2, 6, 0):
       
  2454             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
       
  2455         else:
       
  2456             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
       
  2457     
  2433     def OnOK(self, event):
  2458     def OnOK(self, event):
  2434         config_name = self.GetSizer().GetItem(1).GetWindow().GetValue()
  2459         config_name = self.GetSizer().GetItem(1).GetWindow().GetValue()
  2435         if config_name == "":
  2460         if config_name == "":
  2436             message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
  2461             message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
  2437             message.ShowModal()
  2462             message.ShowModal()
  2484         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  2509         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
  2485         
  2510         
  2486         self.PouNames = []
  2511         self.PouNames = []
  2487         self.PouElementNames = []
  2512         self.PouElementNames = []
  2488         
  2513         
  2489         self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
  2514         if wx.VERSION >= (2, 8, 0):
  2490         
  2515             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(2).GetSizer().GetItem(1).GetSizer().GetAffirmativeButton().GetId())
       
  2516         elif wx.VERSION >= (2, 6, 0):
       
  2517             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
       
  2518         else:
       
  2519             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
       
  2520 
  2491     def OnOK(self, event):
  2521     def OnOK(self, event):
  2492         resource_name = self.GetSizer().GetItem(1).GetWindow().GetValue()
  2522         resource_name = self.GetSizer().GetItem(1).GetWindow().GetValue()
  2493         if resource_name == "":
  2523         if resource_name == "":
  2494             message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
  2524             message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
  2495             message.ShowModal()
  2525             message.ShowModal()