NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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