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

structureProfileController.py (5113B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\structureSettings\controllers\structureProfileController.py
      2 from collections import defaultdict
      3 from eve.client.script.ui.structure import ChangeSignalConnect
      4 from eve.client.script.ui.structure.structureSettings import CanHaveGroups
      5 from eve.client.script.ui.structure.structureSettings.controllers.settingController import SettingController
      6 from localization import GetByLabel
      7 from ownergroups.ownergroupConst import NO_GROUP_ID
      8 from signals import Signal
      9 import structures
     10 import log
     11 REMOTE_SERVICE_NAME = 'structureProfiles'
     12 
     13 class StructureProfileController(object):
     14 
     15     def __init__(self, profileID = None, profileInfo = None, profileSettings = None):
     16         self.profileID = profileID
     17         self.profileInfo = profileInfo
     18         self.originalProfileSettings = profileSettings
     19         self.groupsBySettingID = None
     20         self.remoteSvc = sm.RemoteSvc(REMOTE_SERVICE_NAME)
     21         self.on_profile_saved = Signal(signalName='on_profile_saved')
     22         self.on_groups_added = Signal(signalName='on_groups_added')
     23         self.on_group_changed = Signal(signalName='on_group_changed')
     24         self.on_profile_value_changed = Signal(signalName='on_profile_value_changed')
     25 
     26     def SaveProfile(self, profileData):
     27         if self.profileID is None:
     28             profileName = self.GetProfileName()
     29             profileDesc = self.GetProfileDescription()
     30             profileID = self.remoteSvc.CreateProfile(profileName, profileDesc)
     31         else:
     32             self.remoteSvc.SaveProfileSettings(self.profileID, profileData)
     33             profileID = self.profileID
     34         self.on_profile_saved(profileID)
     35 
     36     def GetProfileName(self):
     37         if self.profileInfo:
     38             return self.profileInfo.name
     39         return ''
     40 
     41     def GetProfileDescription(self):
     42         if self.profileInfo:
     43             return self.profileInfo.description
     44         return ''
     45 
     46     def GetProfileID(self):
     47         return self.profileID
     48 
     49     def LoadGroups(self):
     50         if self.groupsBySettingID is not None:
     51             return
     52         self.groupsBySettingID = defaultdict(set)
     53         if self.originalProfileSettings is None:
     54             return self.groupsBySettingID
     55         for settingID in self.originalProfileSettings:
     56             if settingID not in structures.SETTING_OBJECT_BY_SETTINGID:
     57                 log.LogWarn('Trying to add invalid settingID = %s' % settingID)
     58                 continue
     59             for groupData in self.originalProfileSettings[settingID]:
     60                 sc = SettingController(settingID, groupData.groupID, groupData.value)
     61                 self.ChangeSignalConnection(sc)
     62                 self.groupsBySettingID[settingID].add(sc)
     63 
     64     def GetAllGroups(self):
     65         return self.groupsBySettingID.copy()
     66 
     67     def GetGroupsBySettingID(self, settingID):
     68         self.LoadGroups()
     69         return self.groupsBySettingID[settingID].copy()
     70 
     71     def GetSettingTextAndIcon(self, settingID):
     72         labelPath = structures.SETTINGS_LABELS[settingID]
     73         settingIcon = structures.SETTINGS_TEXTURES.get(settingID, None)
     74         text = GetByLabel(labelPath)
     75         descLabelPath = structures.SETTINGS_LABELS_DESC.get(settingID, None)
     76         return (text, GetByLabel(descLabelPath) if descLabelPath else '', settingIcon)
     77 
     78     def AddNewGroups(self, settingID, groupIDs):
     79         currentGroups = {g.groupID for g in self.groupsBySettingID[settingID]}
     80         newGroupIDs = [ gID for gID in groupIDs if gID not in currentGroups ]
     81         if not newGroupIDs:
     82             return
     83         initialValue = 0.0
     84         settingSpecification = structures.SETTING_OBJECT_BY_SETTINGID[settingID]
     85         if settingSpecification.valueRange is not None:
     86             minValue, maxValue = settingSpecification.valueRange
     87             initialValue = minValue
     88         for gID in newGroupIDs:
     89             self.AddGroup(settingID, groupID=gID, doSignal=False, value=initialValue)
     90 
     91         self.on_groups_added(settingID, newGroupIDs)
     92 
     93     def AddGroup(self, settingID, groupID, value = 0.0, doSignal = True):
     94         if not CanHaveGroups(settingID) and groupID != NO_GROUP_ID:
     95             return
     96         existingGroupIDs = {g for g in self.groupsBySettingID[settingID]}
     97         if groupID in existingGroupIDs:
     98             return
     99         sc = SettingController(settingID, groupID, value)
    100         self.groupsBySettingID[settingID].add(sc)
    101         self.OnProfileChanged()
    102         if doSignal:
    103             self.on_groups_added(settingID, [groupID])
    104 
    105     def RemoveGroup(self, groupController):
    106         settingID = groupController.GetSettingID()
    107         if groupController in self.groupsBySettingID[settingID]:
    108             self.groupsBySettingID[settingID].remove(groupController)
    109             self.on_group_changed()
    110             self.OnProfileChanged()
    111 
    112     def ChangeSignalConnection(self, sc, connect = True):
    113         signalAndCallback = [(sc.on_profile_value_changed, self.OnProfileChanged)]
    114         ChangeSignalConnect(signalAndCallback, connect)
    115 
    116     def OnProfileChanged(self):
    117         self.on_profile_value_changed()