diff -r 4ecc2f3690f4 -r 4864f7f01e1d objdictgen/networkedit.py --- a/objdictgen/networkedit.py Tue Jul 17 18:20:50 2007 +0200 +++ b/objdictgen/networkedit.py Sat Jul 21 10:39:25 2007 +0200 @@ -37,7 +37,6 @@ from subindextable import * from commondialogs import * from doc_index.DS301_index import * -from config_utils import * def create(parent): return networkedit(parent) @@ -65,8 +64,10 @@ else: usage() sys.exit(2) - -ScriptDirectory = sys.path[0] +ScriptDirectory = "" +for path in sys.path: + if os.path.isfile(os.path.join(path, "networkedit.py")): + ScriptDirectory = path try: from wxPython.html import * @@ -170,7 +171,7 @@ def _init_coll_menuBar1_Menus(self, parent): # generated method, don't edit - if self.Mode == "solo": + if self.ModeSolo: parent.Append(menu=self.FileMenu, title='File') parent.Append(menu=self.NetworkMenu, title='Network') parent.Append(menu=self.EditMenu, title='Edit') @@ -222,7 +223,7 @@ kind=wx.ITEM_NORMAL, text='CAN Festival Docs\tF2') self.Bind(wx.EVT_MENU, self.OnHelpCANFestivalMenu, id=wxID_NETWORKEDITHELPMENUITEMS1) - if Html_Window and self.Mode == "solo": + if Html_Window and self.ModeSolo: parent.Append(help='', id=wxID_NETWORKEDITHELPMENUITEMS2, kind=wx.ITEM_NORMAL, text='About') self.Bind(wx.EVT_MENU, self.OnAboutMenu, @@ -246,8 +247,8 @@ id=wxID_NETWORKEDITFILEMENUITEMS0) self.Bind(wx.EVT_MENU, self.OnSaveProjectMenu, id=wxID_NETWORKEDITFILEMENUITEMS1) -## self.Bind(wx.EVT_MENU, self.OnCloseProjectMenu, -## id=wxID_NETWORKEDITFILEMENUITEMS2) + self.Bind(wx.EVT_MENU, self.OnCloseProjectMenu, + id=wxID_NETWORKEDITFILEMENUITEMS2) self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wxID_NETWORKEDITFILEMENUITEMS4) self.Bind(wx.EVT_MENU, self.OnNewProjectMenu, @@ -267,8 +268,8 @@ id=wxID_NETWORKEDITNETWORKMENUITEMS0) self.Bind(wx.EVT_MENU, self.OnRemoveSlaveMenu, id=wxID_NETWORKEDITNETWORKMENUITEMS1) - self.Bind(wx.EVT_MENU, self.OnBuildMasterMenu, - id=wxID_NETWORKEDITNETWORKMENUITEMS3) +## self.Bind(wx.EVT_MENU, self.OnBuildMasterMenu, +## id=wxID_NETWORKEDITNETWORKMENUITEMS3) def _init_coll_AddMenu_Items(self, parent): # generated method, don't edit @@ -313,7 +314,7 @@ self.menuBar1 = wx.MenuBar() self.menuBar1.SetEvtHandlerEnabled(True) - if self.Mode == "solo": + if self.ModeSolo: self.FileMenu = wx.Menu(title='') self.NetworkMenu = wx.Menu(title='') @@ -325,7 +326,7 @@ self.HelpMenu = wx.Menu(title='') self._init_coll_menuBar1_Menus(self.menuBar1) - if self.Mode == "solo": + if self.ModeSolo: self._init_coll_FileMenu_Items(self.FileMenu) self._init_coll_NetworkMenu_Items(self.NetworkMenu) self._init_coll_EditMenu_Items(self.EditMenu) @@ -340,7 +341,7 @@ self._init_utils() self.SetClientSize(wx.Size(1000, 700)) self.SetMenuBar(self.menuBar1) -## self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=wxID_NETWORKEDIT) + self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=wxID_NETWORKEDIT) self.NetworkNodes = wx.Notebook(id=wxID_NETWORKEDITNETWORKNODES, name='NetworkNodes', parent=self, pos=wx.Point(0, 0), @@ -353,12 +354,14 @@ self._init_coll_HelpBar_Fields(self.HelpBar) self.SetStatusBar(self.HelpBar) - def __init__(self, parent, mode = "solo", nodelist = None): - self.Mode = mode + def __init__(self, parent, nodelist = None): + self.ModeSolo = nodelist == None self._init_ctrls(parent) + self.Parent = parent self.HtmlFrameOpened = [] + self.BusId = None - if self.Mode == "solo": + if self.ModeSolo: self.Manager = NodeManager(ScriptDirectory) if projectOpen: self.NodeList = NodeList(self.Manager) @@ -370,11 +373,34 @@ else: self.NodeList = nodelist self.Manager = self.NodeList.GetManager() + self.NodeList.SetCurrentSelected(0) + self.RefreshNetworkNodes() + self.RefreshProfileMenu() self.RefreshBufferState() self.RefreshTitle() self.RefreshMainMenu() + def SetBusId(self, bus_id): + self.BusId = bus_id + + def GetBusId(self): + return self.BusId + + def GetCurrentNodeId(self): + selected = self.NetworkNodes.GetSelection() + # At init selected = -1 + if selected > 0: + window = self.NetworkNodes.GetPage(selected) + return window.GetIndex() + else: + return 0 + + def OnCloseFrame(self, event): + if not self.ModeSolo: + self.Parent.CloseEditor(self.BusId) + event.Skip() + def GetNoteBook(self): return self.NetworkNodes @@ -437,6 +463,7 @@ if dialog.ShowModal() == wxID_OK: projectpath = dialog.GetPath() if os.path.isdir(projectpath) and len(os.listdir(projectpath)) == 0: + os.mkdir(os.path.join(projectpath, "eds")) manager = NodeManager(ScriptDirectory) nodelist = NodeList(manager) result = nodelist.LoadProject(projectpath) @@ -493,37 +520,27 @@ message.Destroy() event.Skip() - def OnBuildMasterMenu(self, event): + def OnCloseProjectMenu(self, event): if self.NodeList: - dialog = wxFileDialog(self, "Choose a locations file", os.getcwd(), "", "text files (*.txt)|*.od|All files|*.*", wxOPEN|wxCHANGE_DIR) - if dialog.ShowModal() == wxID_OK: - filepath = dialog.GetPath() + if self.NodeList.HasChanged(): + dialog = wxMessageDialog(self, "There are changes, do you want to save?", "Close Project", wxYES_NO|wxCANCEL|wxICON_QUESTION) + answer = dialog.ShowModal() dialog.Destroy() - if os.path.isfile(filepath): - dialog = wxTextEntryDialog(self, "Busname selection", "Please enter the bus number", "", wxOK|wxCANCEL) - if dialog.ShowModal() == wxID_OK: - busname = None - try: - busname = int(dialog.GetValue()) - except: - pass - if busname: - file = open(filepath, "r") - locations = [(elements[0], elements[1]) for elements in [line.strip().split(" ") for line in file.readlines()]] - GenerateConciseDCF(locations, busname, self.NodeList) - message = wxMessageDialog(self, "Master node generation successful!", "Error", wxOK|wxICON_ERROR) - message.ShowModal() - message.Destroy() - else: - message = wxMessageDialog(self, "Busname must be a number!", "Error", wxOK|wxICON_ERROR) - message.ShowModal() - message.Destroy() - else: - message = wxMessageDialog(self, "\"%s\" isn't a valid file!"%filepath, "Error", wxOK|wxICON_ERROR) - message.ShowModal() - message.Destroy() - event.Skip() - + if answer == wxID_YES: + result = self.NodeList.SaveProject() + if result: + message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR) + message.ShowModal() + message.Destroy() + elif answer == wxID_NO: + self.NodeList.ForceChanged(False) + if not self.NodeList.HasChanged(): + self.Manager = None + self.NodeList = None + self.RefreshNetworkNodes() + self.RefreshTitle() + self.RefreshMainMenu() + event.Skip() #------------------------------------------------------------------------------- # Slave Nodes Management @@ -640,9 +657,9 @@ def RefreshMainMenu(self): if self.menuBar1: + self.NetworkMenu.Enable(wxID_NETWORKEDITNETWORKMENUITEMS3, False) if self.NodeList == None: - self.NetworkMenu.Enable(wxID_NETWORKEDITNETWORKMENUITEMS3, False) - if self.Mode == "solo": + if self.ModeSolo: self.menuBar1.EnableTop(1, False) self.menuBar1.EnableTop(2, False) self.menuBar1.EnableTop(3, False) @@ -654,8 +671,7 @@ self.menuBar1.EnableTop(1, False) self.menuBar1.EnableTop(2, False) else: - self.NetworkMenu.Enable(wxID_NETWORKEDITNETWORKMENUITEMS3, True) - if self.Mode == "solo": + if self.ModeSolo: self.menuBar1.EnableTop(1, True) if self.FileMenu: self.FileMenu.Enable(wxID_NETWORKEDITFILEMENUITEMS1, True) @@ -696,14 +712,6 @@ edititem.SetText("Other Profile") edititem.Enable(False) - def GetProfileCallBack(self, text): - def ProfileCallBack(event): - self.Manager.AddSpecificEntryToCurrent(text) - self.RefreshBufferState() - self.RefreshCurrentIndexList() - event.Skip() - return ProfileCallBack - #------------------------------------------------------------------------------- # Buffer Functions #-------------------------------------------------------------------------------