--- 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
#-------------------------------------------------------------------------------