Changeset 1326
- Timestamp:
- 05/11/08 12:07:22 (2 months ago)
- Files:
-
- wine-doors/branches/0.2/src/preferences.py (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wine-doors/branches/0.2/src/preferences.py
r1324 r1326 5 5 from urllib import quote, unquote 6 6 7 class ParsePreferences :7 class ParsePreferences( ContentHandler ): 8 8 """ 9 9 XML parser for the preferences file, the spec for this can be found at 10 10 http://www.wine-doors.org/trac/wiki/Preferences02 11 11 """ 12 def __init__ ( self, preferences, repositories , bottles):12 def __init__ ( self, preferences, repositories ): 13 13 self.preferences = preferences 14 14 self.repositories = repositories 15 self.bottles = bottles16 15 self.data = [] 17 16 self.in_conf_file = False 18 17 self.in_repo_list = False 19 self.in_bottles = False20 18 self.repo_name = None 21 19 self.repo_uri = None 22 20 self.repo_username = None 23 21 self.repo_password = None 24 self.bottle_path = None25 self.bottles_base = None26 22 27 23 def startElement( self, name, attrs ): 28 if name == "prefer nces":24 if name == "preferences": 29 25 self.in_conf_file = True 30 26 elif name == "repositories" and self.in_conf_file: 31 27 self.in_repo_list = True 32 elif name == "bottles" and self.in_conf_file:33 self.in_bottles = True34 self.bottles_base = attrs.get( 'root' )35 28 elif name == "repository" and self.in_repo_list: 36 29 self.repo_name = attrs.get( 'name' ) 37 30 self.repo_name = self.repo_name.rstrip() 38 31 39 self.repo_uri = attrs.get( ' uri' )32 self.repo_uri = attrs.get( 'src' ) 40 33 self.repo_uri = self.repo_uri.rstrip() 41 34 42 35 self.repo_username = attrs.get( 'username' ) 43 self.repo_username = self.repo_username.rstrip() 36 if self.repo_username: 37 self.repo_username = self.repo_username.rstrip() 44 38 45 39 self.repo_password = attrs.get( 'password' ) 46 self.repo_password = self.repo_password.rstrip() 40 if self.repo_password: 41 self.repo_password = self.repo_password.rstrip() 47 42 48 43 def characters ( self, string ): … … 54 49 elif name == "repositories" and self.in_conf_file: 55 50 self.in_repo_list = False 56 elif name == "repo " and self.in_repo_list:57 self.repositories.append( [self.repo_name, self.repo_uri,58 self.repo_username, self.repo_password ])51 elif name == "repository" and self.in_repo_list: 52 self.repositories.append( (self.repo_name, self.repo_uri, 53 self.repo_username, self.repo_password) ) 59 54 elif self.in_conf_file: 60 55 text = ''.join( self.data ) … … 66 61 def __init__( self, parent=None, preferences_file=None ): 67 62 self.parent = parent 68 self.bottles = []69 63 self.repositories = [] 70 64 self.licenses = [] … … 99 93 100 94 def Default( self ): 101 self['winebinary'] = os.popen( "which wine" ).read().rstrip() 102 self['updateonstart'] = "1" 95 pass 103 96 104 97 def DefaultRepos ( self ): 105 preferences.AddRepository( "Applications", "http://www.wine-doors.org/repositories/applications.repo/" )106 preferences.AddRepository( "System Base", "http://www.wine-doors.org/repositories/base.repo/" )107 preferences.AddRepository( "Games", "http://www.wine-doors.org/repositories/games.repo/" )108 preferences.AddRepository( "Libraries and Fonts", "http://www.wine-doors.org/repositories/libraries.repo/" )98 self.AddRepository( "Applications", "http://www.wine-doors.org/repositories/applications.repo/" ) 99 self.AddRepository( "System Base", "http://www.wine-doors.org/repositories/base.repo/" ) 100 self.AddRepository( "Games", "http://www.wine-doors.org/repositories/games.repo/" ) 101 self.AddRepository( "Libraries and Fonts", "http://www.wine-doors.org/repositories/libraries.repo/" ) 109 102 110 def AddRepository( self, name, uri, username=None, password=None ): 111 for item in self.repositories: 112 if ''.join( item[0:1] ) == name: 113 index = self.repositories.index( item ) 114 self.repositories[index] = [name, value, username, password] 103 def AddRepository( self, name, src, username=None, password=None ): 104 name = ''.join( name ) 105 src = ''.join( src ) 106 107 for index, (ename, esrc, eusername, epassword) in enumerate(self.repositories): 108 if ename == name: 109 self.repositories[index] = (name, src, username, password) 115 110 return 116 self.repositories.append( [name, value, username, password])111 self.repositories.append( (name, src, username, password) ) 117 112 118 113 # TODO 119 114 def DelRepository( self, name ): 120 115 pass 116 117 def Reset( self ): 118 self.preferences = {} 121 119 122 120 def Load( self ): … … 125 123 """ 126 124 temp_repos = [] 127 temp_bottles = [] 128 handler = ParsePreferences( self.preferences, temp_repos, temp_bottles ) 125 handler = ParsePreferences( self.preferences, temp_repos ) 129 126 parser = make_parser() 130 127 parser.setContentHandler( handler ) 131 128 parser.parse( self.preferences_file ) 132 129 133 for repo in temp_repos: 134 self.AddRepo( ''.join( repo[0:1] ), ''.join( repo[1:2] ), 135 ''.join( repo[2:3] ), ''.join( repo[3:] ) ) 136 137 for bottle in temp_bottles: 138 self.AddBottle( ''.join( repo[0:1] ), ''.join( repo[1:2] ), ''.join( repo[2:] ) ) 130 for name, src, username, password in temp_repos: 131 self.AddRepository( name, src, username, password ) 139 132 140 133 def Save( self, preferences_file=None ): 141 134 """ Spit out an xml file, this could do with some sanity checking, to make sure its a valid file """ 142 if not prefer nces_file and self.preferences_file:135 if not preferences_file and self.preferences_file: 143 136 preferences_file = self.preferences_file 144 137 elif not preferences_file and not self.preferences_file: … … 158 151 159 152 f.write( " <repositories>\n" ) 160 for name, uri, username, password in self.repositories:161 f.write( " <repo name=\"%s\" uri=\"%s\" ")153 for name, src, username, password in self.repositories: 154 f.write( " <repository name=\"%s\" src=\"%s\" " % ( name, src )) 162 155 if username: 163 f.write( "username=\"%s\" password=\"%s\" />\n" % ( name, uri,username, password ) )156 f.write( "username=\"%s\" password=\"%s\" />\n" % ( username, password ) ) 164 157 else: 165 158 f.write( "/>\n" ) … … 172 165 print "Unit testing: Preferences" 173 166 print "------------------------------------------------" 174 preferences = Preferences() 167 preferences = Preferences(None, "../testing/preferences.xml") 168 preferences.Load() 175 169 print "Keys/Values:" 176 170 for key, value in preferences.preferences.iteritems(): … … 178 172 print 179 173 print "Repositories:" 180 for name, uri, username, password in preferences.repositories:181 print "Repository, name: " + name + " URI: " + uri174 for name, src, username, password in preferences.repositories: 175 print "Repository, name: " + name + " URI: " + src 182 176 print 183 print "Bottles:"184 for name, path, icon in preferences.bottles:185 print "Bottle, name: " + name + " path: " + path186 print187 188 177 print "Testing load/save:" 189 178 print "Setting name to \"testing\"" … … 191 180 preferences["name"] = "testing" 192 181 preferences.Save() 182 preferences.Reset() 193 183 print "Saved" 184 print 194 185 print "Loading" 195 186 preferences.Load()
