customersatisficationcont.py (4353B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\systemMenu\customersatisficationcont.py 2 import carbonui 3 import carbonui.text.styles 4 import eveicon 5 import localization 6 import localization.settings 7 from carbonui import uiconst, Align 8 from carbonui.control.button import Button 9 from carbonui.control.buttonIcon import ButtonIcon 10 from carbonui.primitives.container import Container 11 from carbonui.primitives.containerAutoSize import ContainerAutoSize 12 from carbonui.uicore import uicore 13 from carbonui.util.various_unsorted import IsUnder 14 from eve.client.script.ui.control.eveEditPlainText import EditPlainText 15 from eve.client.script.ui.control.tooltips import TooltipPersistentPanel 16 17 class CustomerSatisficationCont(Container): 18 default_name = 'CSAT' 19 hasVoted = 0 20 21 def ApplyAttributes(self, attributes): 22 super(CustomerSatisficationCont, self).ApplyAttributes(attributes) 23 self.tooltipPopup = None 24 self.ConstructLayout() 25 26 def ConstructLayout(self): 27 leftCont = ContainerAutoSize(name='leftCont', parent=self, align=Align.TOLEFT) 28 buttonCont = ContainerAutoSize(name='buttonCont', parent=leftCont, align=Align.CENTERLEFT, height=32) 29 self.btnUp = SurveyButton(name='Upvote', parent=buttonCont, align=uiconst.TOLEFT, width=32, height=32, texturePath='res:/UI/Texture/classes/CSAT/up.png', iconSize=24, iconPadding=15, func=self.CastUpvote) 30 self.btnDown = SurveyButton(name='Downvote', parent=buttonCont, align=uiconst.TOLEFT, width=32, height=32, texturePath='res:/UI/Texture/classes/CSAT/down.png', iconSize=24, iconPadding=15, func=self.CastDownvote) 31 self.lbl = carbonui.text.styles.TextBody(text=localization.GetByLabel('UI/SystemMenu/CSATQuestion'), padLeft=8, parent=self, align=uiconst.VERTICALLY_CENTERED, state=uiconst.UI_NORMAL, bold=True) 32 33 def CastUpvote(self, *args): 34 if self.hasVoted: 35 self.btnDown.SetDeselected() 36 sm.RemoteSvc('userSvc').CastUpvote() 37 self.hasVoted = 1 38 39 def CastDownvote(self, *args): 40 if self.hasVoted: 41 self.btnUp.SetDeselected() 42 sm.RemoteSvc('userSvc').CastDownvote() 43 self.hasVoted = 1 44 if self.tooltipPopup: 45 self.tooltipPopup.Close() 46 self.tooltipPopup = uicore.uilib.tooltipHandler.LoadPersistentTooltip(owner=self.btnDown, customTooltipClass=CSATTooltip, parent=uicore.layer.hint) 47 48 49 class SurveyButton(ButtonIcon): 50 51 def OnMouseUp(self, mouseBtn, *args): 52 if mouseBtn != uiconst.MOUSELEFT: 53 return 54 if uicore.uilib.mouseOver is self: 55 self.SetSelected() 56 57 58 class CSATTooltip(TooltipPersistentPanel): 59 default_pointerDirection = uiconst.POINT_BOTTOM_2 60 default_columns = 2 61 default_state = uiconst.UI_NORMAL 62 default_margin = 16 63 default_cellSpacing = (8, 8) 64 65 def ApplyAttributes(self, attributes): 66 super(CSATTooltip, self).ApplyAttributes(attributes) 67 self.editField = None 68 self.owner = attributes.get('owner') 69 self.pickState = uiconst.TR2_SPS_ON 70 uicore.uilib.RegisterForTriuiEvents(uiconst.UI_MOUSEDOWN, self.OnGlobalMouseDown) 71 72 def LoadTooltip(self, panel, owner): 73 self.AddLabelMedium(align=uiconst.CENTERLEFT, width=250, text=localization.GetByLabel('UI/SystemMenu/CsatFeedbackHeader')) 74 ButtonIcon(parent=self, align=uiconst.TOPRIGHT, texturePath=eveicon.close, hint=localization.GetByLabel('UI/Common/Buttons/Close'), func=self.Close, width=24, height=24, iconSize=16) 75 c = Container(align=uiconst.TOTOP_NOPUSH, height=100) 76 self.editField = EditPlainText(parent=c, hintText=localization.GetByLabel('UI/SystemMenu/CsatFeedbackWrite'), maxLength=1000) 77 self.AddCell(cellObject=c, colSpan=self.columns) 78 btn = Button(align=uiconst.CENTER, label=localization.GetByLabel('UI/SystemMenu/CsatFeedbackSend'), func=self.SendMsg) 79 self.AddCell(cellObject=btn, colSpan=self.columns) 80 81 def SendMsg(self, *args): 82 feedback = self.editField.GetValue() 83 sm.RemoteSvc('userSvc').CastDownvote(feedback) 84 self.Close() 85 86 def OnGlobalMouseDown(self, *args): 87 if uicore.uilib.mouseOver is self or IsUnder(uicore.uilib.mouseOver, self): 88 return True 89 else: 90 self.Close() 91 return False