def __init__(self, parent, title, size):
		wx.Frame.__init__(self, parent, title=title, size=size)
		self.Centre()
		self.dataDirectory = os.getcwd() + '/Data/'

		self.recorder = Recorder(self, port='/dev/ttyACM0', baud=115200)

		self.lastFile = None
		self.currentFile = None
		self.hasData = False
	
		self.Menus()			

		self.panel = Main_Panel(self)

		self.Show()
class Main_Frame(wx.Frame):
	"""Main Window of the data logger application"""

	def __init__(self, parent, title, size):
		wx.Frame.__init__(self, parent, title=title, size=size)
		self.Centre()
		self.dataDirectory = os.getcwd() + '/Data/'

		self.recorder = Recorder(self, port='/dev/ttyACM0', baud=115200)

		self.lastFile = None
		self.currentFile = None
		self.hasData = False
	
		self.Menus()			

		self.panel = Main_Panel(self)

		self.Show()


	def Menus(self):
	    self.menubar = wx.MenuBar()

	    self.fileMenu = wx.Menu()
	    self.openMenu = wx.Menu()
	    self.viewMenu = wx.Menu()
	    self.recordMenu = wx.Menu()

	    for i, file in enumerate(os.listdir(self.dataDirectory)):
	    	added = self.openMenu.Append(201+i, file, file)
	    	self.Bind(wx.EVT_MENU, self.selectFile, added)

	    self.fileMenu.AppendMenu(101, 'Open', self.openMenu) #Add the open submenu to the file menu of the menubar
	    self.fileNew = self.fileMenu.Append(wx.ID_NEW, 'New')
	    self.fileView = self.viewMenu.Append(wx.ID_PASTE, 'View')
	    self.fileRecord = self.recordMenu.Append(wx.ID_OPEN, 'Record')

	    self.Bind(wx.EVT_MENU, self.newFile, self.fileNew)
	    self.Bind(wx.EVT_MENU, self.viewFile, self.fileView)
	    self.Bind(wx.EVT_MENU, self.recordFile, self.fileRecord)

	    self.menubar.Append(self.fileMenu, 'File') #Add the file menu to menubar
	    self.menubar.Append(self.viewMenu, 'View')
	    self.menubar.Append(self.recordMenu, 'Record')

	    self.SetMenuBar(self.menubar)

	def newFile(self, evt): #File > New
		NewFile_Window(self)

	def addFile(self, file): #When a new file is created and saved, it is then added to the file list
	    labels = []
	    for i in range(self.openMenu.GetMenuItemCount()):
	    	labels.append(self.openMenu.FindItemByPosition(i).GetLabel())
	    if file not in labels:
			added = self.openMenu.Append(201+self.openMenu.GetMenuItemCount(), file)
			self.Bind(wx.EVT_MENU, self.selectFile, added)
			self.panel.Labels.setAxes(self.currentFile.columns)

	def selectFile(self, evt): #Selects the current file from the menu
		fileName = self.GetMenuBar().FindItemById(evt.GetId()).GetLabel()
		path = self.dataDirectory + fileName
		self.updateFiles(File(path))   #Sets the current file type None, Data, New
		self.panel.Labels.setAxes(self.currentFile.columns)
		self.panel.updateStatus("File", str(self.currentFile.name))
		self.panel.updateStatus("Data", str(self.hasData))
		self.hasData = self.currentFile.hasData()
		self.panel.updateGraphParameters()                    #Update graph file

	def updateFiles(self, file):
		assert (isinstance(file, File)), "File must be file object of NoneType"
		self.lastFile = self.currentFile
		self.currentFile = file
		self.recorder.setFile(file)
		self.hasData = file.hasData()
		if hasattr(self.currentFile, "name"):
			self.hasData = self.currentFile.hasData()
			self.panel.updateStatus("File", str(self.currentFile.name))
		self.panel.updateStatus("Data", str(self.hasData))

	def viewFile(self, evt):
		if self.currentFile != None:
			if self.currentFile.hasData():
				view = View(self)
				view.giveData(self.currentFile.data)

	def recordFile(self, evt):
		if isinstance(self.currentFile, File):
			record = RecordCtrl(self)

	def getFile(self):
		return self.currentFile