def __init__(self, iface):
     # Save reference to the QGIS interface
     self.iface = iface
     self.dlg = MeshingDialog()
     self.defaultDirec = "/tmp/qgis/"
     self.shpName = self.defaultDirec + "temp"
     self.mshName = self.defaultDirec + "temp"
     self.geoName = self.defaultDirec + "temp"
     self.meshing_option = ""
     self.meshing_option_meshAdapt = "-algo meshadapt"
     self.meshing_option_delaunay = "-algo del2d"
     self.meshing_option_frontal = "-algo front2d"
	def __init__(self, iface):
		# Save reference to the QGIS interface
		self.iface = iface
		self.dlg = MeshingDialog()
		self.defaultDirec = "/tmp/qgis/"
		self.shpName = self.defaultDirec + "temp"
		self.mshName = self.defaultDirec + "temp"
		self.geoName = self.defaultDirec + "temp"
		self.meshing_option = ""
		self.meshing_option_meshAdapt = "-algo meshadapt"
		self.meshing_option_delaunay = "-algo del2d"
		self.meshing_option_frontal = "-algo front2d"
class Meshing: 

	def __init__(self, iface):
		# Save reference to the QGIS interface
		self.iface = iface
		self.dlg = MeshingDialog()
		self.defaultDirec = "/tmp/qgis/"
		self.shpName = self.defaultDirec + "temp"
		self.mshName = self.defaultDirec + "temp"
		self.geoName = self.defaultDirec + "temp"
		self.meshing_option = ""
		self.meshing_option_meshAdapt = "-algo meshadapt"
		self.meshing_option_delaunay = "-algo del2d"
		self.meshing_option_frontal = "-algo front2d"

	def initGui(self):  
		# Create action that will start plugin configuration
		self.action = QAction(QIcon(":/plugins/Meshing/icon.png"), \
				"meshing", self.iface.mainWindow())
		# connect the action to the run method
		QObject.connect(self.action, SIGNAL("activated()"), self.run) 
		QObject.connect(self.dlg.ui.browse_geo, SIGNAL("clicked()"), self.save_geo)
		QObject.connect(self.dlg.ui.browse_shp, SIGNAL("clicked()"), self.save_shp)
		QObject.connect(self.dlg.ui.browse_msh, SIGNAL("clicked()"), self.save_msh)
		# Add toolbar button and menu item
		self.iface.addToolBarIcon(self.action)
		self.iface.addPluginToMenu("&meshing", self.action)
		

	#uses the file dialog to get the naem of the file from user
	def save_geo(self):
		#self.getGeoCaption = QString("Save Geo File")
		self.geoName = QFileDialog.getSaveFileName(caption=QString("Save Geo File"))
		self.dlg.ui.geo_path.setText(self.geoName)

	#uses the file dialog to get the filepath to save the shapefile for mesh
	def save_shp(self):
		#self.getShpCaption("Save Shapefile for Mesh")
		self.shpName = QFileDialog.getSaveFileName(caption=QString("Save shapefile"))
		self.dlg.ui.shp_path.setText(self.shpName)
	
	#uses the file dialog to get the filepath to save the .msh file
	def save_msh(self):
		#self.getMshCaption("Save Mesh(.msh) File")
		self.mshName = QFileDialog.getSaveFileName(caption=QString("Save Mesh File"))
		self.dlg.ui.mesh_path.setText(self.mshName)

	def unload(self):
		# Remove the plugin menu item and icon
		self.iface.removePluginMenu("&meshing",self.action)
		self.iface.removeToolBarIcon(self.action)

	#this method meshes the current active layer in qgis
	def meshCurrentLayer(self):
 		i = call(["mkdir", self.defaultDirec[0:-1]])
		if i==0: return
		try:
			aLayer = self.iface.activeLayer()
			filepath = str(aLayer.source())
		except AttributeError:
			QtGui.QMessageBox.information(None,"ERROR: No Active Layer","There are no active layer to mesh. Please load a shapefile layer first to mesh.")
			return True
		#call(["cd","~/.qgis/python/plugins/Meshing"])
		i = getGeoFile(filepath,self.geoName)
		#i = call(["python","~/.qgis/makeGeoFile_2.py",filepath,self.defaultDirec+"temp"])
		if i==2: 
			QtGui.QMessageBox.information(None,"ERROR: Creating .geo file","An error occurred while converting the current layer to a .geo file to mesh")	
			return True
		i = call(["gmsh","-2",str(self.meshing_option),self.geoName+".geo"])
		#call(["rm",self.defaultDirec+"temp.geo"])
		if i==2:
			QtGui.QMessageBox.information(None,"ERROR: In Generating Mesh","An error occurred while generating the mesh for the current layer")
			return True
		i = getShapeForMesh(self.mshName+".msh",self.shpName)
		if i==1: 
			QtGui.QMessageBox.information(None,"ERROR : Loading layer into QGIS","An eror has occured while the the meshed layer was trying to be loaded into Qgis")
			return True
		return False
	
	#this method sets up the drop down menu for user to choose the meshing
	#algorithm
	def setMeshingOption(self):
		self.dlg.ui.meshing_options.clear()
		items = list([QString("MeshAdapt"),QString("Delaunay"),QString("Frontal")])
		self.dlg.ui.meshing_options.addItems(items)

	
	"""
	This method retrieves the information from the drop down menu
	for the meshing algorithm to be used while producing the mesh
	"""
	def getMeshingOption(self):
		option = str(self.dlg.ui.meshing_options.currentText())
		if option=="MeshAdapt":
			self.meshing_option = self.meshing_option_meshAdapt
		elif option=="Delaunay":
			self.meshing_option = self.meshing_option_delaunay
		else: 
			self.meshing_option = self.meshing_option_frontal

	"""
	This method meshes the geo file hich would be produced by the current
	active layer and then displayes the shapefile of the mesh itself
	"""
	def run(self):
		QtGui.QMessageBox.information(None,"Meshing", "Please leave the file paths to save the file blank if you do not wish to save any files")
		self.setMeshingOption()
		self.dlg.show()
		result = self.dlg.exec_()
		if result==1:
			error = self.meshCurrentLayer()
			self.getMeshingOption()
			if error==True:
				return
			self.iface.addVectorLayer(self.defaultDirec+"temp.shp","Mesh","ogr")
class Meshing:
    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        self.dlg = MeshingDialog()
        self.defaultDirec = "/tmp/qgis/"
        self.shpName = self.defaultDirec + "temp"
        self.mshName = self.defaultDirec + "temp"
        self.geoName = self.defaultDirec + "temp"
        self.meshing_option = ""
        self.meshing_option_meshAdapt = "-algo meshadapt"
        self.meshing_option_delaunay = "-algo del2d"
        self.meshing_option_frontal = "-algo front2d"

    def initGui(self):
        # Create action that will start plugin configuration
        self.action = QAction(QIcon(":/plugins/Meshing/icon.png"), \
          "meshing", self.iface.mainWindow())
        # connect the action to the run method
        QObject.connect(self.action, SIGNAL("activated()"), self.run)
        QObject.connect(self.dlg.ui.browse_geo, SIGNAL("clicked()"),
                        self.save_geo)
        QObject.connect(self.dlg.ui.browse_shp, SIGNAL("clicked()"),
                        self.save_shp)
        QObject.connect(self.dlg.ui.browse_msh, SIGNAL("clicked()"),
                        self.save_msh)
        # Add toolbar button and menu item
        self.iface.addToolBarIcon(self.action)
        self.iface.addPluginToMenu("&meshing", self.action)

    #uses the file dialog to get the naem of the file from user
    def save_geo(self):
        #self.getGeoCaption = QString("Save Geo File")
        self.geoName = QFileDialog.getSaveFileName(
            caption=QString("Save Geo File"))
        self.dlg.ui.geo_path.setText(self.geoName)

    #uses the file dialog to get the filepath to save the shapefile for mesh
    def save_shp(self):
        #self.getShpCaption("Save Shapefile for Mesh")
        self.shpName = QFileDialog.getSaveFileName(
            caption=QString("Save shapefile"))
        self.dlg.ui.shp_path.setText(self.shpName)

    #uses the file dialog to get the filepath to save the .msh file
    def save_msh(self):
        #self.getMshCaption("Save Mesh(.msh) File")
        self.mshName = QFileDialog.getSaveFileName(
            caption=QString("Save Mesh File"))
        self.dlg.ui.mesh_path.setText(self.mshName)

    def unload(self):
        # Remove the plugin menu item and icon
        self.iface.removePluginMenu("&meshing", self.action)
        self.iface.removeToolBarIcon(self.action)

    #this method meshes the current active layer in qgis
    def meshCurrentLayer(self):
        i = call(["mkdir", self.defaultDirec[0:-1]])
        if i == 0: return
        try:
            aLayer = self.iface.activeLayer()
            filepath = str(aLayer.source())
        except AttributeError:
            QtGui.QMessageBox.information(
                None, "ERROR: No Active Layer",
                "There are no active layer to mesh. Please load a shapefile layer first to mesh."
            )
            return True
    #call(["cd","~/.qgis/python/plugins/Meshing"])
        i = getGeoFile(filepath, self.geoName)
        #i = call(["python","~/.qgis/makeGeoFile_2.py",filepath,self.defaultDirec+"temp"])
        if i == 2:
            QtGui.QMessageBox.information(
                None, "ERROR: Creating .geo file",
                "An error occurred while converting the current layer to a .geo file to mesh"
            )
            return True
        i = call(
            ["gmsh", "-2",
             str(self.meshing_option), self.geoName + ".geo"])
        #call(["rm",self.defaultDirec+"temp.geo"])
        if i == 2:
            QtGui.QMessageBox.information(
                None, "ERROR: In Generating Mesh",
                "An error occurred while generating the mesh for the current layer"
            )
            return True
        i = getShapeForMesh(self.mshName + ".msh", self.shpName)
        if i == 1:
            QtGui.QMessageBox.information(
                None, "ERROR : Loading layer into QGIS",
                "An eror has occured while the the meshed layer was trying to be loaded into Qgis"
            )
            return True
        return False

    #this method sets up the drop down menu for user to choose the meshing
    #algorithm

    def setMeshingOption(self):
        self.dlg.ui.meshing_options.clear()
        items = list(
            [QString("MeshAdapt"),
             QString("Delaunay"),
             QString("Frontal")])
        self.dlg.ui.meshing_options.addItems(items)

    """
	This method retrieves the information from the drop down menu
	for the meshing algorithm to be used while producing the mesh
	"""

    def getMeshingOption(self):
        option = str(self.dlg.ui.meshing_options.currentText())
        if option == "MeshAdapt":
            self.meshing_option = self.meshing_option_meshAdapt
        elif option == "Delaunay":
            self.meshing_option = self.meshing_option_delaunay
        else:
            self.meshing_option = self.meshing_option_frontal

    """
	This method meshes the geo file hich would be produced by the current
	active layer and then displayes the shapefile of the mesh itself
	"""

    def run(self):
        QtGui.QMessageBox.information(
            None, "Meshing",
            "Please leave the file paths to save the file blank if you do not wish to save any files"
        )
        self.setMeshingOption()
        self.dlg.show()
        result = self.dlg.exec_()
        if result == 1:
            error = self.meshCurrentLayer()
            self.getMeshingOption()
            if error == True:
                return
            self.iface.addVectorLayer(self.defaultDirec + "temp.shp", "Mesh",
                                      "ogr")