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()