ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/Stella/Stella3.py
Revision: 8
Committed: Sat May 5 04:21:19 2012 UTC (13 years, 10 months ago) by ninoborges
Content type: text/x-python
File size: 6536 byte(s)
Log Message:
Initial Import

File Contents

# User Rev Content
1 ninoborges 8 ## Stella.py
2     ## Ver .003
3     ## This is the custom front-end to Stella the NinoSystems Home Arcade System.
4     ## 01.13.03
5     ## EBorges
6     ##
7     ## Update: I had to change this entire program to a class because the ImageTk
8     ## Object keeps going out of scope and getting garbage collected.
9    
10    
11     from Tkinter import *
12     import os, sys, Pmw, Image, ImageTk
13    
14     class MainGUI:
15     def __init__(self, gamesList, stellaGamesDB,artWorkDir,screenShotDir):
16     self.root = Pmw.initialise()
17     self.gameListBox = Pmw.ScrolledListBox(self.root, items = gamesList, usehullsize = 1
18     , hull_width = 300, hull_height = 500)
19     #self.gameListBox.configure(selectioncommand = (lambda event = "",gameObj = self.gameListBox
20     # ,DB = stellaGamesDB:RunGame(event,gameObj,DB)))
21     #gameListBox.pack(fill = 'both', expand = 1, padx = 10, pady = 10)
22     self.gameListBox.pack(side = "left",padx = 10, pady = 10)
23     self.gameListBox.bind_all('<Return>',self.test)
24     self.gameListBox.bind_all('<KeyPress-x>',(lambda event = "",gameObj = self.gameListBox,
25     DB = stellaGamesDB:RunGame(event,gameObj,DB)))
26     self.marqueBox = Label(self.root,relief = 'ridge', borderwidth = 2)
27     self.screenShotBox = Label(self.root,relief = 'ridge',borderwidth = 2)
28     self.screenShotBox2 = Label(self.root,relief = 'ridge', borderwidth = 2)
29     self.marqueBox.pack(side = 'top', pady = 10, padx = 10)
30     self.screenShotBox.pack(side = 'top')
31     self.screenShotBox2.pack(side = 'top',pady =10)
32     self.gameListBox.bind_all('<KeyPress-Up>',(lambda event = "", s = self,dir1 = artWorkDir, dir2 = screenShotDir,
33     DB = stellaGamesDB:s.ShowPictures(dir1,dir2,DB)))
34     self.gameListBox.bind_all('<KeyPress-Down>',(lambda event = "", s = self,dir1 = artWorkDir, dir2 = screenShotDir,
35     DB = stellaGamesDB:s.ShowPictures(dir1,dir2,DB)))
36     #self.gameListBox.bind_all('<KeyPress-z>',self.ShowPictures)
37     self.root.title('Stella.PY Ver .003')
38     self.root.mainloop()
39    
40     def test(self,event):
41     print "test"
42    
43    
44     def ShowPictures(self,marqDir,ssDir,DB):
45     infoOnly = "yes"
46     event = ""
47     game = RunGame(event,self.gameListBox,DB,infoOnly)
48     marqDir = marqDir + "\\" + game + ".png"
49     if os.path.isfile(marqDir):
50     pass
51     else:
52     marqDir = os.path.split(marqDir)[0]+ "\\" + "default.png"
53     ssDir2 = ssDir + "\\" + game + "2.png"
54     if os.path.isfile(ssDir2):
55     pass
56     else:
57     ssDir2 = os.path.split(ssDir2)[0] + "\\" + "default.png"
58     ssDir = ssDir + "\\" + game + ".png"
59     if os.path.isfile(ssDir):
60     pass
61     else:
62     ssDir = os.path.split(ssDir)[0] + "\\" + "default.png"
63     self.marq = ImageTk.PhotoImage(file = marqDir)
64     self.marqueBox['image'] = self.marq
65     self.ss1 = ImageTk.PhotoImage(file = ssDir)
66     self.screenShotBox['image'] = self.ss1
67     self.ss2 = ImageTk.PhotoImage(file = ssDir2)
68     self.screenShotBox2['image'] = self.ss2
69    
70     def GetGameName(gameName, mameGamesDB):
71     o=open(mameGamesDB,'r')
72     GamesList = o.readlines()
73     position = 0
74     for x in GamesList:
75     found = x.find(gameName)
76     if found != -1:
77     break
78     else:
79     position = position + 1
80     if found == -1:
81     print "%s was not found in the database..." %(gameName)
82     results = "%s was not found in the database..." %(gameName)
83     else:
84     realName = GamesList[position]
85     realName = realName.split("|")
86     realName = realName[1]
87     realName = realName.strip()
88     print "The real name for %s is %s" %(gameName, realName)
89     results = realName
90     o.close()
91     return results
92    
93     def Check4NewGames(romsDir, stellaGamesList, artWorkDir, screenShotDir, mameGamesDB):
94     romsList = os.listdir(romsDir)
95     newList = []
96     for x in romsList:
97     y = x.split('.zip')
98     newList.append(y[0])
99     romsList = newList
100     o=open(stellaGamesList, 'r')
101     contents = o.readlines()
102     o.close()
103     stellaGamesDB = {}
104     gamesList = []
105     for x in contents:
106     y = x.rstrip()
107     y = y.split('=',1)
108     gamesList.append(y[0])
109     stellaGamesDB[y[1]] = y[0]
110     for i in romsList:
111     newGame = stellaGamesDB.has_key(i)
112     if newGame == 0:
113     gamesList.append(AddNewGame(i,mameGamesDB,stellaGamesList))
114     print "New Game found. %s" %(i)
115     start = MainGUI(gamesList,stellaGamesDB,artWorkDir,screenShotDir)
116     start()
117    
118     def AddNewGame(game,mameGamesDB,stellaGamesList):
119     realName = GetGameName(game,mameGamesDB)
120     w = open(stellaGamesList, 'a')
121     output = realName + "=" + game + "\n"
122     w.write(output)
123     w.close()
124     # Since a new game was added, sort the list.
125     SortGames(stellaGamesList)
126     return realName
127    
128     def SortGames(stellaGamesList):
129     r = open(stellaGamesList,'r')
130     output = r.readlines()
131     r.close()
132     output.sort()
133     w = open(stellaGamesList,'w')
134     w.writelines(output)
135     w.close()
136    
137     def RunGame (event,gameObj,DB,infoOnly="no"):
138     print
139     game = gameObj.getcurselection()
140     print "Running %s" %(game)
141     list = DB.items()
142     for x in list:
143     if x[1] == game[0]:
144     zipGame = x[0]
145     break
146     if infoOnly =="no":
147     print "exc mame.exe %s.zip" %(zipGame)
148     os.system('cmd /k "C:\\Documents and Settings\\eaborges\\My Documents\\Downloads\\Mame54b\\mamepp.exe %s"'% zipGame)
149     else:
150     return zipGame
151    
152     if __name__ == '__main__':
153     mameGamesDB = r"C:\Documents and Settings\eaborges\Desktop\MAME\MameGamesDB.txt"
154     stellaGamesList = r"C:\Documents and Settings\eaborges\Desktop\MAME\MainStellaGamesList.txt"
155     artWorkDir = r"C:\Documents and Settings\eaborges\Desktop\MAME\MameArtWork"
156     screenShotDir = r"C:\Documents and Settings\eaborges\Desktop\MAME\MameScreenShots"
157     romsDir = r"C:\Documents and Settings\eaborges\My Documents\Downloads\Mame54b\roms"
158     Check4NewGames(romsDir,stellaGamesList,artWorkDir,screenShotDir,mameGamesDB)
159     #MainGUI(stellaGamesList, mameGamesDB, artWorkDir, screenShotDir)
160     #GetGameName('mspacman', mameGamesDB)