Merge branch 'master' of evefit.org:pyfa

This commit is contained in:
DarkPhoenix
2011-01-16 23:09:06 +03:00
6 changed files with 97 additions and 40 deletions

View File

@@ -151,6 +151,8 @@ class PFListPane(wx.ScrolledWindow):
if itemY >=-iheight and itemY< clientH:
self._wList[i].Refresh()
self.SetFocus()
def RemoveWidget(self, child):
child.Destroy()
self._wList.remove(child)

View File

@@ -182,10 +182,12 @@ class FleetBrowserHeader (wx.Panel):
def fbNewEnterWindow(self, event):
self.stStatus.SetLabel("New fleet")
self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
event.Skip()
def fbHItemLeaveWindow(self, event):
self.stStatus.SetLabel("")
self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
event.Skip()
def fbFilterEnterWindow(self, event):
@@ -278,7 +280,7 @@ class FleetItem(SFItem.SFBrowserItem):
self.fleetEffBmp = wx.BitmapFromImage(fleetImg)
self.toolbar.AddButton(self.copyBmp, "Copy", self.CopyFleetCB)
self.toolbar.AddButton(self.renameBmp, "Rename", self.RenameFleetCB)
self.renameBtn = self.toolbar.AddButton(self.renameBmp, "Rename", self.RenameFleetCB)
self.toolbar.AddButton(self.deleteBmp, "Delete", self.DeleteFleetCB)
self.editWidth = 150
@@ -290,6 +292,7 @@ class FleetItem(SFItem.SFBrowserItem):
self.tcFleetName.SetFocus()
self.tcFleetName.SelectAll()
self.fleetBrowser.fleetIDMustEditName = -1
self.renameBtn.SetBitmap(self.acceptBmp)
self.selected = True
self.tcFleetName.Bind(wx.EVT_KILL_FOCUS, self.OnEditLostFocus)
@@ -301,13 +304,13 @@ class FleetItem(SFItem.SFBrowserItem):
def MouseLeftUp(self, event):
if self.tcFleetName.IsShown():
self.tcFleetName.Show(False)
self.RestoreEditButton()
else:
wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID))
def CopyFleetCB(self):
if self.tcFleetName.IsShown():
self.tcFleetName.Show(False)
self.RestoreEditButton()
return
wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID))
@@ -315,12 +318,17 @@ class FleetItem(SFItem.SFBrowserItem):
def RenameFleetCB(self):
if self.tcFleetName.IsShown():
self.tcFleetName.Show(False)
self.RenameFleet(None)
self.RestoreEditButton()
else:
self.tcFleetName.SetValue(self.fleetName)
self.tcFleetName.Show()
self.renameBtn.SetBitmap(self.acceptBmp)
self.Refresh()
self.tcFleetName.SetFocus()
self.tcFleetName.SelectAll()
@@ -338,17 +346,22 @@ class FleetItem(SFItem.SFBrowserItem):
def DeleteFleetCB(self):
if self.tcFleetName.IsShown():
self.tcFleetName.Show(False)
self.RestoreEditButton()
return
wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID))
def RestoreEditButton(self):
self.tcFleetName.Show(False)
self.renameBtn.SetBitmap(self.renameBmp)
self.Refresh()
def OnEditLostFocus(self, event):
self.tcFleetName.Show(False)
self.RestoreEditButton()
self.Refresh()
def EditCheckEsc(self, event):
if event.GetKeyCode() == wx.WXK_ESCAPE:
self.tcFleetName.Show(False)
self.RestoreEditButton()
else:
event.Skip()

View File

