def _UpdateScroll(self): if self.isPaused: return wndAbove = uiutil.GetWindowAbove(uicore.uilib.mouseOver) if isinstance(wndAbove, form.UIEventListener) and uicore.uilib.rightbtn: return scrolllist = [] lastTime = None for time, event in self.events[:self.showMax]: if lastTime == time: time = '' else: lastTime = time label = time + '<t>' + self.GetScrollLabel(event) scrolllist.append( uicls.ScrollEntryNode(decoClass=uicls.SE_Generic, label=label, fontsize=14, event=event, OnGetMenu=self.GetScrollEntryMenu)) self.scroll.Load(contentList=scrolllist, headers=self.SCROLL_HEADERS, ignoreSort=True)
def OpenContainer(self): if self.rec.ownerID not in (eve.session.charid, eve.session.corpid): eve.Message('CantDoThatWithSomeoneElsesStuff') return wnd = uiutil.GetWindowAbove(self) if self.rec.typeID == const.typePlasticWrap: InventoryWindow.OpenOrShow(invID=('StationContainer', self.rec.itemID), openFromWnd=wnd) elif sm.StartService('menu').CheckSameLocation(self.rec): invID = ('StationContainer', self.rec.itemID) InventoryWindow.OpenOrShow(invID=invID, openFromWnd=wnd) else: location = self.rec.locationID if not session.stationid or util.IsStation( location) and location != session.stationid: log.LogInfo('Trying to open a container in', location, 'while actor is in', session.stationid) return inventory = sm.GetService('invCache').GetInventoryFromId(location) if not inventory: return item = inventory.GetItem() if not item: return category = getattr(item, 'categoryID', None) if category == const.categoryShip and item.locationID == session.stationid: InventoryWindow.OpenOrShow(invID=('StationContainer', self.rec.itemID), openFromWnd=wnd)
def OnFilterTypeCombo(self, combo, label, filterType): self.SetFilterType(filterType) if filterType > 0 and not self.isRemovable: self.controller.AddEntry() self.SetRemovable(True) wnd = uiutil.GetWindowAbove(self) if wnd: wnd.ApplyFilter()
def GetSelectedFromGroup(self): if self._groupName: par = uiutil.GetWindowAbove(self) if par is None: par = self.parent for each in par.Find('trinity.Tr2Sprite2dContainer'): if isinstance(each, uicls.CheckboxCore) and each._groupName == self._groupName: if each.GetValue(): return each
def _ApplyFilter(self): wnd = uiutil.GetWindowAbove(self) if wnd: wnd.ApplyFilter() blue.synchro.Sleep(500) if self.applyFilterPending: self.applyFilterThread = uthread.new(self._ApplyFilter) else: self.applyFilterThread = None self.applyFilterPending = False
def MouseEnterListener(self, cont, *args): cont = uicore.uilib.GetMouseOver() if uiutil.GetWindowAbove(cont) == self: return True if not cont or not self.mouseEnterCookie or self.destroyed: return False if self.highlightLock or cont == self.currCont: return True self.HighlightCont(cont) self.currCont = cont return True
def OpenShipCargo(self): if not self.rec.ownerID == eve.session.charid: eve.Message('CantDoThatWithSomeoneElsesStuff') return if not sm.StartService('menu').CheckSameStation(self.rec): return if session.stationid2: if self.rec.groupID == const.groupCapsule: if eve.Message('AskActivateShip', {}, uiconst.YESNO, suppress=uiconst.ID_YES) == uiconst.ID_YES: sm.GetService('station').SelectShipDlg() return wnd = uiutil.GetWindowAbove(self) InventoryWindow.OpenOrShow(invID=('ShipCargo', self.rec.itemID), openFromWnd=wnd)
def ToggleState(self): if not self or self.destroyed: return if self._groupName is None: self.SetChecked(not self._checked) return par = uiutil.GetWindowAbove(self) if par is None: par = self.parent for each in par.Find('trinity.Tr2Sprite2dContainer'): if each == self: continue if isinstance(each, uicls.CheckboxCore) and each._groupName == self._groupName: each.SetChecked(0, 0) if not self.destroyed: self.SetChecked(1)
def Confirm(self, *args): if self.OnReturn: self.CloseHistoryMenu() return uthread.new(self.OnReturn) searchFrom = uiutil.GetWindowAbove(self) if searchFrom: wnds = [ w for w in searchFrom.Find('trinity.Tr2Sprite2dContainer') + searchFrom.Find('trinity.Tr2Sprite2d') if getattr(w, 'btn_default', 0) == 1 ] if len(wnds): for wnd in wnds: if self == wnd: continue if uiutil.IsVisible(wnd): if hasattr(wnd, 'OnClick'): uthread.new(wnd.OnClick, wnd) return True return False
def OnRemoveBtn(self, *args): wnd = uiutil.GetWindowAbove(self) if self.isRemovable: self.Close() if wnd: wnd.ApplyFilter()
def GetDefaultBtnsInSameWnd(self, *args): wndAbove = uiutil.GetWindowAbove(self) or uicore.desktop btns = uiutil.FindChildByClass(wndAbove, (uicls.ButtonCore, ), ['trinity.Tr2Sprite2dContainer'], withAttributes=[('btn_default', 1)]) return btns
def CheckControlAppearance(self, control): wnd = uiutil.GetWindowAbove(control) if wnd: self.ChangeControlAppearance(wnd, control)
def Select(self, silently=0): if self.destroyed: return self.selecting = 1 self.Blink(0) if self is None or self.destroyed: self.selecting = 0 self.sr.tabgroup.state = uiconst.UI_PICKCHILDREN return if len(self.sr.tabgroup.sr.linkedrows): for tabgroup in self.sr.tabgroup.sr.linkedrows: if self in tabgroup.sr.mytabs: continue uiutil.SetOrder(tabgroup, 0) for each in self.sr.tabgroup.sr.tabs: if each.IsSelected(): if hasattr(self.sr.code, 'UnloadTabPanel'): self.sr.code.UnloadTabPanel(each.sr.args, each.sr.panel, each.sr.tabgroup) if each == self: continue notify = True if each.sr.panel and each.sr.panel is self.sr.panel or each.sr.panelparent and each.sr.panelparent is self.sr.panelparent: notify = False each.Deselect(notify) self._selected = True self.ShowSelected_() if self.sr.panelparent: self.sr.panelparent.state = uiconst.UI_PICKCHILDREN if hasattr(self.sr.panelparent, 'OnTabSelect'): self.sr.panelparent.OnTabSelect() if self.sr.panel: self.sr.panel.state = uiconst.UI_PICKCHILDREN if hasattr(self.sr.panel, 'OnTabSelect'): self.sr.panel.OnTabSelect() if self.sr.tabgroup.callback: self.sr.tabgroup.callback(self.sr.tabgroup.GetSelectedIdx()) err = None if self.sr.LoadTabCallback: try: self.sr.LoadTabCallback(self.sr.args, self.sr.panel, self.sr.tabgroup) finally: self.selecting = 0 elif hasattr(self.sr.code, 'LoadTabPanel'): try: self.sr.code.LoadTabPanel(self.sr.args, self.sr.panel, self.sr.tabgroup) finally: self.selecting = 0 elif getattr(self.sr.code, 'Load', None): try: self.sr.code.Load(self.sr.args) except (StandardError, ) as err: log.LogException(toMsgWindow=0) sys.exc_clear() if self.destroyed: return wnd = uiutil.GetWindowAbove(self) if wnd and not wnd.destroyed: wnd.HideLoad() if not silently: par = self.sr.panelparent or self.sr.panel wnd = uiutil.GetWindowAbove(self) if par and wnd and wnd == uicore.registry.GetActive(): uthread.new(uicore.registry.SetFocus, par) if self.destroyed: return if self.sr.tabgroup._settingsID: settings.user.tabgroups.Set(self.sr.tabgroup._settingsID, self.sr.tabgroup.sr.tabs.index(self)) if self and not self.destroyed: self.sr.tabgroup.UpdateSizes() self.selecting = 0 if err and isinstance(err, UserError): raise err
def Prepare_(self): self.sr.label = uicls.EveLabelSmall(text='', parent=self, idx=0, align=uiconst.CENTER, state=uiconst.UI_DISABLED, color=self.color) if self.iconPath is not None: if self.iconSize: width = self.iconSize height = self.iconSize else: width = height = min(self.width, self.height) self.icon = uicls.Icon(parent=self, state=uiconst.UI_DISABLED, align=uiconst.CENTER, pos=(0, 0, width, height), icon=self.iconPath, ignoreSize=True, color=self.color) self.sr.label.state = uiconst.UI_HIDDEN self.width = width + 4 self.height = height + 4 self.sr.activeframe = uicls.Frame(parent=self, name='activeline', state=uiconst.UI_HIDDEN, color=(1.0, 1.0, 1.0, uiconst.ACTIVE_FRAME_ALPHA)) self.sr.hilite = uicls.Frame(parent=self, name='hiliteLite', state=uiconst.UI_HIDDEN, color=(1.0, 1.0, 1.0, 0.5)) self.innerline = uicls.Frame(parent=self, padding=(2, 2, 2, 2), name='innerline', state=uiconst.UI_HIDDEN, color=(1.0, 1.0, 1.0, 0.5)) self.shape = uicls.Container(parent=self, name='shape', state=uiconst.UI_DISABLED, align=uiconst.TOALL) uicls.Frame(parent=self.shape, name='dot', texturePath='res:/UI/Texture/Shared/windowButtonDOT.png', cornerSize=6, spriteEffect=trinity.TR2_SFX_DOT) uicls.WindowBaseColor( parent=self.shape, frameConst=('res:/UI/Texture/Shared/buttonShapeAndShadow.png', 9, -5)) self.LiteMode(self.alwaysLite) isDefault = getattr(self, 'btn_default', 0) if isDefault and self.sr.activeframe: self.sr.defaultActiveFrame = uicls.Frame( parent=self, idx=0, name='isDefaultMarker', state=uiconst.UI_DISABLED, color=(1.0, 1.0, 1.0, uiconst.ACTIVE_FRAME_ALPHA)) wnd = uiutil.GetWindowAbove(self) if wnd: self.LiteMode(wnd.IsPinned())
def OnAppEvent(self, msgID, wParam, lParam): try: returnValue = 0 currentMouseOver = self.GetMouseOver() if msgID == WM_MOUSEMOVE: mouseX = uicore.ReverseScaleDpi(lParam & 65535) mouseY = uicore.ReverseScaleDpi(lParam >> 16) if self.x != mouseX or self.y != mouseY: self.dx = mouseX - self.x self.dy = mouseY - self.y self.x = mouseX self.y = mouseY self.z = 0 if self.centerMouse: self.SetCursorPos(uicore.desktop.width / 2, uicore.desktop.height / 2) mouseCaptureItem = self.GetMouseCapture() if mouseCaptureItem: self._TryExecuteHandler(uiconst.UI_MOUSEMOVE, mouseCaptureItem, param=(wParam, lParam)) self._TryExecuteHandler(uiconst.UI_MOUSEMOVEDRAG, mouseCaptureItem, param=(wParam, lParam)) elif currentMouseOver: self._TryExecuteHandler(uiconst.UI_MOUSEMOVE, currentMouseOver, param=(wParam, lParam)) self._TryExecuteHandler(uiconst.UI_MOUSEMOVEDRAG, currentMouseOver, param=(wParam, lParam)) elif msgID == WM_LBUTTONDOWN: self._globalClickCounter += 1 self.RegisterAppEventTime() self._expandMenu = uiconst.MOUSELEFT self._mouseButtonStates[uiconst.MOUSELEFT] = True self._mouseDownPosition[uiconst.MOUSELEFT] = (self.x, self.y, self.z) if self.exclusiveMouseFocusActive: self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, self.GetMouseCapture(), (uiconst.MOUSELEFT, ), param=(uiconst.MOUSELEFT, wParam)) self._TryExecuteHandler(uiconst.UI_MOUSEDOWNDRAG, self.GetMouseCapture(), (uiconst.MOUSELEFT, ), param=(uiconst.MOUSELEFT, wParam)) else: self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, currentMouseOver, (uiconst.MOUSELEFT, ), param=(uiconst.MOUSELEFT, wParam)) self._TryExecuteHandler(uiconst.UI_MOUSEDOWNDRAG, currentMouseOver, (uiconst.MOUSELEFT, ), param=(uiconst.MOUSELEFT, wParam)) self.SetCapture(currentMouseOver, retainFocus=self.exclusiveMouseFocusActive) if not uiutil.IsUnder(currentMouseOver, uicore.layer.menu): uicore.layer.menu.Flush() currentFocus = uicore.registry.GetFocus() if currentFocus != currentMouseOver: uicore.registry.SetFocus(currentMouseOver) elif msgID == WM_MBUTTONDOWN: self._globalClickCounter += 1 self.RegisterAppEventTime() self._expandMenu = None self._mouseButtonStates[uiconst.MOUSEMIDDLE] = True self._mouseDownPosition[uiconst.MOUSEMIDDLE] = (self.x, self.y, self.z) self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, currentMouseOver, (uiconst.MOUSEMIDDLE, ), param=(uiconst.MOUSEMIDDLE, wParam)) uthread.new(self.CheckAccelerators, uiconst.VK_MBUTTON, lParam) elif msgID == WM_RBUTTONDOWN: self._globalClickCounter += 1 self.RegisterAppEventTime() self._expandMenu = uiconst.MOUSERIGHT self._mouseButtonStates[uiconst.MOUSERIGHT] = True self._mouseDownPosition[uiconst.MOUSERIGHT] = (self.x, self.y, self.z) if self.exclusiveMouseFocusActive: self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, self.GetMouseCapture(), (uiconst.MOUSERIGHT, ), param=(uiconst.MOUSERIGHT, wParam)) else: self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, currentMouseOver, (uiconst.MOUSERIGHT, ), param=(uiconst.MOUSERIGHT, wParam)) if not uiutil.IsUnder(currentMouseOver, uicore.layer.menu): uicore.layer.menu.Flush() currentFocus = uicore.registry.GetFocus() if currentFocus is not currentMouseOver: uicore.registry.SetFocus(currentMouseOver) elif msgID == WM_XBUTTONDOWN: self._globalClickCounter += 1 self.RegisterAppEventTime() if wParam & 65536: self._mouseButtonStates[uiconst.MOUSEXBUTTON1] = True self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, currentMouseOver, (uiconst.MOUSEXBUTTON1, ), param=(uiconst.MOUSEXBUTTON1, wParam)) uthread.new(self.CheckAccelerators, uiconst.VK_XBUTTON1, lParam) else: self._mouseButtonStates[uiconst.MOUSEXBUTTON2] = True self._TryExecuteHandler(uiconst.UI_MOUSEDOWN, currentMouseOver, (uiconst.MOUSEXBUTTON2, ), param=(uiconst.MOUSEXBUTTON2, wParam)) uthread.new(self.CheckAccelerators, uiconst.VK_XBUTTON2, lParam) elif msgID == WM_LBUTTONUP: self.RegisterAppEventTime() self._mouseButtonStates[uiconst.MOUSELEFT] = False mouseCaptureItem = self.GetMouseCapture() if mouseCaptureItem: if not self.exclusiveMouseFocusActive: if getattr( mouseCaptureItem, 'expandOnLeft', 0 ) and not self.rightbtn and self._expandMenu == uiconst.MOUSELEFT and getattr( mouseCaptureItem, 'GetMenu', None): x, y, z = self._mouseDownPosition[ uiconst.MOUSELEFT] if abs(self.x - x) < 3 and abs(self.y - y) < 3: uthread.new(menu.ShowMenu, mouseCaptureItem, self.GetAuxMouseOver()) self._expandMenu = False self._TryExecuteHandler(uiconst.UI_MOUSEUP, mouseCaptureItem, (uiconst.MOUSELEFT, ), param=(uiconst.MOUSELEFT, wParam)) if not self.exclusiveMouseFocusActive: self.ReleaseCapture() if currentMouseOver is not mouseCaptureItem: self._TryExecuteHandler(uiconst.UI_MOUSEEXIT, mouseCaptureItem, param=(wParam, lParam)) self._TryExecuteHandler(uiconst.UI_MOUSEENTER, currentMouseOver, param=(wParam, lParam)) else: self._TryExecuteClickHandler(wParam, lParam) elif msgID == WM_RBUTTONUP: self._mouseButtonStates[uiconst.MOUSERIGHT] = False if self.exclusiveMouseFocusActive: self._TryExecuteHandler(uiconst.UI_MOUSEUP, self.GetMouseCapture(), (uiconst.MOUSERIGHT, ), param=(uiconst.MOUSERIGHT, wParam)) else: if not self.leftbtn and self._expandMenu == uiconst.MOUSERIGHT and ( getattr(currentMouseOver, 'GetMenu', None) or self._auxMouseOverRO is not None): x, y, z = self._mouseDownPosition[uiconst.MOUSERIGHT] if abs(self.x - x) < 3 and abs(self.y - y) < 3: uthread.new(menu.ShowMenu, currentMouseOver, self.GetAuxMouseOver()) self._expandMenu = None self._TryExecuteHandler(uiconst.UI_MOUSEUP, currentMouseOver, (uiconst.MOUSERIGHT, ), param=(uiconst.MOUSERIGHT, wParam)) elif msgID == WM_MBUTTONUP: self._mouseButtonStates[uiconst.MOUSEMIDDLE] = False self._TryExecuteHandler(uiconst.UI_MOUSEUP, currentMouseOver, (uiconst.MOUSEMIDDLE, ), param=(uiconst.MOUSEMIDDLE, wParam)) elif msgID == WM_XBUTTONUP: if wParam & 65536: self._mouseButtonStates[uiconst.MOUSEXBUTTON1] = False self._TryExecuteHandler(uiconst.UI_MOUSEUP, currentMouseOver, (uiconst.MOUSEXBUTTON1, ), param=(uiconst.MOUSEXBUTTON1, wParam)) else: self._mouseButtonStates[uiconst.MOUSEXBUTTON2] = False self._TryExecuteHandler(uiconst.UI_MOUSEUP, currentMouseOver, (uiconst.MOUSEXBUTTON2, ), param=(uiconst.MOUSEXBUTTON2, wParam)) elif msgID == WM_MOUSEWHEEL: self.RegisterAppEventTime() mouseZ = wParam >> 16 self.dz = mouseZ if self.mouseOver: mo = self.mouseOver mwHandlerArgs, mwHandler = self.FindEventHandler( mo, 'OnMouseWheel') while not mwHandler: if not mo.parent or mo is uicore.uilib.desktop: break mo = mo.parent mwHandlerArgs, mwHandler = self.FindEventHandler( mo, 'OnMouseWheel') calledMethod = None if mo: calledMethod = self._TryExecuteHandler( uiconst.UI_MOUSEWHEEL, mo, (mouseZ, ), param=(wParam, lParam)) if not calledMethod: focus = uicore.registry.GetFocus() if focus and uiutil.GetWindowAbove( self.mouseOver) == uicore.registry.GetActive(): self._TryExecuteHandler(uiconst.UI_MOUSEWHEEL, focus, (mouseZ, ), param=(wParam, lParam)) elif msgID in (WM_KEYDOWN, WM_SYSKEYDOWN): self._globalKeyDownCounter += 1 self.RegisterAppEventTime() focus = uicore.registry.GetFocus() if focus: self._TryExecuteHandler(uiconst.UI_KEYDOWN, focus, (wParam, lParam), param=(wParam, lParam)) self._keyDownAcceleratorThread = uthread.new( self.CheckAccelerators, wParam, lParam) elif msgID == WM_CHAR: char = wParam ignoreChar = False if char <= 32 or char == self.ignoreDeadChar: ctrl = trinity.app.Key(uiconst.VK_CONTROL) if char not in (uiconst.VK_RETURN, uiconst.VK_BACK, uiconst.VK_SPACE) or ctrl: ignoreChar = True if not ignoreChar: calledOn = self.ResolveOnChar(wParam, lParam) if calledOn and self._keyDownAcceleratorThread: self._keyDownAcceleratorThread.kill() self.ignoreDeadChar = None elif msgID == WM_DEADCHAR: focus = uicore.registry.GetFocus() if focus and hasattr(focus, 'OnChar') and uiutil.IsVisible(focus): self._keyDownAcceleratorThread.kill() else: self.ignoreDeadChar = wParam elif msgID in (WM_KEYUP, WM_SYSKEYUP): focus = uicore.registry.GetFocus() if focus: self._TryExecuteHandler(uiconst.UI_KEYUP, focus, (wParam, lParam), param=(wParam, lParam)) if wParam == uiconst.VK_SNAPSHOT: uicore.cmd.PrintScreen() elif msgID == WM_ACTIVATE: self.CheckAppFocus(hasFocus=wParam > 0) self.CheckCallbacks(obj=uicore.registry.GetFocus(), msgID=uiconst.UI_ACTIVE, param=(wParam, lParam)) elif msgID == WM_ACTIVATEAPP: if self.activateAppHandler: returnValue = self.activateAppHandler(wParam, lParam) elif msgID == WM_INPUTLANGCHANGE: if self.inputLangChangeHandler: returnValue = self.inputLangChangeHandler(wParam, lParam) elif msgID == WM_IME_SETCONTEXT: if self.imeSetContextHandler: returnValue = self.imeSetContextHandler(wParam, lParam) elif msgID == WM_IME_STARTCOMPOSITION: if self.imeStartCompositionHandler: returnValue = self.imeStartCompositionHandler( wParam, lParam) elif msgID == WM_IME_COMPOSITION: if self.imeCompositionHandler: returnValue = self.imeCompositionHandler(wParam, lParam) elif msgID == WM_IME_ENDCOMPOSITION: if self.imeEndCompositionHandler: returnValue = self.imeEndCompositionHandler(wParam, lParam) elif msgID == WM_IME_NOTIFY: if self.imeNotifyHandler: returnValue = self.imeNotifyHandler(wParam, lParam) elif msgID == WM_CLOSE: uthread.new(uicore.cmd.CmdQuitGame) returnValue = 1 else: returnValue = None return returnValue except: log.LogException()