configurationengine/source/plugins/symbian/ConeThemePlugin/themeplugin/theme_container.py
author terytkon
Thu, 11 Mar 2010 17:04:37 +0200
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
permissions -rw-r--r--
Adding EPL version of configurationengine.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
import os
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
import unzip
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
import shutil
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
import logging
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
from themeplugin import theme_function
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
from theme_resource import ThemeResource
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
from cone.storage import filestorage
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
from cone.public import plugin
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
class ThemeContainer:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
    This class provides extracts *.tpf files, convertts to *.mbm,*.pkg, ... files and set UID(PID)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
    to the setting values in the model 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
    def __init__(self, list_tpf, configuration):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
        self.list_tpf=list_tpf
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
        self.configuration=configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        self.list_theme=[]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
        self.logger = logging.getLogger('cone.thememl')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
        self.carbide = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
    def create_themes(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        extractes tpf file to the temporary directory and creates Theme objects
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
        for tpf in self.list_tpf:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
            logging.getLogger('cone.thememl').info("Creating temp folder for %s" % tpf)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
            theme = Theme()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
            theme.set_tpf_path(tpf)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
            temp_tdf = os.tempnam("Theme")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
            os.mkdir(temp_tdf)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
            temp_theme = os.path.join(temp_tdf,"__temp__")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
            os.mkdir(temp_theme)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
            theme.set_temp_theme(temp_theme)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
            theme.set_temp_tdf(temp_tdf)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
            self.list_theme.append(theme)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
    def build_theme(self, theme_version):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
        converts *.tpf files to *.mbm, *.skn, ...
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
        for theme in self.list_theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
            self.make_theme(theme, theme_version)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
    def prepare_active_themes(self,list_active_theme):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
        goes through the active themes and sets theme in the list of all themes as active {set the name and
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
        the uid number of the platform setting}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
        default_view = self.configuration.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
        for active_theme in list_active_theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
            if active_theme.get_setting_ref():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
                path=active_theme.get_setting_ref().replace("/",".")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
                setting = default_view.get_feature(path+".localPath").get_data()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
                if setting != None and setting.get_value():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
                    setting_value = setting.get_value()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
                    self.set_settinguid_to_theme(active_theme,setting_value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
    def set_settinguid_to_theme(self,active_theme, path):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
        finds out the active theme and set the name and the uid of the platform setting
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        path = "/content/"+path
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
        for theme in self.list_theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
            tpf_path = theme.get_tpf_path()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
            if tpf_path.endswith(path):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
                 for setting_uid in active_theme.get_setting_uids():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
                    setting_uid_value = setting_uid.replace("/",".")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
                    theme.set_setting_uids(setting_uid_value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
                    theme.set_uid(active_theme.get_uid())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
                    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
    def set_active_PID_to_model(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
        finds active theme, gets PID from pkg file, convert PID from hexadecimal to decimal formal
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
        and set decimal PID to the aknskins setting in the model
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
        l = len (self.list_theme)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
        for theme in self.list_theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
            # Make sure autoconfig is the last layer
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
            plugin.get_autoconfig(self.configuration)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
            default_view = self.configuration.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
            for setting_uid in theme.get_setting_uids():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
                aknskins_setting = default_view.get_feature(setting_uid)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
                if(theme.get_uid()):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
                    uid = int(theme.get_uid(),16)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
                    aknskins_setting.set_value(str(uid))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
                else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
                    PID = theme_function.find_text_in_file(os.path.join(theme.get_temp_theme(), "themepackage.pkg"), "!:\\resource\\skins\\", "\\")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
                    dec_PID = theme_function.convert_hexa_to_decimal(PID)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
                    if dec_PID and aknskins_setting:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
                        dec_PID = theme_function.convert_hexa_to_decimal(PID)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
                        aknskins_setting.set_value(str(dec_PID))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
           
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
    def make_theme(self, theme, theme_version):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
        converts the *tdf, *. svg files to *.mbm, *.pkg files, ...
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        The first this method extracts tpf file and then calls carbide.ui command-line
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
        which converts theme.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
        output_path = theme.get_temp_theme()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
        if not os.path.exists(output_path): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
            os.makedirs(output_path)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
        storagepath = self.configuration.get_storage().get_path()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
        input_path =  theme.get_tpf_path().replace("/","\\")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
        zip_output= theme.get_temp_tdf() + "\\"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
        self.unzip_tpf(theme,zip_output)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
        name_tdf = theme_function.get_tdf_file(zip_output)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
        name_tdf = os.path.join(name_tdf,name_tdf+".tdf")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
        input_tdf = os.path.join(zip_output,name_tdf)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
       
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
        command_line = "makepackage -input " + input_tdf + " -output " + output_path
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
        if len(theme_version) != 0:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
            command_line = command_line + " -ver "+ theme_version
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
        if theme.get_uid() != None:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
            command_line = command_line + " -uid " + theme.get_uid()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
        logging.getLogger('cone.thememl').info("Building theme: %s" % command_line)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
        current_dir = os.getcwd()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
        os.chdir(self.carbide)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
        os.system(command_line)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
        os.chdir(current_dir)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
    def unzip_tpf(self, theme, zip_output):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        unzip the tpf file to output directory
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
        f_storage = filestorage.FileStorage(theme.get_temp_tdf(), 'wb')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
        list=[]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
        list.append(theme.get_tpf_path())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
        storage = self.configuration.get_storage()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
        storage.export_resources(list, f_storage)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
        tpf_file = os.path.join(theme.get_temp_tdf(),theme.get_tpf_path().replace("/","\\"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
        unzip.unzip_file_into_dir(tpf_file,zip_output)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
    def copy_resources_to_output(self,output):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
        copies *.mbm, *.skn ... to respective directories in the output directory
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
        for theme in self.list_theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
            #gets list of path where *.mbm, *.skn, ... will be copied
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
            theme_resource = ThemeResource()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
            theme_resource.parse_pkg_file(os.path.join(theme.get_temp_theme(), "themepackage.pkg"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
                                          
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
            # copies *.mbm, *.skn ... to target paths
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
            theme_resource.copy_files_from_theme(theme.get_temp_theme(), output)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
      
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
    def removeTempDirs(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
        remove temporary directories
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
        for theme in self.list_theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
            shutil.rmtree(theme.get_temp_tdf())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
class Theme:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
    This class has information about theme. It contains path of tpf file and temporary directories
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
    where the theme was extracted and builded
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
    Ans also it contains information about the name of setting which has value as UID. The theme 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
    hasn't to have this the name of setting.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
    def __init__(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205
        #where the theme was extracted
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
        self.temp_tdf = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
        #where the theme was builded
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
        self.temp_theme = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
        #the path of tpf file
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
        self.tpf_path = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   211
        # the name of the setting which contains UID
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
        self.setting_uids = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
        self.uids = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
        self.uid = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
    def set_tpf_path(self, tpf_path):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
        self.tpf_path = tpf_path
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
    def get_tpf_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
        return self.tpf_path
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
    def set_temp_tdf(self, temp_tdf):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   223
        self.temp_tdf = temp_tdf
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   224
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   225
    def get_temp_tdf(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   226
        return self.temp_tdf
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   227
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
    def set_temp_theme(self, temp_theme):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
        self.temp_theme = temp_theme
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
    def get_temp_theme(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
        return self.temp_theme
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   234
    def set_setting_uids(self, setting_uid):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   235
        self.setting_uids.append(setting_uid)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   236
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
    def get_setting_uids(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
        return self.setting_uids
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
    def set_uid(self, uid):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
        self.uid = uid
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
    def get_uid(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
        return self.uid
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
class ActiveTheme(object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
    This class performs information from thememl file. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
    It contains the name of settig (its value contains the path of tpf file) and
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   250
    the name of setting which contains UID
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   251
     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   252
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   253
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   254
    def __init__(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   255
        self.ref_setting = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   256
        self.setting_uids = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   257
        self.uid = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   258
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   259
    def set_setting_ref(self, ref_setting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   260
        self.ref_setting  = ref_setting
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   261
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   262
    def set_setting_uids(self, setting_uid):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   263
        self.setting_uids.append(setting_uid)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
    def get_setting_ref(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
        return self.ref_setting
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
    def get_setting_uids(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
        return self.setting_uids
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
    def get_uid(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
        return self.uid
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   273
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   274
    def set_uid(self,uid):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   275
        self.uid = uid