@@ -450,7 +450,7 @@ class MainFrame(wx.Frame):
filePath = saveDialog.GetPath()
if '.' not in os.path.basename(filePath):
filePath += ".xml"
self.waitDialog = WaitDialog(self)
self.waitDialog = animUtils.WaitDialog(self)
sFit.backupFits(filePath, self.closeWaitDialog)
self.waitDialog.ShowModal()
@@ -482,19 +482,3 @@ 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=(300,30),
style=wx.NO_BORDER)
mainSizer = wx.BoxSizer( wx.HORIZONTAL )
self.progress = animUtils.LoadAnimation(self,label = "Processing", size=(300,30))
mainSizer.Add( self.progress, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0 )
self.SetSizer( mainSizer )
self.Layout()
self.Bind(wx.EVT_CLOSE,self.OnClose)
self.CenterOnParent()
def OnClose(self, event):
pass

View File

@@ -67,7 +67,8 @@ class PFBaseButton(object):
return self.disabledBmp
class PFToolbar(object):
def __init__(self):
def __init__(self, parent):
self.Parent = parent
self.buttons =[]
self.toolbarX = 0
self.toolbarY = 0
@@ -89,15 +90,18 @@ class PFToolbar(object):
def MouseMove(self, event):
doRefresh = False
changeCursor = False
bx = self.toolbarX
self.hoverLabel = ""
for button in self.buttons:
state = button.GetState()
if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
changeCursor = True
if not state & BTN_HOVER:
button.SetState(state | BTN_HOVER)
self.hoverLabel = button.GetLabel()
self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
doRefresh = True
else:
if state & BTN_HOVER:
@@ -106,6 +110,9 @@ class PFToolbar(object):
bwidth, bheight = button.GetSize()
bx += bwidth + self.padding
if not changeCursor:
self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
return doRefresh
def MouseClick(self, event):
@@ -193,7 +200,7 @@ class SFBrowserItem(wx.Window):
self.highlighted = False
self.selected = False
self.bkBitmap = None
self.toolbar = PFToolbar()
self.toolbar = PFToolbar(self)
self.Bind(wx.EVT_PAINT, self.OnPaint)

View File

