Code Search for Developers
 
 
  

xmledit.py from The Nebula Device at Krugle


Show xmledit.py syntax highlighted

#-------------------------------------------------------------------------------
# xmledit.py
#-------------------------------------------------------------------------------

import os, wx
import wx.stc as stc
from med.mang.xmlfile import XmlFile
from med.mang.db3file import Db3File
from med.mang.mangalorelevel import MangaloreLevel

class XmlEdit(stc.StyledTextCtrl):
    def __init__(self, pathName, parent):
        self.xmlFile = XmlFile()
        self.xmlFile.open(pathName)
        stc.StyledTextCtrl.__init__(self, parent)
        self.SetLexer(stc.STC_LEX_XML)
        self.StyleSetSpec(stc.STC_STYLE_DEFAULT, "size:9")
        self.StyleClearAll()
        self.StyleSetSpec(stc.STC_H_XMLSTART, "fore:#0000ff,bold")
        self.StyleSetSpec(stc.STC_H_XMLEND, "fore:#0000ff,bold")
        self.StyleSetSpec(stc.STC_H_TAG, "fore:#0000ff,bold")
        self.StyleSetSpec(stc.STC_H_TAGEND, "fore:#0000ff,bold")
        self.StyleSetSpec(stc.STC_H_ATTRIBUTE, "fore:#ff0000,bold")
        self.SetText(self.xmlFile.content)
        self.EmptyUndoBuffer()
        self.Bind(stc.EVT_STC_CHANGE, self.onChange)

    def save(self):
        self.xmlFile.content = self.GetText()
        self.xmlFile.save()

    def saveAs(self):
        pathName = self.xmlFile.pathName
        wildCard = 'Mangalore XML file (*.xml)|*.xml|All files (*.*)|*.*'
        dlg = wx.FileDialog(self, message = "Save file as...", defaultDir = os.path.dirname(pathName),
                            defaultFile = pathName, wildcard = wildCard, style = wx.SAVE)
        dlg.CenterOnScreen()
        ret = dlg.ShowModal()
        if ret == wx.ID_OK:
            pathName = dlg.GetPath()
            self.xmlFile.saveAs(pathName)
            self.GetParent().SetPageText(self.GetParent().GetSelection(), pathName)
            mainFrame = self.GetParent().GetParent().GetParent().GetParent()
            mainFrame.enableSaveTool(False)
            mainFrame.splitter.leftNotebook.xmlTree.update(self)
        dlg.Destroy()

    def convert(self):
        xmlPathName = self.xmlFile.pathName
        root, ext = os.path.splitext(xmlPathName)
        db3PathName = root + '.db3'
        wildCard = 'SQLite datebase file (*.db3)|*.db3|All files (*.*)|*.*'
        dlg = wx.FileDialog(self, message = "Convert file to...", defaultDir = os.path.dirname(xmlPathName),
                            defaultFile = db3PathName, wildcard = wildCard, style = wx.SAVE)
        dlg.CenterOnScreen()
        ret = dlg.ShowModal()
        if ret == wx.ID_OK:
            db3PathName = dlg.GetPath()
            level = MangaloreLevel()
            level.loadXml(xmlPathName)
            db3File = Db3File()
            db3File.open(db3PathName)
            db3File.createEmpty()
            level.saveDb3(db3File)
            db3File.save()
            db3File.close()
            mainFrame = self.GetParent().GetParent().GetParent().GetParent()
            mainFrame.openDb3File(db3PathName)
        dlg.Destroy()

# private
    def onChange(self, event):
        mainFrame = self.GetParent().GetParent().GetParent().GetParent()
        if self.CanUndo():
            mainFrame.enableSaveTool()
        else:
            mainFrame.enableSaveTool(False)

#-------------------------------------------------------------------------------
# Eof
#-------------------------------------------------------------------------------



See more files for this project here

The Nebula Device

Realtime 3D game/visualization engine, written in C++, scriptable through Tcl/Tk, Python and Lua. Supports D3D and OpenGL for rendering, runs under Linux and Windows.

Project homepage: http://sourceforge.net/projects/nebuladevice
Programming language(s): C,C++,Python
License: other

  __init__.py
  aboutdialog.py
  db3grid.py
  db3notebook.py
  db3page.py
  db3tree.py
  db3xmldialog.py
  explorerchoice.py
  explorerpage.py
  explorerpanel.py
  explorertree.py
  leftnotebook.py
  mainapp.py
  mainframe.py
  medartprovider.py
  medsplash.py
  medsplitter.py
  rightpanel.py
  xmldb3dialog.py
  xmledit.py
  xmlnotebook.py
  xmltree.py