Exemplo n.º 1
0
def Reboot(reason=''):
    if not CanReboot():
        lg.Info('appUtils.Reboot', 'suppressing reboot due to single sign-on')
        lg.Info('appUtils.Reboot', 'rebooting due to ' + reason)
        bluepy.Terminate(reason)
    lg.Info('appUtils.Reboot', 'About to reboot the client because:' + reason)
    prefs.SetValue('rebootReason', reason)
    prefs.SetValue('rebootTime', blue.os.GetWallclockTime())
    allargs = blue.pyos.GetArg()
    cmd = allargs[0]
    args = []
    for arg in allargs[1:]:
        arg = arg.strip()
        if arg.find(' ') >= 0 or arg.find('\t') >= 0:
            arg = '"""' + arg + '"""'
        args.append(arg)

    args = ' '.join(args)
    lg.Info('appUtils.Reboot', 'About to reboot the client with:' + str(
        (0, None, cmd, args)))
    try:
        blue.win32.ShellExecute(0, None, cmd, args)
    except Exception as e:
        lg.Error('appUtils.Reboot', 'Failed with: ' + str(e))
        raise

    bluepy.Terminate(reason)
Exemplo n.º 2
0
    def GetIcon(self, index):
        for each in self.scroll.GetContentContainer().children:
            if getattr(each, 'index', -1) == index // self.cols * self.cols:
                lg.Info('vcont', 'GetIcon(', index, ') returns', each.sr.icons[index % self.cols].name)
                return each.sr.icons[index % self.cols]

        lg.Info('vcont', 'GetIcon(', index, ') found nothing')
Exemplo n.º 3
0
    def OnDropData(self, dragObj, nodes):
        if self.controller.GetModule(
        ) is not None and not self.controller.SlotExists():
            return
        items = self.GetDroppedItems(nodes)
        chargeTypeID = None
        chargeItems = []
        for item in items:
            if not getattr(item, 'typeID', None):
                lg.Info('fittingUI', 'Dropped a non-item here', item)
                return
            if self.controller.IsChargeable() and self.IsCharge(item.typeID):
                if chargeTypeID is None:
                    chargeTypeID = item.typeID
                if chargeTypeID == item.typeID:
                    chargeItems.append(item)
            elif self.controller.IsInWeaponBank(item):
                ret = uicore.Message(
                    'CustomQuestion', {
                        'header':
                        localization.GetByLabel('UI/Common/Confirm'),
                        'question':
                        localization.GetByLabel('UI/Fitting/ClearGroupModule')
                    }, uiconst.YESNO)
                if ret == uiconst.ID_YES:
                    uthread.new(self.AddItem, item)
            else:
                uthread.new(self.AddItem, item)

        if len(chargeItems):
            self.controller.FitCharges(chargeItems)
Exemplo n.º 4
0
    def RemoveItem(self, rec):
        lg.Info('vcont', 'RemoveItem', rec and '[%s %s]' % (rec.stacksize, cfg.invtypes.Get(rec.typeID).name))
        if self.viewMode in ('details', 'list'):
            for entry in self.scroll.sr.nodes:
                if entry.item.itemID == rec.itemID:
                    self.scroll.RemoveEntries([entry])
                    break

            for item in self.items:
                if item.itemID == rec.itemID:
                    self.items.remove(item)

        else:
            i = 0
            for rowNode in self.scroll.sr.nodes:
                si = 0
                for entry in rowNode.internalNodes:
                    if entry and entry.item and entry.item.itemID == rec.itemID:
                        self.SetItem(i, None)
                        rowNode.internalNodes[si] = None
                        break
                    si += 1
                    i += 1

            i = 0
            for item in self.items:
                if item and item.itemID == rec.itemID:
                    self.items[i] = None
                i += 1

            self.CleanupRows()
