コード例 #1
0
ファイル: theme.py プロジェクト: AjaxVM/hiths-pyweek6
def make_theme(theme):
    if not safe_python.test_safe(os.path.join(theme, "theme.txt"),
                                 ["Button", "Label",
                                  "WindowBar",
                                  "Window", "Menu",
                                  "ScrollBar",
                                  "Font", "Input"]):
        BadThemeError = "this theme is corrupted"
        raise BadThemeError

    global __cur
    __cur = {"button":None,
           "label":None,
           "window":None,
           "window_bar":None,
           "scroll_bar":None,
           "menu":None,

           "font":None,
             "input":None}
    global __theme
    __theme = theme

    data = open(os.path.join(__theme, "theme.txt"), "rU").read()

    exec data

    a = Theme(theme)
    a.compile_theme(__cur)
    return a
コード例 #2
0
ファイル: theme.py プロジェクト: AjaxVM/pyglibs
def load_theme(foldername):
    filename = os.path.join(foldername, "theme.txt")
    if not safe_python.test_safe(filename, all_functions):
        return False

    f = open(filename, "rU").read()
    f.replace("\r", "\n")

    data = {}
    current_widget = [None, {}]

    for line in f.split("\n"):
        values = get_values(line)
        if not values:
            continue
        if matches(values, ["{", "*", "}"]):
            data[values[1]] = {}
        if matches(values, ["{", "*", ":"]):
            #this is pushing the latest widget to a new one
            if current_widget[0] or current_widget[1]:
                data[current_widget[0]] = current_widget[1]
            current_widget = [values[1], {}]
        if matches(values, ["*", "=", "|", "*", "|"]):
            if values[3] == None or values[3] == "noimage":
                current_widget[1][values[0]] = values[3]
            else:
                current_widget[1][values[0]] = pygame.image.load(fix_path(foldername, values[3]))
                try:
                    current_widget[1][values[0]] = current_widget[1][values[0]].convert_alpha()
                except:
                    pass
        if matches(values, ["*", "=", "*"]):
            current_widget[1][values[0]] = values[2]
        elif matches(values, ["*", "=", "*->"]):
            current_widget[1][values[0]] = values[2::]
        if matches(values, ["*", "=", "$", "*", "*"]):
            current_widget[1][values[0]] = pygame.font.Font(fix_path(foldername, values[3]), values[4])
        if values[-1] == "}":
            data[current_widget[0]] = current_widget[1]
            current_widget = [None, {}]
    if current_widget[0] or current_widget[1]:
        if not current_widget[0] in data:
            data[current_widget[0]] = current_widget[1]
        else:
            for i in current_widget[1]:
                data[current_widget[0]][i] = current_widget[1][i]
    return data