def OnUnitConvert(self, event):
uid, tree_tid = self.popup_obj
OM = ObjectManager(self)
obj = OM.get(uid)
try:
unit = UOM.get_unit(obj.unit)
dim = UOM.get_unit_dimension(unit.dimension)
qc = UOM.get_quantity_class(dim.name)
UNITS_OPTIONS = OrderedDict()
for mu in qc.memberUnit:
UNITS_OPTIONS[mu] = mu
except:
msg = 'Unit ' + obj.unit + ' cannot be converted.'
wx.MessageBox(msg, 'Warning', wx.OK | wx.ICON_WARNING)
return
#
UIM = UIManager()
dlg = UIM.create('dialog_controller', title='Unit conversion')
#
try:
ctn_details = dlg.view.AddCreateContainer('StaticBox', label='Object details', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND|wx.TOP, border=5)
dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND|wx.TOP, border=5, label='Name: ' + obj.name)
#
dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND|wx.TOP, border=5, label='Type id: ' + obj.tid)
dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND|wx.TOP, border=5, label='Object id: ' + str(obj.oid))
dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND|wx.TOP, border=5, label='Current unit: ' + obj.unit)
#
ctn_new_unit = dlg.view.AddCreateContainer('StaticBox', label='New unit', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND|wx.TOP, border=5)
dlg.view.AddChoice(ctn_new_unit, proportion=0, flag=wx.EXPAND|wx.TOP, border=5, widget_name='new_unit', options=UNITS_OPTIONS)
#
dlg.view.SetSize((300, 330))
answer = dlg.view.ShowModal()
#
if answer == wx.ID_OK:
results = dlg.get_results()
new_unit_name = results.get('new_unit')
new_data = UOM.convert(obj.data, obj.unit, new_unit_name)
obj._data = new_data
obj.unit = new_unit_name
UIM = UIManager()
controller = UIM.get(self._controller_uid)
controller.reload_object(obj.uid)
except Exception:
pass
finally:
UIM.remove(dlg.uid)
评论列表
文章目录