Exemplo n.º 5
0
    def UpdateItem(self, rec, *etc):
        lg.Info('vcont', 'UpdateItem', rec and '[%s %s]' % (rec.stacksize, cfg.invtypes.Get(rec.typeID).name))
        if self.viewMode in ('details', 'list'):
            idx = 0
            for each in self.items:
                if each.itemID == rec.itemID:
                    self.items[idx] = rec
                    break
                idx += 1

            for entry in self.scroll.sr.nodes:
                if entry.item.itemID == rec.itemID:
                    newentry = uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=self.scroll.sr.id)
                    for key, value in newentry.iteritems():
                        entry[key] = value

                    if entry.panel:
                        entry.panel.Load(entry)
                    self.UpdateHint()
                    return

        else:
            i = 0
            for rowNode in self.scroll.sr.nodes:
                for entry in rowNode.internalNodes:
                    if entry is not None and entry.item and entry.item.itemID == rec.itemID:
                        self.SetItem(i, rec)
                        return
                    i += 1

        lg.Warn('vcont', 'Tried to update an item that is not there??')
Exemplo n.º 6
0
    def OnDropData(self, dragObj, nodes):
        shipID = self.GetShipID()
        if self.module is not None and not self.shell.SlotExists(
                shipID, self.module.flagID):
            return
        chargeTypeID = None
        chargeItems = []
        items = []
        subSystemGroupIDs = set()
        for node in filter(
                lambda n: n.__guid__ in
            ('listentry.InvItem', 'xtriui.InvItem'), nodes):
            item = node.rec
            if item.categoryID == const.categorySubSystem:
                if item.groupID in subSystemGroupIDs:
                    continue
                subSystemGroupIDs.add(item.groupID)
            items.append(node.rec)

        for item in items:
            if not getattr(item, 'typeID', None):
                lg.Info('fittingUI', 'Dropped a non-item here', item)
                return
            if self.isChargeable and self.IsCharge(item.typeID):
                if chargeTypeID is None:
                    chargeTypeID = item.typeID
                if chargeTypeID == item.typeID:
                    chargeItems.append(item)
            elif self.shell.IsInWeaponBank(item.locationID, item.itemID):
                ret = eve.Message(
                    'CustomQuestion', {
                        'header':
                        localization.GetByLabel('UI/Common/Confirm'),
                        'question':
                        localization.GetByLabel('UI/Fitting/ClearGroupModule')
                    }, uiconst.YESNO)
                if ret == uiconst.ID_YES:
                    eve.Message('DragDropSlot')
                    uthread.new(self.Add, item)
            elif item.categoryID == const.categorySubSystem and getattr(
                    self, 'module', None) is not None:
                uthread.new(self.Add, item)
            else:
                eve.Message('DragDropSlot')
                uthread.new(self.Add, item)

        if len(chargeItems):
            chargeTypeID = chargeItems[0].typeID
            self.shell.DropLoadChargeToModule(self.module.itemID, chargeTypeID,
                                              chargeItems)
Exemplo n.º 7
0
    def AddItem(self, rec, index = None, fromWhere = None):
        if self.quickFilterInput:
            if not self.QuickFilter(rec):
                return
        if not self.FilterItems([rec]):
            return
        lg.Info('vcont', 'AddItem', fromWhere, rec.stacksize, cfg.invtypes.Get(rec.typeID).name)
        for node in self.scroll.sr.nodes:
            if self.viewMode in ('details', 'list'):
                if node is not None and node.Get('item', None) and node.item.itemID == rec.itemID:
                    lg.Warn('vcont', 'Tried to add an item that is already there??')
                    self.UpdateItem(node.item)
                    return
            else:
                for internalNode in node.internalNodes:
                    if internalNode is not None and internalNode.item.itemID == rec.itemID:
                        lg.Warn('vcont', 'Tried to add an item that is already there??')
                        self.UpdateItem(internalNode.item)
                        return

        import listentry
        if self.viewMode in ('details', 'list'):
            self.items.append(rec)
            self.scroll.AddEntries(-1, [listentry.Get('InvItem', data=uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=self.scroll.sr.id))])
            self.UpdateHint()
        else:
            if index is not None:
                while index < len(self.items):
                    if self.items[index] is None:
                        return self.SetItem(index, rec)
                    index += 1

                while index >= len(self.scroll.sr.nodes) * self.cols:
                    self.AddRow()

                return self.SetItem(index, rec)
            if len(self.items) and None in self.items:
                idx = self.tmpDropIdx.get(rec.itemID, None)
                if idx is None:
                    idx = self.items.index(None)
                return self.SetItem(idx, rec)
            if not self.cols:
                self.RefreshCols()
            if index >= len(self.scroll.sr.nodes) * self.cols:
                self.AddRow()
            return self.SetItem(0, rec)
