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

linkedBookmarkFolderWindow.py (10645B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\bookmarks\linkedBookmarkFolderWindow.py
      2 import eve.common.lib.appConst as appConst
      3 from carbonui import const as uiconst
      4 from carbonui.primitives.container import Container
      5 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      6 from carbonui.primitives.layoutGrid import LayoutGrid
      7 from carbonui.button.group import ButtonGroup
      8 from carbonui.control.radioButton import RadioButton
      9 from eve.client.script.ui.control.eveEditPlainText import EditPlainText
     10 from eve.client.script.ui.control.eveLabel import EveLabelMedium, EveLabelLarge
     11 from carbonui.control.window import Window
     12 from eve.client.script.ui.control.glowSprite import GlowSprite
     13 from localization import GetByLabel
     14 import ownergroups.client
     15 from utillib import KeyVal
     16 
     17 class LinkedBookmarkFolderWindow(Window):
     18     __guid__ = 'form.LinkedBookmarkFolderWindow'
     19     default_windowID = 'LinkedBookmarkFolderWindow'
     20 
     21     def ApplyAttributes(self, attributes):
     22         Window.ApplyAttributes(self, attributes)
     23         self.folder = attributes.get('folder', None)
     24         self.alreadyKnown = attributes.get('alreadyKnown', False)
     25         if self.folder.isPersonal:
     26             iconPath = 'res:/UI/Texture/classes/Bookmarks/personalFolderAddress_64.png'
     27         else:
     28             iconPath = 'res:/UI/Texture/classes/Bookmarks/sharedFolderAddress_64.png'
     29         self.icon = iconPath
     30         self.topParent = Container(parent=self.GetMainArea(), name='topParent', align=uiconst.TOTOP, height=52)
     31         self.mainIcon = GlowSprite(parent=self.topParent, name='mainicon', pos=(0, -4, 64, 64), state=uiconst.UI_DISABLED, texturePath=self.iconNum)
     32         if self.alreadyKnown:
     33             self.SetCaption(GetByLabel('UI/AclBookmarks/FolderInformation'))
     34         else:
     35             self.SetCaption(GetByLabel('UI/AclBookmarks/AddFolderToLists'))
     36         self.isPersonal = self.folder.isPersonal
     37         self.isActive = True
     38         if self.alreadyKnown:
     39             self.isActive = self.folder.isActive
     40         if not self.isPersonal:
     41             self.mainIcon.isDragObject = True
     42             self.mainIcon.state = uiconst.UI_NORMAL
     43             self.mainIcon.GetDragData = self.GetDragDataForIcon
     44         self.mainCont = Container(name='mainCont', parent=self.sr.main, align=uiconst.TOALL, left=4, width=4, clipChildren=True)
     45         buttonGroup = ButtonGroup(name='buttonGroup', parent=self.mainCont)
     46         if self.alreadyKnown or self.isPersonal:
     47             if not self.isActive:
     48                 btn = buttonGroup.AddButton(GetByLabel('UI/AclBookmarks/MarkFolderActive'), self.MarkFolderAsActive, isDefault=True)
     49             else:
     50                 btn = buttonGroup.AddButton(GetByLabel('UI/AclBookmarks/MarkFolderAsInactive'), self.MarkFolderAsInactive, isDefault=True)
     51             buttonGroup.AddButton(GetByLabel('UI/Common/Close'), self.Cancel)
     52         else:
     53             btn = buttonGroup.AddButton(GetByLabel('UI/AclBookmarks/AddFolder'), self.AddFolder, isDefault=True)
     54             buttonGroup.AddButton(GetByLabel('UI/Common/Cancel'), self.Cancel)
     55         labelContainer = ContainerAutoSize(name='labelContainer', parent=self.topParent, align=uiconst.TOTOP, padLeft=70, padTop=4)
     56         EveLabelMedium(text=GetByLabel('UI/AclBookmarks/FolderNameHeader'), parent=labelContainer, align=uiconst.TOTOP)
     57         EveLabelLarge(text=self.folder.folderName, parent=labelContainer, align=uiconst.TOTOP)
     58         ROW_PADDING = (2, 2, 2, 2)
     59         maxTextWidth = 60
     60         activeContainer = Container(name='activeContainer', parent=self.mainCont, align=uiconst.TOBOTTOM, top=8, height=50, padding=ROW_PADDING)
     61         mainGrid = LayoutGrid(columns=2, parent=self.mainCont, align=uiconst.TOBOTTOM, cellPadding=2)
     62         typeRow = mainGrid.AddRow()
     63         typeLabel = EveLabelMedium(text=GetByLabel('UI/AclBookmarks/FolderType'), parent=typeRow)
     64         if self.isPersonal:
     65             text = GetByLabel('UI/AclBookmarks/PersonalFolderType')
     66         else:
     67             text = GetByLabel('UI/AclBookmarks/SharedFolderType')
     68         EveLabelMedium(text=text, parent=typeRow)
     69         if not self.folder.isPersonal:
     70             accessRow = mainGrid.AddRow()
     71             accessLabel = EveLabelMedium(text=GetByLabel('UI/AclBookmarks/YourAccess'), parent=accessRow)
     72             if self.folder.accessLevel == appConst.ACCESS_ADMIN:
     73                 text = GetByLabel('UI/AclBookmarks/AdminAccess')
     74             elif self.folder.accessLevel == appConst.ACCESS_MANAGE:
     75                 text = GetByLabel('UI/AclBookmarks/ManageAccess')
     76             elif self.folder.accessLevel == appConst.ACCESS_USE:
     77                 text = GetByLabel('UI/AclBookmarks/UseAccess')
     78             elif self.folder.accessLevel == appConst.ACCESS_VIEW:
     79                 text = GetByLabel('UI/AclBookmarks/ViewAccess')
     80             else:
     81                 text = GetByLabel('UI/Common/Unknown')
     82             EveLabelMedium(text=text, parent=accessRow)
     83             creatorRow = mainGrid.AddRow()
     84             creatorLabel = EveLabelMedium(text=GetByLabel('UI/AclBookmarks/Creator'), parent=creatorRow)
     85             creatorID = getattr(self.folder, 'creatorID', None)
     86             if creatorID is not None:
     87                 creatorName = cfg.eveowners.Get(creatorID).name
     88                 characterLink = GetByLabel('UI/Contracts/ContractsWindow/ShowInfoLink', showInfoName=creatorName, info=('showinfo', appConst.typeCharacter, creatorID))
     89             else:
     90                 characterLink = ''
     91             EveLabelMedium(text=characterLink, parent=creatorRow, state=uiconst.UI_NORMAL)
     92             maxTextWidth = max(maxTextWidth, accessLabel.textwidth, creatorLabel.textwidth)
     93         if self.alreadyKnown and self.folder.isActive:
     94             countBookmarks = sum((1 for bm in sm.GetService('bookmarkSvc').GetBookmarks().itervalues() if bm.folderID == self.folder.folderID))
     95             bookmarkRow = mainGrid.AddRow()
     96             bookmarksLabel = EveLabelMedium(text=GetByLabel('UI/PeopleAndPlaces/Locations'), parent=bookmarkRow)
     97             EveLabelMedium(text=countBookmarks, parent=bookmarkRow)
     98             countSubfolders = len(sm.GetService('bookmarkSvc').GetSubfoldersInFolder(self.folder.folderID))
     99             subfolderRow = mainGrid.AddRow()
    100             subfolderLabel = EveLabelMedium(text=GetByLabel('UI/AclBookmarks/Subfolders'), parent=subfolderRow)
    101             EveLabelMedium(text=countSubfolders, parent=subfolderRow)
    102             maxTextWidth = max(maxTextWidth, bookmarksLabel.textwidth, subfolderLabel.textwidth)
    103         if not self.folder.isPersonal:
    104             accessListConfig = EveLabelMedium(text=GetByLabel('UI/AclBookmarks/AccessConfiguration'))
    105             mainGrid.AddCell(cellObject=accessListConfig, colSpan=2)
    106             maxTextWidth = self.AddAccessGroupRow(mainGrid, GetByLabel('UI/AclBookmarks/AdminAccess'), self.folder.adminGroupID, maxTextWidth)
    107             maxTextWidth = self.AddAccessGroupRow(mainGrid, GetByLabel('UI/AclBookmarks/ManageAccess'), self.folder.manageGroupID, maxTextWidth)
    108             maxTextWidth = self.AddAccessGroupRow(mainGrid, GetByLabel('UI/AclBookmarks/UseAccess'), self.folder.useGroupID, maxTextWidth)
    109             maxTextWidth = self.AddAccessGroupRow(mainGrid, GetByLabel('UI/AclBookmarks/ViewAccess'), self.folder.viewGroupID, maxTextWidth)
    110         cbCont = Container(name='cbCont', parent=activeContainer)
    111         if self.alreadyKnown:
    112             path = 'UI/AclBookmarks/Status'
    113         else:
    114             path = 'UI/AclBookmarks/AddFolderAs'
    115         addAsLabel = EveLabelMedium(text=GetByLabel(path), parent=activeContainer, align=uiconst.TOPLEFT)
    116         if self.alreadyKnown:
    117             if self.isActive:
    118                 text = GetByLabel('UI/AclBookmarks/Active')
    119             else:
    120                 text = GetByLabel('UI/AclBookmarks/NotActive')
    121             EveLabelMedium(text=text, parent=cbCont, align=uiconst.TOPLEFT, padding=(4, 2, 2, 2))
    122             activeContainer.height = 20
    123         else:
    124             RadioButton(text=GetByLabel('UI/AclBookmarks/ActiveFolderCb'), groupname='isActiveSelection', parent=cbCont, settingsKey='isPersonal', checked=self.isActive, retval=True, state=False, align=uiconst.TOTOP, callback=self.OnIsActiveCheckBoxChange)
    125             RadioButton(text=GetByLabel('UI/AclBookmarks/InactiveFolderCb'), groupname='isActiveSelection', parent=cbCont, settingsKey='isPersonal', checked=not self.isActive, retval=False, align=uiconst.TOTOP, callback=self.OnIsActiveCheckBoxChange)
    126         descriptionContainer = Container(name='descriptionContainer', parent=self.mainCont, align=uiconst.TOALL, top=8, padding=ROW_PADDING)
    127         descLabel = EveLabelMedium(text=GetByLabel('UI/PeopleAndPlaces/Notes'), parent=descriptionContainer, align=uiconst.TOPLEFT, width=60)
    128         self.notesEdit = EditPlainText(name='notesEdit', setvalue=self.folder.description, parent=descriptionContainer, align=uiconst.TOALL, maxLength=400, countWithTags=True, readonly=True)
    129         maxTextWidth = max(maxTextWidth, descLabel.textwidth, typeLabel.textwidth, addAsLabel.textwidth)
    130         left = maxTextWidth + descLabel.left + 4
    131         self.notesEdit.padLeft = cbCont.padLeft = typeLabel.width = left
    132         height = 210 + mainGrid.height + activeContainer.height
    133         width = 310
    134         self.SetMinSize([width, height])
    135         self.SetSize(width, height)
    136         btn.OnSetFocus()
    137 
    138     def AddAccessGroupRow(self, mainGrid, label, groupID, textWidth):
    139         accessRow = mainGrid.AddRow()
    140         accessLabel = EveLabelMedium(text=label, parent=accessRow)
    141         try:
    142             link = ownergroups.client.access_group_link(groupID)
    143         except Exception:
    144             link = '-'
    145 
    146         EveLabelMedium(text=link, parent=accessRow, state=uiconst.UI_NORMAL)
    147         return max(textWidth, accessLabel.textwidth)
    148 
    149     def GetDragDataForIcon(self):
    150         if self.isPersonal:
    151             return []
    152         ret = KeyVal(nodeType='BookmarkFolderEntry', folderID=self.folder.folderID, label=self.folder.folderName)
    153         return [ret]
    154 
    155     def OnIsActiveCheckBoxChange(self, checkbox):
    156         self.isActive = checkbox.GetReturnValue()
    157 
    158     def AddFolder(self, *args):
    159         sm.GetService('bookmarkSvc').AddToKnownFolders(self.folder.folderID, self.isActive)
    160         self.Close()
    161 
    162     def MarkFolderAsActive(self, *args):
    163         sm.GetService('bookmarkSvc').UpdateFolderActiveState(self.folder.folderID, True)
    164         self.Close()
    165 
    166     def MarkFolderAsInactive(self, *args):
    167         sm.GetService('bookmarkSvc').UpdateFolderActiveState(self.folder.folderID, False)
    168         self.Close()
    169 
    170     def Cancel(self, *args):
    171         self.Close()