Annotation of doc/help/simpleEdit.py, revision 1.1

1.1     ! bowersj2    1: """simpleEdit can be used to edit the tex fragments in context
        !             2: determined by a texxml file.
        !             3: 
        !             4: Use:
        !             5: 
        !             6: python simpleEdit.py [name of texxml file]
        !             7: 
        !             8: simpleEdit will read the texxml file, and present the referenced tex
        !             9: fragments in order determined by the file. When you save (CTRL-S),
        !            10: simpleEdit will save all the tex fragments back to their little
        !            11: files.
        !            12: 
        !            13: Very, very simple.
        !            14: """
        !            15: 
        !            16: import sys
        !            17: if len(sys.argv) < 2:
        !            18:     print "Usage: python simpleEdit.py [name of texxml file]"
        !            19:     print "See top of source code for usage."
        !            20:     print "To save files, press CTRL-s in the editor."
        !            21:     sys.exit()
        !            22: 
        !            23: import xml.parsers.expat
        !            24: 
        !            25: dirprefix = "/home/httpd/html/adm/help/tex/"
        !            26: 
        !            27: fileList = []
        !            28: 
        !            29: def startElement(name, attrs):
        !            30:     if name == "file":
        !            31:         fileList.append(str(attrs["name"]))
        !            32: 
        !            33: p = xml.parsers.expat.ParserCreate()
        !            34: p.StartElementHandler = startElement
        !            35: f = file(sys.argv[1], 'r')
        !            36: p.Parse(f.read())
        !            37: 
        !            38: 
        !            39: from Tkinter import *
        !            40: from ScrolledText import *
        !            41: import string
        !            42: import os
        !            43: 
        !            44: class simpleEditor:
        !            45:     def __init__(self, master):
        !            46:         self.frame = Frame(master)
        !            47:         self.frame.pack()
        !            48: 
        !            49:         self.label = Label(self.frame, text = "For documentation on" 
        !            50:                            "this program, consult the source code.")
        !            51:         self.label.pack()
        !            52: 
        !            53:         self.text = ScrolledText(self.frame, width=120, height = 40);
        !            54:         self.text.pack(fill = BOTH, expand = 1)
        !            55: 
        !            56:         self.searchText = Text(self.frame, width = 40, height = 1);
        !            57:         self.searchText.pack()
        !            58:         self.searchButton = Button(self.frame, text = "Search",
        !            59:                                    command = self.search)
        !            60:         self.searchButton.pack()
        !            61: 
        !            62:         self.button = Button(self.frame, text = "Save", \
        !            63:                              command = self.save)
        !            64:         self.button.pack()
        !            65: 
        !            66:     def search(self):
        !            67:         searchText = self.searchText.get("1.0", END)
        !            68:         searchText = searchText.strip()
        !            69:         print self.text.index(INSERT + "+%ic" % len(searchText))
        !            70:         pos = self.text.search(searchText,
        !            71:                                self.searchText.index(INSERT) +
        !            72:                                "+%ic" % (len(searchText) + 1))
        !            73:         self.text.see(pos)
        !            74:         self.text.tag_add(SEL, pos, pos + "+%ic" % len(searchText))
        !            75:         self.text.mark_set(INSERT, pos)
        !            76: 
        !            77:     def load(self):
        !            78:         """Loads in all the tex files."""
        !            79: 
        !            80:         colors = ["#FFFFFF", "#CCCCCC"]
        !            81: 
        !            82:         c = 0
        !            83: 
        !            84:         for f in fileList:
        !            85:             f = file(dirprefix + f, 'r')
        !            86:             tex = f.read()
        !            87:             f.close()
        !            88:             self.text.tag_config("texfile%i" % c,
        !            89:                                  background = colors[c%len(colors)])
        !            90:             self.text.insert(END, tex, "texfile%i" % c)
        !            91:             self.text.insert(END, "\n\n") # prettier
        !            92:             c += 1
        !            93: 
        !            94:     def save(self):
        !            95:         c = 0
        !            96:         
        !            97:         for f in fileList:
        !            98:             tex = self.text.get("texfile%i.first" % c,
        !            99:                                 "texfile%i.last" % c)
        !           100:             os.rename ( dirprefix + f, dirprefix + f + "~" )
        !           101:             f = file(dirprefix + f, 'w')
        !           102:             f.write(tex)
        !           103:             f.close()
        !           104:             c += 1
        !           105: 
        !           106:             
        !           107: 
        !           108: 
        !           109: root = Tk()
        !           110: app = simpleEditor(root)
        !           111: app.load()
        !           112: root.mainloop()
        !           113: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>