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()