diff --git a/gui/PFListPane.py b/gui/PFListPane.py index 1f6c94fa7..1df8a1c34 100644 --- a/gui/PFListPane.py +++ b/gui/PFListPane.py @@ -108,6 +108,9 @@ class PFListPane(wx.ScrolledWindow): self._wList.append(widget) self._wCount += 1 + def GetWidgetList(self): + return self._wList + # Override this method if needed ( return False by default if we do not want to scroll to selected widget) def IsWidgetSelectedByContext(self, widget): return False diff --git a/gui/builtinStatsViews/resistancesViewFull.py b/gui/builtinStatsViews/resistancesViewFull.py index 5a7971e8a..1954f1345 100644 --- a/gui/builtinStatsViews/resistancesViewFull.py +++ b/gui/builtinStatsViews/resistancesViewFull.py @@ -27,7 +27,7 @@ import service import gui.mainFrame import gui.builtinViews.fittingView as fv -EffictiveHpToggled, EFFECTIVE_HP_TOGGLED = wx.lib.newevent.NewEvent() +EffectiveHpToggled, EFFECTIVE_HP_TOGGLED = wx.lib.newevent.NewEvent() class ResistancesViewFull(StatsView): name = "resistancesViewFull" @@ -89,10 +89,10 @@ class ResistancesViewFull(StatsView): bitmap.SetToolTip(tooltip) sizerResistances.Add(bitmap, wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER) col+=1 - self.stEHPs = wx.StaticText(contentPanel, wx.ID_ANY, "EHP", style = wx.DOUBLE_BORDER if 'wxMSW' in wx.PlatformInfo else wx.SIMPLE_BORDER) + self.stEHPs = wx.Button(contentPanel, style = wx.BU_EXACTFIT, label = "EHP") self.stEHPs.SetToolTip(wx.ToolTip("Click to toggle between effective HP and raw HP")) - self.stEHPs.Bind(wx.EVT_LEFT_UP, self.toggleEHP) + self.stEHPs.Bind(wx.EVT_BUTTON, self.toggleEHP) sizerResistances.Add(self.stEHPs, wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER) @@ -156,7 +156,7 @@ class ResistancesViewFull(StatsView): self.stEHPs.SetToolTip(wx.ToolTip("Click to toggle between effective HP and raw HP")) def toggleEHP(self, event): - wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=self.stEHPs.GetLabel() == " HP ")) + wx.PostEvent(self.mainFrame, EffectiveHpToggled(effective=self.stEHPs.GetLabel() == "HP")) def ehpSwitch(self, event): self.showEffective = event.effective @@ -168,14 +168,14 @@ class ResistancesViewFull(StatsView): #If we did anything intresting, we'd update our labels to reflect the new fit's stats here if fit is None and not self.showEffective: self.showEffective = True - wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=True)) + wx.PostEvent(self.mainFrame, EffectiveHpToggled(effective=True)) return elif fit is not None and fit.ID != self.activeFit and not self.showEffective: self.showEffective = True - wx.PostEvent(self.mainFrame, EffictiveHpToggled(effective=True)) + wx.PostEvent(self.mainFrame, EffectiveHpToggled(effective=True)) return - self.stEHPs.SetLabel(" EHP " if self.showEffective else " HP ") + self.stEHPs.SetLabel("EHP" if self.showEffective else "HP") self.activeFit = fit.ID if fit is not None else None for tankType in ("shield", "armor", "hull"): diff --git a/gui/builtinViews/__init__.py b/gui/builtinViews/__init__.py old mode 100755 new mode 100644 diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py index 30f59a26e..91ae727da 100644 --- a/gui/builtinViews/fleetView.py +++ b/gui/builtinViews/fleetView.py @@ -11,6 +11,9 @@ class FleetSpawner(gui.multiSwitch.TabSpawner): mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_SELECTED, self.fleetSelected) def fleetSelected(self, event): + if self.multiSwitch.GetPageCount() == 0: + self.multiSwitch.AddPage(wx.Panel(self.multiSwitch, size = (0,0)), "Empty Tab") + view = FleetView(self.multiSwitch) self.multiSwitch.ReplaceActivePage(view) view.populate(event.fleetID) @@ -19,8 +22,8 @@ class FleetSpawner(gui.multiSwitch.TabSpawner): FleetSpawner.register() class FleetView(wx.gizmos.TreeListCtrl): - def __init__(self, parent): - wx.gizmos.TreeListCtrl.__init__(self, parent) + def __init__(self, parent, size = (0,0)): + wx.gizmos.TreeListCtrl.__init__(self, parent, size = size) self.tabManager = parent self.imageList = wx.ImageList(16, 16) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 04f726eab..fb150bd7f 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -2,14 +2,69 @@ import wx import copy from gui import bitmapLoader import gui.mainFrame +from gui.PFListPane import PFListPane + +FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent() + class FleetBrowser(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) - self.SetBackgroundColour("pink") - x = FleetItem(self, 1, "IMBA Fleet", 23, size = (200,32)) -FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent() + mainSizer = wx.BoxSizer(wx.VERTICAL) + + self.fleetItemContainer = PFFleetItemContainer(self) + for i in xrange(10): + self.fleetItemContainer.AddWidget(FleetItem(self, 1, "IMBA Fleet #%d" % i, i, size = (0,32))) + + mainSizer.Add(self.fleetItemContainer, 1, wx.EXPAND) + self.SetSizer(mainSizer) + self.Layout() + self.Bind(wx.EVT_SIZE, self.SizeRefreshList) + + def SizeRefreshList(self, event): + ewidth, eheight = event.GetSize() + self.Layout() + self.fleetItemContainer.Layout() + self.fleetItemContainer.RefreshList(True) + event.Skip() + +class PFFleetItemContainer(PFListPane): + def __init__(self,parent): + PFListPane.__init__(self,parent) + self.selectedWidget = -1 + + def IsWidgetSelectedByContext(self, widget): + if self.GetWidgetList()[widget].IsSelected(): + return True + return False + + def GetWidgetIndex(self, widgetWnd): + return self.GetWidgetList().index(widgetWnd) + + def SelectWidget(self, widgetWnd): + wlist = self.GetWidgetList() + if self.selectedWidget != -1: + wlist[self.selectedWidget].SetSelected(False) + wlist[self.selectedWidget].Refresh() + windex = self.GetWidgetIndex(widgetWnd) + wlist[windex].SetSelected(True) + wlist[windex].Refresh() + self.selectedWidget = windex + + def RemoveWidget(self, child): + child.Destroy() + self.selectedWidget = -1 + self._wList.remove(child) + + + def RemoveAllChildren(self): + for widget in self._wList: + widget.Destroy() + + self.selectedWidget = -1 + self._wList = [] + class FleetItem(wx.Window): def __init__(self, parent, fleetID, fleetName, fleetCount, @@ -22,6 +77,7 @@ class FleetItem(wx.Window): self.fleetName = fleetName self.fleetCount = fleetCount self.highlighted = 0 + self.selected = False self.padding = 5 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) @@ -31,12 +87,15 @@ class FleetItem(wx.Window): self.deleteBmp = bitmapLoader.getBitmap("fit_delete_small","icons") 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.selected) + self.Bind(wx.EVT_LEFT_UP, self.OnSelect) - def selected(self, event): + def OnSelect(self, event): + self.Parent.SelectWidget(self) + self.Refresh() wx.PostEvent(self.mainFrame, FleetSelected(fleetID=0)) event.Skip() @@ -49,6 +108,12 @@ class FleetItem(wx.Window): def Copy(self): print "Copy" + def IsSelected(self): + return self.selected + + def SetSelected(self, state = True): + self.selected = state + def OnPaint(self, event): rect = self.GetRect() @@ -79,7 +144,12 @@ class FleetItem(wx.Window): bdc.SetTextForeground(wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )) else: - bdc.SetBackground(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))) + if self.selected: + bkcolor = wx.Colour(221,221,221) + else: + bkcolor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW) + + bdc.SetBackground(wx.Brush(bkcolor)) bdc.SetTextForeground(wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )) bdc.Clear() diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index 360fe0487..246ec4fa9 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -315,14 +315,19 @@ class HeaderPane (wx.Panel): mainSizer = wx.BoxSizer(wx.HORIZONTAL) + if 'wxMac' in wx.PlatformInfo: + bgcolour = wx.Colour(0, 0, 0, 0) + else: + bgcolour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNFACE ) + self.sbReset = PFGenBitmapButton( self, wx.ID_ANY, self.resetBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE ) mainSizer.Add(self.sbReset, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL , 5) - self.sbReset.SetBackgroundColour( wx.Colour(0, 0, 0, 0) ) + self.sbReset.SetBackgroundColour( bgcolour ) self.sbReset.SetBitmapSelected(self.resetBmp) self.sbRewind = PFGenBitmapButton( self, wx.ID_ANY, self.rewBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE ) mainSizer.Add(self.sbRewind, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL , 5) - self.sbRewind.SetBackgroundColour( wx.Colour(0, 0, 0, 0) ) + self.sbRewind.SetBackgroundColour( bgcolour ) self.sbRewind.SetBitmapSelected(self.rewBmp) self.sl1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL ) @@ -330,11 +335,11 @@ class HeaderPane (wx.Panel): self.sbNewFit = PFGenBitmapButton( self, wx.ID_ANY, self.newBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE ) mainSizer.Add(self.sbNewFit, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL , 5) - self.sbNewFit.SetBackgroundColour( wx.Colour(0, 0, 0, 0) ) + self.sbNewFit.SetBackgroundColour( bgcolour ) self.sbSwitchFitView = PFGenBitmapButton( self, wx.ID_ANY, self.switchBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE ) mainSizer.Add(self.sbSwitchFitView, 0, wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL , 5) - self.sbSwitchFitView.SetBackgroundColour( wx.Colour(0, 0, 0, 0) ) + self.sbSwitchFitView.SetBackgroundColour( bgcolour ) self.stStatus = wx.StaticText( self, wx.ID_ANY, "", wx.DefaultPosition, wx.DefaultSize, 0 ) @@ -356,7 +361,7 @@ class HeaderPane (wx.Panel): self.sbSearch = PFGenBitmapButton( self, wx.ID_ANY, self.searchBmp, wx.DefaultPosition, bmpSize, wx.BORDER_NONE ) mainSizer.Add(self.sbSearch, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL , 5) - self.sbSearch.SetBackgroundColour( wx.Colour(0, 0, 0, 0) ) + self.sbSearch.SetBackgroundColour( bgcolour ) self.SetSizer(mainSizer) diff --git a/icons/fleet_fb_small.png b/icons/fleet_fb_small.png old mode 100755 new mode 100644 diff --git a/icons/fleet_fc_small.png b/icons/fleet_fc_small.png old mode 100755 new mode 100644 diff --git a/icons/fleet_sb_small.png b/icons/fleet_sb_small.png old mode 100755 new mode 100644 diff --git a/icons/fleet_sc_small.png b/icons/fleet_sc_small.png old mode 100755 new mode 100644 diff --git a/icons/fleet_wb_small.png b/icons/fleet_wb_small.png old mode 100755 new mode 100644 diff --git a/icons/fleet_wc_small.png b/icons/fleet_wc_small.png old mode 100755 new mode 100644