First draft of character editor (non functional)

This commit is contained in:
cncfanatics
2010-09-05 19:13:38 +02:00
parent 9e954f364a
commit 61d341c49b
3 changed files with 222 additions and 5 deletions

213
gui/characterEditor.py Normal file
View File

@@ -0,0 +1,213 @@
#===============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
#
# pyfa is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pyfa is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
#===============================================================================
import wx
from gui import bitmapLoader
class CharacterEditor (wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"pyfa: Character Editor", pos=wx.DefaultPosition,
size=wx.Size(641, 377), style=wx.CAPTION | wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX | wx.RESIZE_BORDER)
self.SetSizeHintsSz(wx.Size(640, 350), wx.DefaultSize)
mainSizer = wx.BoxSizer(wx.VERTICAL)
navSizer = wx.BoxSizer(wx.HORIZONTAL)
skillTreeChoiceChoices = [u"All level 0", u"All level 5", u"Darriele"]
self.skillTreeChoice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, skillTreeChoiceChoices, 0)
self.skillTreeChoice.SetSelection(0)
navSizer.Add(self.skillTreeChoice, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
buttons = (("new", wx.ART_NEW),
("rename", bitmapLoader.getBitmap("rename", "icons")),
("copy", wx.ART_COPY),
("import", wx.ART_FILE_OPEN),
("delete", wx.ART_DELETE))
for name, art in buttons:
bitmap = wx.ArtProvider.GetBitmap(art) if isinstance(art, unicode) else art
btn = wx.BitmapButton(self, wx.ID_ANY, bitmap)
tooltip = "%s current character" % name.capitalize() if name != "import" else "Import new character"
btn.SetToolTipString(tooltip)
setattr(self, "btn%s" % name.capitalize(), btn)
navSizer.Add(btn, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2)
mainSizer.Add(navSizer, 0, wx.ALL | wx.EXPAND, 5)
self.viewsNBContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
sview = SkillTreeView(self.viewsNBContainer)
iview = ImplantsTreeView(self.viewsNBContainer)
aview = APIView(self.viewsNBContainer)
self.viewsNBContainer.AddPage(sview, "Skills")
self.viewsNBContainer.AddPage(iview, "Implants")
self.viewsNBContainer.AddPage(aview, "API")
mainSizer.Add(self.viewsNBContainer, 1, wx.EXPAND | wx.ALL, 5)
sbSizerDescription = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"Description"), wx.HORIZONTAL)
self.m_staticText7 = wx.StaticText(self, wx.ID_ANY, u"Insert descriptions here", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticText7.Wrap(-1)
sbSizerDescription.Add(self.m_staticText7, 0, wx.ALL, 5)
mainSizer.Add(sbSizerDescription, 0, wx.ALL | wx.EXPAND, 5)
bSizerButtons = wx.BoxSizer(wx.HORIZONTAL)
self.btnOK = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0)
bSizerButtons.Add(self.btnOK, 0, wx.ALL, 5)
self.btnCancel = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0)
bSizerButtons.Add(self.btnCancel, 0, wx.ALL, 5)
mainSizer.Add(bSizerButtons, 0, wx.ALIGN_RIGHT, 5)
self.SetSizer(mainSizer)
self.Layout()
self.Centre(wx.BOTH)
class NewCharacter (wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"Create new character", pos=wx.DefaultPosition, size=wx.Size(344, 89), style=wx.DEFAULT_DIALOG_STYLE)
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
sbSizerEditBox = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"Enter character name"), wx.HORIZONTAL)
self.inputName = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
sbSizerEditBox.Add(self.inputName, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
mainSizer.Add(sbSizerEditBox, 1, wx.EXPAND | wx.ALL, 5)
bSizerButtons = wx.BoxSizer(wx.VERTICAL)
self.btnOk = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0)
bSizerButtons.Add(self.btnOk, 0, wx.ALL, 5)
self.btnCancel = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0)
bSizerButtons.Add(self.btnCancel, 0, wx.ALL, 5)
mainSizer.Add(bSizerButtons, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
self.SetSizer(mainSizer)
self.Layout()
self.Centre(wx.BOTH)
class RenDupCharacter (wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"Rename / Duplicate character", pos=wx.DefaultPosition, size=wx.Size(395, 101), style=wx.DEFAULT_DIALOG_STYLE)
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
sbSizerEditBox = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"Enter character name"), wx.VERTICAL)
self.inputName = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
sbSizerEditBox.Add(self.inputName, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
self.chkboxDuplicate = wx.CheckBox(self, wx.ID_ANY, u"Duplicate character", wx.DefaultPosition, wx.DefaultSize, 0)
sbSizerEditBox.Add(self.chkboxDuplicate, 0, wx.ALL, 5)
mainSizer.Add(sbSizerEditBox, 1, wx.EXPAND | wx.ALL, 5)
bSizerButtons = wx.BoxSizer(wx.VERTICAL)
self.btnOk = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0)
bSizerButtons.Add(self.btnOk, 0, wx.ALL, 5)
self.btnCancel = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0)
bSizerButtons.Add(self.btnCancel, 0, wx.ALL, 5)
mainSizer.Add(bSizerButtons, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5)
self.SetSizer(mainSizer)
self.Layout()
self.Centre(wx.BOTH)
class SkillTreeView (wx.Panel):
def __init__(self, parent):
wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.TAB_TRAVERSAL)
pmainSizer = wx.BoxSizer(wx.VERTICAL)
self.SkillTreeCtrl = wx.TreeCtrl(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE)
pmainSizer.Add(self.SkillTreeCtrl, 1, wx.EXPAND | wx.ALL, 5)
self.SetSizer(pmainSizer)
self.Layout()
class ImplantsTreeView (wx.Panel):
def __init__(self, parent):
wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.TAB_TRAVERSAL)
pmainSizer = wx.BoxSizer(wx.VERTICAL)
self.ImplantsTreeCtrl = wx.TreeCtrl(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE)
pmainSizer.Add(self.ImplantsTreeCtrl, 1, wx.ALL | wx.EXPAND, 5)
self.SetSizer(pmainSizer)
self.Layout()
class APIView (wx.Panel):
def __init__(self, parent):
wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.TAB_TRAVERSAL)
pmainSizer = wx.BoxSizer(wx.HORIZONTAL)
fgSizerInput = wx.FlexGridSizer(2, 2, 0, 0)
fgSizerInput.AddGrowableCol(1)
fgSizerInput.SetFlexibleDirection(wx.BOTH)
fgSizerInput.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
self.m_staticIDText = wx.StaticText(self, wx.ID_ANY, u"ID", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticIDText.Wrap(-1)
fgSizerInput.Add(self.m_staticIDText, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
self.inputID = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
fgSizerInput.Add(self.inputID, 1, wx.ALL | wx.EXPAND, 5)
self.m_staticKeyText = wx.StaticText(self, wx.ID_ANY, u"API KEY", wx.DefaultPosition, wx.DefaultSize, 0)
self.m_staticKeyText.Wrap(-1)
fgSizerInput.Add(self.m_staticKeyText, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
self.inputKey = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
fgSizerInput.Add(self.inputKey, 0, wx.ALL | wx.EXPAND, 5)
pmainSizer.Add(fgSizerInput, 1, wx.EXPAND, 5)
self.btnUpdate = wx.Button(self, wx.ID_ANY, u"Update", wx.DefaultPosition, wx.DefaultSize, 0)
pmainSizer.Add(self.btnUpdate, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.SetSizer(pmainSizer)
self.Layout()

View File

@@ -27,6 +27,7 @@ from gui.multiSwitch import MultiSwitch
from gui.statsPane import StatsPane from gui.statsPane import StatsPane
from gui.shipBrowser import ShipBrowser from gui.shipBrowser import ShipBrowser
from wx.lib.wordwrap import wordwrap from wx.lib.wordwrap import wordwrap
from gui.characterEditor import CharacterEditor
import aboutData import aboutData
from wx._core import PyDeadObjectError from wx._core import PyDeadObjectError
@@ -116,6 +117,11 @@ class MainFrame(wx.Frame):
info.WebSite = ("http://pyfa.sourceforge.net/", "pyfa home page") info.WebSite = ("http://pyfa.sourceforge.net/", "pyfa home page")
wx.AboutBox(info) wx.AboutBox(info)
def showCharacterEditor(self, event):
dlg=CharacterEditor(None)
dlg.ShowModal()
dlg.Destroy()
def registerMenu(self): def registerMenu(self):
# Quit # Quit
self.Bind(wx.EVT_MENU, self.ExitApp, id=wx.ID_EXIT) self.Bind(wx.EVT_MENU, self.ExitApp, id=wx.ID_EXIT)
@@ -123,10 +129,8 @@ class MainFrame(wx.Frame):
self.Bind(wx.EVT_MENU, self.openWXInspectTool, id=911) self.Bind(wx.EVT_MENU, self.openWXInspectTool, id=911)
# About # About
self.Bind(wx.EVT_MENU, self.ShowAboutBox, id=wx.ID_ABOUT) self.Bind(wx.EVT_MENU, self.ShowAboutBox, id=wx.ID_ABOUT)
# Char editor
#Ship browser self.Bind(wx.EVT_MENU, self.showCharacterEditor, id=self.GetMenuBar().characterEditorId)
self.Bind(wx.EVT_MENU, self.toggleShipBrowser, id=10)
self.Bind(wx.EVT_MENU, self.toggleShipBrowser, id=11)
def toggleShipBrowser(self, event): def toggleShipBrowser(self, event):
self.GetToolBar().toggleShipBrowser(event) self.GetToolBar().toggleShipBrowser(event)

View File

@@ -49,7 +49,7 @@ class MainMenuBar(wx.MenuBar):
charMenu = wx.Menu() charMenu = wx.Menu()
self.Append(charMenu, "&Character") self.Append(charMenu, "&Character")
charEditItem = wx.MenuItem(charMenu, self.characterEditorId, "Character &Editor\tCTRL+B") charEditItem = wx.MenuItem(charMenu, self.characterEditorId, "Character &Editor\tCTRL+E")
charEditItem.SetBitmap(bitmapLoader.getBitmap("character_small", "icons")) charEditItem.SetBitmap(bitmapLoader.getBitmap("character_small", "icons"))
charMenu.AppendItem(charEditItem) charMenu.AppendItem(charEditItem)