def showTemplateDialog(self):
        """
        Displays the template selection dialog for a new project and
        performs all the bindings for the dialog events.    
        Returns the template name as a string or None (if nothing selected).
        """
        self.template = None
        selector = makerTemplateDialog.xrcDIALOG1(self.view)
        selector.List.InsertItems(self.model.getTemplates(), 0)
        fPath = os.path.join(os.path.dirname(sys.argv[0]), "./system/select.png")

        print "fPath is: ", fPath
        bmfi = self.view.wx.Image(fPath).ConvertToBitmap()
        selector.Preview.SetBitmap(bmfi)

        def cancel(event):
            self.template = None
            selector.Close()
            event.Skip()

        def ok(event):
            selector.Close()
            event.Skip()

        def select(event):
            """Get the selected string from the listbox."""
            try:
                print "dirname ", os.path.dirname(sys.argv[0])
                self.template = event.GetString()
                fPath = os.path.join(
                    os.path.dirname(sys.argv[0]), "./system/templates", self.template, "parts/preview.jpg"
                )
                bmfi = self.view.wx.Image(fPath).ConvertToBitmap()
                # bmfi = self.view.wx.BitmapFromImage(image, self.view.wx.BITMAP_TYPE_ANY)
                selector.Preview.SetBitmap(bmfi)
            except:
                print "ERROR in select"
                fPath = os.path.join(os.path.dirname(sys.argv[0]), "./system/select.png")
                bmfi = self.view.wx.Image(fPath).ConvertToBitmap()
                # bmfi  = self.view.wx.BitmapFromImage(image, self.view.wx.BITMAP_TYPE_ANY)
                selector.Preview.SetBitmap(bmfi)

        selector.List.Bind(self.view.wx.EVT_LISTBOX, select)
        selector.Ok.Bind(self.view.wx.EVT_BUTTON, ok)
        selector.Cancel.Bind(self.view.wx.EVT_BUTTON, cancel)

        selector.ShowModal()

        return self.template
    def showTemplateDialog(self, newProjectDir, newProjectName):
        """
        
        Displays the template selection dialog for a new project and calls
        model.addProject on selection
    
        """
        
        viewPath = makerTemplateViewBuilder.buildView(self.model.getSystemPath(), self.model.getApplicationSupportDir())
        
        self.template = None
        
        self.selectedTemplate = makerTemplateViewBuilder.defaultTemplate()
        
        selector = makerTemplateDialog.xrcDIALOG1(self.view)
        
        # customize 
        
        selector.wv = theView.WebView.New(selector)
        selector.selectedURL = None
        
        selector.Sizer.Replace(selector.WebView, selector.wv)
        selector.Sizer.Layout()
        selector.Refresh()
    
        selector.Create.SetDefault()
        selector.Create.Enable(True)
        
        def loadTemplates(pathToView):
        
            # turn into proper URL and load
            selector.wv.LoadURL("file://" + pathToView.replace(" ", "%20"))
            
            selector.Bind(theView.EVT_WEB_VIEW_NAVIGATING, onWebViewNavigating, selector.wv)
            selector.Bind(self.view.wx.EVT_BUTTON, onCreateButton, selector.Create)
        
    
        def onWebViewNavigating(evt):
            
            url = evt.GetURL()
            if not url.endswith("--"):
                web.open(url)
                evt.Veto()
            else:
                onWebViewNavigated(evt)
            
            
        def onWebViewNavigated(evt):
            
            url = evt.GetURL()
            self.template = re.compile('--(.+)--', re.IGNORECASE).findall(url)
            
            if self.template == []:
                return
            
            self.selectedTemplate = self.template[0]
            
            selector.Create.Enable(True)

        def onCreateButton(event):
            event.Skip()
            if not self.selectedTemplate:
                return
            
            src = os.path.join(self.model.getSystemPath(), 'templates', self.selectedTemplate)
            
            if not os.path.isdir(src):
                self.errorMessage("Template Error: Template does not exist...\n" + self.selectedTemplate)
                return
            
            selector.Close() # Don't destroy here - only hide 
            
            self.showProgress(limit = 1, Message="Creating project...", title="Creating project...")
            
            self.model.addNewProject(src, newProjectDir, newProjectName)
                     
            self.addProjectIconToTree(newProjectName)
            self.killProgressBar()
            
            if not self.testing:
                self.model.activeProject.makeAll()

            selector.Destroy() # Destroy dialog
        
        
        loadTemplates(viewPath)
        selector.ShowWindowModal()