3 mavgenerate.py is a GUI front-end for mavgen, a python based MAVLink 4 header generation tool. 8 * 2012-7-16 -- dagoodman 9 Working on Mac 10.6.8 darwin, with Python 2.7.1 11 * 2012-7-17 -- dagoodman 12 Only GUI code working on Mac 10.6.8 darwin, with Python 3.2.3 13 Working on Windows 7 SP1, with Python 2.7.3 and 3.2.3 14 Mavgen doesn't work with Python 3.x yet 16 * 2012-9-25 -- dagoodman 17 Passing error limit into mavgen to make output cleaner. 19 Copyright 2012 David Goodman (dagoodman@soe.ucsc.edu) 20 Released under GNU GPL version 3 or later 28 if sys.version_info[0] == 3:
30 import tkinter.filedialog
31 import tkinter.messagebox
38 tkinter.filedialog = tkFileDialog
40 tkinter.messagebox = tkMessageBox
47 title =
"MAVLink Generator" 53 Frame.__init__(self, master)
54 self.pack_propagate(0)
55 self.grid( sticky=N+S+E+W)
59 Creates the gui and all of its content. 139 Open a file selection window to choose the XML message definition. 143 xml_file = tkinter.filedialog.askopenfilename(parent=self, title=
'Choose a definition file')
148 Open a directory selection window to choose an output directory for 152 mavlinkFolder = os.path.dirname(os.path.realpath(__file__))
153 out_dir = tkinter.filedialog.askdirectory(parent=self,initialdir=mavlinkFolder,title=
'Please select an output directory')
158 Generates the header files and place them in the output directory. 162 rex = re.compile(
".*\\.xml$", re.IGNORECASE)
164 tkinter.messagebox.showerror(
'Error Generating Headers',
'An XML message definition file must be specified.')
168 tkinter.messagebox.showerror(
'Error Generating Headers',
'An output directory must be specified.')
173 if not tkinter.messagebox.askokcancel(
'Overwrite Headers?',
'The output directory \'{0}\' already exists. Headers may be overwritten if they already exist.'.format(self.
out_value.get())):
180 mavgen.mavgen(opts,args)
181 tkinter.messagebox.showinfo(
'Successfully Generated Headers',
'Headers generated successfully.')
183 except Exception
as ex:
185 tkinter.messagebox.showerror(
'Error Generating Headers',
'{0!s}'.format(exStr))
189 Format the mavgen exceptions by removing 'ERROR: '. 192 reObj = re.compile(
r'^(ERROR):\s+',re.M);
193 matches = re.findall(reObj, message);
194 prefix = (
"An error occurred in mavgen:" if len(matches) == 1
else "Errors occurred in mavgen:\n")
195 message = re.sub(reObj,
'\n', message);
197 return prefix + message
206 if __name__ ==
'__main__':
208 app.master.title(title)
def browseOutDirectory(self)
def formatErrorMessage(message)
def __init__(self, master=None)
def generateHeaders(self)