def onShowPresetsMenu(self, event): """ show a menu with preloaded presets for different tasks """ if not self.presetMenu: self.presetMenu = wx.Menu() addId = wx.NewId() addItem = wx.MenuItem(self.presetMenu, addId, "Save as preset...") self.presetMenu.AppendItem(addItem) self.presetMenu.AppendSeparator() self.Bind(wx.EVT_MENU, self.onSavePreset, id = addId) presetDir = scripting.get_preset_dir() presetFiles = os.path.join(presetDir,"*.bxp") files = glob.glob(presetFiles) for filenm in files: name = ".".join(os.path.basename(filenm).split(".")[:-1]) fileId = wx.NewId() fileItem = wx.MenuItem(self.presetMenu, fileId, name) filenm = filenm.replace("\\", "\\\\") if platform.system == "Windows": filenm = filenm.encode('mbcs') do_cmd = "%s.loadPreset('%s')" % (self.scriptingId, filenm) cmd = lib.Command.Command(lib.Command.GUI_CMD, None, None, do_cmd, "", \ desc = "Load preset %s" % name) f = lambda evt, c = cmd: c.run() self.Bind(wx.EVT_MENU, f, id = fileId) self.presetMenu.AppendItem(fileItem) self.presetBtn.PopupMenu(self.presetMenu, event.GetPosition())
def saveAsPreset(self, name): """ save the procedure list as preset """ parser = ConfigParser.RawConfigParser() parser.optionxform = str self.filterList.writeOut(parser) presetDir = scripting.get_preset_dir() if platform.system() == "Windows": try: name = name.encode('mbcs') except: Logging.error("Preset saving error", 'Only ascii characters (a-z,0-9,-,_) can be used in preset name in Windows') if not os.access(presetDir, os.F_OK): os.mkdir(presetDir) filename = os.path.join(presetDir, name + ".bxp") parser.write(open(filename,"w"))