Exemplo n.º 8
0
    def SetItem(self, index, rec):
        lg.Info('vcont', 'SetItem', index, rec and '[%s %s]' % (rec.stacksize, cfg.invtypes.Get(rec.typeID).name))
        if not self or self.destroyed:
            return
        if index < len(self.items) and rec and self.items[index] is not None and self.items[index].itemID != rec.itemID:
            while index < len(self.items) and self.items[index] is not None:
                index += 1

        if self.cols:
            rowIndex = index // self.cols
        else:
            rowIndex = 0
        while rowIndex >= len(self.scroll.sr.nodes):
            self.AddRow()

        while index >= len(self.items):
            self.items += [None]

        self.items[index] = rec
        try:
            self.scroll.sr.nodes[rowIndex].rec[index % self.cols] = rec
            self.UpdateHint()
            node = None
            if rec:
                node = uix.GetItemData(rec, self.viewMode, self.invController.viewOnly, container=self, scrollID=self.scroll.sr.id)
                if not self or self.destroyed:
                    return
                node.scroll = self.scroll
                node.panel = None
                node.idx = index
                node.__guid__ = 'xtriui.InvItem'
            self.scroll.sr.nodes[index // self.cols].internalNodes[index % self.cols] = node
        except IndexError:
            return

        icon = self.GetIcon(index)
        if icon:
            if rec is None:
                icon.state = uiconst.UI_HIDDEN
                icon.sr.node = None
            else:
                icon.state = uiconst.UI_NORMAL
                node.panel = icon
                node.viewOnly = self.invController.viewOnly
                icon.Load(node)
Exemplo n.º 9
0
    def OnDropData(self, dragObj, nodes):
        if self.controller.GetModule(
        ) is not None and not self.controller.SlotExists():
            return
        items = self.GetDroppedItems(nodes)
        chargeTypeID = None
        chargeItems = []
        for item in items:
            if not getattr(item, 'typeID', None):
                lg.Info('fittingUI', 'Dropped a non-item here', item)
                return
            if self.controller.IsChargeable() and self.IsCharge(item.typeID):
                if chargeTypeID is None:
                    chargeTypeID = item.typeID
                if chargeTypeID == item.typeID:
                    chargeItems.append(item)
            else:
                uthread.new(self.Add, item)

        if len(chargeItems):
            self.controller.FitCharges(chargeItems)
 def LogInfo(self, *args):
     lg.Info(self.__guid__, *args)
Exemplo n.º 11
0
    def Draw(self, ids, idlevel, drawlevel, needsize, sprite = None, solarsystem = None):
        _settings = (ids,
         idlevel,
         drawlevel,
         needsize)
        if _settings == self.settings:
            return
        self.settings = _settings
        lg.Info('2Dmaps', 'Drawing map, ids/idlevel/drawlevel:', ids, idlevel, drawlevel)
        if drawlevel <= idlevel:
            return
        if drawlevel == DRAW_SOLARSYSTEM_INTERIOR and len(ids) > 1:
            ids = ids[:1]
        SIZE = needsize
        if sprite is None:
            sprite = self.sprite
        _ids = {}
        for id in ids:
            _ids[id] = ''

        ids = _ids.keys()
        endid = ''
        if len(ids) > 1:
            endid = '%s_' % ids[-1]
        self.ids = ids
        self.idlevel = idlevel
        self.drawlevel = drawlevel
        self.needsize = needsize
        imageid = '%s_%s_%s_%s_%s_%s' % (ids[0],
         '_' * max(0, len(ids) - 2),
         endid,
         idlevel,
         drawlevel,
         self.fillSize)
        imageid = imageid.replace('.', '')
        if self.drawlevel == DRAW_SOLARSYSTEM_INTERIOR:
            imageid += '_' + str(settings.user.ui.Get('solarsystemmapabstract', 0))
        lg.Info('2Dmaps', 'MapID is: %s' % imageid)
        for each in self.overlays.children:
            if each.name == 'destinationline':
                each.renderObject = None
                each.Close()

        self.cordsAsPortion = {}
        mapitems = self.mapitems = self.GetMapData(ids, idlevel, drawlevel)
        if drawlevel == 4:
            self.DrawSolarsystem(sprite, ids, imageid, mapitems, SIZE)
            self.CheckMyLocation(solarsystem=solarsystem)
            return
        connections, outsideitems = self.GetConnectionData(ids, idlevel, drawlevel)
        self.outsideitems = outsideitems
        minx = 1e+100
        maxx = -1e+100
        minz = 1e+100
        maxz = -1e+100
        for item in mapitems:
            minx = min(minx, item.x)
            maxx = max(maxx, item.x)
            minz = min(minz, item.z)
            maxz = max(maxz, item.z)

        mw = -minx + maxx
        mh = -minz + maxz
        if not (mw and mh):
            return
        SIZE = SIZE * 2
        drawarea = DrawArea()
        drawarea.setTransparentColor(-1)
        drawarea.setSize(SIZE, SIZE, 4278190080L)
        dotrad = [2,
         3,
         4,
         5,
         6][idlevel]
        sizefactor = min(SIZE / mw, SIZE / mh) * self.portion
        cords = {}
        for item in mapitems[:]:
            if item.groupID == const.groupRegion:
                if drawlevel != 1:
                    continue
            if item.groupID == const.groupConstellation:
                if drawlevel != 2:
                    continue
            x = int(item.x * sizefactor - int(minx * sizefactor) + (SIZE - mw * sizefactor) / 2)
            y = int(item.z * sizefactor - int(minz * sizefactor) + (SIZE - mh * sizefactor) / 2)
            cords[item.itemID] = (x,
             SIZE - y,
             dotrad,
             1,
             16777215)

        for item in self.outsideitems:
            x = int(item.x * sizefactor - int(minx * sizefactor) + (SIZE - mw * sizefactor) / 2)
            y = int(item.z * sizefactor - int(minz * sizefactor) + (SIZE - mh * sizefactor) / 2)
            cords[item.itemID] = (x,
             SIZE - y,
             dotrad,
             0,
             None)

        done = []
        i = 0
        lineWidth = 2.0
        for jumptype in connections:
            for pair in jumptype:
                fr, to = pair
                if (fr, to) in done:
                    continue
                if fr in cords and to in cords:
                    drawarea.line(cords[fr][0], cords[fr][1], cords[to][0], cords[to][1], [43520, 255, 16711680][i], lineWidth)
                    drawarea.line(cords[fr][0] + 1, cords[fr][1], cords[to][0] + 1, cords[to][1], [43520, 255, 16711680][i], lineWidth)
                    drawarea.line(cords[fr][0], cords[fr][1] + 1, cords[to][0], cords[to][1] + 1, [43520, 255, 16711680][i], lineWidth)

            i += 1

        for x, y, dotrad, cordtype, col in cords.itervalues():
            if cordtype == 0:
                dotrad = dotrad / 2
            drawarea.circle(x, y, dotrad, dotrad, 16777215, 16777215)

        self.areas = [ (cords[id][0],
         cords[id][1],
         cords[id][2],
         id) for id in cords.iterkeys() ]
        self.cordsAsPortion = {}
        for id in cords.iterkeys():
            self.cordsAsPortion[id] = (cords[id][0] / float(SIZE), cords[id][1] / float(SIZE))

        self.CheckMyLocation(solarsystem=solarsystem)
        self.CheckDestination()
        self.PlaceMap(sprite, drawarea, SIZE)
Exemplo n.º 12
0
 def LogInfo(self, *k, **v):
     lg.Info('ime', *k, **v)
Exemplo n.º 13
0
 def SetFitting(self, invItem, shell=None, putOnline=0):
     if self.destroyed:
         return
     lg.Info('fitting', 'SetFitting', self.flag, invItem
             and cfg.invtypes.Get(invItem.typeID).Group().name)
     if invItem is None:
         self.DisableDrag()
     else:
         self.EnableDrag()
     self.shell = shell or self.shell
     if invItem and self.IsCharge(invItem.typeID):
         self.charge = invItem
         chargeQty = self.shell.GetQuantity(invItem.itemID)
         if self.module is None:
             portion = 1.0
         else:
             cap = self.shell.GetCapacity(self.module.locationID,
                                          const.attributeCapacity,
                                          self.flag)
             if cap.capacity == 0:
                 portion = 1.0
             else:
                 portion = cap.used / cap.capacity
         step = max(0, min(4, int(portion * 5.0)))
         self.sr.chargeIndicator.rectTop = 10 * step
         self.sr.chargeIndicator.state = uiconst.UI_NORMAL
         self.sr.chargeIndicator.hint = '%s %d%%' % (cfg.invtypes.Get(
             self.charge.typeID).name, portion * 100)
     elif invItem is None:
         self.id = None
         self.isChargeable = 0
         self.typeID = None
         self.module = None
         self.charge = None
         self.fitted = 0
         self.isChargeable = 0
         self.HideUtilButtons(1)
         self.sr.chargeIndicator.state = uiconst.UI_HIDDEN
     else:
         self.id = invItem.itemID
         self.typeID = invItem.typeID
         self.module = invItem
         self.fitted = 1
         self.charge = None
         if invItem.groupID in cfg.__chargecompatiblegroups__:
             self.isChargeable = 1
             self.sr.chargeIndicator.rectTop = 0
             self.sr.chargeIndicator.state = uiconst.UI_NORMAL
             self.sr.chargeIndicator.hint = localization.GetByLabel(
                 'UI/Fitting/NoCharge')
         else:
             self.isChargeable = 0
             self.sr.chargeIndicator.state = uiconst.UI_HIDDEN
     if self.typeID:
         self.tooltipPanelClassInfo = TooltipModuleWrapper()
         modulehint = cfg.invtypes.Get(self.typeID).name
         if self.charge:
             modulehint += '<br>%s' % localization.GetByLabel(
                 'UI/Fitting/ChargeQuantity',
                 charge=self.charge.typeID,
                 chargeQuantity=chargeQty)
         shipID = self.GetShipID()
         if not self.shell.SlotExists(shipID, self.module.flagID):
             modulehint = localization.GetByLabel(
                 'UI/Fitting/SlotDoesNotExist')
         self.hint = modulehint
     else:
         self.tooltipPanelClassInfo = None
         self.hint = self._emptyHint
         tooltipName = self._emptyTooltip
         if tooltipName:
             SetFittingTooltipInfo(targetObject=self,
                                   tooltipName=tooltipName,
                                   includeDesc=False)
     self.opacity = 1.0
     self.state = uiconst.UI_NORMAL
     self.PrepareUtilButtons()
     if putOnline:
         uthread.new(self.DelayedOnlineAttempt, eve.session.shipid,
                     invItem.itemID)
     icon = self.sr.flagIcon
     icon.SetAlign(uiconst.CENTER)
     iconSize = int(48 * self.scaleFactor)
     icon.SetSize(iconSize, iconSize)
     icon.SetPosition(0, 0)
     if self.charge or self.module:
         icon.LoadIconByTypeID((self.charge or self.module).typeID,
                               ignoreSize=True)
         icon.parent.SetRotation(-self.GetRotation())
     else:
         rev = 0
         slotIcon = {
             const.flagSubSystemSlot0: 'ui_81_64_9',
             const.flagSubSystemSlot1: 'ui_81_64_10',
             const.flagSubSystemSlot2: 'ui_81_64_11',
             const.flagSubSystemSlot3: 'ui_81_64_12',
             const.flagSubSystemSlot4: 'ui_81_64_13'
         }.get(self.flag, None)
         if slotIcon is None:
             slotIcon = {
                 const.effectLoPower: 'ui_81_64_5',
                 const.effectMedPower: 'ui_81_64_6',
                 const.effectHiPower: 'ui_81_64_7',
                 const.effectRigSlot: 'ui_81_64_8'
             }.get(self.powerType, None)
         else:
             rev = 1
         if slotIcon is not None:
             icon.LoadIcon(slotIcon, ignoreSize=True)
         if rev:
             icon.parent.SetRotation(mathUtil.DegToRad(180.0))
         else:
             icon.parent.SetRotation(0.0)
     icon.state = uiconst.UI_PICKCHILDREN
     self.SetGroup()
     self.UpdateOnlineDisplay()
     self.Hilite(0)
Exemplo n.º 14
0
 def LogInfo(self, *args):
     lg.Info('listentry.CorpMemberRoleEntry', *args)