def SetIntValCB(recv, send, sig, data): vw = gi.SpinBox(handle=send) nm = vw.Name() # print("spin name:", nm) nms = nm.split(':') cv = classviews[nms[0]] flds = cv.Class.__dict__ setattr(cv.Class, nms[1], vw.Value)
def Update(self): flds = self.Class.__dict__ for nm, val in flds.items(): if nm in self.Views: vw = self.Views[nm] # print("updating:", nm, "view:", vw) if isinstance(val, bool): svw = gi.CheckBox(vw) svw.SetChecked(val) elif isinstance(val, go.GoClass): pass elif isinstance(val, pd.DataFrame): pass elif isinstance(val, (int, float)): svw = gi.SpinBox(vw) svw.SetValue(val) else: tvw = gi.TextField(vw) tvw.SetText(str(val))
def PyObjUpdtView(val, vw, nm): """ updates the given view widget for given value """ if isinstance(val, Enum): if isinstance(vw, gi.ComboBox): svw = gi.ComboBox(vw) svw.SetCurVal(val.name) else: print("epygiv; Enum value: %s doesn't have ComboBox widget" % nm) elif isinstance(val, go.GoClass): pass elif isinstance(val, ClassViewObj): val.UpdateClassViewInline() val.UpdateClassView() elif isinstance(val, bool): if isinstance(vw, gi.CheckBox): svw = gi.CheckBox(vw) svw.SetChecked(val) else: print("epygiv; bool value: %s doesn't have CheckBox widget" % nm) elif isinstance(val, (int, float)): if isinstance(vw, gi.SpinBox): svw = gi.SpinBox(vw) svw.SetValue(val) else: print("epygiv; numerical value: %s doesn't have SpinBox widget" % nm) else: if isinstance(vw, gi.TextField): tvw = gi.TextField(vw) tvw.SetText(str(val)) else: print( "epygiv; object %s = %s doesn't have expected TextField widget" % (nm, val))
def SetFloatValCB(recv, send, sig, data): vw = gi.SpinBox(handle=send) nm = vw.Name() nms = nm.split(':') cv = classviews[nms[0]] setattr(cv.Class, nms[1], float(vw.Value))
def Config(self): self.Frame.SetStretchMaxWidth() self.Frame.SetStretchMaxHeight() self.Frame.Lay = gi.LayoutGrid self.Frame.Stripes = gi.RowStripes self.Frame.SetPropInt("columns", 2) updt = self.Frame.UpdateStart() self.Frame.SetFullReRender() self.Frame.DeleteChildren(True) flds = self.Class.__dict__ self.Views = {} for nm, val in flds.items(): tags = self.FieldTags(nm) if self.HasTagValue(tags, "view", "-"): continue lbl = gi.Label(self.Frame.AddNewChild(gi.KiT_Label(), "lbl_" + nm)) lbl.SetText(nm) if isinstance(val, bool): vw = gi.CheckBox( self.Frame.AddNewChild(gi.KiT_CheckBox(), self.Name + ":" + nm)) vw.SetChecked(val) vw.ButtonSig.Connect(self.Frame, SetBoolValCB) if self.HasTagValue(tags, "inactive", "+"): vw.SetInactive() self.Views[nm] = vw elif isinstance(val, go.GoClass): vw = gi.Action( self.Frame.AddNewChild(gi.KiT_Action(), self.Name + ":" + nm)) if hasattr(val, "Label"): vw.SetText(val.Label()) else: vw.SetText(nm) vw.SetPropStr("padding", "2px") vw.SetPropStr("margin", "2px") vw.SetPropStr("border-radius", "4px") vw.ActionSig.Connect(self.Frame, EditGoObjCB) if self.HasTagValue(tags, "inactive", "+"): vw.SetInactive() self.Views[nm] = vw elif isinstance(val, pd.DataFrame): vw = gi.Action( self.Frame.AddNewChild(gi.KiT_Action(), self.Name + ":" + nm)) vw.SetText(nm) vw.SetPropStr("padding", "2px") vw.SetPropStr("margin", "2px") vw.SetPropStr("border-radius", "4px") vw.ActionSig.Connect(self.Frame, EditObjCB) if self.HasTagValue(tags, "inactive", "+"): vw.SetInactive() self.Views[nm] = vw elif isinstance(val, (int, float)): vw = gi.SpinBox( self.Frame.AddNewChild(gi.KiT_SpinBox(), self.Name + ":" + nm)) vw.SetValue(val) vw.SpinBoxSig.Connect(self.Frame, SetIntValCB) if self.HasTagValue(tags, "inactive", "+"): vw.SetInactive() self.Views[nm] = vw else: vw = gi.TextField( self.Frame.AddNewChild(gi.KiT_TextField(), self.Name + ":" + nm)) vw.SetText(str(val)) vw.SetPropStr("min-width", "10em") vw.TextFieldSig.Connect(self.Frame, SetStrValCB) if self.HasTagValue(tags, "inactive", "+"): vw.SetInactive() self.Views[nm] = vw self.Frame.UpdateEnd(updt)