formContainer.py (1487B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\control\forms\formContainer.py 2 from carbonui import uiconst 3 from carbonui.button.group import ButtonGroup 4 from carbonui.control.forms import formFields 5 from carbonui.primitives.containerAutoSize import ContainerAutoSize 6 from player_messaging.client.ui_message import message_player 7 8 class FormContainer(ContainerAutoSize): 9 default_components = None 10 default_align = uiconst.TOTOP 11 12 def ApplyAttributes(self, attributes): 13 super(FormContainer, self).ApplyAttributes(attributes) 14 self.form = attributes.form 15 self.ConstructFields() 16 self.ConstructButtonGroup() 17 self.form.on_submit_failed.connect(self.OnSubmitFailed) 18 19 def ConstructFields(self): 20 formFields.ConstructFields(self, self.form) 21 22 def ConstructButtonGroup(self): 23 buttonGroup = ButtonGroup(parent=self, align=uiconst.TOTOP, padTop=16) 24 for submit_action in self.form.actions: 25 buttonGroup.AddButton(submit_action.label, lambda button, s = submit_action: self._execute_submit_action(s, button)) 26 27 def _execute_submit_action(self, submit_action, button): 28 button.Disable() 29 button.busy = True 30 try: 31 submit_action.execute(self.form) 32 finally: 33 button.Enable() 34 button.busy = False 35 36 def OnSubmitFailed(self, action): 37 message_player(self.form.get_submit_failed_reasons_text())