@@ -152,6 +152,10 @@ class ShipBrowser(wx.Panel):
self.hpane.ToggleNewFitSB(False)
self.hpane.ToggleFitViewModeSB(False)
sMarket = service.Market.getInstance()
self.lpane.ShowLoading(False)
self.lpane.Freeze()
self.lpane.RemoveAllChildren()
if len(self.categoryList) == 0:
self.categoryList = sMarket.getShipRoot()
@@ -160,6 +164,7 @@ class ShipBrowser(wx.Panel):
self.lpane.AddWidget(CategoryItem(self.lpane, ID, (name, 0)))
self.lpane.RefreshList()
self.lpane.Thaw()
RACE_ORDER = ["amarr", "caldari", "gallente", "minmatar", "ore", "serpentis", "angel", "blood", "sansha", "guristas", None]
def raceNameKey(self, shipInfo):
@@ -181,6 +186,7 @@ class ShipBrowser(wx.Panel):
self.lpane.AddWidget(ShipItem(self.lpane, ID, (name, fits), race))
self.lpane.ShowLoading(False)
self.lpane.RefreshList()
def stage2(self, event):
@@ -192,10 +198,10 @@ class ShipBrowser(wx.Panel):
categoryID = event.categoryID
self.lastdata = categoryID
self.lpane.ShowLoading()
self.lpane.RemoveAllChildren()
self.lpane.ShowLoading()
sMarket = service.Market.getInstance()
sMarket.getShipListDelayed(self.stage2Callback, categoryID)
@@ -205,6 +211,9 @@ class ShipBrowser(wx.Panel):
self.hpane.ToggleFitViewModeSB(True)
def stage3(self, event):
self.lpane.ShowLoading(False)
if event.back == 0:
self.browseHist.append( (2,self._stage2Data) )
elif event.back == -1:
@@ -218,11 +227,14 @@ class ShipBrowser(wx.Panel):
sFit = service.Fit.getInstance()
sMarket = service.Market.getInstance()
self.lpane.Freeze()
self.lpane.RemoveAllChildren()
fitList = sFit.getFitsWithShip(shipID)
if len(fitList) == 0:
stage,data = self.browseHist.pop()
self.lpane.Thaw()
self.hpane.gotoStage(stage,data)
return
self.hpane.ToggleFitViewModeSB(False)
@@ -237,8 +249,12 @@ class ShipBrowser(wx.Panel):
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, name, timestamp),shipID))
self.lpane.RefreshList()
self.lpane.Thaw()
def searchStage(self, event):
self.lpane.ShowLoading(False)
if not event.back:
if self._activeStage !=4:
if len(self.browseHist) >0:
@@ -252,6 +268,8 @@ class ShipBrowser(wx.Panel):
sFit = service.Fit.getInstance()
query = event.text
self.lpane.Freeze()
self.lpane.RemoveAllChildren()
if query:
shipList = sMarket.searchShips(query)
@@ -265,6 +283,7 @@ class ShipBrowser(wx.Panel):
if len(shipList) == 0 and len(fitList) == 0 :
self.lpane.AddWidget(PFStaticText(self.lpane, label = "No matching results."))
self.lpane.RefreshList()
self.lpane.Thaw()
class PFStaticText(wx.StaticText):
def _init__(self,parent, label = wx.EmptyString):
@@ -1158,6 +1177,7 @@ class FitItem(SFItem.SFBrowserItem):
self.copyBmp = bitmapLoader.getBitmap("fit_add_small", "icons")
self.renameBmp = bitmapLoader.getBitmap("fit_rename_small", "icons")
self.deleteBmp = bitmapLoader.getBitmap("fit_delete_small","icons")
self.acceptBmp = bitmapLoader.getBitmap("faccept_small", "icons")
self.shipEffBk = bitmapLoader.getBitmap("fshipbk_big","icons")
@@ -1179,7 +1199,7 @@ class FitItem(SFItem.SFBrowserItem):
self.fontSmall = wx.FontFromPixelSize((0,12),wx.SWISS, wx.NORMAL, wx.NORMAL, False)
self.toolbar.AddButton(self.copyBmp,"Copy", self.copyBtnCB)
self.toolbar.AddButton(self.renameBmp,"Rename", self.renameBtnCB)
self.renameBtn = self.toolbar.AddButton(self.renameBmp,"Rename", self.renameBtnCB)
self.toolbar.AddButton(self.deleteBmp, "Delete", self.deleteBtnCB)
self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fitName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER)
@@ -1190,6 +1210,7 @@ class FitItem(SFItem.SFBrowserItem):
self.tcFitName.SetFocus()
self.tcFitName.SelectAll()
self.shipBrowser.fitIDMustEditName = -1
self.renameBtn.SetBitmap(self.acceptBmp)
self.tcFitName.Bind(wx.EVT_TEXT_ENTER, self.renameFit)
self.tcFitName.Bind(wx.EVT_KILL_FOCUS, self.editLostFocus)
@@ -1201,6 +1222,8 @@ class FitItem(SFItem.SFBrowserItem):
self.animPeriod = 10
self.animDuration = 100
self.maxDelta = 60
self.Bind(wx.EVT_TIMER, self.OnTimer)
if self.shipBrowser.GetActiveStage() != 4 and self.shipBrowser.GetLastStage() !=3:
@@ -1217,13 +1240,13 @@ class FitItem(SFItem.SFBrowserItem):
if self.selTimerID == event.GetId():
ctimestamp = time.time()
interval = 10
interval = 5
if ctimestamp < self.timestamp + interval:
delta = (ctimestamp - self.timestamp) / interval
self.selectedDelta = self.CalculateDelta(0x0,0x66,delta)
self.selectedDelta = self.CalculateDelta(0x0,self.maxDelta,delta)
self.Refresh()
else:
self.selectedDelta = 0x66
self.selectedDelta = self.maxDelta
self.selTimer.Stop()
if self.animTimerId == event.GetId():
@@ -1249,16 +1272,20 @@ class FitItem(SFItem.SFBrowserItem):
return -c *(t)*(t-2) + b
def editLostFocus(self, event):
self.tcFitName.Show(False)
self.RestoreEditButton()
self.Refresh()
def editCheckEsc(self, event):
if event.GetKeyCode() == wx.WXK_ESCAPE:
self.tcFitName.Show(False)
self.RestoreEditButton()
else:
event.Skip()
def copyBtnCB(self):
if self.tcFitName.IsShown():
self.RestoreEditButton()
return
self.copyFit()
def copyFit(self, event=None):
@@ -1270,12 +1297,12 @@ class FitItem(SFItem.SFBrowserItem):
def renameBtnCB(self):
if self.tcFitName.IsShown():
self.tcFitName.Show(False)
self.RestoreEditButton()
self.renameFit()
else:
self.tcFitName.SetValue(self.fitName)
self.tcFitName.Show()
self.renameBtn.SetBitmap(self.acceptBmp)
self.tcFitName.SetFocus()
self.tcFitName.SelectAll()
@@ -1295,6 +1322,10 @@ class FitItem(SFItem.SFBrowserItem):
self.tcFitName.SetValue(self.fitName)
def deleteBtnCB(self):
if self.tcFitName.IsShown():
self.RestoreEditButton()
return
self.deleteFit()
def deleteFit(self, event=None):
@@ -1344,8 +1375,7 @@ class FitItem(SFItem.SFBrowserItem):
self.dragging = False
if self.tcFitName.IsShown():
self.tcFitName.Show(False)
self.Refresh()
self.RestoreEditButton()
else:
activeFitID = self.mainFrame.getActiveFit()
if activeFitID != self.fitID:
@@ -1376,6 +1406,11 @@ class FitItem(SFItem.SFBrowserItem):
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fitID))
self.Parent.RefreshList(True)
def RestoreEditButton(self):
self.tcFitName.Show(False)
self.renameBtn.SetBitmap(self.renameBmp)
self.Refresh()
def UpdateElementsPos(self, mdc):
rect = self.GetRect()
@@ -1432,9 +1467,10 @@ class FitItem(SFItem.SFBrowserItem):
mdc.SetFont(self.fontNormal)
fitDate = time.localtime(self.timestamp)
fitLocalDate = "%02d/%02d %02d:%02d" % (fitDate[1], fitDate[2], fitDate[3], fitDate[4])
fitLocalDate = "%d/%02d/%02d %02d:%02d" % ( fitDate[0], fitDate[1], fitDate[2], fitDate[3], fitDate[4])
pfdate = drawUtils.GetPartialText(mdc, fitLocalDate, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw)
mdc.DrawText(fitLocalDate, self.textStartx, self.timestampy)
mdc.DrawText(pfdate, self.textStartx, self.timestampy)
mdc.SetFont(self.fontSmall)
mdc.DrawText(self.toolbar.hoverLabel, self.thoverx, self.thovery)
@@ -1501,7 +1537,7 @@ class FitItem(SFItem.SFBrowserItem):
elif state == SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED:
eFactor = 0.3
elif state == SFItem.SB_ITEM_SELECTED:
eFactor = (0x33 - self.selectedDelta)/100
eFactor = (self.maxDelta - self.selectedDelta)/100 + 0.15
else:
sFactor = 0

View File

@@ -84,3 +84,18 @@ class LoadAnimation(wx.Window):
dc.SetTextForeground(textColor)
dc.DrawLabel(self.label,rect,wx.ALIGN_CENTER)
class WaitDialog(wx.Dialog):
def __init__(self, parent, title = "Processing"):
wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title = title, size=(300,30),
style=wx.NO_BORDER)
mainSizer = wx.BoxSizer( wx.HORIZONTAL )
self.progress = LoadAnimation(self,label = title, size=(300,30))
mainSizer.Add( self.progress, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 0 )
self.SetSizer( mainSizer )
self.Layout()
self.Bind(wx.EVT_CLOSE,self.OnClose)
self.CenterOnParent()
def OnClose(self, event):
pass