Merge branch 'master' of evefit.org:pyfa

This commit is contained in:
cncfanatics
2010-11-24 10:11:14 +01:00
2 changed files with 61 additions and 29 deletions

View File

@@ -40,6 +40,7 @@ class FleetBrowser(wx.Panel):
self.Layout()
self.filter = ""
self.fleetIDMustEditName = -1
self.Bind(wx.EVT_SIZE, self.SizeRefreshList)
@@ -56,6 +57,7 @@ class FleetBrowser(wx.Panel):
newFleet = self.sFleet.addFleet()
self.sFleet.renameFleet(newFleet, fleetName)
self.fleetIDMustEditName = newFleet.ID
self.AddItem(newFleet.ID, newFleet.name, newFleet.count())
def SelectFleetItem(self, event):
@@ -70,6 +72,7 @@ class FleetBrowser(wx.Panel):
fleetName = fleet.name + " Copy"
self.sFleet.renameFleet(fleet,fleetName)
self.fleetIDMustEditName = fleet.ID
self.AddItem(fleet.ID, fleet.name, fleet.count())
self.fleetItemContainer.SelectWidgetByFleetID(fleet.ID)
@@ -237,6 +240,7 @@ class FleetItem(wx.Window):
# 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
@@ -257,6 +261,7 @@ class FleetItem(wx.Window):
self.renameBmp = bitmapLoader.getBitmap("fit_rename_small", "icons")
self.deleteBmp = bitmapLoader.getBitmap("fit_delete_small","icons")
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)
@@ -284,7 +289,15 @@ class FleetItem(wx.Window):
self.editWidth = 150
self.tcFleetName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fleetName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER)
self.tcFleetName.Show(False)
if self.fleetBrowser.fleetIDMustEditName != self.fleetID:
self.tcFleetName.Show(False)
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)
@@ -311,7 +324,7 @@ class FleetItem(wx.Window):
if self.editHasFocus:
self.HideEdit()
else:
wx.PostEvent(self.Parent.Parent, FleetItemSelect(fleetID = self.fleetID))
wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID))
event.Skip()
def OnRenameBtn(self, event):
@@ -332,14 +345,14 @@ class FleetItem(wx.Window):
if self.editHasFocus:
self.HideEdit()
else:
wx.PostEvent(self.Parent.Parent, FleetItemDelete(fleetID = self.fleetID))
wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID))
event.Skip()
def OnCopyBtn(self, event):
if self.editHasFocus:
self.HideEdit()
else:
wx.PostEvent(self.Parent.Parent, FleetItemCopy(fleetID = self.fleetID))
wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID))
event.Skip()
def RenameFit(self, event):
@@ -348,7 +361,7 @@ class FleetItem(wx.Window):
newFleetName = self.tcFleetName.GetValue()
self.fleetName = newFleetName
wx.PostEvent(self.Parent.Parent, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName))
wx.PostEvent(self.fleetBrowser, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName))
self.Refresh()
def IsSelected(self):
@@ -396,18 +409,11 @@ class FleetItem(wx.Window):
bdc.SetTextForeground(wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ))
bdc.Clear()
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
bdc.SetFont(self.fontBig)
fnx,fny = bdc.GetTextExtent(self.fleetName)
bdc.DrawText(self.fleetName, self.padding, (rect.height/2 - fny)/2)
bdc.SetFont(self.fontSmall)
fcx,fcy = bdc.GetTextExtent(fleetCount)
bdc.DrawText(fleetCount, self.padding, rect.height/2 + (rect.height/2 -fcy) / 2 )
btnWidth,btnHeight = self.btnSize
self.deletePosX = rect.width - btnWidth - self.padding
self.renamePosX = self.deletePosX - btnWidth
@@ -416,6 +422,21 @@ class FleetItem(wx.Window):
# - self.padding
self.renamePosY = self.deletePosY = self.copyPosY = (rect.height - btnHeight) / 2
bdc.SetFont(self.fontSmall)
tx,ty = bdc.GetTextExtent(self.buttonsTip)
bdc.SetFont(self.fontBig)
fnx,fny = bdc.GetTextExtent(self.fleetName)
pfn = self.GetPartialText(self.fleetName, bdc, self.copyPosX - 16 - self.padding - tx - textStart, 1)
bdc.DrawText(pfn, textStart, (rect.height/2 - fny) / 2)
bdc.SetFont(self.fontSmall)
fcx,fcy = bdc.GetTextExtent(fleetCount)
pfc = self.GetPartialText(fleetCount, bdc, self.copyPosX - 16 - self.padding - tx - textStart, 1)
bdc.DrawText(pfc, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 )
bdc.SetFont(self.fontSmall)
if self.highlighted:
brush = wx.Brush(self.btnbgcolour)
pen = wx.Pen(self.btnbgcolour)
@@ -423,8 +444,6 @@ class FleetItem(wx.Window):
bdc.SetPen(pen)
bdc.SetBrush(brush)
tx,ty = bdc.GetTextExtent(self.buttonsTip)
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)
@@ -440,29 +459,42 @@ class FleetItem(wx.Window):
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 )
textStart = self.padding
self.AdjustFleetNameEditSize(textStart, self.copyPosX - self.editWidth - self.padding)
def AdjustFleetNameEditSize(self, start,end):
if self.tcFleetName.IsShown():
fnEditSize = self.tcFleetName.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))
else:
self.tcFleetName.SetSize((self.editWidth,-1))
self.tcFleetName.SetPosition((fnEditPosX,fnEditPosY))
def GetPartialText(self, text, dc , maxWidth, minChars):
textwidths = dc.GetPartialTextExtents(text + "...")
count = 0
for i in textwidths:
if i <= maxWidth:
count +=1
else:
break
return "%s%s" % (text[:count if count > minChars else minChars], "..." if len(text) > count else "" )
def AdjustFleetNameEditSize(self, start,end):
fnEditSize = self.tcFleetName.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))
else:
self.tcFleetName.SetSize((self.editWidth,-1))
self.tcFleetName.SetPosition((fnEditPosX,fnEditPosY))
def OnEditLostFocus(self, event):
if self.highlighted == 1:

BIN
icons/fleet_item_big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB