def appendAlgorithm(self, algorithm): #To do: when algo is reset, the frm should be removed for algoName in self.__frameDict: self.__frameDict[algoName]['frame'].pack_forget() frm = Frame(self) frm.pack() paramInfo = {} params = algorithm['parameters'] for idx, name in enumerate(params): param = params[name] paramitem = ParamItem(frm) paramitem.labelText = name paramitem.labelWidth = 5 paramitem.entryWidth = 8 if self.balloon: self.balloon.bind_widget(paramitem.label, balloonmsg=param.shortdesc) if param.type == 'int': paramitem.checkFunc = self._app.checkInt elif param.type == 'float': paramitem.checkFunc = self._app.checkFloat paramitem.grid(row=idx%self.__MAXROW, column=idx//self.__MAXROW) #self.__params[param.name] = {'gui':paramitem, 'meta':param} paramInfo[param.name] = {'gui':paramitem, 'meta':param} self.__algo = algorithm #self.__frameDict[algorithm.meta.name] = frm self.__frameDict[algorithm['name']] = dict(frame=frm, paramInfo=paramInfo) self.__params = paramInfo