Merge branch 'master' of evefit.org:pyfa
This commit is contained in:
@@ -26,6 +26,10 @@ class FleetView(wx.gizmos.TreeListCtrl):
|
||||
wx.gizmos.TreeListCtrl.__init__(self, parent, size = size)
|
||||
|
||||
self.tabManager = parent
|
||||
|
||||
self.fleetId = None
|
||||
self.fleetImg = bitmapLoader.getImage("53_16", "pack")
|
||||
|
||||
self.imageList = wx.ImageList(16, 16)
|
||||
self.SetImageList(self.imageList)
|
||||
|
||||
@@ -39,17 +43,45 @@ class FleetView(wx.gizmos.TreeListCtrl):
|
||||
self.icons[icon] = self.imageList.Add(bitmapLoader.getBitmap("fleet_%s_small" % icon, "icons"))
|
||||
|
||||
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew)
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_RENAMED, self.fleetRenamed)
|
||||
self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_REMOVED, self.fleetRemoved)
|
||||
|
||||
def Destroy(self):
|
||||
self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_REMOVED, handler = self.fleetRemoved)
|
||||
self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_RENAMED, handler = self.fleetRenamed)
|
||||
wx.gizmos.TreeListCtrl.Destroy(self)
|
||||
|
||||
def fleetRenamed(self, event):
|
||||
if event.fleetID == self.fleetId:
|
||||
sFleet = service.Fleet.getInstance()
|
||||
f = sFleet.getFleetByID(event.fleetID)
|
||||
self.UpdateTab(f.name, self.fleetImg)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def fleetRemoved(self, event):
|
||||
if event.fleetID == self.fleetId:
|
||||
self.tabManager.DeletePage(self.tabManager.GetPageIndex(self))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def checkNew(self, event):
|
||||
data = self.GetPyData(event.Item)
|
||||
if data and isinstance(data, tuple) and data[0] == "add":
|
||||
layer = data[1]
|
||||
|
||||
|
||||
|
||||
def UpdateTab(self, name, img):
|
||||
self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), name, img)
|
||||
|
||||
def populate(self, fleetID):
|
||||
sFleet = service.Fleet.getInstance()
|
||||
f = sFleet.getFleetByID(fleetID)
|
||||
self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), f.name)
|
||||
self.fleetId = fleetID
|
||||
|
||||
self.UpdateTab( f.name, self.fleetImg)
|
||||
self.fleet = f
|
||||
self.DeleteAllItems()
|
||||
root = self.AddRoot("")
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
# --------------------------------------------------------------------------------- #
|
||||
|
||||
import wx
|
||||
import wx.lib.newevent
|
||||
import copy
|
||||
import time
|
||||
import gui.utils.colorUtils as colorUtils
|
||||
|
||||
@@ -8,7 +8,15 @@ from gui.utils.drawUtils import GetPartialText
|
||||
|
||||
from wx.lib.buttons import GenBitmapButton
|
||||
|
||||
import gui.utils.colorUtils as colorUtils
|
||||
import gui.utils.drawUtils as drawUtils
|
||||
|
||||
import gui.sfBrowserItem as SFItem
|
||||
|
||||
FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent()
|
||||
FleetRenamed, EVT_FLEET_RENAMED = wx.lib.newevent.NewEvent()
|
||||
FleetRemoved, EVT_FLEET_REMOVED = wx.lib.newevent.NewEvent()
|
||||
|
||||
|
||||
FleetItemSelect, EVT_FLEET_ITEM_SELECT = wx.lib.newevent.NewEvent()
|
||||
FleetItemDelete, EVT_FLEET_ITEM_DELETE = wx.lib.newevent.NewEvent()
|
||||
@@ -86,16 +94,19 @@ class FleetBrowser(wx.Panel):
|
||||
newFleetName = event.fleetName
|
||||
|
||||
self.sFleet.renameFleet(fleet, newFleetName)
|
||||
wx.PostEvent(self.mainFrame, FleetRenamed(fleetID = fleet.ID))
|
||||
|
||||
def DeleteFleetItem(self, event):
|
||||
self.sFleet.deleteFleetByID(event.fleetID)
|
||||
self.PopulateFleetList()
|
||||
wx.PostEvent(self.mainFrame, FleetRemoved(fleetID = event.fleetID))
|
||||
|
||||
def AddItem (self, ID, name, count):
|
||||
self.fleetItemContainer.AddWidget(FleetItem(self, ID, name, count))
|
||||
widget = self.fleetItemContainer.GetWidgetByFleetID(ID)
|
||||
self.fleetItemContainer.RefreshList(True)
|
||||
self.fleetItemContainer.ScrollChildIntoView(widget)
|
||||
wx.PostEvent(self, FleetItemSelect(fleetID = ID))
|
||||
|
||||
def PopulateFleetList(self):
|
||||
self.Freeze()
|
||||
@@ -234,31 +245,22 @@ class PFFleetItemContainer(PFListPane):
|
||||
def OnLeftUp(self, event):
|
||||
event.Skip()
|
||||
|
||||
class FleetItem(wx.Window):
|
||||
class FleetItem(SFItem.SFBrowserItem):
|
||||
def __init__(self, parent, fleetID, fleetName, fleetCount,
|
||||
id=wx.ID_ANY, pos=wx.DefaultPosition,
|
||||
size=(0,32), style=0):
|
||||
wx.Window.__init__(self, parent, id, pos, size, style)
|
||||
size=(0,40), style=0):
|
||||
SFItem.SFBrowserItem.__init__(self, parent, size = size)
|
||||
|
||||
# self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
# self.fleetBrowser = self.mainFrame.fleetBrowser
|
||||
# print self.fleetBrowser
|
||||
self.fleetBrowser = self.Parent
|
||||
self.fleetID = fleetID
|
||||
self.fleetName = fleetName
|
||||
self.fleetCount = fleetCount
|
||||
self.highlighted = 0
|
||||
|
||||
self.buttonsTip = ""
|
||||
self.selected = False
|
||||
self.padding = 5
|
||||
self.editHasFocus = False
|
||||
|
||||
self.cleanupTimer = None
|
||||
self.cleanupTimerId = wx.NewId()
|
||||
self.padding = 4
|
||||
|
||||
self.fontBig = wx.FontFromPixelSize((0,15),wx.SWISS, wx.NORMAL, wx.BOLD, False)
|
||||
self.fontSmall = wx.FontFromPixelSize((0,13),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
|
||||
self.fontNormal = wx.FontFromPixelSize((0,14),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
|
||||
self.fontSmall = wx.FontFromPixelSize((0,12),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
|
||||
|
||||
self.copyBmp = bitmapLoader.getBitmap("fit_add_small", "icons")
|
||||
self.renameBmp = bitmapLoader.getBitmap("fit_rename_small", "icons")
|
||||
@@ -266,29 +268,18 @@ class FleetItem(wx.Window):
|
||||
self.acceptBmp = bitmapLoader.getBitmap("faccept_small", "icons")
|
||||
self.fleetBmp = bitmapLoader.getBitmap("fleet_item_big", "icons")
|
||||
|
||||
self.copyBmpGrey = self.GreyBitmap(self.copyBmp)
|
||||
self.renameBmpGrey = self.GreyBitmap(self.renameBmp)
|
||||
self.deleteBmpGrey = self.GreyBitmap(self.deleteBmp)
|
||||
self.acceptBmpGrey = self.GreyBitmap(self.acceptBmp)
|
||||
fleetImg = self.fleetBmp.ConvertToImage()
|
||||
fleetImg = fleetImg.Blur(2)
|
||||
|
||||
self.btnSize = (18,18)
|
||||
if not fleetImg.HasAlpha():
|
||||
fleetImg.InitAlpha()
|
||||
|
||||
if 'wxMac' in wx.PlatformInfo:
|
||||
self.btnbgcolour = wx.Colour(0, 0, 0, 0)
|
||||
else:
|
||||
self.btnbgcolour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_3DFACE)
|
||||
fleetImg = fleetImg.AdjustChannels(1, 1, 1, 0.5)
|
||||
self.fleetEffBmp = wx.BitmapFromImage(fleetImg)
|
||||
|
||||
self.btnCopy = PFGenBitmapButton( self, wx.ID_ANY, self.copyBmp, wx.DefaultPosition, self.btnSize, wx.BORDER_NONE )
|
||||
self.btnCopy.Show(False)
|
||||
self.btnCopy.SetBackgroundColour( self.btnbgcolour )
|
||||
|
||||
self.btnRename = PFGenBitmapButton( self, wx.ID_ANY, self.renameBmp, wx.DefaultPosition, self.btnSize, wx.BORDER_NONE )
|
||||
self.btnRename.Show(False)
|
||||
self.btnRename.SetBackgroundColour( self.btnbgcolour )
|
||||
|
||||
self.btnDelete = PFGenBitmapButton( self, wx.ID_ANY, self.deleteBmp, wx.DefaultPosition, self.btnSize, wx.BORDER_NONE )
|
||||
self.btnDelete.Show(False)
|
||||
self.btnDelete.SetBackgroundColour( self.btnbgcolour )
|
||||
self.toolbar.AddButton(self.copyBmp, "Copy", self.CopyFleetCB)
|
||||
self.toolbar.AddButton(self.renameBmp, "Rename", self.RenameFleetCB)
|
||||
self.toolbar.AddButton(self.deleteBmp, "Delete", self.DeleteFleetCB)
|
||||
|
||||
self.editWidth = 150
|
||||
self.tcFleetName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fleetName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER)
|
||||
@@ -298,270 +289,147 @@ class FleetItem(wx.Window):
|
||||
else:
|
||||
self.tcFleetName.SetFocus()
|
||||
self.tcFleetName.SelectAll()
|
||||
self.btnRename.SetBitmapLabel(self.acceptBmp, False)
|
||||
self.editHasFocus = True
|
||||
self.fleetBrowser.fleetIDMustEditName = -1
|
||||
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None)
|
||||
|
||||
self.Bind(wx.EVT_LEAVE_WINDOW, self.LeaveWindow)
|
||||
self.Bind(wx.EVT_ENTER_WINDOW, self.EnterWindow)
|
||||
self.Bind(wx.EVT_LEFT_UP, self.OnSelect)
|
||||
|
||||
self.btnCopy.Bind(wx.EVT_ENTER_WINDOW, self.OnBtnEnterWindow)
|
||||
self.btnRename.Bind(wx.EVT_ENTER_WINDOW, self.OnBtnEnterWindow)
|
||||
self.btnDelete.Bind(wx.EVT_ENTER_WINDOW, self.OnBtnEnterWindow)
|
||||
|
||||
self.btnDelete.Bind(wx.EVT_BUTTON, self.OnDeleteBtn)
|
||||
self.btnCopy.Bind(wx.EVT_BUTTON, self.OnCopyBtn)
|
||||
self.btnRename.Bind(wx.EVT_BUTTON, self.OnRenameBtn)
|
||||
self.selected = True
|
||||
|
||||
self.tcFleetName.Bind(wx.EVT_KILL_FOCUS, self.OnEditLostFocus)
|
||||
self.tcFleetName.Bind(wx.EVT_TEXT_ENTER, self.RenameFit)
|
||||
self.tcFleetName.Bind(wx.EVT_TEXT_ENTER, self.RenameFleet)
|
||||
self.tcFleetName.Bind(wx.EVT_KEY_DOWN, self.EditCheckEsc)
|
||||
|
||||
self.Bind(wx.EVT_TIMER, self.OnTimer)
|
||||
|
||||
def OnSelect(self, event):
|
||||
if self.editHasFocus:
|
||||
self.HideEdit()
|
||||
self.animCount = 0
|
||||
|
||||
def MouseLeftUp(self, event):
|
||||
if self.tcFleetName.IsShown():
|
||||
self.tcFleetName.Show(False)
|
||||
else:
|
||||
wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID))
|
||||
event.Skip()
|
||||
|
||||
def OnRenameBtn(self, event):
|
||||
def CopyFleetCB(self):
|
||||
if self.tcFleetName.IsShown():
|
||||
self.HideEdit()
|
||||
self.btnRename.SetBitmapLabel(self.renameBmp, False)
|
||||
self.RenameFit(None)
|
||||
else:
|
||||
if not self.editHasFocus:
|
||||
self.btnRename.SetBitmapLabel(self.acceptBmp,False)
|
||||
self.tcFleetName.Show(True)
|
||||
self.tcFleetName.SetFocus()
|
||||
self.tcFleetName.SelectAll()
|
||||
self.editHasFocus = True
|
||||
event.Skip()
|
||||
self.tcFleetName.Show(False)
|
||||
return
|
||||
|
||||
def OnDeleteBtn(self, event):
|
||||
if self.editHasFocus:
|
||||
self.HideEdit()
|
||||
else:
|
||||
wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID))
|
||||
event.Skip()
|
||||
wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID))
|
||||
|
||||
def OnCopyBtn(self, event):
|
||||
if self.editHasFocus:
|
||||
self.HideEdit()
|
||||
else:
|
||||
wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID))
|
||||
event.Skip()
|
||||
def RenameFleetCB(self):
|
||||
|
||||
def RenameFit(self, event):
|
||||
self.HideEdit()
|
||||
if self.tcFleetName.IsShown():
|
||||
self.tcFleetName.Show(False)
|
||||
self.RenameFleet(None)
|
||||
else:
|
||||
self.tcFleetName.SetValue(self.fleetName)
|
||||
self.tcFleetName.Show()
|
||||
|
||||
self.tcFleetName.SetFocus()
|
||||
self.tcFleetName.SelectAll()
|
||||
|
||||
self.Refresh()
|
||||
|
||||
def RenameFleet(self, event):
|
||||
|
||||
newFleetName = self.tcFleetName.GetValue()
|
||||
self.fleetName = newFleetName
|
||||
|
||||
self.tcFleetName.Show(False)
|
||||
|
||||
wx.PostEvent(self.fleetBrowser, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName))
|
||||
self.Refresh()
|
||||
|
||||
def DeleteFleetCB(self):
|
||||
if self.tcFleetName.IsShown():
|
||||
self.tcFleetName.Show(False)
|
||||
return
|
||||
wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID))
|
||||
|
||||
def OnEditLostFocus(self, event):
|
||||
self.tcFleetName.Show(False)
|
||||
self.Refresh()
|
||||
|
||||
def EditCheckEsc(self, event):
|
||||
if event.GetKeyCode() == wx.WXK_ESCAPE:
|
||||
self.tcFleetName.Show(False)
|
||||
else:
|
||||
event.Skip()
|
||||
|
||||
def IsSelected(self):
|
||||
return self.selected
|
||||
|
||||
def SetSelected(self, state = True):
|
||||
self.selected = state
|
||||
|
||||
def OnPaint(self, event):
|
||||
def UpdateElementsPos(self, mdc):
|
||||
rect = self.GetRect()
|
||||
|
||||
#Bitmap for our buffered DC
|
||||
canvas = wx.EmptyBitmap(rect.width, rect.height)
|
||||
self.toolbarx = rect.width - self.toolbar.GetWidth() - self.padding
|
||||
self.toolbary = (rect.height - self.toolbar.GetHeight()) / 2
|
||||
|
||||
#Buffered DC
|
||||
bdc = wx.BufferedPaintDC(self)
|
||||
bdc.SelectObject(canvas)
|
||||
self.toolbarx = self.toolbarx + self.animCount
|
||||
|
||||
#gradient rect - clear the window
|
||||
grect = copy.copy(rect)
|
||||
grect.top = grect.left = 0
|
||||
self.fleetBmpx = self.padding + (rect.height - self.fleetBmp.GetWidth()) / 2
|
||||
self.fleetBmpy = (rect.height - self.fleetBmp.GetHeight()) / 2
|
||||
|
||||
grect.height = grect.height / 2
|
||||
self.fleetBmpx -= self.animCount
|
||||
|
||||
if self.highlighted:
|
||||
self.textStartx = self.fleetBmpx + self.fleetBmp.GetWidth() + self.padding
|
||||
|
||||
sr = 221
|
||||
sg = 221
|
||||
sb = 221
|
||||
self.fleetNamey = (rect.height - self.fleetBmp.GetHeight()) / 2
|
||||
|
||||
startColor = (sr,sg,sb)
|
||||
mdc.SetFont(self.fontBig)
|
||||
wtext, htext = mdc.GetTextExtent(self.fleetName)
|
||||
|
||||
bdc.GradientFillLinear(grect, startColor, wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW),wx.SOUTH)
|
||||
grect.top = grect.height
|
||||
bdc.GradientFillLinear(grect, startColor, wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW),wx.NORTH)
|
||||
bdc.SetTextForeground(wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ))
|
||||
self.fleetCounty = self.fleetNamey + htext
|
||||
|
||||
else:
|
||||
if self.selected:
|
||||
bkcolor = wx.Colour(221,221,221)
|
||||
else:
|
||||
bkcolor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
|
||||
mdc.SetFont(self.fontSmall)
|
||||
|
||||
bdc.SetBackground(wx.Brush(bkcolor))
|
||||
bdc.SetTextForeground(wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ))
|
||||
bdc.Clear()
|
||||
wlabel,hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel)
|
||||
|
||||
self.thoverx = self.toolbarx - self.padding - wlabel
|
||||
self.thovery = (rect.height - hlabel)/2
|
||||
self.thoverw = wlabel
|
||||
|
||||
def DrawItem(self, mdc):
|
||||
rect = self.GetRect()
|
||||
|
||||
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
|
||||
textColor = colorUtils.GetSuitableColor(windowColor, 1)
|
||||
|
||||
mdc.SetTextForeground(textColor)
|
||||
|
||||
self.UpdateElementsPos(mdc)
|
||||
|
||||
self.toolbar.SetPosition((self.toolbarx, self.toolbary))
|
||||
mdc.DrawBitmap(self.fleetEffBmp, self.fleetBmpx + 3, self.fleetBmpy + 2)
|
||||
mdc.DrawBitmap(self.fleetBmp, self.fleetBmpx,self.fleetBmpy)
|
||||
|
||||
mdc.SetFont(self.fontNormal)
|
||||
|
||||
bdc.DrawBitmap(self.fleetBmp, 0, (rect.height - self.fleetBmp.GetHeight())/2)
|
||||
textStart = self.padding + self.fleetBmp.GetWidth()
|
||||
suffix = "%d ships" % self.fleetCount if self.fleetCount >1 else "%d ship" % self.fleetCount if self.fleetCount == 1 else "No ships"
|
||||
fleetCount = "Fleet size: %s" % suffix
|
||||
fleetCount = drawUtils.GetPartialText(mdc, fleetCount, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
|
||||
|
||||
btnWidth,btnHeight = self.btnSize
|
||||
self.deletePosX = rect.width - btnWidth - self.padding
|
||||
self.renamePosX = self.deletePosX - btnWidth
|
||||
# - self.padding
|
||||
self.copyPosX = self.renamePosX - btnWidth
|
||||
# - self.padding
|
||||
self.renamePosY = self.deletePosY = self.copyPosY = (rect.height - btnHeight) / 2
|
||||
mdc.DrawText(fleetCount, self.textStartx, self.fleetCounty)
|
||||
|
||||
bdc.SetFont(self.fontSmall)
|
||||
tx,ty = bdc.GetTextExtent(self.buttonsTip)
|
||||
mdc.SetFont(self.fontSmall)
|
||||
mdc.DrawText(self.toolbar.hoverLabel, self.thoverx, self.thovery)
|
||||
|
||||
bdc.SetFont(self.fontBig)
|
||||
fnx,fny = bdc.GetTextExtent(self.fleetName)
|
||||
pfn = GetPartialText(bdc, self.fleetName, self.copyPosX - 16 - self.padding - tx - textStart)
|
||||
bdc.DrawText(pfn, textStart, (rect.height/2 - fny) / 2)
|
||||
mdc.SetFont(self.fontBig)
|
||||
|
||||
bdc.SetFont(self.fontSmall)
|
||||
fcx,fcy = bdc.GetTextExtent(fleetCount)
|
||||
pfc = GetPartialText(bdc, fleetCount, self.copyPosX - 16 - self.padding - tx - textStart)
|
||||
bdc.DrawText(pfc, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 )
|
||||
pfname = drawUtils.GetPartialText(mdc, self.fleetName, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
|
||||
mdc.DrawText(pfname, self.textStartx, self.fleetNamey)
|
||||
|
||||
bdc.SetFont(self.fontSmall)
|
||||
if self.tcFleetName.IsShown():
|
||||
self.AdjustControlSizePos(self.tcFleetName, self.textStartx, self.toolbarx - self.editWidth - self.padding)
|
||||
|
||||
if self.highlighted:
|
||||
brush = wx.Brush(self.btnbgcolour)
|
||||
pen = wx.Pen(self.btnbgcolour)
|
||||
|
||||
bdc.SetPen(pen)
|
||||
bdc.SetBrush(brush)
|
||||
|
||||
bdc.DrawRoundedRectangle(self.copyPosX - 8 - tx - self.padding, self.copyPosY-1, rect.width,20, 8)
|
||||
bdc.DrawText(self.buttonsTip,self.copyPosX - tx - self.padding, self.copyPosY + 8 - ty/2)
|
||||
|
||||
self.btnCopy.SetPosition((self.copyPosX, self.copyPosY))
|
||||
self.btnRename.SetPosition((self.renamePosX, self.renamePosY))
|
||||
self.btnDelete.SetPosition((self.deletePosX, self.deletePosY))
|
||||
|
||||
self.btnCopy.Show()
|
||||
self.btnRename.Show()
|
||||
self.btnDelete.Show()
|
||||
|
||||
else:
|
||||
self.btnCopy.Show(False)
|
||||
self.btnRename.Show(False)
|
||||
self.btnDelete.Show(False)
|
||||
|
||||
bdc.DrawBitmap(self.copyBmpGrey, self.copyPosX + 1, self.copyPosY + 1 )
|
||||
|
||||
if self.editHasFocus:
|
||||
bdc.DrawBitmap(self.acceptBmpGrey, self.renamePosX + 1, self.renamePosY + 1 )
|
||||
else:
|
||||
bdc.DrawBitmap(self.renameBmpGrey, self.renamePosX + 1, self.renamePosY + 1 )
|
||||
|
||||
bdc.DrawBitmap(self.deleteBmpGrey, self.deletePosX + 1, self.deletePosY + 1 )
|
||||
|
||||
|
||||
self.AdjustFleetNameEditSize(textStart, self.copyPosX - self.editWidth - self.padding)
|
||||
|
||||
def AdjustFleetNameEditSize(self, start,end):
|
||||
fnEditSize = self.tcFleetName.GetSize()
|
||||
def AdjustControlSizePos(self, editCtl, start, end):
|
||||
fnEditSize = editCtl.GetSize()
|
||||
wSize = self.GetSize()
|
||||
fnEditPosX = end
|
||||
fnEditPosY = (wSize.height - fnEditSize.height)/2
|
||||
if fnEditPosX < start:
|
||||
self.tcFleetName.SetSize((self.editWidth + fnEditPosX - start,-1))
|
||||
self.tcFleetName.SetPosition((start,fnEditPosY))
|
||||
editCtl.SetSize((self.editWidth + fnEditPosX - start,-1))
|
||||
editCtl.SetPosition((start,fnEditPosY))
|
||||
else:
|
||||
self.tcFleetName.SetSize((self.editWidth,-1))
|
||||
self.tcFleetName.SetPosition((fnEditPosX,fnEditPosY))
|
||||
editCtl.SetSize((self.editWidth,-1))
|
||||
editCtl.SetPosition((fnEditPosX,fnEditPosY))
|
||||
|
||||
def OnEditLostFocus(self, event):
|
||||
if self.highlighted == 1:
|
||||
self.editHasFocus = True
|
||||
else:
|
||||
self.HideEdit()
|
||||
event.Skip()
|
||||
|
||||
def EditCheckEsc(self, event):
|
||||
if event.GetKeyCode() == wx.WXK_ESCAPE:
|
||||
self.HideEdit()
|
||||
else:
|
||||
event.Skip()
|
||||
|
||||
def HideEdit(self):
|
||||
self.tcFleetName.Show(False)
|
||||
self.editHasFocus = False
|
||||
self.btnRename.SetBitmapLabel(self.renameBmp, False)
|
||||
self.Refresh()
|
||||
|
||||
|
||||
def OnBtnEnterWindow(self, event):
|
||||
btn = event.GetEventObject()
|
||||
if btn == self.btnCopy:
|
||||
self.buttonsTip = "Copy Fleet"
|
||||
elif btn == self.btnDelete:
|
||||
self.buttonsTip = "Delete Fleet"
|
||||
elif btn == self.btnRename:
|
||||
self.buttonsTip = "Rename Fleet"
|
||||
else:
|
||||
self.buttonsTip = ""
|
||||
self.Refresh()
|
||||
event.Skip()
|
||||
|
||||
|
||||
def EnterWindow(self, event):
|
||||
if not self.cleanupTimer:
|
||||
self.cleanupTimer = wx.Timer(self, self.cleanupTimerId)
|
||||
if not self.cleanupTimer.IsRunning():
|
||||
self.cleanupTimer.Start(50)
|
||||
|
||||
self.highlighted = 1
|
||||
self.buttonsTip = ""
|
||||
self.Refresh()
|
||||
event.Skip()
|
||||
|
||||
def LeaveWindow(self, event):
|
||||
mposx, mposy = wx.GetMousePosition()
|
||||
rect = self.GetRect()
|
||||
rect.top = rect.left = 0
|
||||
cx,cy = self.ScreenToClient((mposx,mposy))
|
||||
if not rect.Contains((cx,cy)):
|
||||
self.highlighted = 0
|
||||
self.Refresh()
|
||||
if self.cleanupTimer:
|
||||
if self.cleanupTimer.IsRunning():
|
||||
self.cleanupTimer.Stop()
|
||||
|
||||
event.Skip()
|
||||
|
||||
def OnTimer(self, event):
|
||||
if event.GetId() == self.cleanupTimerId:
|
||||
mposx, mposy = wx.GetMousePosition()
|
||||
rect = self.GetRect()
|
||||
rect.top = rect.left = 0
|
||||
cx,cy = self.ScreenToClient((mposx,mposy))
|
||||
if not rect.Contains((cx,cy)):
|
||||
self.highlighted = 0
|
||||
self.Refresh()
|
||||
self.cleanupTimer.Stop()
|
||||
event.Skip()
|
||||
|
||||
def GreyBitmap(self, bitmap):
|
||||
img = bitmap.ConvertToImage()
|
||||
img = img.ConvertToGreyscale()
|
||||
return wx.BitmapFromImage(img)
|
||||
|
||||
class PFGenBitmapButton(GenBitmapButton):
|
||||
def __init__(self, parent, id, bitmap, pos, size, style):
|
||||
|
||||
@@ -18,11 +18,21 @@
|
||||
#===============================================================================
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
|
||||
import sqlalchemy
|
||||
import wx
|
||||
|
||||
from wx._core import PyDeadObjectError
|
||||
from wx.lib.wordwrap import wordwrap
|
||||
|
||||
import service
|
||||
import config
|
||||
|
||||
import gui.aboutData
|
||||
import gui.chromeTabs
|
||||
import gui.utils.animUtils as animUtils
|
||||
|
||||
from gui import bitmapLoader
|
||||
from gui.mainMenuBar import MainMenuBar
|
||||
from gui.additionsPane import AdditionsPane
|
||||
@@ -30,20 +40,15 @@ from gui.marketBrowser import MarketBrowser
|
||||
from gui.multiSwitch import MultiSwitch
|
||||
from gui.statsPane import StatsPane
|
||||
from gui.shipBrowser import ShipBrowser, FitSelected
|
||||
from wx.lib.wordwrap import wordwrap
|
||||
from gui.characterEditor import CharacterEditor
|
||||
from gui.characterSelection import CharacterSelection
|
||||
from gui.patternEditor import DmgPatternEditorDlg
|
||||
from gui.preferenceDialog import PreferenceDialog
|
||||
from gui.graphFrame import GraphFrame
|
||||
from gui.copySelectDialog import CopySelectDialog
|
||||
import gui.aboutData
|
||||
from wx._core import PyDeadObjectError
|
||||
import os.path
|
||||
import gui.chromeTabs
|
||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||
from builtinViews import *
|
||||
from gui.fleetBrowser import FleetBrowser
|
||||
from builtinViews import *
|
||||
|
||||
#dummy panel no paint no erasebk
|
||||
class PFPanel(wx.Panel):
|
||||
@@ -451,8 +456,6 @@ class MainFrame(wx.Frame):
|
||||
saveDialog.Destroy()
|
||||
|
||||
def closeWaitDialog(self):
|
||||
if self.waitDialog.timer.IsRunning():
|
||||
self.waitDialog.timer.Stop()
|
||||
self.waitDialog.Destroy()
|
||||
|
||||
def openGraphFrame(self, event):
|
||||
@@ -478,30 +481,19 @@ class MainFrame(wx.Frame):
|
||||
wnd = self
|
||||
InspectionTool().Show(wnd, True)
|
||||
|
||||
|
||||
class WaitDialog(wx.Dialog):
|
||||
def __init__(self, parent):
|
||||
wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"Please wait ...", size=(200,30),
|
||||
wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"Please wait ...", size=(300,30),
|
||||
style=wx.NO_BORDER)
|
||||
mainSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||
|
||||
self.progress = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL | wx.GA_SMOOTH )
|
||||
self.progress = animUtils.LoadAnimation(self,label = "Processing", size=(300,30))
|
||||
mainSizer.Add( self.progress, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0 )
|
||||
self.progress.SetRange(20)
|
||||
self.progress.SetValue(0)
|
||||
self.cycle = 0
|
||||
self.SetSizer( mainSizer )
|
||||
self.Layout()
|
||||
self.timer = wx.Timer(self,wx.ID_ANY)
|
||||
self.timer.Start(100)
|
||||
self.Bind(wx.EVT_CLOSE,self.OnClose)
|
||||
self.Bind(wx.EVT_TIMER,self.OnTimer)
|
||||
self.CenterOnParent()
|
||||
|
||||
def OnTimer(self, event):
|
||||
self.cycle += 1
|
||||
if self.cycle > self.progress.GetRange():
|
||||
self.cycle = 0
|
||||
self.progress.SetValue(self.cycle)
|
||||
|
||||
def OnClose(self, event):
|
||||
pass
|
||||
|
||||
@@ -11,6 +11,7 @@ from wx.lib.buttons import GenBitmapButton
|
||||
|
||||
import gui.utils.colorUtils as colorUtils
|
||||
import gui.utils.drawUtils as drawUtils
|
||||
import gui.utils.animUtils as animUtils
|
||||
import gui.sfBrowserItem as SFItem
|
||||
|
||||
FitRenamed, EVT_FIT_RENAMED = wx.lib.newevent.NewEvent()
|
||||
@@ -26,6 +27,23 @@ class PFWidgetsContainer(PFListPane):
|
||||
def __init__(self,parent):
|
||||
PFListPane.__init__(self,parent)
|
||||
|
||||
self.anim = animUtils.LoadAnimation(self,label = "", size=(100,12))
|
||||
self.anim.Stop()
|
||||
self.anim.Show(False)
|
||||
|
||||
def ShowLoading(self, mode = True):
|
||||
if mode:
|
||||
aweight,aheight = self.anim.GetSize()
|
||||
cweight,cheight = self.GetSize()
|
||||
ax = (cweight - aweight)/2
|
||||
ay = (cheight - aheight)/2
|
||||
self.anim.SetPosition((ax,ay))
|
||||
self.anim.Show()
|
||||
self.anim.Play()
|
||||
else:
|
||||
self.anim.Stop()
|
||||
self.anim.Show(False)
|
||||
|
||||
def IsWidgetSelectedByContext(self, widget):
|
||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
stage = self.Parent.GetActiveStage()
|
||||
@@ -162,6 +180,7 @@ class ShipBrowser(wx.Panel):
|
||||
else:
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ID, (name, fits), race))
|
||||
|
||||
self.lpane.ShowLoading(False)
|
||||
self.lpane.RefreshList()
|
||||
|
||||
def stage2(self, event):
|
||||
@@ -175,6 +194,9 @@ class ShipBrowser(wx.Panel):
|
||||
|
||||
|
||||
self.lpane.RemoveAllChildren()
|
||||
|
||||
self.lpane.ShowLoading()
|
||||
|
||||
sMarket = service.Market.getInstance()
|
||||
sMarket.getShipListDelayed(self.stage2Callback, categoryID)
|
||||
|
||||
|
||||
86
gui/utils/animUtils.py
Normal file
86
gui/utils/animUtils.py
Normal file
@@ -0,0 +1,86 @@
|
||||
import wx
|
||||
import gui.utils.colorUtils as colorUtils
|
||||
|
||||
class LoadAnimation(wx.Window):
|
||||
def __init__ (self, parent, id = wx.ID_ANY, label = "", pos = wx.DefaultPosition, size = wx.DefaultSize, style = 0):
|
||||
wx.Window.__init__(self, parent, id, pos = pos, size = size, style = style)
|
||||
|
||||
self.label = label
|
||||
|
||||
self.animTimerId = wx.NewId()
|
||||
self.animTimer = wx.Timer(self, self.animTimerId)
|
||||
self.animTimerPeriod = 50
|
||||
|
||||
self.animCount = 0
|
||||
self.animDir = 1
|
||||
self.bars = 10
|
||||
self.padding = 2
|
||||
|
||||
|
||||
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
|
||||
self.Bind(wx.EVT_TIMER, self.OnTimer)
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
|
||||
self.animTimer.Start(self.animTimerPeriod)
|
||||
|
||||
def Play(self):
|
||||
if self.animTimer.IsRunning():
|
||||
self.animTimer.Stop()
|
||||
self.animCount = 0
|
||||
self.animTimer.Start(self.animTimerPeriod)
|
||||
|
||||
def Stop(self):
|
||||
if self.animTimer.IsRunning():
|
||||
self.animTimer.Stop()
|
||||
|
||||
def OnTimer(self, event):
|
||||
self.animCount += self.animDir
|
||||
|
||||
if self.animCount >= self.bars:
|
||||
self.animCount = self.bars - 1
|
||||
self.animDir = -1
|
||||
|
||||
if self.animCount < 0:
|
||||
self.animCount = 0
|
||||
self.animDir = 1
|
||||
|
||||
self.Refresh()
|
||||
|
||||
def OnEraseBackground(self, event):
|
||||
pass
|
||||
|
||||
def OnPaint(self, event):
|
||||
rect = self.GetClientRect()
|
||||
dc = wx.BufferedPaintDC(self)
|
||||
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
|
||||
dc.SetBackground(wx.Brush(windowColor))
|
||||
dc.Clear()
|
||||
|
||||
barColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOWTEXT)
|
||||
shadeColor = colorUtils.GetSuitableColor(barColor, 0.75)
|
||||
|
||||
barWidth = (rect.width) / self.bars
|
||||
barHeight = rect.height - self.padding * 2
|
||||
|
||||
x = self.padding
|
||||
|
||||
for bar in xrange(self.bars):
|
||||
if bar != self.animCount:
|
||||
dc.SetPen(wx.Pen(shadeColor))
|
||||
dc.SetBrush(wx.Brush(shadeColor))
|
||||
bh = barHeight
|
||||
y = self.padding
|
||||
else:
|
||||
barColor = colorUtils.GetSuitableColor(barColor,float(self.animCount/2)/10)
|
||||
dc.SetPen(wx.Pen(barColor))
|
||||
dc.SetBrush(wx.Brush(barColor))
|
||||
bh = rect.height
|
||||
y = 0
|
||||
|
||||
dc.DrawRectangle(x, y, barWidth, bh)
|
||||
x += barWidth
|
||||
|
||||
textColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOWTEXT)
|
||||
dc.SetTextForeground(textColor)
|
||||
dc.DrawLabel(self.label,rect,wx.ALIGN_CENTER)
|
||||
|
||||
Reference in New Issue
Block a user