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

contactManagementMultiEditWindow.py (6221B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\neocom\addressBook\contactManagementMultiEditWindow.py
      2 import localization
      3 from carbonui import ButtonVariant, uiconst
      4 from carbonui.button.group import ButtonGroup
      5 from carbonui.control.button import Button
      6 from carbonui.control.slider import Slider
      7 from carbonui.control.window import Window
      8 from carbonui.primitives.container import Container
      9 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     10 from carbonui.primitives.line import Line
     11 from carbonui.uicore import uicore
     12 from eve.client.script.ui.shared.standings.levelSelector import StandingLevelSelector
     13 from eve.client.script.ui.control import eveLabel
     14 from eve.client.script.ui.util import uix
     15 from player_messaging.client.ui_message import prompt_player_fsd_dialog
     16 
     17 class ContactManagementMultiEditWnd(Window):
     18     __guid__ = 'form.ContactManagementMultiEditWnd'
     19     default_fixedWidth = 280
     20     default_fixedHeight = 100
     21 
     22     def ApplyAttributes(self, attributes):
     23         super(ContactManagementMultiEditWnd, self).ApplyAttributes(attributes)
     24         entityIDs = attributes.entityIDs
     25         contactType = attributes.contactType
     26         self.result = None
     27         self.SetCaption(localization.GetByLabel('UI/PeopleAndPlaces/ContactManagement'))
     28         self.entityIDs = entityIDs
     29         self.level = None
     30         self.contactType = contactType
     31         self.ConstructLayout()
     32 
     33     def ConstructLayout(self):
     34         self.mainContainer = ContainerAutoSize(name='topCont', parent=self.sr.main, align=uiconst.TOTOP, callback=self.OnMainContainerSizeChanged)
     35         charnameList = ''
     36         for entityID in self.entityIDs:
     37             charName = cfg.eveowners.Get(entityID).name
     38             if charnameList == '':
     39                 charnameList = '%s' % charName
     40             else:
     41                 charnameList = '%s, %s' % (charnameList, charName)
     42 
     43         eveLabel.EveLabelLargeBold(text=charnameList, parent=self.mainContainer, align=uiconst.TOTOP, state=uiconst.UI_DISABLED)
     44         Line(parent=self.mainContainer, align=uiconst.TOTOP, padding=(0, 4, 0, 4))
     45         self.standingList = {const.contactHighStanding: localization.GetByLabel('UI/PeopleAndPlaces/ExcellentStanding'),
     46          const.contactGoodStanding: localization.GetByLabel('UI/PeopleAndPlaces/GoodStanding'),
     47          const.contactNeutralStanding: localization.GetByLabel('UI/PeopleAndPlaces/NeutralStanding'),
     48          const.contactBadStanding: localization.GetByLabel('UI/PeopleAndPlaces/BadStanding'),
     49          const.contactHorribleStanding: localization.GetByLabel('UI/PeopleAndPlaces/TerribleStanding')}
     50         levelList = self.standingList.keys()
     51         levelList.sort()
     52         levelText = self.standingList.get(self.level)
     53         self.levelText = eveLabel.EveLabelMedium(text=levelText, parent=self.mainContainer, align=uiconst.TOTOP, state=uiconst.UI_DISABLED)
     54         if self.contactType != 'contact':
     55             bottomCont = Container(name='bottomCont', parent=self.mainContainer, align=uiconst.TOTOP, height=40, padding=uiconst.defaultPadding)
     56             startVal = 0.5
     57             sliderContainer = Container(parent=bottomCont, name='sliderContainer', align=uiconst.CENTERTOP, height=20, width=210)
     58             self.sr.slider = self.AddSlider(sliderContainer, startVal=startVal)
     59             self.sr.slider.SetValue(startVal)
     60             boxCont = bottomCont
     61             iconPadding = 28
     62         else:
     63             boxCont = Container(name='boxCont', parent=self.mainContainer, align=uiconst.TOTOP, height=55)
     64             iconPadding = 6
     65         levelSelectorContainer = Container(parent=boxCont, name='levelSelectorContainer', align=uiconst.TOTOP, pos=(0, 0, 0, 55))
     66         self.levelSelector = StandingLevelSelector(name='levelSelector', parent=levelSelectorContainer, align=uiconst.CENTERTOP, pos=(0,
     67          14,
     68          100 + iconPadding * 4,
     69          55), iconPadding=iconPadding)
     70         self.levelSelector.OnStandingLevelSelected = self.OnStandingLevelSelected
     71         self.btnGroup = ButtonGroup(parent=self.mainContainer, align=uiconst.TOTOP)
     72         confirm_button = Button(parent=self.btnGroup, label=localization.GetByLabel('UI/PeopleAndPlaces/EditContact'), func=self.Confirm, args=(), btn_modalresult=1, btn_default=1, variant=ButtonVariant.PRIMARY)
     73         Button(parent=self.btnGroup, label=localization.GetByLabel('UI/Common/Buttons/Cancel'), func=self.Cancel, args=())
     74         if self.level is None:
     75             self.levelText.text = localization.GetByLabel('UI/PeopleAndPlaces/SelectStanding')
     76             uicore.registry.SetFocus(confirm_button)
     77 
     78     def OnMainContainerSizeChanged(self, *args, **kwds):
     79         _, height = self.GetWindowSizeForContentSize(height=self.mainContainer.height)
     80         self.SetFixedHeight(height)
     81 
     82     def AddSlider(self, where, startVal = 0):
     83         return Slider(name='standing', config='standing', parent=where, on_dragging=self.OnSetValue, minValue=-10.0, maxValue=10.0)
     84 
     85     def OnSetValue(self, slider):
     86         self.levelText.text = localization.GetByLabel('UI/AddressBook/SliderLabel', value=round(slider.GetValue(), 1), standingText=uix.GetStanding(round(slider.GetValue(), 1)))
     87 
     88     def OnStandingLevelSelected(self, level):
     89         if self.contactType != 'contact':
     90             level = level / 20.0 + 0.5
     91             self.sr.slider.SetValue(level)
     92         else:
     93             self.level = level
     94             self.levelText.text = self.standingList.get(self.level)
     95 
     96     def Confirm(self):
     97         if self.contactType != 'contact':
     98             if self.levelText.text == localization.GetByLabel('UI/PeopleAndPlaces/SelectStanding'):
     99                 prompt_player_fsd_dialog('NoStandingsSelected')
    100                 return
    101             relationshipID = round(self.sr.slider.value, 1)
    102         else:
    103             if self.level is None:
    104                 prompt_player_fsd_dialog('NoStandingsSelected')
    105                 return
    106             relationshipID = self.level
    107         self.result = relationshipID
    108         if getattr(self, 'isModal', None):
    109             self.SetModalResult(1)
    110 
    111     def Cancel(self):
    112         self.result = None
    113         if getattr(self, 'isModal', None):
    114             self.SetModalResult(0)