diff -r 2cb34a4ac65a -r 6b5a4c21e061 doc/doxygen/html/objdictedit_8py-source.html --- a/doc/doxygen/html/objdictedit_8py-source.html Tue Jun 05 17:34:33 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1052 +0,0 @@ - - -CanFestival: /home/epimerde/documents/tc11/CanFestival-3/objdictgen/objdictedit.py Source File - - - - -
-
-
-
-

/home/epimerde/documents/tc11/CanFestival-3/objdictgen/objdictedit.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
-00002 # -*- coding: utf-8 -*-
-00003 
-00004 #This file is part of CanFestival, a library implementing CanOpen Stack. 
-00005 #
-00006 #Copyright (C): Edouard TISSERANT, Francis DUPIN and Laurent BESSARD
-00007 #
-00008 #See COPYING file for copyrights details.
-00009 #
-00010 #This library is free software; you can redistribute it and/or
-00011 #modify it under the terms of the GNU Lesser General Public
-00012 #License as published by the Free Software Foundation; either
-00013 #version 2.1 of the License, or (at your option) any later version.
-00014 #
-00015 #This library is distributed in the hope that it will be useful,
-00016 #but WITHOUT ANY WARRANTY; without even the implied warranty of
-00017 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00018 #Lesser General Public License for more details.
-00019 #
-00020 #You should have received a copy of the GNU Lesser General Public
-00021 #License along with this library; if not, write to the Free Software
-00022 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-00023 
-00024 from wxPython.wx import *
-00025 from wxPython.grid import *
-00026 import wx
-00027 import wx.grid
-00028 
-00029 from types import *
-00030 import os, re, platform, sys, time, traceback, getopt
-00031 
-00032 __version__ = "$Revision$"
-00033 
-00034 from node import OD_Subindex, OD_MultipleSubindexes, OD_IdenticalSubindexes, OD_IdenticalIndexes
-00035 
-00036 from nodemanager import *
-00037 from subindextable import *
-00038 from commondialogs import *
-00039 from doc_index.DS301_index import *
-00040 
-00041 try:
-00042     from wxPython.html import *
-00043 
-00044     wxEVT_HTML_URL_CLICK = wxNewId()
-00045 
-00046     def EVT_HTML_URL_CLICK(win, func):
-00047         win.Connect(-1, -1, wxEVT_HTML_URL_CLICK, func)
-00048 
-00049     class wxHtmlWindowUrlClick(wxPyEvent):
-00050         def __init__(self, linkinfo):
-00051             wxPyEvent.__init__(self)
-00052             self.SetEventType(wxEVT_HTML_URL_CLICK)
-00053             self.linkinfolinkinfo = (linkinfo.GetHref(), linkinfo.GetTarget())
-00054 
-00055     class wxUrlClickHtmlWindow(wxHtmlWindow):
-00056         """ HTML window that generates and OnLinkClicked event.
-00057 
-00058         Use this to avoid having to override HTMLWindow
-00059         """
-00060         def OnLinkClicked(self, linkinfo):
-00061             wxPostEvent(self, wxHtmlWindowUrlClick(linkinfo))
-00062     
-00063 #-------------------------------------------------------------------------------
-00064 #                                Html Frame
-00065 #-------------------------------------------------------------------------------
-00066 
-00067     [wxID_HTMLFRAME, wxID_HTMLFRAMEHTMLCONTENT] = [wx.NewId() for _init_ctrls in range(2)]
-00068 
-00069     class HtmlFrame(wx.Frame):
-00070         def _init_ctrls(self, prnt):
-00071             # generated method, don't edit
-00072             wx.Frame.__init__(self, id=wxID_HTMLFRAME, name='HtmlFrame',
-00073                   parent=prnt, pos=wx.Point(320, 231), size=wx.Size(853, 616),
-00074                   style=wx.DEFAULT_FRAME_STYLE, title='')
-00075             self.Bind(wx.EVT_CLOSE, self.OnCloseFrameOnCloseFrame, id=wxID_HTMLFRAME)
-00076             
-00077             self.HtmlContent = wxUrlClickHtmlWindow(id=wxID_HTMLFRAMEHTMLCONTENT,
-00078                   name='HtmlContent', parent=self, pos=wx.Point(0, 0),
-00079                   size=wx.Size(-1, -1), style=wxHW_SCROLLBAR_AUTO|wxHW_NO_SELECTION)
-00080             EVT_HTML_URL_CLICK(self.HtmlContent, self.OnLinkClickOnLinkClick)
-00081 
-00082         def __init__(self, parent, opened):
-00083             self._init_ctrls_init_ctrls(parent)
-00084             self.HtmlFrameOpenedHtmlFrameOpened = opened
-00085         
-00086         def SetHtmlCode(self, htmlcode):
-00087             self.HtmlContent.SetPage(htmlcode)
-00088             
-00089         def SetHtmlPage(self, htmlpage):
-00090             self.HtmlContent.LoadPage(htmlpage)
-00091             
-00092         def OnCloseFrame(self, event):
-00093             self.HtmlFrameOpenedHtmlFrameOpened.remove(self.GetTitle())
-00094             event.Skip()
-00095         
-00096         def OnLinkClick(self, event):
-00097             url = event.linkinfo[0]
-00098             try:
-00099                 import webbrowser
-00100             except ImportError:
-00101                 wxMessageBox('Please point your browser at: %s' % url)
-00102             else:
-00103                 webbrowser.open(url)
-00104     
-00105     Html_Window = True
-00106 except:
-00107     Html_Window = False
-00108 
-00109 def create(parent):
-00110     return objdictedit(parent)
-00111 
-00112 def usage():
-00113     print "\nUsage of objdictedit.py :"
-00114     print "\n   %s [Filepath, ...]\n"%sys.argv[0]
-00115 
-00116 try:
-00117     opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
-00118 except getopt.GetoptError:
-00119     # print help information and exit:
-00120     usage()
-00121     sys.exit(2)
-00122 
-00123 for o, a in opts:
-00124     if o in ("-h", "--help"):
-00125         usage()
-00126         sys.exit()
-00127 
-00128 filesOpen = args
-00129 ScriptDirectory = sys.path[0]
-00130 
-00131 
-00132 [wxID_OBJDICTEDIT, wxID_OBJDICTEDITFILEOPENED, 
-00133  wxID_OBJDICTEDITHELPBAR,
-00134 ] = [wx.NewId() for _init_ctrls in range(3)]
-00135 
-00136 [wxID_OBJDICTEDITADDMENUITEMS0, wxID_OBJDICTEDITADDMENUITEMS1, 
-00137  wxID_OBJDICTEDITADDMENUITEMS2, wxID_OBJDICTEDITADDMENUITEMS3, 
-00138  wxID_OBJDICTEDITADDMENUITEMS4, wxID_OBJDICTEDITADDMENUITEMS5, 
-00139 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)]
-00140 
-00141 [wxID_OBJDICTEDITFILEMENUITEMS0, wxID_OBJDICTEDITFILEMENUITEMS1, 
-00142  wxID_OBJDICTEDITFILEMENUITEMS2, wxID_OBJDICTEDITFILEMENUITEMS4, 
-00143  wxID_OBJDICTEDITFILEMENUITEMS5, wxID_OBJDICTEDITFILEMENUITEMS6, 
-00144  wxID_OBJDICTEDITFILEMENUITEMS7, wxID_OBJDICTEDITFILEMENUITEMS8,
-00145  wxID_OBJDICTEDITFILEMENUITEMS9,
-00146 ] = [wx.NewId() for _init_coll_FileMenu_Items in range(9)]
-00147 
-00148 [wxID_OBJDICTEDITEDITMENUITEMS0, wxID_OBJDICTEDITEDITMENUITEMS1, 
-00149  wxID_OBJDICTEDITEDITMENUITEMS2, wxID_OBJDICTEDITEDITMENUITEMS4, 
-00150  wxID_OBJDICTEDITEDITMENUITEMS6, wxID_OBJDICTEDITEDITMENUITEMS7, 
-00151  wxID_OBJDICTEDITEDITMENUITEMS8, 
-00152 ] = [wx.NewId() for _init_coll_EditMenu_Items in range(7)]
-00153 
-00154 [wxID_OBJDICTEDITHELPMENUITEMS0, wxID_OBJDICTEDITHELPMENUITEMS1,
-00155  wxID_OBJDICTEDITHELPMENUITEMS2,
-00156 ] = [wx.NewId() for _init_coll_HelpMenu_Items in range(3)]
-00157 
-00158 class objdictedit(wx.Frame):
-00159     def _init_coll_menuBar1_Menus(self, parent):
-00160         # generated method, don't edit
-00161 
-00162         parent.Append(menu=self.FileMenu, title='File')
-00163         parent.Append(menu=self.EditMenu, title='Edit')
-00164         parent.Append(menu=self.AddMenu, title='Add')
-00165         parent.Append(menu=self.HelpMenu, title='Help')
-00166 
-00167     def _init_coll_EditMenu_Items(self, parent):
-00168         # generated method, don't edit
-00169 
-00170         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS4,
-00171               kind=wx.ITEM_NORMAL, text='Refresh\tCTRL+R')
-00172         parent.AppendSeparator()
-00173         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS1,
-00174               kind=wx.ITEM_NORMAL, text='Undo\tCTRL+Z')
-00175         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS0,
-00176               kind=wx.ITEM_NORMAL, text='Redo\tCTRL+Y')
-00177         parent.AppendSeparator()
-00178         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS6,
-00179               kind=wx.ITEM_NORMAL, text='Node infos')
-00180         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS2,
-00181               kind=wx.ITEM_NORMAL, text='DS-301 Profile')
-00182         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS8,
-00183               kind=wx.ITEM_NORMAL, text='DS-302 Profile')
-00184         parent.Append(help='', id=wxID_OBJDICTEDITEDITMENUITEMS7,
-00185               kind=wx.ITEM_NORMAL, text='Other Profile')
-00186         self.Bind(wx.EVT_MENU, self.OnUndoMenuOnUndoMenu,
-00187               id=wxID_OBJDICTEDITEDITMENUITEMS1)
-00188         self.Bind(wx.EVT_MENU, self.OnRedoMenuOnRedoMenu,
-00189               id=wxID_OBJDICTEDITEDITMENUITEMS0)
-00190         self.Bind(wx.EVT_MENU, self.OnCommunicationMenuOnCommunicationMenu,
-00191               id=wxID_OBJDICTEDITEDITMENUITEMS2)
-00192         self.Bind(wx.EVT_MENU, self.OnRefreshMenuOnRefreshMenu,
-00193               id=wxID_OBJDICTEDITEDITMENUITEMS4)
-00194         self.Bind(wx.EVT_MENU, self.OnNodeInfosMenuOnNodeInfosMenu,
-00195               id=wxID_OBJDICTEDITEDITMENUITEMS6)
-00196         self.Bind(wx.EVT_MENU, self.OnEditProfileMenuOnEditProfileMenu,
-00197               id=wxID_OBJDICTEDITEDITMENUITEMS7)
-00198         self.Bind(wx.EVT_MENU, self.OnOtherCommunicationMenuOnOtherCommunicationMenu,
-00199               id=wxID_OBJDICTEDITEDITMENUITEMS8)
-00200 
-00201     def _init_coll_HelpMenu_Items(self, parent):
-00202         # generated method, don't edit
-00203 
-00204         parent.Append(help='', id=wxID_OBJDICTEDITHELPMENUITEMS0,
-00205               kind=wx.ITEM_NORMAL, text='DS-301 Standard\tF1')
-00206         self.Bind(wx.EVT_MENU, self.OnHelpDS301MenuOnHelpDS301Menu,
-00207               id=wxID_OBJDICTEDITHELPMENUITEMS0)
-00208         parent.Append(help='', id=wxID_OBJDICTEDITHELPMENUITEMS1,
-00209               kind=wx.ITEM_NORMAL, text='CAN Festival Docs\tF2')
-00210         self.Bind(wx.EVT_MENU, self.OnHelpCANFestivalMenuOnHelpCANFestivalMenu,
-00211               id=wxID_OBJDICTEDITHELPMENUITEMS1)
-00212         if Html_Window:
-00213             parent.Append(help='', id=wxID_OBJDICTEDITHELPMENUITEMS2,
-00214                   kind=wx.ITEM_NORMAL, text='About')
-00215             self.Bind(wx.EVT_MENU, self.OnAboutMenuOnAboutMenu,
-00216                   id=wxID_OBJDICTEDITHELPMENUITEMS2)
-00217 
-00218     def _init_coll_FileMenu_Items(self, parent):
-00219         # generated method, don't edit
-00220 
-00221         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS5,
-00222               kind=wx.ITEM_NORMAL, text='New\tCTRL+N')
-00223         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS0,
-00224               kind=wx.ITEM_NORMAL, text='Open\tCTRL+O')
-00225         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS1,
-00226               kind=wx.ITEM_NORMAL, text='Save\tCTRL+S')
-00227         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS6,
-00228               kind=wx.ITEM_NORMAL, text='Save As...\tALT+S')
-00229         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS2,
-00230               kind=wx.ITEM_NORMAL, text='Close\tCTRL+W')
-00231         parent.AppendSeparator()
-00232         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS7,
-00233               kind=wx.ITEM_NORMAL, text='Import EDS file')
-00234         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS9,
-00235               kind=wx.ITEM_NORMAL, text='Export to EDS file')
-00236         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS8,
-00237               kind=wx.ITEM_NORMAL, text='Build Dictionary\tCTRL+B')
-00238         parent.AppendSeparator()
-00239         parent.Append(help='', id=wxID_OBJDICTEDITFILEMENUITEMS4,
-00240               kind=wx.ITEM_NORMAL, text='Exit')
-00241         self.Bind(wx.EVT_MENU, self.OnOpenMenuOnOpenMenu,
-00242               id=wxID_OBJDICTEDITFILEMENUITEMS0)
-00243         self.Bind(wx.EVT_MENU, self.OnSaveMenuOnSaveMenu,
-00244               id=wxID_OBJDICTEDITFILEMENUITEMS1)
-00245         self.Bind(wx.EVT_MENU, self.OnCloseMenuOnCloseMenu,
-00246               id=wxID_OBJDICTEDITFILEMENUITEMS2)
-00247         self.Bind(wx.EVT_MENU, self.OnQuitMenuOnQuitMenu,
-00248               id=wxID_OBJDICTEDITFILEMENUITEMS4)
-00249         self.Bind(wx.EVT_MENU, self.OnNewMenuOnNewMenu,
-00250               id=wxID_OBJDICTEDITFILEMENUITEMS5)
-00251         self.Bind(wx.EVT_MENU, self.OnSaveAsMenuOnSaveAsMenu,
-00252               id=wxID_OBJDICTEDITFILEMENUITEMS6)
-00253         self.Bind(wx.EVT_MENU, self.OnImportEDSMenuOnImportEDSMenu,
-00254               id=wxID_OBJDICTEDITFILEMENUITEMS7)
-00255         self.Bind(wx.EVT_MENU, self.OnExportCMenuOnExportCMenu,
-00256               id=wxID_OBJDICTEDITFILEMENUITEMS8)
-00257         self.Bind(wx.EVT_MENU, self.OnExportEDSMenuOnExportEDSMenu,
-00258               id=wxID_OBJDICTEDITFILEMENUITEMS9)
-00259 
-00260     def _init_coll_AddMenu_Items(self, parent):
-00261         # generated method, don't edit
-00262 
-00263         parent.Append(help='', id=wxID_OBJDICTEDITADDMENUITEMS0,
-00264               kind=wx.ITEM_NORMAL, text='SDO Server')
-00265         parent.Append(help='', id=wxID_OBJDICTEDITADDMENUITEMS1,
-00266               kind=wx.ITEM_NORMAL, text='SDO Client')
-00267         parent.Append(help='', id=wxID_OBJDICTEDITADDMENUITEMS2,
-00268               kind=wx.ITEM_NORMAL, text='PDO Transmit')
-00269         parent.Append(help='', id=wxID_OBJDICTEDITADDMENUITEMS3,
-00270               kind=wx.ITEM_NORMAL, text='PDO Receive')
-00271         parent.Append(help='', id=wxID_OBJDICTEDITADDMENUITEMS4,
-00272               kind=wx.ITEM_NORMAL, text='Map Variable')
-00273         parent.Append(help='', id=wxID_OBJDICTEDITADDMENUITEMS5,
-00274               kind=wx.ITEM_NORMAL, text='User Type')
-00275         self.Bind(wx.EVT_MENU, self.OnAddSDOServerMenuOnAddSDOServerMenu,
-00276               id=wxID_OBJDICTEDITADDMENUITEMS0)
-00277         self.Bind(wx.EVT_MENU, self.OnAddSDOClientMenuOnAddSDOClientMenu,
-00278               id=wxID_OBJDICTEDITADDMENUITEMS1)
-00279         self.Bind(wx.EVT_MENU, self.OnAddPDOTransmitMenuOnAddPDOTransmitMenu,
-00280               id=wxID_OBJDICTEDITADDMENUITEMS2)
-00281         self.Bind(wx.EVT_MENU, self.OnAddPDOReceiveMenuOnAddPDOReceiveMenu,
-00282               id=wxID_OBJDICTEDITADDMENUITEMS3)
-00283         self.Bind(wx.EVT_MENU, self.OnAddMapVariableMenuOnAddMapVariableMenu,
-00284               id=wxID_OBJDICTEDITADDMENUITEMS4)
-00285         self.Bind(wx.EVT_MENU, self.OnAddUserTypeMenuOnAddUserTypeMenu,
-00286               id=wxID_OBJDICTEDITADDMENUITEMS5)
-00287 
-00288     def _init_coll_HelpBar_Fields(self, parent):
-00289         # generated method, don't edit
-00290         parent.SetFieldsCount(3)
-00291 
-00292         parent.SetStatusText(number=0, text='')
-00293         parent.SetStatusText(number=1, text='')
-00294         parent.SetStatusText(number=2, text='')
-00295 
-00296         parent.SetStatusWidths([100, 110, -1])
-00297 
-00298     def _init_utils(self):
-00299         # generated method, don't edit
-00300         self.menuBar1 = wx.MenuBar()
-00301         self.menuBar1.SetEvtHandlerEnabled(True)
-00302 
-00303         self.FileMenu = wx.Menu(title='')
-00304 
-00305         self.EditMenu = wx.Menu(title='')
-00306 
-00307         self.AddMenu = wx.Menu(title='')
-00308 
-00309         self.HelpMenu = wx.Menu(title='')
-00310 
-00311         self._init_coll_menuBar1_Menus_init_coll_menuBar1_Menus(self.menuBar1)
-00312         self._init_coll_FileMenu_Items_init_coll_FileMenu_Items(self.FileMenu)
-00313         self._init_coll_EditMenu_Items_init_coll_EditMenu_Items(self.EditMenu)
-00314         self._init_coll_AddMenu_Items_init_coll_AddMenu_Items(self.AddMenu)
-00315         self._init_coll_HelpMenu_Items_init_coll_HelpMenu_Items(self.HelpMenu)
-00316 
-00317     def _init_ctrls(self, prnt):
-00318         # generated method, don't edit
-00319         wx.Frame.__init__(self, id=wxID_OBJDICTEDIT, name='objdictedit',
-00320               parent=prnt, pos=wx.Point(149, 178), size=wx.Size(1000, 700),
-00321               style=wx.DEFAULT_FRAME_STYLE, title='Objdictedit')
-00322         self._init_utils_init_utils()
-00323         self.SetClientSize(wx.Size(1000, 700))
-00324         self.SetMenuBar(self.menuBar1)
-00325         self.Bind(wx.EVT_CLOSE, self.OnCloseFrameOnCloseFrame, id=wxID_OBJDICTEDIT)
-00326 
-00327         self.FileOpened = wx.Notebook(id=wxID_OBJDICTEDITFILEOPENED,
-00328               name='FileOpened', parent=self, pos=wx.Point(0, 0),
-00329               size=wx.Size(0, 0), style=0)
-00330         self.FileOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
-00331               self.OnFileSelectedChangedOnFileSelectedChanged, id=wxID_OBJDICTEDITFILEOPENED)
-00332 
-00333         self.HelpBar = wx.StatusBar(id=wxID_OBJDICTEDITHELPBAR, name='HelpBar',
-00334               parent=self, style=wxST_SIZEGRIP)
-00335         self._init_coll_HelpBar_Fields_init_coll_HelpBar_Fields(self.HelpBar)
-00336         self.SetStatusBar(self.HelpBar)
-00337 
-00338     def __init__(self, parent):
-00339         self._init_ctrls_init_ctrls(parent)
-00340         self.HtmlFrameOpenedHtmlFrameOpened = []
-00341         
-00342         self.ManagerManager = NodeManager(ScriptDirectory)
-00343         for filepath in filesOpen:
-00344             self.ManagerManager.OpenFileInCurrent(filepath)
-00345             new_editingpanel = EditingPanel(self, self.ManagerManager)
-00346             self.FileOpened.AddPage(new_editingpanel, "")
-00347             self.FileOpened.SetSelection(self.ManagerManager.GetCurrentNodeIndex())
-00348         if self.ManagerManager.CurrentDS302Defined(): 
-00349             self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS8, True)
-00350         else:
-00351             self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS8, False)
-00352         self.RefreshEditMenuRefreshEditMenu()
-00353         self.RefreshBufferStateRefreshBufferState()
-00354         self.RefreshProfileMenuRefreshProfileMenu()
-00355         self.RefreshTitleRefreshTitle()
-00356         self.RefreshMainMenuRefreshMainMenu()
-00357 
-00358     def GetNoteBook(self):
-00359         return self.FileOpened
-00360 
-00361     def OnAddSDOServerMenu(self, event):
-00362         self.ManagerManager.AddSDOServerToCurrent()
-00363         self.RefreshBufferStateRefreshBufferState()
-00364         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00365         event.Skip()
-00366     
-00367     def OnAddSDOClientMenu(self, event):
-00368         self.ManagerManager.AddSDOClientToCurrent()
-00369         self.RefreshBufferStateRefreshBufferState()
-00370         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00371         event.Skip()
-00372 
-00373     def OnAddPDOTransmitMenu(self, event):
-00374         self.ManagerManager.AddPDOTransmitToCurrent()
-00375         self.RefreshBufferStateRefreshBufferState()
-00376         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00377         event.Skip()
-00378 
-00379     def OnAddPDOReceiveMenu(self, event):
-00380         self.ManagerManager.AddPDOReceiveToCurrent()
-00381         self.RefreshBufferStateRefreshBufferState()
-00382         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00383         event.Skip()
-00384 
-00385     def OnAddMapVariableMenu(self, event):
-00386         self.AddMapVariableAddMapVariable()
-00387         event.Skip()
-00388 
-00389     def OnAddUserTypeMenu(self, event):
-00390         self.AddUserTypeAddUserType()
-00391         event.Skip()
-00392 
-00393     def OnFileSelectedChanged(self, event):
-00394         selected = event.GetSelection()
-00395         # At init selected = -1
-00396         if selected >= 0:
-00397             window = self.FileOpened.GetPage(selected)
-00398             self.ManagerManager.ChangeCurrentNode(window.GetIndex())
-00399             self.RefreshBufferStateRefreshBufferState()
-00400             self.RefreshStatusBarRefreshStatusBar()
-00401             self.RefreshProfileMenuRefreshProfileMenu()
-00402         event.Skip()
-00403 
-00404     def OnHelpDS301Menu(self, event):
-00405         find_index = False
-00406         selected = self.FileOpened.GetSelection()
-00407         if selected >= 0:
-00408             window = self.FileOpened.GetPage(selected)
-00409             result = window.GetSelection()
-00410             if result:
-00411                 find_index = True
-00412                 index, subIndex = result
-00413                 result = OpenPDFDocIndex(index, ScriptDirectory)
-00414                 if type(result) == StringType:
-00415                     message = wxMessageDialog(self, result, "ERROR", wxOK|wxICON_ERROR)
-00416                     message.ShowModal()
-00417                     message.Destroy()
-00418         if not find_index:
-00419             result = OpenPDFDocIndex(None, ScriptDirectory)
-00420             if type(result) == StringType:
-00421                 message = wxMessageDialog(self, result, "ERROR", wxOK|wxICON_ERROR)
-00422                 message.ShowModal()
-00423                 message.Destroy()
-00424         event.Skip()
-00425         
-00426     def OnHelpCANFestivalMenu(self, event):
-00427         #self.OpenHtmlFrame("CAN Festival Reference", os.path.join(ScriptDirectory, "doc/canfestival.html"), wx.Size(1000, 600))
-00428         os.system("xpdf -remote CANFESTIVAL %s %d &"%(os.path.join(ScriptDirectory, "doc/manual_en.pdf"),16))
-00429         event.Skip()
-00430 
-00431     def OnAboutMenu(self, event):
-00432         self.OpenHtmlFrameOpenHtmlFrame("About CAN Festival", os.path.join(ScriptDirectory, "doc/about.html"), wx.Size(500, 450))
-00433         event.Skip()
-00434 
-00435     def OpenHtmlFrame(self, title, file, size):
-00436         if title not in self.HtmlFrameOpenedHtmlFrameOpened:
-00437             self.HtmlFrameOpenedHtmlFrameOpened.append(title)
-00438             window = HtmlFrame(self, self.HtmlFrameOpenedHtmlFrameOpened)
-00439             window.SetTitle(title)
-00440             window.SetHtmlPage(file)
-00441             window.SetClientSize(size)
-00442             window.Show()
-00443 
-00444     def OnQuitMenu(self, event):
-00445         self.Close()
-00446         event.Skip()
-00447     
-00448     def OnCloseFrame(self, event):
-00449         if self.ManagerManager.OneFileHasChanged():
-00450             dialog = wxMessageDialog(self, "There are changes, do you want to save?",  "Close Application", wxYES_NO|wxCANCEL|wxICON_QUESTION)
-00451             answer = dialog.ShowModal()
-00452             dialog.Destroy()
-00453             if answer == wxID_YES:
-00454                 self.ManagerManager.ChangeCurrentNode(0)
-00455                 for i in xrange(self.FileOpened.GetPageCount()):
-00456                     if self.ManagerManager.CurrentIsSaved():
-00457                         self.ManagerManager.CloseCurrent()
-00458                     else:
-00459                         self.SaveSave()
-00460                         self.ManagerManager.CloseCurrent(True)
-00461                 event.Skip()
-00462             elif answer == wxID_NO:
-00463                 for i in xrange(self.FileOpened.GetPageCount()):
-00464                     self.ManagerManager.CloseCurrent(True)
-00465                 wxCallAfter(self.Close)
-00466                 event.Skip()
-00467         else:
-00468             event.Skip()
-00469 
-00470 #-------------------------------------------------------------------------------
-00471 #                             Refresh Functions
-00472 #-------------------------------------------------------------------------------
-00473 
-00474     def RefreshTitle(self):
-00475         if self.FileOpened.GetPageCount() > 0:
-00476             self.SetTitle("Objdictedit - %s"%self.ManagerManager.GetCurrentFilename())
-00477         else:
-00478             self.SetTitle("Objdictedit")
-00479 
-00480     def OnRefreshMenu(self, event):
-00481         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00482         event.Skip()
-00483 
-00484     def RefreshCurrentIndexList(self):
-00485         selected = self.FileOpened.GetSelection()
-00486         window = self.FileOpened.GetPage(selected)
-00487         window.RefreshIndexList()
-00488 
-00489     def RefreshStatusBar(self):
-00490         if self.HelpBar:
-00491             window = self.FileOpened.GetPage(self.FileOpened.GetSelection())
-00492             selection = window.GetSelection()
-00493             if selection:
-00494                 index, subIndex = selection
-00495                 if self.ManagerManager.IsCurrentEntry(index):
-00496                     self.HelpBar.SetStatusText("Index: 0x%04X"%index, 0)
-00497                     self.HelpBar.SetStatusText("Subindex: 0x%02X"%subIndex, 1)
-00498                     entryinfos = self.ManagerManager.GetEntryInfos(index)
-00499                     name = entryinfos["name"]
-00500                     category = "Optional"
-00501                     if entryinfos["need"]:
-00502                         category = "Mandatory"
-00503                     struct = "VAR"
-00504                     number = ""
-00505                     if entryinfos["struct"] & OD_IdenticalIndexes:
-00506                         number = " possibly defined %d times"%entryinfos["nbmax"]
-00507                     if entryinfos["struct"] & OD_IdenticalSubindexes:
-00508                         struct = "REC"
-00509                     elif entryinfos["struct"] & OD_MultipleSubindexes:
-00510                         struct = "ARRAY"
-00511                     text = "%s: %s entry of struct %s%s."%(name,category,struct,number)
-00512                     self.HelpBar.SetStatusText(text, 2)
-00513                 else:
-00514                     for i in xrange(3):
-00515                         self.HelpBar.SetStatusText("", i)
-00516             else:
-00517                 for i in xrange(3):
-00518                     self.HelpBar.SetStatusText("", i)
-00519 
-00520     def RefreshMainMenu(self):
-00521         if self.FileMenu:
-00522             if self.FileOpened.GetPageCount() > 0:
-00523                 self.menuBar1.EnableTop(1, True)
-00524                 self.menuBar1.EnableTop(2, True)
-00525                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS1, True)
-00526                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS2, True)
-00527                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS6, True)
-00528                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS8, True)
-00529                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS9, True)
-00530             else:
-00531                 self.menuBar1.EnableTop(1, False)      
-00532                 self.menuBar1.EnableTop(2, False)
-00533                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS1, False)
-00534                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS2, False)
-00535                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS6, False)
-00536                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS8, False)
-00537                 self.FileMenu.Enable(wxID_OBJDICTEDITFILEMENUITEMS9, False)
-00538 
-00539     def RefreshEditMenu(self):
-00540         if self.FileMenu:
-00541             if self.FileOpened.GetPageCount() > 0:
-00542                 undo, redo = self.ManagerManager.GetCurrentBufferState()
-00543                 self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS1, undo)
-00544                 self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS0, redo)
-00545             else:
-00546                 self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS1, False)
-00547                 self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS0, False)
-00548 
-00549     def RefreshProfileMenu(self):
-00550         if self.EditMenu:
-00551             profile = self.ManagerManager.GetCurrentProfileName()
-00552             edititem = self.EditMenu.FindItemById(wxID_OBJDICTEDITEDITMENUITEMS7)
-00553             if edititem:
-00554                 length = self.AddMenu.GetMenuItemCount()
-00555                 for i in xrange(length-6):
-00556                     additem = self.AddMenu.FindItemByPosition(6)
-00557                     self.AddMenu.Delete(additem.GetId())
-00558                 if profile not in ("None", "DS-301"):
-00559                     edititem.SetText("%s Profile"%profile)
-00560                     edititem.Enable(True)
-00561                     self.AddMenu.AppendSeparator()
-00562                     for text, indexes in self.ManagerManager.GetCurrentSpecificMenu():
-00563                         new_id = wx.NewId()
-00564                         self.AddMenu.Append(help='', id=new_id, kind=wx.ITEM_NORMAL, text=text)
-00565                         self.Bind(wx.EVT_MENU, self.GetProfileCallBackGetProfileCallBack(text), id=new_id)
-00566                 else:
-00567                     edititem.SetText("Other Profile")
-00568                     edititem.Enable(False)
-00569         
-00570 
-00571 #-------------------------------------------------------------------------------
-00572 #                            Buffer Functions
-00573 #-------------------------------------------------------------------------------
-00574 
-00575     def RefreshBufferState(self):
-00576         fileopened = self.ManagerManager.GetAllFilenames()
-00577         for idx, filename in enumerate(fileopened):
-00578             self.FileOpened.SetPageText(idx, filename)
-00579         self.RefreshEditMenuRefreshEditMenu()
-00580         self.RefreshTitleRefreshTitle()
-00581 
-00582     def OnUndoMenu(self, event):
-00583         self.ManagerManager.LoadCurrentPrevious()
-00584         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00585         self.RefreshBufferStateRefreshBufferState()
-00586         event.Skip()
-00587 
-00588     def OnRedoMenu(self, event):
-00589         self.ManagerManager.LoadCurrentNext()
-00590         self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00591         self.RefreshBufferStateRefreshBufferState()
-00592         event.Skip()
-00593 
-00594 
-00595 #-------------------------------------------------------------------------------
-00596 #                         Load and Save Funtions
-00597 #-------------------------------------------------------------------------------
-00598 
-00599     def OnNewMenu(self, event):
-00600         self.FilePathFilePath = ""
-00601         dialog = CreateNodeDialog(self, ScriptDirectory)
-00602         if dialog.ShowModal() == wxID_OK:
-00603             name, id, nodetype, description = dialog.GetValues()
-00604             profile, filepath = dialog.GetProfile()
-00605             NMT = dialog.GetNMTManagement()
-00606             options = dialog.GetOptions()
-00607             result = self.ManagerManager.CreateNewNode(name, id, nodetype, description, profile, filepath, NMT, options)
-00608             if type(result) == IntType:
-00609                 new_editingpanel = EditingPanel(self, self.ManagerManager)
-00610                 new_editingpanel.SetIndex(result)
-00611                 self.FileOpened.AddPage(new_editingpanel, "")
-00612                 self.FileOpened.SetSelection(self.FileOpened.GetPageCount() - 1)
-00613                 self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS8, False)
-00614                 if "DS302" in options:
-00615                     self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS8, True)
-00616                 self.RefreshBufferStateRefreshBufferState()
-00617                 self.RefreshProfileMenuRefreshProfileMenu()
-00618                 self.RefreshMainMenuRefreshMainMenu()
-00619             else:
-00620                 message = wxMessageDialog(self, result, "ERROR", wxOK|wxICON_ERROR)
-00621                 message.ShowModal()
-00622                 message.Destroy()
-00623         event.Skip()
-00624 
-00625     def OnOpenMenu(self, event):
-00626         filepath = self.ManagerManager.GetCurrentFilePath()
-00627         if filepath != "":
-00628             directory = os.path.dirname(filepath)
-00629         else:
-00630             directory = os.getcwd()
-00631         dialog = wxFileDialog(self, "Choose a file", directory, "",  "OD files (*.od)|*.od|All files|*.*", wxOPEN|wxCHANGE_DIR)
-00632         if dialog.ShowModal() == wxID_OK:
-00633             filepath = dialog.GetPath()
-00634             if os.path.isfile(filepath):
-00635                 result = self.ManagerManager.OpenFileInCurrent(filepath)
-00636                 if type(result) == IntType:
-00637                     new_editingpanel = EditingPanel(self, self.ManagerManager)
-00638                     new_editingpanel.SetIndex(result)
-00639                     self.FileOpened.AddPage(new_editingpanel, "")
-00640                     self.FileOpened.SetSelection(self.FileOpened.GetPageCount() - 1)
-00641                     if self.ManagerManager.CurrentDS302Defined(): 
-00642                         self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS8, True)
-00643                     else:
-00644                         self.EditMenu.Enable(wxID_OBJDICTEDITEDITMENUITEMS8, False)
-00645                     self.RefreshEditMenuRefreshEditMenu()
-00646                     self.RefreshBufferStateRefreshBufferState()
-00647                     self.RefreshProfileMenuRefreshProfileMenu()
-00648                     self.RefreshMainMenuRefreshMainMenu()
-00649                 else:
-00650                     message = wxMessageDialog(self, e.args[0], "Error", wxOK|wxICON_ERROR)
-00651                     message.ShowModal()
-00652                     message.Destroy()
-00653         dialog.Destroy()
-00654         event.Skip()
-00655 
-00656     def OnSaveMenu(self, event):
-00657         self.SaveSave()
-00658         event.Skip()
-00659     
-00660     def OnSaveAsMenu(self, event):
-00661         self.SaveAsSaveAs()
-00662         event.Skip()
-00663         
-00664     def Save(self):
-00665         result = self.ManagerManager.SaveCurrentInFile()
-00666         if not result:
-00667             self.SaveAsSaveAs()
-00668         elif type(result) != StringType:
-00669             self.RefreshBufferStateRefreshBufferState()
-00670         else:
-00671             message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00672             message.ShowModal()
-00673             message.Destroy()
-00674 
-00675     def SaveAs(self):
-00676         filepath = self.ManagerManager.GetCurrentFilePath()
-00677         if filepath != "":
-00678             directory, filename = os.path.split(filepath)
-00679         else:
-00680             directory, filename = os.getcwd(), "%s.od"%self.ManagerManager.GetCurrentNodeInfos()[0]
-00681         dialog = wxFileDialog(self, "Choose a file", directory, filename,  "OD files (*.od)|*.od|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR)
-00682         if dialog.ShowModal() == wxID_OK:
-00683             filepath = dialog.GetPath()
-00684             if os.path.isdir(os.path.dirname(filepath)):
-00685                 result = self.ManagerManager.SaveCurrentInFile(filepath)
-00686                 if type(result) != StringType:
-00687                     self.RefreshBufferStateRefreshBufferState()
-00688                 else:
-00689                     message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00690                     message.ShowModal()
-00691                     message.Destroy()
-00692             else:
-00693                 message = wxMessageDialog(self, "%s is not a valid folder!"%os.path.dirname(filepath), "Error", wxOK|wxICON_ERROR)
-00694                 message.ShowModal()
-00695                 message.Destroy()
-00696         dialog.Destroy()
-00697 
-00698     def OnCloseMenu(self, event):
-00699         answer = wxID_YES
-00700         result = self.ManagerManager.CloseCurrent()
-00701         if not result:
-00702             dialog = wxMessageDialog(self, "There are changes, do you want to save?",  "Close File", wxYES_NO|wxCANCEL|wxICON_QUESTION)
-00703             answer = dialog.ShowModal()
-00704             dialog.Destroy()
-00705             if answer == wxID_YES:
-00706                 self.OnSaveMenuOnSaveMenu(event)
-00707                 if self.ManagerManager.CurrentIsSaved():
-00708                     self.ManagerManager.CloseCurrent()
-00709             elif answer == wxID_NO:
-00710                 self.ManagerManager.CloseCurrent(True)
-00711         if self.FileOpened.GetPageCount() > self.ManagerManager.GetBufferNumber():
-00712             current = self.FileOpened.GetSelection()
-00713             self.FileOpened.DeletePage(current)
-00714             if self.FileOpened.GetPageCount() > 0:
-00715                 self.FileOpened.SetSelection(min(current, self.FileOpened.GetPageCount() - 1))
-00716             self.RefreshBufferStateRefreshBufferState()
-00717             self.RefreshMainMenuRefreshMainMenu()
-00718         event.Skip()
-00719         
-00720 
-00721 #-------------------------------------------------------------------------------
-00722 #                         Import and Export Functions
-00723 #-------------------------------------------------------------------------------
-00724 
-00725     def OnImportEDSMenu(self, event):
-00726         dialog = wxFileDialog(self, "Choose a file", os.getcwd(), "",  "EDS files (*.eds)|*.eds|All files|*.*", wxOPEN|wxCHANGE_DIR)
-00727         if dialog.ShowModal() == wxID_OK:
-00728             filepath = dialog.GetPath()
-00729             if os.path.isfile(filepath):
-00730                 result = self.ManagerManager.ImportCurrentFromEDSFile(filepath)
-00731                 if type(result) == IntType:
-00732                     new_editingpanel = EditingPanel(self, self.ManagerManager)
-00733                     new_editingpanel.SetIndex(result)
-00734                     self.FileOpened.AddPage(new_editingpanel, "")
-00735                     self.FileOpened.SetSelection(self.FileOpened.GetPageCount() - 1)
-00736                     self.RefreshBufferStateRefreshBufferState()
-00737                     self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00738                     self.RefreshProfileMenuRefreshProfileMenu()
-00739                     self.RefreshMainMenuRefreshMainMenu()
-00740                     message = wxMessageDialog(self, "Import successful", "Information", wxOK|wxICON_INFORMATION)
-00741                     message.ShowModal()
-00742                     message.Destroy()
-00743                 else:
-00744                     message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00745                     message.ShowModal()
-00746                     message.Destroy()
-00747             else:
-00748                 message = wxMessageDialog(self, "\"%s\" is not a valid file!"%filepath, "Error", wxOK|wxICON_ERROR)
-00749                 message.ShowModal()
-00750                 message.Destroy()
-00751         dialog.Destroy()
-00752         event.Skip()
-00753 
-00754 
-00755     def OnExportEDSMenu(self, event):
-00756         dialog = wxFileDialog(self, "Choose a file", os.getcwd(), self.ManagerManager.GetCurrentNodeInfos()[0], "EDS files (*.eds)|*.eds|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR)
-00757         if dialog.ShowModal() == wxID_OK:
-00758             filepath = dialog.GetPath()
-00759             if os.path.isdir(os.path.dirname(filepath)):
-00760                 path, extend = os.path.splitext(filepath)
-00761                 if extend in ("", "."):
-00762                     filepath = path + ".eds"
-00763                 result = self.ManagerManager.ExportCurrentToEDSFile(filepath)
-00764                 if not result:
-00765                     message = wxMessageDialog(self, "Export successful", "Information", wxOK|wxICON_INFORMATION)
-00766                     message.ShowModal()
-00767                     message.Destroy()
-00768                 else:
-00769                     message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00770                     message.ShowModal()
-00771                     message.Destroy()
-00772             else:
-00773                 message = wxMessageDialog(self, "\"%s\" is not a valid folder!"%os.path.dirname(filepath), "Error", wxOK|wxICON_ERROR)
-00774                 message.ShowModal()
-00775                 message.Destroy()
-00776         dialog.Destroy()
-00777         event.Skip()
-00778 
-00779     def OnExportCMenu(self, event):
-00780         dialog = wxFileDialog(self, "Choose a file", os.getcwd(), self.ManagerManager.GetCurrentNodeInfos()[0],  "CANFestival OD files (*.c)|*.c|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT|wxCHANGE_DIR)
-00781         if dialog.ShowModal() == wxID_OK:
-00782             filepath = dialog.GetPath()
-00783             if os.path.isdir(os.path.dirname(filepath)):
-00784                 path, extend = os.path.splitext(filepath)
-00785                 if extend in ("", "."):
-00786                     filepath = path + ".c"
-00787                 result = self.ManagerManager.ExportCurrentToCFile(filepath)
-00788                 if not result:
-00789                     message = wxMessageDialog(self, "Export successful", "Information", wxOK|wxICON_INFORMATION)
-00790                     message.ShowModal()
-00791                     message.Destroy()
-00792                 else:
-00793                     message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00794                     message.ShowModal()
-00795                     message.Destroy()
-00796             else:
-00797                 message = wxMessageDialog(self, "\"%s\" is not a valid folder!"%os.path.dirname(filepath), "Error", wxOK|wxICON_ERROR)
-00798                 message.ShowModal()
-00799                 message.Destroy()
-00800         dialog.Destroy()
-00801         event.Skip()
-00802 
-00803 #-------------------------------------------------------------------------------
-00804 #                          Editing Profiles functions
-00805 #-------------------------------------------------------------------------------
-00806 
-00807     def OnCommunicationMenu(self, event):
-00808         dictionary,current = self.ManagerManager.GetCurrentCommunicationLists()
-00809         self.EditProfileEditProfile("Edit DS-301 Profile", dictionary, current)
-00810         event.Skip()
-00811     
-00812     def OnOtherCommunicationMenu(self, event):
-00813         dictionary,current = self.ManagerManager.GetCurrentDS302Lists()
-00814         self.EditProfileEditProfile("Edit DS-301 Profile", dictionary, current)
-00815         event.Skip()
-00816     
-00817     def OnEditProfileMenu(self, event):
-00818         title = "Edit %s Profile"%self.ManagerManager.GetCurrentProfileName()
-00819         dictionary,current = self.ManagerManager.GetCurrentProfileLists()
-00820         self.EditProfileEditProfile(title, dictionary, current)
-00821         event.Skip()
-00822     
-00823     def EditProfile(self, title, dictionary, current):
-00824         dialog = CommunicationDialog(self)
-00825         dialog.SetTitle(title)
-00826         dialog.SetIndexDictionary(dictionary)
-00827         dialog.SetCurrentList(current)
-00828         dialog.RefreshLists()
-00829         if dialog.ShowModal() == wxID_OK:
-00830             new_profile = dialog.GetCurrentList()
-00831             addinglist = []
-00832             removinglist = []
-00833             for index in new_profile:
-00834                 if index not in current:
-00835                     addinglist.append(index)
-00836             for index in current:
-00837                 if index not in new_profile:
-00838                     removinglist.append(index)
-00839             self.ManagerManager.ManageEntriesOfCurrent(addinglist, removinglist)
-00840             self.ManagerManager.GenerateMapList()
-00841             self.ManagerManager.BufferCurrentNode()
-00842             self.RefreshBufferStateRefreshBufferState()
-00843             self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00844         dialog.Destroy()
-00845 
-00846     def GetProfileCallBack(self, text):
-00847         def ProfileCallBack(event):
-00848             self.ManagerManager.AddSpecificEntryToCurrent(text)
-00849             self.RefreshBufferStateRefreshBufferState()
-00850             self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00851             event.Skip()
-00852         return ProfileCallBack
-00853 
-00854 #-------------------------------------------------------------------------------
-00855 #                         Edit Node informations function
-00856 #-------------------------------------------------------------------------------
-00857 
-00858     def OnNodeInfosMenu(self, event):
-00859         dialog = NodeInfosDialog(self)
-00860         name, id, type, description = self.ManagerManager.GetCurrentNodeInfos()
-00861         dialog.SetValues(name, id, type, description)
-00862         if dialog.ShowModal() == wxID_OK:
-00863             name, id, type, description = dialog.GetValues()
-00864             self.ManagerManager.SetCurrentNodeInfos(name, id, type, description)
-00865             self.RefreshBufferStateRefreshBufferState()
-00866             self.RefreshProfileMenuRefreshProfileMenu()
-00867             selected = self.FileOpened.GetSelection()
-00868             if selected >= 0:
-00869                 window = self.FileOpened.GetPage(selected)
-00870                 window.RefreshTable()
-00871         event.Skip()
-00872 
-00873 
-00874 #-------------------------------------------------------------------------------
-00875 #                           Add User Types and Variables
-00876 #-------------------------------------------------------------------------------
-00877         
-00878     def AddMapVariable(self):
-00879         index = self.ManagerManager.GetCurrentNextMapIndex()
-00880         if index:
-00881             dialog = MapVariableDialog(self)
-00882             dialog.SetIndex(index)
-00883             if dialog.ShowModal() == wxID_OK:
-00884                 index, name, struct, number = dialog.GetValues()
-00885                 result = self.ManagerManager.AddMapVariableToCurrent(index, name, struct, number)
-00886                 if type(result) != StringType:
-00887                     self.RefreshBufferStateRefreshBufferState()
-00888                     self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00889                 else:
-00890                     message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00891                     message.ShowModal()
-00892                     message.Destroy()
-00893             dialog.Destroy()
-00894         else:
-00895             message = wxMessageDialog(self, result, "No map variable index left!", wxOK|wxICON_ERROR)
-00896             message.ShowModal()
-00897             message.Destroy()
-00898         
-00899     def AddUserType(self):
-00900         dialog = UserTypeDialog(self)
-00901         dialog.SetTypeList(self.ManagerManager.GetCustomisableTypes())
-00902         if dialog.ShowModal() == wxID_OK:
-00903             type, min, max, length = dialog.GetValues()
-00904             result = self.ManagerManager.AddUserTypeToCurrent(type, min, max, length)
-00905             if not result:
-00906                 self.RefreshBufferStateRefreshBufferState()
-00907                 self.RefreshCurrentIndexListRefreshCurrentIndexList()
-00908             else:
-00909                 message = wxMessageDialog(self, result, "Error", wxOK|wxICON_ERROR)
-00910                 message.ShowModal()
-00911                 message.Destroy()
-00912         dialog.Destroy()
-00913     
-00914 
-00915 #-------------------------------------------------------------------------------
-00916 #                               Exception Handler
-00917 #-------------------------------------------------------------------------------
-00918 
-00919 Max_Traceback_List_Size = 20
-00920 
-00921 def Display_Exception_Dialog(e_type,e_value,e_tb):
-00922     trcbck_lst = []
-00923     for i,line in enumerate(traceback.extract_tb(e_tb)):
-00924         trcbck = " " + str(i+1) + ". "
-00925         if line[0].find(os.getcwd()) == -1:
-00926             trcbck += "file : " + str(line[0]) + ",   "
-00927         else:
-00928             trcbck += "file : " + str(line[0][len(os.getcwd()):]) + ",   "
-00929         trcbck += "line : " + str(line[1]) + ",   " + "function : " + str(line[2])
-00930         trcbck_lst.append(trcbck)
-00931         
-00932     # Allow clicking....
-00933     cap = wx.Window_GetCapture()
-00934     if cap:
-00935         cap.ReleaseMouse()
-00936 
-00937     dlg = wx.SingleChoiceDialog(None, 
-00938         """
-00939 An error happens.
-00940 
-00941 Click on OK for saving an error report.
-00942 
-00943 Please contact LOLITech at:
-00944 +33 (0)3 29 52 95 67
-00945 bugs_objdictedit@lolitech.fr
-00946 
-00947 
-00948 Error:
-00949 """ +
-00950         str(e_type) + " : " + str(e_value), 
-00951         "Error",
-00952         trcbck_lst)
-00953     try:
-00954         res = (dlg.ShowModal() == wx.ID_OK)
-00955     finally:
-00956         dlg.Destroy()
-00957 
-00958     return res
-00959 
-00960 def Display_Error_Dialog(e_value):
-00961     message = wxMessageDialog(None, str(e_value), "Error", wxOK|wxICON_ERROR)
-00962     message.ShowModal()
-00963     message.Destroy()
-00964 
-00965 def get_last_traceback(tb):
-00966     while tb.tb_next:
-00967         tb = tb.tb_next
-00968     return tb
-00969 
-00970 
-00971 def format_namespace(d, indent='    '):
-00972     return '\n'.join(['%s%s: %s' % (indent, k, repr(v)[:10000]) for k, v in d.iteritems()])
-00973 
-00974 
-00975 ignored_exceptions = [] # a problem with a line in a module is only reported once per session
-00976 
-00977 def wxAddExceptHook(path, app_version='[No version]'):#, ignored_exceptions=[]):
-00978     
-00979     def handle_exception(e_type, e_value, e_traceback):
-00980         traceback.print_exception(e_type, e_value, e_traceback) # this is very helpful when there's an exception in the rest of this func
-00981         last_tb = get_last_traceback(e_traceback)
-00982         ex = (last_tb.tb_frame.f_code.co_filename, last_tb.tb_frame.f_lineno)
-00983         if str(e_value).startswith("!!!"):
-00984             Display_Error_Dialog(e_value)
-00985         elif ex not in ignored_exceptions:
-00986             ignored_exceptions.append(ex)
-00987             result = Display_Exception_Dialog(e_type,e_value,e_traceback)
-00988             if result:
-00989                 info = {
-00990                     'app-title' : wx.GetApp().GetAppName(), # app_title
-00991                     'app-version' : app_version,
-00992                     'wx-version' : wx.VERSION_STRING,
-00993                     'wx-platform' : wx.Platform,
-00994                     'python-version' : platform.python_version(), #sys.version.split()[0],
-00995                     'platform' : platform.platform(),
-00996                     'e-type' : e_type,
-00997                     'e-value' : e_value,
-00998                     'date' : time.ctime(),
-00999                     'cwd' : os.getcwd(),
-01000                     }
-01001                 if e_traceback:
-01002                     info['traceback'] = ''.join(traceback.format_tb(e_traceback)) + '%s: %s' % (e_type, e_value)
-01003                     last_tb = get_last_traceback(e_traceback)
-01004                     exception_locals = last_tb.tb_frame.f_locals # the locals at the level of the stack trace where the exception actually occurred
-01005                     info['locals'] = format_namespace(exception_locals)
-01006                     if 'self' in exception_locals:
-01007                         info['self'] = format_namespace(exception_locals['self'].__dict__)
-01008                 
-01009                 output = open(path+os.sep+"bug_report_"+info['date'].replace(':','-').replace(' ','_')+".txt",'w')
-01010                 lst = info.keys()
-01011                 lst.sort()
-01012                 for a in lst:
-01013                     output.write(a+":\n"+str(info[a])+"\n\n")
-01014 
-01015     #sys.excepthook = lambda *args: wx.CallAfter(handle_exception, *args)
-01016     sys.excepthook = handle_exception
-01017 
-01018 if __name__ == '__main__':
-01019     app = wxPySimpleApp()
-01020     wxInitAllImageHandlers()
-01021     
-01022     # Install a exception handle for bug reports
-01023     wxAddExceptHook(os.getcwd(),__version__)
-01024     
-01025     frame = objdictedit(None)
-01026 
-01027     frame.Show()
-01028     app.MainLoop()
-

Generated on Mon Jun 4 16:29:06 2007 for CanFestival by  - -doxygen 1.5.1
- -