configurationengine/source/plugins/symbian/ConeThemePlugin/themeplugin/theme_resource.py
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/plugins/symbian/ConeThemePlugin/themeplugin/theme_resource.py	Thu Mar 11 17:04:37 2010 +0200
@@ -0,0 +1,117 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+from shutil import copy
+import os
+
+class ThemeResource:   
+    """
+    This class represents the records about the theme resources which are saved in *.pkg file.
+    Every record contains a filename of the resource (for example "themepackage.mbm"
+    and a path where this resource will be copied in the output directory
+    (for example "!:\private\10207114\import\99d49b086e6097b8\themepackage.mbm")
+    """
+   
+    def __init__(self):
+        self.list_resource=[]
+        
+    def parse_pkg_file(self,file_path):
+        """
+        parses *.pkg file and returns a array of classes ThemeResource
+        The class ThemeResource contains a name of theme resource 
+        and a path where this resource will be copied in the output directory
+        """
+        pkg_file=file(file_path,'r')
+        is_found_else=False
+        row = ""
+        # for every row in pkg file
+        for row in pkg_file:
+            #if it finds tag "ELSE" then it begins load the records about the theme resources
+            if row.startswith("ELSE"):
+                is_found_else = True
+              
+            if(is_found_else):
+                parts_of_row = row.split("\"")
+                #the loading record has to have 5 parts separated "\"
+                if len(parts_of_row) == 5:
+                    #gets the path of the theme resource
+                    path = parts_of_row[3]
+                    #removes these chars "!:\" from the path of theme resource
+                    path = self.modify_resource_path(path)
+                    #parts_of_row[1 is the filename of the theme resource
+                    resource = Resource(parts_of_row[1], path)
+                    self.list_resource.append(resource)
+   
+        pkg_file.close()  
+    
+    def copy_files_from_theme(self, source_path, output_path):
+        """
+        copies theme resources from  source directory to theirs target paths 
+        """
+        for resource in self.list_resource:
+           source_file = os.path.join(source_path, resource.get_filename())
+           target_dir =  os.path.join(output_path, resource.get_path())
+           self.copy_files(source_file, target_dir)          
+        
+    def copy_files(self, source_path, target_path):
+        """
+        copy files from source to target. If the target directory doesn't exist then it is created
+        """
+        if os.path.exists(source_path) != True or os.path.isdir(source_path):
+            return
+        
+        if os.path.exists(target_path) != True:
+            os.makedirs(target_path)
+        copy(source_path, target_path)  
+        
+    def modify_resource_path(self, path):
+        """
+        Modifies the path of them resource. 
+        If the paths contains string "private" or "Data" (it says that the path is target path) then it removes 
+        these chars "!:\" from the path of theme resource
+        """
+        if path.find("private") != -1 or path.find("Data") != -1:
+            if path.startswith("!:\\"):
+                index = path.rfind("\\")
+                path =  path[3:index]
+            
+        return path
+
+        
+class Resource(object):   
+    """
+    This class represents a record about the theme resource. It contains a filename of the resource 
+    (for example "themepackage.mbm" and a path where this resource will be copied in the output directory
+    (for example "!:\private\10207114\import\99d49b086e6097b8\themepackage.mbm")
+    """
+    
+    def __init__(self, filename,path):
+        # the name of theme resource
+        self.filename = filename
+        # the path of theme resource
+        self.path = path
+        
+    def get_filename(self):
+        return self.filename
+    
+    def get_path(self):
+        return self.path
+    
+    def set_path(self,path):
+        self.path = path
+        
+    def set_filename(self,filename):
+        self.filename = filename        
\ No newline at end of file