Mercurial > fife-parpg
diff utils/object_editor.py @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children | dfd48d49c044 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utils/object_editor.py Sun Jun 29 18:44:17 2008 +0000 @@ -0,0 +1,149 @@ +import sys, os, wx +import wx.grid as gridlib + +class AttributedClass(object): + def __init__(self): + self.custom_attrs = {} + +class Object(AttributedClass): + def __init__(self): + self.actions = [] + self.blocking = False + self.parent = None + self.filename = '' + +class Action(AttributedClass): + def __init__(self): + self.animations = {} + +class Animation(object): + def __init__(self): + self.frames = [] + self.actionframe = -1 + self.filename = '' + +class Image(object): + def __init__(self): + self.delay = 0 + self.x_offset = 0 + self.y_offset = 0 + self.filename = '' + +class FifeObjectEditor(wx.Frame): + def __init__(self, parent, id, title): + wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(700, 500)) + self.CreateStatusBar() + + self.SetMenuBar(self.createMenus()) + + splitter = wx.SplitterWindow(self, -1) + + self.tree = wx.TreeCtrl(splitter, 1, wx.DefaultPosition, (-1,-1)) + root = self.tree.AddRoot('New Project') + + self.notebook = wx.Notebook(splitter, -1) + self.projectPropertyPanel = self.createProjectPropertyPanel(self.notebook) + self.objectPropertyPanel = self.createObjectPropertyPanel(self.notebook) + self.actionPropertyPanel = self.createActionPropertyPanel(self.notebook) + self.animationPropertyPanel = self.createAnimationPropertyPanel(self.notebook) + self.imagePropertyPanel = self.createImagePropertyPanel(self.notebook) + self.customAttrPanel = self.createCustomAttrPanel(self.notebook) + self.notebook.AddPage(self.projectPropertyPanel, 'Settings') + self.notebook.AddPage(self.customAttrPanel, 'Custom Attributes') + + splitter.SplitVertically(self.tree, self.notebook, 250) + + self.Centre() + + def createMenus(self): + menuBar = wx.MenuBar() + file = wx.Menu() + edit = wx.Menu() + help = wx.Menu() + + file.Append(110, '&Open Project', 'Loads project file') + file.Append(111, '&Save Project', 'Saves project file') + file.Append(112, 'Save Project &As...', 'Saves project file with given filename') + file.AppendSeparator() + file.Append(110, '&Open Object', 'Loads object file') + file.Append(111, '&Save Object', 'Saves object file') + file.Append(112, 'Save Object &As...', 'Saves object file with given filename') + file.AppendSeparator() + file.Append(113, 'O&pen Animation', 'Loads animation file') + file.Append(114, 'Sa&ve Animation', 'Saves animation file') + file.Append(115, 'Save Animation As...', 'Saves animation file with given filename') + + edit.Append(130, '&Create New Object', 'Creates a new object') + edit.Append(131, '&Delete Object', 'Deletes selected object') + edit.AppendSeparator() + edit.Append(132, 'C&reate New Action', 'Creates new action') + edit.Append(133, 'D&elete Action', 'Deletes selected action') + edit.AppendSeparator() + edit.Append(134, 'Cr&eate New Animation', 'Creates new animation') + edit.Append(135, 'De&lete Animation', 'Deletes selected animation') + edit.AppendSeparator() + edit.Append(136, 'Add Frames', 'Adds frames into animation') + edit.Append(137, 'Delete Frames', 'Deletes selected frames from animation') + + help.Append(150, '&About', 'About the FIFE Object Editor') + + menuBar.Append(file, "&File") + menuBar.Append(edit, "&Edit") + menuBar.Append(help, "&Help") + return menuBar + + def createProjectPropertyPanel(self, notebook): + panel = wx.Panel(notebook, -1) + vbox = wx.BoxSizer(wx.VERTICAL) + + hbox = wx.BoxSizer(wx.HORIZONTAL) + hbox.Add(wx.StaticText(panel, -1, 'Project Name', size=(150, -1))) + panel.projectName = wx.TextCtrl(panel, -1, '') + hbox.Add(panel.projectName, wx.EXPAND) + vbox.Add(hbox, 0, wx.EXPAND | wx.ALL, 4) + + hbox = wx.BoxSizer(wx.HORIZONTAL) + hbox.Add(wx.StaticText(panel, -1, 'Author', size=(150, -1))) + panel.projectAuthor = wx.TextCtrl(panel, -1, '') + hbox.Add(panel.projectAuthor, wx.EXPAND) + vbox.Add(hbox, 0, wx.EXPAND | wx.ALL, 4) + + panel.SetSizer(vbox) + return panel + + def createObjectPropertyPanel(self, notebook): + panel = wx.Panel(notebook, -1) + return panel + + def createActionPropertyPanel(self, notebook): + panel = wx.Panel(notebook, -1) + return panel + + def createAnimationPropertyPanel(self, notebook): + panel = wx.Panel(notebook, -1) + return panel + + def createImagePropertyPanel(self, notebook): + panel = wx.Panel(notebook, -1) + return panel + + def createCustomAttrPanel(self, notebook): + panel = wx.Panel(notebook, -1) + vbox = wx.BoxSizer(wx.VERTICAL) + grid = gridlib.Grid(notebook, -1) + grid.CreateGrid(100, 2) + panel.grid = grid + vbox.Add(panel.grid, 0, wx.EXPAND | wx.ALL, 4) + panel.SetSizer(vbox) + return panel + + +class FifeObjectEditorApp(wx.App): + def OnInit(self): + myframe = FifeObjectEditor(None, -1, "FIFE Object Editor") + myframe.Show(True) + return True + +if __name__ == '__main__': + app = FifeObjectEditorApp(0) + app.MainLoop()