Start work on integrating new tabs into pyfa
This commit is contained in:
2
eos
2
eos
Submodule eos updated: f964b32559...dfe939dadf
@@ -79,7 +79,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
if not picked:
|
if not picked:
|
||||||
charID = cChar.all0ID()
|
charID = cChar.all0ID()
|
||||||
self.selectChar(charID)
|
self.selectChar(charID)
|
||||||
fitID = self.mainFrame.fitMultiSwitch.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
cFit = service.Fit.getInstance()
|
cFit = service.Fit.getInstance()
|
||||||
cFit.changeChar(fitID, charID)
|
cFit.changeChar(fitID, charID)
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def charChanged(self, event):
|
def charChanged(self, event):
|
||||||
fitID = self.mainFrame.fitMultiSwitch.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
charID = self.getActiveCharacter()
|
charID = self.getActiveCharacter()
|
||||||
|
|
||||||
cFit = service.Fit.getInstance()
|
cFit = service.Fit.getInstance()
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------------- #
|
# --------------------------------------------------------------------------------- #
|
||||||
# Pyfa's custom Notebook core python IMPLEMENTATION
|
# Pyfa's custom Notebook core python IMPLEMENTATION
|
||||||
#
|
#
|
||||||
@@ -10,9 +8,134 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
import copy
|
import copy
|
||||||
import time
|
|
||||||
|
|
||||||
class PFTabRenderer:
|
class PFNotebook(wx.Panel):
|
||||||
|
def __init__(self, parent):
|
||||||
|
wx.Panel.__init__(self, parent, wx.ID_ANY,size = (-1,-1))
|
||||||
|
|
||||||
|
self.pages = []
|
||||||
|
self.activePage = None
|
||||||
|
|
||||||
|
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
tabsSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.tabsContainer = PFTabsContainer(self)
|
||||||
|
tabsSizer.Add( self.tabsContainer, 0, wx.EXPAND )
|
||||||
|
|
||||||
|
mainSizer.Add( tabsSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
contentSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
self.pageContainer = wx.Panel(self)
|
||||||
|
contentSizer.Add( self.pageContainer, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
mainSizer.Add( contentSizer, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.SetSizer( mainSizer )
|
||||||
|
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||||
|
self.Layout()
|
||||||
|
# for i in xrange(10):
|
||||||
|
# self.tabsContainer.AddTab("Pyfa TAB #%d Aw" % i)
|
||||||
|
|
||||||
|
def GetPage(self, i):
|
||||||
|
return self.pages[i]
|
||||||
|
|
||||||
|
def GetSelectedPage(self):
|
||||||
|
return self.activePage
|
||||||
|
|
||||||
|
def GetPageIndex(self, page):
|
||||||
|
return self.pages.index(page)
|
||||||
|
|
||||||
|
def GetSelection(self):
|
||||||
|
return self.GetPageIndex(self.activePage)
|
||||||
|
|
||||||
|
def AddPage(self, tabWnd, tabTitle = wx.EmptyString, tabImage = None):
|
||||||
|
if self.activePage:
|
||||||
|
self.activePage.Hide()
|
||||||
|
|
||||||
|
if tabWnd is not None:
|
||||||
|
tabWnd.Reparent(self.pageContainer)
|
||||||
|
|
||||||
|
self.pageContainer.Layout()
|
||||||
|
|
||||||
|
self.pages.append(tabWnd)
|
||||||
|
self.tabsContainer.AddTab(tabTitle, tabImage)
|
||||||
|
|
||||||
|
self.activePage = tabWnd
|
||||||
|
|
||||||
|
|
||||||
|
def SetSelection(self, page):
|
||||||
|
oldsel = self.GetSelection()
|
||||||
|
if oldsel != page:
|
||||||
|
self.activePage.Hide()
|
||||||
|
self.activePage = self.pages[page]
|
||||||
|
self.ShowActive()
|
||||||
|
|
||||||
|
def DeletePage(self, n, internal = False):
|
||||||
|
page = self.pages[n]
|
||||||
|
|
||||||
|
self.pages.remove(page)
|
||||||
|
page.Hide()
|
||||||
|
page.Destroy()
|
||||||
|
|
||||||
|
if not internal:
|
||||||
|
self.tabsContainer.DeleteTab(n, True)
|
||||||
|
|
||||||
|
sel = self.tabsContainer.GetSelected()
|
||||||
|
if sel is not None:
|
||||||
|
self.activePage = self.pages[sel]
|
||||||
|
self.ShowActive()
|
||||||
|
else:
|
||||||
|
self.activePage = None
|
||||||
|
|
||||||
|
|
||||||
|
def SwitchPages(self, src, dest, internal = False):
|
||||||
|
self.pages[src], self.pages[dest] = self.pages[dest], self.pages[src]
|
||||||
|
|
||||||
|
def ShowActive(self):
|
||||||
|
self.activePage.SetSize(self.pageContainer.GetSize())
|
||||||
|
self.activePage.Show()
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
def IsActive(self, page):
|
||||||
|
return self.activePage == page
|
||||||
|
|
||||||
|
def SetPageText(self, i, text, refresh=False):
|
||||||
|
tab = self.tabsContainer.tabs[i]
|
||||||
|
tab.text = text
|
||||||
|
tab._Render()
|
||||||
|
if refresh:
|
||||||
|
self.Refresh()
|
||||||
|
|
||||||
|
def SetPageIcon(self, i, icon, refresh=False):
|
||||||
|
tab = self.tabsContainer.tabs[i]
|
||||||
|
tab.img = icon
|
||||||
|
tab._Render()
|
||||||
|
if refresh:
|
||||||
|
self.Refresh()
|
||||||
|
|
||||||
|
def SetPageTextIcon(self, i, text=wx.EmptyString, icon=None):
|
||||||
|
self.SetPageText(i, text)
|
||||||
|
self.SetPageIcon(i, icon)
|
||||||
|
self.Refresh()
|
||||||
|
|
||||||
|
def Refresh(self):
|
||||||
|
self.tabsContainer.Refresh()
|
||||||
|
|
||||||
|
def OnSize(self, event):
|
||||||
|
w,h= self.GetSize()
|
||||||
|
self.tabsContainer.SetSize((w, -1))
|
||||||
|
self.tabsContainer.UpdateSize()
|
||||||
|
self.tabsContainer.Refresh()
|
||||||
|
self.Layout()
|
||||||
|
size = self.pageContainer.GetSize()
|
||||||
|
if self.activePage:
|
||||||
|
self.activePage.SetSize(size)
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class PFTabRenderer(object):
|
||||||
def __init__(self, size = (36,24), text = wx.EmptyString, img = None, inclination = 6 , closeButton = True, fontSize = 8):
|
def __init__(self, size = (36,24), text = wx.EmptyString, img = None, inclination = 6 , closeButton = True, fontSize = 8):
|
||||||
|
|
||||||
# tab left/right zones inclination
|
# tab left/right zones inclination
|
||||||
@@ -588,7 +711,7 @@ class PFTabsContainer(wx.Window):
|
|||||||
print "Selected: %s" %tab.text
|
print "Selected: %s" %tab.text
|
||||||
|
|
||||||
selTab = self.tabs.index(tab)
|
selTab = self.tabs.index(tab)
|
||||||
self.Parent.SetSelected(selTab)
|
self.Parent.SetSelection(selTab)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
@@ -790,6 +913,7 @@ class PFTabsContainer(wx.Window):
|
|||||||
simg = fxBmp.ConvertToImage()
|
simg = fxBmp.ConvertToImage()
|
||||||
# if not simg.HasAlpha():
|
# if not simg.HasAlpha():
|
||||||
# simg.InitAlpha()
|
# simg.InitAlpha()
|
||||||
|
|
||||||
# simg = simg.Blur(2)
|
# simg = simg.Blur(2)
|
||||||
# simg = simg.AdjustChannels(0.2,0.2,0.2,0.3)
|
# simg = simg.AdjustChannels(0.2,0.2,0.2,0.3)
|
||||||
|
|
||||||
@@ -809,7 +933,7 @@ class PFTabsContainer(wx.Window):
|
|||||||
for tab in self.tabs:
|
for tab in self.tabs:
|
||||||
tab.SetSelected(False)
|
tab.SetSelected(False)
|
||||||
|
|
||||||
def DeleteTab(self, tab):
|
def DeleteTab(self, tab, internal=False):
|
||||||
tabRenderer = self.tabs[tab]
|
tabRenderer = self.tabs[tab]
|
||||||
wasSelected = tabRenderer.GetSelected()
|
wasSelected = tabRenderer.GetSelected()
|
||||||
self.tabs.remove(tabRenderer)
|
self.tabs.remove(tabRenderer)
|
||||||
@@ -823,7 +947,8 @@ class PFTabsContainer(wx.Window):
|
|||||||
else:
|
else:
|
||||||
self.tabs[tab].SetSelected(True)
|
self.tabs[tab].SetSelected(True)
|
||||||
|
|
||||||
self.Parent.DeletePage(tab, True)
|
if not internal:
|
||||||
|
self.Parent.DeletePage(tab, True)
|
||||||
|
|
||||||
self.AdjustTabsSize()
|
self.AdjustTabsSize()
|
||||||
self.Refresh()
|
self.Refresh()
|
||||||
@@ -894,188 +1019,3 @@ class PFTabsContainer(wx.Window):
|
|||||||
|
|
||||||
return wx.Colour(r,g,b)
|
return wx.Colour(r,g,b)
|
||||||
|
|
||||||
class PFNotebook(wx.Panel):
|
|
||||||
def __init__(self, parent):
|
|
||||||
wx.Panel.__init__(self, parent, wx.ID_ANY,size = (-1,-1))
|
|
||||||
|
|
||||||
self.pages = []
|
|
||||||
self.activePage = None
|
|
||||||
|
|
||||||
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
|
||||||
|
|
||||||
tabsSizer = wx.BoxSizer( wx.VERTICAL )
|
|
||||||
|
|
||||||
self.tabsContainer = PFTabsContainer(self)
|
|
||||||
tabsSizer.Add( self.tabsContainer, 0, wx.EXPAND )
|
|
||||||
|
|
||||||
mainSizer.Add( tabsSizer, 0, wx.EXPAND, 5 )
|
|
||||||
|
|
||||||
contentSizer = wx.BoxSizer( wx.VERTICAL )
|
|
||||||
self.pageContainer = wx.Panel(self)
|
|
||||||
contentSizer.Add( self.pageContainer, 1, wx.EXPAND, 5 )
|
|
||||||
|
|
||||||
mainSizer.Add( contentSizer, 1, wx.EXPAND, 5 )
|
|
||||||
|
|
||||||
self.SetSizer( mainSizer )
|
|
||||||
self.Bind(wx.EVT_SIZE, self.OnSize)
|
|
||||||
self.Layout()
|
|
||||||
# for i in xrange(10):
|
|
||||||
# self.tabsContainer.AddTab("Pyfa TAB #%d Aw" % i)
|
|
||||||
|
|
||||||
def AddPage(self, tabWnd, tabTitle = wx.EmptyString, tabImage = None):
|
|
||||||
if self.activePage:
|
|
||||||
self.activePage.Hide()
|
|
||||||
|
|
||||||
tabWnd.Reparent(self.pageContainer)
|
|
||||||
self.pageContainer.Layout()
|
|
||||||
|
|
||||||
self.pages.append(tabWnd)
|
|
||||||
self.tabsContainer.AddTab(tabTitle, tabImage)
|
|
||||||
|
|
||||||
self.activePage = tabWnd
|
|
||||||
|
|
||||||
def SetSelected(self, page):
|
|
||||||
oldsel = self.pages.index(self.activePage)
|
|
||||||
if oldsel != page:
|
|
||||||
self.activePage.Hide()
|
|
||||||
self.activePage = self.pages[page]
|
|
||||||
self.ShowActive()
|
|
||||||
|
|
||||||
def DeletePage(self, n, internal = False):
|
|
||||||
page = self.pages[n]
|
|
||||||
|
|
||||||
self.pages.remove(page)
|
|
||||||
page.Hide()
|
|
||||||
page.Destroy()
|
|
||||||
|
|
||||||
if not internal:
|
|
||||||
self.tabsContainer.DeleteTab(n)
|
|
||||||
sel = self.tabsContainer.GetSelected()
|
|
||||||
if sel is not None:
|
|
||||||
self.activePage = self.pages[sel]
|
|
||||||
self.ShowActive()
|
|
||||||
|
|
||||||
def SwitchPages(self, src, dest, internal = False):
|
|
||||||
self.pages[src], self.pages[dest] = self.pages[dest], self.pages[src]
|
|
||||||
|
|
||||||
def ShowActive(self):
|
|
||||||
self.activePage.SetSize(self.pageContainer.GetSize())
|
|
||||||
self.activePage.Show()
|
|
||||||
self.Layout()
|
|
||||||
def OnSize(self, event):
|
|
||||||
w,h= self.GetSize()
|
|
||||||
self.tabsContainer.SetSize((w, -1))
|
|
||||||
self.tabsContainer.UpdateSize()
|
|
||||||
self.tabsContainer.Refresh()
|
|
||||||
self.Layout()
|
|
||||||
size = self.pageContainer.GetSize()
|
|
||||||
if self.activePage:
|
|
||||||
self.activePage.SetSize(size)
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
class MiniFrame(wx.Frame):
|
|
||||||
def __init__(self):
|
|
||||||
wx.Frame.__init__(self, None, -1, 'MEGA Frame',
|
|
||||||
size=(1000, 200))
|
|
||||||
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
|
||||||
# self.Bind(wx.EVT_SIZE, self.OnSize)
|
|
||||||
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
|
||||||
self.nb = PFNotebook(self)
|
|
||||||
|
|
||||||
self.nb.AddPage(TestPanel(self),"TEST 1")
|
|
||||||
self.nb.AddPage(TestPanel(self),"TEST 2")
|
|
||||||
self.nb.AddPage(TestPanel(self),"TEST 3")
|
|
||||||
self.nb.AddPage(TestPanel(self),"TEST 4")
|
|
||||||
self.nb.AddPage(TestPanel(self),"TEST 5")
|
|
||||||
self.nb.AddPage(TestPanel(self),"TEST 6")
|
|
||||||
|
|
||||||
mainSizer.Add(self.nb,1,wx.EXPAND)
|
|
||||||
self.SetSizer(mainSizer)
|
|
||||||
self.Layout()
|
|
||||||
|
|
||||||
# def OnSize(self, event):
|
|
||||||
# size = self.GetRect()
|
|
||||||
# self.tabContainer.SetSize((size.width, -1))
|
|
||||||
# self.tabContainer.UpdateSize()
|
|
||||||
# self.tabContainer.Refresh()
|
|
||||||
# event.Skip()
|
|
||||||
# def OnLeftDown(self, event):
|
|
||||||
# event.Skip()
|
|
||||||
#
|
|
||||||
# def OnErase(self, event):
|
|
||||||
# pass
|
|
||||||
def OnCloseWindow(self, event):
|
|
||||||
self.Destroy()
|
|
||||||
|
|
||||||
|
|
||||||
# def OnPaint(self, event):
|
|
||||||
# rect = self.GetRect()
|
|
||||||
# canvas = wx.EmptyBitmap(rect.width, rect.height)
|
|
||||||
# mdc = wx.BufferedPaintDC(self)
|
|
||||||
# mdc.SelectObject(canvas)
|
|
||||||
#
|
|
||||||
# mdc.SetBackground (wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
|
|
||||||
# mdc.Clear()
|
|
||||||
#
|
|
||||||
# selected = None
|
|
||||||
# selpos = 0
|
|
||||||
# tabsWidth = 0
|
|
||||||
# offset = 10
|
|
||||||
#
|
|
||||||
# for tab in self.tabs:
|
|
||||||
# tabsWidth += tab.tabWidth - tab.lrZoneWidth/2
|
|
||||||
#
|
|
||||||
# pos = tabsWidth
|
|
||||||
#
|
|
||||||
# for i in xrange(len(self.tabs) - 1, -1, -1):
|
|
||||||
# tab = self.tabs[i]
|
|
||||||
# width = tab.tabWidth - tab.lrZoneWidth/2
|
|
||||||
# pos -= width
|
|
||||||
# if not tab.IsSelected():
|
|
||||||
# mdc.DrawBitmap(tab.Render(),pos+offset,10, True)
|
|
||||||
# tab.SetPosition((pos + offset, 10))
|
|
||||||
# else:
|
|
||||||
# selected = tab
|
|
||||||
# selpos = pos + offset
|
|
||||||
# if selected:
|
|
||||||
# mdc.DrawBitmap(selected.Render(), selpos,10,True)
|
|
||||||
# selected.SetPosition((selpos, 10))
|
|
||||||
#
|
|
||||||
# mdc.SetPen( wx.Pen("#D0D0D0", width = 1 ) )
|
|
||||||
# mdc.DrawLine(10,34,10,100)
|
|
||||||
# mdc.DrawLine(10,100,tabsWidth + 18,100)
|
|
||||||
# mdc.DrawLine(tabsWidth+18,100,tabsWidth+18,33)
|
|
||||||
|
|
||||||
class TestPanel ( wx.Panel ):
|
|
||||||
|
|
||||||
def __init__( self, parent ):
|
|
||||||
wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.TAB_TRAVERSAL )
|
|
||||||
|
|
||||||
bSizer4 = wx.BoxSizer( wx.VERTICAL )
|
|
||||||
|
|
||||||
self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, u"TESSSSSSSSSST %s" % time.time(), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE )
|
|
||||||
self.m_staticText3.Wrap( -1 )
|
|
||||||
bSizer4.Add( self.m_staticText3, 1, wx.ALL|wx.EXPAND, 5 )
|
|
||||||
|
|
||||||
self.m_button1 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
|
|
||||||
bSizer4.Add( self.m_button1, 0, wx.ALL, 5 )
|
|
||||||
|
|
||||||
self.m_textCtrl1 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
|
|
||||||
bSizer4.Add( self.m_textCtrl1, 0, wx.ALL, 5 )
|
|
||||||
|
|
||||||
self.m_staticline1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
|
||||||
bSizer4.Add( self.m_staticline1, 0, wx.EXPAND |wx.ALL, 5 )
|
|
||||||
|
|
||||||
self.m_gauge1 = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
|
|
||||||
bSizer4.Add( self.m_gauge1, 0, wx.ALL, 5 )
|
|
||||||
self.SetSizer( bSizer4 )
|
|
||||||
self.Layout()
|
|
||||||
|
|
||||||
def __del__( self ):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app = wx.PySimpleApp()
|
|
||||||
MiniFrame().Show()
|
|
||||||
app.MainLoop()
|
|
||||||
@@ -21,8 +21,11 @@ import wx
|
|||||||
import wx.lib.newevent
|
import wx.lib.newevent
|
||||||
import service
|
import service
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
|
import gui.marketBrowser
|
||||||
|
import bitmapLoader
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
|
import gui.shipBrowser
|
||||||
import sys
|
import sys
|
||||||
from eos.types import Slot
|
from eos.types import Slot
|
||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
@@ -59,7 +62,13 @@ class FittingView(d.Display):
|
|||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
d.Display.__init__(self, parent)
|
d.Display.__init__(self, parent)
|
||||||
self.Show(False)
|
self.Show(False)
|
||||||
|
self.parent = parent
|
||||||
self.mainFrame.Bind(FIT_CHANGED, self.fitChanged)
|
self.mainFrame.Bind(FIT_CHANGED, self.fitChanged)
|
||||||
|
self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_SELECTED, self.fitSelected)
|
||||||
|
self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_RENAMED, self.fitRenamed)
|
||||||
|
self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_REMOVED, self.fitRemoved)
|
||||||
|
self.mainFrame.Bind(gui.marketBrowser.ITEM_SELECTED, self.appendItem)
|
||||||
|
|
||||||
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
|
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
|
||||||
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
|
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
|
||||||
if "__WXGTK__" in wx.PlatformInfo:
|
if "__WXGTK__" in wx.PlatformInfo:
|
||||||
@@ -73,6 +82,9 @@ class FittingView(d.Display):
|
|||||||
self.Bind(wx.EVT_LEFT_DOWN, self.click)
|
self.Bind(wx.EVT_LEFT_DOWN, self.click)
|
||||||
self.Bind(wx.EVT_RIGHT_DOWN, self.click)
|
self.Bind(wx.EVT_RIGHT_DOWN, self.click)
|
||||||
|
|
||||||
|
def getActiveFit(self):
|
||||||
|
return self.activeFitID
|
||||||
|
|
||||||
def startDrag(self, event):
|
def startDrag(self, event):
|
||||||
row = event.GetIndex()
|
row = event.GetIndex()
|
||||||
if row != -1:
|
if row != -1:
|
||||||
@@ -110,32 +122,53 @@ class FittingView(d.Display):
|
|||||||
|
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
#Gets called from the fitMultiSwitch when it decides its time
|
def fitRemoved(self, event):
|
||||||
def changeFit(self, fitID):
|
fitID = event.fitID
|
||||||
self.activeFitID = fitID
|
if fitID == self.getActiveFit():
|
||||||
self.Show(fitID is not None)
|
self.parent.DeletePage(self.parent.GetPageIndex(self))
|
||||||
self.slotsChanged()
|
|
||||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
|
||||||
|
|
||||||
def appendItem(self, itemID):
|
def fitRenamed(self, event):
|
||||||
fitID = self.activeFitID
|
fitID = event.fitID
|
||||||
if fitID != None:
|
if fitID == self.getActiveFit():
|
||||||
cFit = service.Fit.getInstance()
|
self.updateTab()
|
||||||
if cFit.isAmmo(itemID):
|
|
||||||
modules = []
|
|
||||||
sel = self.GetFirstSelected()
|
|
||||||
while sel != -1:
|
|
||||||
modules.append(self.mods[self.GetItemData(sel)])
|
|
||||||
sel = self.GetNextSelected(sel)
|
|
||||||
|
|
||||||
cFit.setAmmo(fitID, itemID, modules)
|
def fitSelected(self, event):
|
||||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
if self.parent.IsActive(self):
|
||||||
else:
|
fitID = event.fitID
|
||||||
populate = cFit.appendModule(fitID, itemID)
|
self.activeFitID = fitID
|
||||||
if populate:
|
self.Show(fitID is not None)
|
||||||
self.slotsChanged()
|
self.slotsChanged()
|
||||||
if populate is not None:
|
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
||||||
|
self.updateTab()
|
||||||
|
|
||||||
|
def updateTab(self):
|
||||||
|
cFit = service.Fit.getInstance()
|
||||||
|
fit = cFit.getFit(self.getActiveFit())
|
||||||
|
bitmap = bitmapLoader.getBitmap("race_%s_small", "icons")
|
||||||
|
text = "%s: %s" % (fit.ship.item.name, fit.name)
|
||||||
|
self.parent.SetPageTextIcon(self.parent.GetSelection(), text, bitmap)
|
||||||
|
|
||||||
|
def appendItem(self, event):
|
||||||
|
if self.parent.IsActive(self):
|
||||||
|
itemID = event.itemID
|
||||||
|
fitID = self.activeFitID
|
||||||
|
if fitID != None:
|
||||||
|
cFit = service.Fit.getInstance()
|
||||||
|
if cFit.isAmmo(itemID):
|
||||||
|
modules = []
|
||||||
|
sel = self.GetFirstSelected()
|
||||||
|
while sel != -1:
|
||||||
|
modules.append(self.mods[self.GetItemData(sel)])
|
||||||
|
sel = self.GetNextSelected(sel)
|
||||||
|
|
||||||
|
cFit.setAmmo(fitID, itemID, modules)
|
||||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
||||||
|
else:
|
||||||
|
populate = cFit.appendModule(fitID, itemID)
|
||||||
|
if populate:
|
||||||
|
self.slotsChanged()
|
||||||
|
if populate is not None:
|
||||||
|
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
||||||
|
|
||||||
def removeItem(self, event):
|
def removeItem(self, event):
|
||||||
row, _ = self.HitTest(event.Position)
|
row, _ = self.HitTest(event.Position)
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class MainFrame(wx.Frame):
|
|||||||
faSizer = wx.BoxSizer(wx.VERTICAL)
|
faSizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
|
|
||||||
self.fitMultiSwitch = MultiSwitch(self.FitviewAdditionsPanel)
|
self.fitMultiSwitch = MultiSwitch(self.FitviewAdditionsPanel)
|
||||||
self.fitMultiSwitch.AddTab()
|
#self.fitMultiSwitch.AddTab()
|
||||||
faSizer.Add(self.fitMultiSwitch,1,wx.EXPAND)
|
faSizer.Add(self.fitMultiSwitch,1,wx.EXPAND)
|
||||||
|
|
||||||
self.additionsPane = AdditionsPane(self.FitviewAdditionsPanel)
|
self.additionsPane = AdditionsPane(self.FitviewAdditionsPanel)
|
||||||
@@ -128,9 +128,9 @@ class MainFrame(wx.Frame):
|
|||||||
self.Show()
|
self.Show()
|
||||||
|
|
||||||
def getActiveFit(self):
|
def getActiveFit(self):
|
||||||
sel = self.fitMultiSwitch.GetSelection()
|
p = self.fitMultiSwitch.GetSelectedPage()
|
||||||
view = self.fitMultiSwitch.GetPage(sel).view
|
m = getattr(p, "getActiveFit", None)
|
||||||
return view.activeFitID
|
return m() if m is not None else None
|
||||||
|
|
||||||
def getFittingView(self):
|
def getFittingView(self):
|
||||||
sel = self.fitMultiSwitch.GetSelection()
|
sel = self.fitMultiSwitch.GetSelection()
|
||||||
|
|||||||
@@ -18,210 +18,10 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import bitmapLoader
|
import gui.chromeTabs
|
||||||
import gui.mainFrame
|
import gui.fittingView
|
||||||
import gui.fittingView as fv
|
|
||||||
import gui.marketBrowser as mb
|
|
||||||
import gui.shipBrowser as sb
|
|
||||||
import service
|
|
||||||
|
|
||||||
class MultiSwitch(wx.Notebook):
|
class MultiSwitch(gui.chromeTabs.PFNotebook):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
wx.Notebook.__init__(self, parent, wx.ID_ANY)
|
gui.chromeTabs.PFNotebook.__init__(self, parent)
|
||||||
self.fitPanes = []
|
self.AddPage(gui.fittingView.FittingView(self), "Empty Fit")
|
||||||
self.AddPage(wx.Panel(self), "+")
|
|
||||||
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.checkAdd)
|
|
||||||
self.Bind(wx.EVT_MIDDLE_DOWN, self.checkRemove)
|
|
||||||
|
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
|
||||||
|
|
||||||
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged)
|
|
||||||
self.Bind(wx.EVT_NAVIGATION_KEY, self.OnNavigate)
|
|
||||||
self.mainFrame.Bind(sb.EVT_FIT_RENAMED, self.processRename)
|
|
||||||
self.mainFrame.Bind(sb.EVT_FIT_SELECTED, self.changeFit)
|
|
||||||
self.mainFrame.Bind(sb.EVT_FIT_REMOVED, self.processRemove)
|
|
||||||
self.mainFrame.Bind(mb.ITEM_SELECTED, self.itemSelected)
|
|
||||||
|
|
||||||
self.imageList = wx.ImageList(16, 16)
|
|
||||||
self.SetImageList(self.imageList)
|
|
||||||
|
|
||||||
self.removal = False
|
|
||||||
self.countEvt = 1
|
|
||||||
self.ignorePageChanged = False
|
|
||||||
|
|
||||||
def OnNavigate(self, event):
|
|
||||||
self.ignorePageChanged = True
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
def getActiveFit(self):
|
|
||||||
return self.GetCurrentPage().view.activeFitID
|
|
||||||
|
|
||||||
def AddTab(self, type="fit", frame=None, title=None):
|
|
||||||
if self.removal:
|
|
||||||
self.SetSelection(self.GetPageCount() - 2)
|
|
||||||
return False
|
|
||||||
|
|
||||||
#Hide current selection
|
|
||||||
pos = self.GetPageCount() - 1
|
|
||||||
|
|
||||||
if type == "fit":
|
|
||||||
p = wx.Panel(self)
|
|
||||||
self.InsertPage(pos, p, "")
|
|
||||||
p.type = "fit"
|
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
|
||||||
p.view = fv.FittingView(p)
|
|
||||||
|
|
||||||
sizer.Add(p.view, 1, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN)
|
|
||||||
|
|
||||||
p.SetSizer(sizer)
|
|
||||||
p.Layout()
|
|
||||||
self.setTabTitle(pos, None)
|
|
||||||
else:
|
|
||||||
self.InsertPage(pos, frame, title)
|
|
||||||
frame.type=type
|
|
||||||
|
|
||||||
self.SetSelection(pos)
|
|
||||||
wx.CallAfter(self.SetSelection, pos)
|
|
||||||
return pos
|
|
||||||
|
|
||||||
def removeTab(self, i):
|
|
||||||
if self.GetPageCount() > 2:
|
|
||||||
|
|
||||||
### FIXME - seems that we remove the wrong image from the list
|
|
||||||
# self.ImageList.Remove(self.GetPageImage(i))
|
|
||||||
###
|
|
||||||
self.DeletePage(i)
|
|
||||||
else:
|
|
||||||
self.setTabTitle(i, None)
|
|
||||||
remIcon = self.GetPageImage(i)
|
|
||||||
self.SetPageImage(i, -1)
|
|
||||||
self.ImageList.Remove(remIcon)
|
|
||||||
page = self.GetPage(i)
|
|
||||||
if page.type == "fit":
|
|
||||||
page.view.changeFit(None)
|
|
||||||
|
|
||||||
def checkRemove(self, event):
|
|
||||||
tab, _ = self.HitTest(event.Position)
|
|
||||||
if tab != -1 and tab != self.GetPageCount() - 1:
|
|
||||||
self.removal = True
|
|
||||||
self.removeTab(tab)
|
|
||||||
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
|
|
||||||
if self.GetSelection() == self.GetPageCount() - 1:
|
|
||||||
self.SetSelection(self.GetPageCount() - 2)
|
|
||||||
|
|
||||||
self.removal = False
|
|
||||||
|
|
||||||
def removeCurrentTab(self):
|
|
||||||
self.removal = True
|
|
||||||
self.removeTab(self.GetSelection())
|
|
||||||
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
|
|
||||||
if self.GetSelection() == self.GetPageCount() - 1:
|
|
||||||
self.SetSelection(self.GetPageCount() - 2)
|
|
||||||
self.removal = False
|
|
||||||
|
|
||||||
def checkAdd(self, event):
|
|
||||||
if event.Selection == self.GetPageCount() - 1:
|
|
||||||
if "__WXMSW__" not in wx.PlatformInfo:
|
|
||||||
self.countEvt = 1
|
|
||||||
if not self.ignorePageChanged:
|
|
||||||
self.AddTab()
|
|
||||||
else:
|
|
||||||
self.ignorePageChanged = False
|
|
||||||
event.Veto()
|
|
||||||
|
|
||||||
#Veto to prevent the + tab from being selected
|
|
||||||
event.Veto()
|
|
||||||
|
|
||||||
def setTabTitle(self, tab, fitID):
|
|
||||||
page = self.GetPage(tab)
|
|
||||||
if page.type == "fit":
|
|
||||||
if fitID == None:
|
|
||||||
self.SetPageText(tab, "Empty Tab")
|
|
||||||
self.SetPageImage(tab, -1)
|
|
||||||
else:
|
|
||||||
cFit = service.Fit.getInstance()
|
|
||||||
fit = cFit.getFit(fitID)
|
|
||||||
self.SetPageText(tab, "%s: %s" % (fit.ship.item.name, fit.name))
|
|
||||||
bitmap = bitmapLoader.getBitmap("race_%s_small" % fit.ship.item.race, "icons")
|
|
||||||
if bitmap:
|
|
||||||
self.SetPageImage(tab, self.imageList.Add(bitmap))
|
|
||||||
|
|
||||||
def pageChanged(self, event):
|
|
||||||
#On windows, we can't use the CHANGING event as its bugged, so we need to RECHECK here
|
|
||||||
if event.Selection == self.GetPageCount() - 1:
|
|
||||||
selection = self.AddTab()
|
|
||||||
else:
|
|
||||||
selection = event.Selection
|
|
||||||
if "__WXMSW__" in wx.PlatformInfo:
|
|
||||||
self.countEvt = 0
|
|
||||||
|
|
||||||
page = self.GetPage(selection)
|
|
||||||
|
|
||||||
if self.countEvt == 0:
|
|
||||||
fitID = page.view.activeFitID
|
|
||||||
sFit = service.Fit.getInstance()
|
|
||||||
sFit.switchFit(fitID)
|
|
||||||
if hasattr(page, "type") and page.type == "fit":
|
|
||||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID))
|
|
||||||
else:
|
|
||||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=None))
|
|
||||||
|
|
||||||
self.countEvt -= 1
|
|
||||||
if self.countEvt < 0:
|
|
||||||
if "__WXMSW__" not in wx.PlatformInfo:
|
|
||||||
self.countEvt = 0
|
|
||||||
else:
|
|
||||||
self.countEvt = 1
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
def changeFit(self, event):
|
|
||||||
selected = self.GetSelection()
|
|
||||||
page = self.GetPage(selected)
|
|
||||||
if page.type == "fit":
|
|
||||||
fitID = event.fitID
|
|
||||||
view = page.view
|
|
||||||
|
|
||||||
#Notify service
|
|
||||||
sFit = service.Fit.getInstance()
|
|
||||||
sFit.switchFit(fitID)
|
|
||||||
|
|
||||||
#Change title of current tab to new fit
|
|
||||||
self.setTabTitle(selected, fitID)
|
|
||||||
view.changeFit(fitID)
|
|
||||||
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
def processRename(self, event):
|
|
||||||
fitID = event.fitID
|
|
||||||
# Loop through every tab and check if they're our culprit, if so, change tab name
|
|
||||||
for i in xrange(self.GetPageCount() - 1):
|
|
||||||
page = self.GetPage(i)
|
|
||||||
if page.type == "fit":
|
|
||||||
view = page.view
|
|
||||||
if view.activeFitID == fitID:
|
|
||||||
self.setTabTitle(i, fitID)
|
|
||||||
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
def processRemove(self, event):
|
|
||||||
fitID = event.fitID
|
|
||||||
for i in xrange(self.GetPageCount() - 2, -1, -1):
|
|
||||||
page = self.GetPage(i)
|
|
||||||
if page.type == "fit":
|
|
||||||
view = page.view
|
|
||||||
if view.activeFitID == fitID:
|
|
||||||
self.removeTab(i)
|
|
||||||
|
|
||||||
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
|
|
||||||
if self.GetSelection() == self.GetPageCount() - 1:
|
|
||||||
self.SetSelection(self.GetPageCount() - 2)
|
|
||||||
|
|
||||||
event.Skip()
|
|
||||||
|
|
||||||
def itemSelected(self, event):
|
|
||||||
selected = self.GetSelection()
|
|
||||||
page = self.GetPage(selected)
|
|
||||||
if page.type == "fit":
|
|
||||||
page.view.appendItem(event.itemID)
|
|
||||||
|
|
||||||
event.Skip()
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import wx
|
|||||||
import copy
|
import copy
|
||||||
from gui import bitmapLoader
|
from gui import bitmapLoader
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.fittingView as fv
|
import gui.fittingView
|
||||||
import service
|
import service
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
@@ -63,7 +63,7 @@ class ShipBrowser(wx.Panel):
|
|||||||
self.Bind(EVT_SB_STAGE3_SEL, self.stage3)
|
self.Bind(EVT_SB_STAGE3_SEL, self.stage3)
|
||||||
self.Bind(EVT_SB_SEARCH_SEL, self.searchStage)
|
self.Bind(EVT_SB_SEARCH_SEL, self.searchStage)
|
||||||
|
|
||||||
self.mainFrame.Bind(fv.FIT_CHANGED, self.RefreshList)
|
self.mainFrame.Bind(gui.fittingView.FIT_CHANGED, self.RefreshList)
|
||||||
|
|
||||||
self.stage1(None)
|
self.stage1(None)
|
||||||
|
|
||||||
@@ -1594,12 +1594,11 @@ class FitItem(wx.Window):
|
|||||||
fitInst = service.fit.Fit.getInstance()
|
fitInst = service.fit.Fit.getInstance()
|
||||||
draggedFit = fitInst.getFit(self.fitID)
|
draggedFit = fitInst.getFit(self.fitID)
|
||||||
fitInst.project(activeFit,draggedFit)
|
fitInst.project(activeFit,draggedFit)
|
||||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=activeFit))
|
wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=activeFit))
|
||||||
|
|
||||||
if self.checkForGraphFrame(targetWnd, gfWnd):
|
if self.checkForGraphFrame(targetWnd, gfWnd):
|
||||||
self.mainFrame.graphFrame.AppendFitToList(self.fitID)
|
self.mainFrame.graphFrame.AppendFitToList(self.fitID)
|
||||||
|
|
||||||
|
|
||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user