~tinarussell/tinasplash/trunk

« back to all changes in this revision

Viewing changes to tinasplash_rw.py

  • Committer: Tina Russell
  • Date: 2007-07-04 10:17:43 UTC
  • Revision ID: tina@vibraniumspoon-20070704101743-aj3yichmrousmav9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
# Code by Tina
 
3
 
 
4
import fileinput
 
5
import os.path
 
6
import glob
 
7
import commands
 
8
import shutil
 
9
from linecache import *
 
10
 
 
11
testmenulst = "/home/tina/code/python/projects/tinasplash/testmenu.lst"
 
12
splashPath = "/home/tina/code/python/projects/tinasplash/splashimages/"
 
13
 
 
14
def findLine(path, phrase, nocomment = 0):
 
15
    """Searches for a specific phrase in a given text file.
 
16
    If the phrase is found, this function returns the line that it's on.
 
17
    If the phrase is not found, this function returns -1.
 
18
    If nocomment is not zero, then the function will skip any instance
 
19
    of the phrase on a line in which a pound sign (#) appears before it."""
 
20
    inputJunk = fileinput.input(path)
 
21
    dontBreak = 1
 
22
    foundIt = 0
 
23
    while dontBreak == 1:
 
24
        thing1 = inputJunk.lineno()
 
25
        currentLine = inputJunk.readline()
 
26
        thing2 = inputJunk.lineno()
 
27
        dontBreak = thing2 - thing1
 
28
        if phrase in currentLine:
 
29
            if nocomment == 0:
 
30
                foundIt = 1
 
31
                foundLine = inputJunk.lineno()
 
32
                dontBreak = 0
 
33
            else:
 
34
                if "#" in currentLine:
 
35
                    poundLoc = currentLine.find("#")
 
36
                    phraseLoc = currentLine.find(phrase)
 
37
                    arbiter = poundLoc - phraseLoc
 
38
                    if arbiter > 0:
 
39
                        foundIt = 1
 
40
                        foundLine = inputJunk.lineno()
 
41
                        dontBreak = 0
 
42
                else:
 
43
                    foundIt = 1
 
44
                    foundLine = inputJunk.lineno()
 
45
                    dontBreak = 0
 
46
    if foundIt == 1:
 
47
        jedi = foundLine
 
48
    else:
 
49
        jedi = -1
 
50
    inputJunk.close()
 
51
    return jedi
 
52
 
 
53
def writeToFile(path, line, phrase, append = 0):
 
54
    """Replace one line, specified by number "line", in the file specified by
 
55
    string "path", with a line specified by string "phrase." If "append" is not
 
56
    zero, than you will simply be adding one line after the specified location."""
 
57
    relFile = open(path)
 
58
    backupInLines = relFile.readlines()
 
59
    relFile.close()
 
60
    if append == 0:
 
61
        backupInLines[line - 1] = phrase + "\n"
 
62
    else:
 
63
        backupInLines[line - 1] += phrase + "\n\n"
 
64
    relFile = open(path, "w")
 
65
    relFile.writelines(backupInLines)
 
66
    relFile.close
 
67
 
 
68
def findMenuLst():
 
69
    """Find menu.lst from a list of likely paths. Right now, this is just a
 
70
    placeholder."""
 
71
    return testmenulst
 
72
 
 
73
def replaceSplash(path):
 
74
    menulst = findMenuLst()
 
75
    splashLine = findLine(menulst, "splashimage", 1)
 
76
    if splashLine == -1:
 
77
        colorsLine = findLine(menulst, "color")
 
78
        insertLine = colorsLine + 1
 
79
        writeToFile(menulst, insertLine, "splashimage=" + path, 1)
 
80
    else:
 
81
        writeToFile(menulst, splashLine, "splashimage=" + path)
 
82
 
 
83
def getFileList(path, ext):
 
84
    if os.path.exists(path) != True:
 
85
        os.mkdir(path)
 
86
    fileList = glob.glob(os.path.normpath(path + "/*." + ext))
 
87
    return fileList
 
88
 
 
89
def gzipExtractToTmp(path):
 
90
    if os.path.exists(splashPath + "tmp") != True:
 
91
        os.mkdir(splashPath + "tmp")
 
92
    tmpPathG = splashPath + "tmp/" + os.path.basename(path)
 
93
    tmpPath = tmpPathG.strip(".gz")
 
94
    if os.path.exists(tmpPath) != True:
 
95
        shutil.copy(path, tmpPathG)
 
96
        commands.getoutput("gzip -d " + tmpPathG)
 
97
    return tmpPath
 
98
 
 
99
def clearTmp():
 
100
    commands.getoutput("rm " + splashPath + "tmp/*.xpm")
 
 
b'\\ No newline at end of file'