Ren'Py Translator ToolKit  Artifact [5843b1203b]

Artifact 5843b1203bf133c8ec59d590443d135ee1c059e512793472be735bbadb6196eb:

  • File game/screens.rpy — part of check-in [50f00733fd] at 2019-05-20 14:57:22 on branch trunk — Block actions when language is not selected (user: Beuc size: 5356)

init -1  python:
    if renpy.windows:
        import EasyDialogsWin as EasyDialogs
    else:
        EasyDialogs = None

    import subprocess
    import glob
    import os
    outdir = os.path.join(config.basedir,'out')
    if not os.path.isdir(outdir):
        os.mkdir(outdir)

    def open_directory(directory):
        try:
            directory = renpy.fsencode(directory)

            if renpy.windows:
                os.startfile(directory)
            elif renpy.macintosh:
                subprocess.Popen([ "open", directory ])
            else:
                subprocess.Popen([ "xdg-open", directory ])
        except Exception, e:
            print(e)

    class TL2POT(Action):
        def __call__(self):
            if store.projectpath:
                import tl2pot
                tl2pot.tl2pot(store.projectpath,
                    os.path.join(outdir, os.path.basename(store.projectpath) + '.pot'))
                open_directory(outdir)

    class TL2PO(Action):
        def __call__(self):
            if store.projectpath and store.language:
                import tl2po
                tl2po.tl2po(store.projectpath,
                    store.language,
                    os.path.join(outdir, os.path.basename(store.projectpath) + '-' + store.language + '.po'))
                open_directory(outdir)

    class MO2TL(Action):
        def __call__(self):
            if store.projectpath and store.language:
                mofile = choose_file(outdir)
                if mofile:
                    import mo2tl
                    mo2tl.mo2tl(store.projectpath,
                                mofile,
                                store.language)
                    open_directory(os.path.join(store.projectpath,'game','tl',store.language))

    def projects_directory():
        f = os.path.join(renpy.config.savedir,'..','launcher-4/persistent')
        p = renpy.persistent.load(f)
        return p.projects_directory

    def projects_list():
        import glob
        dirs = (
            sorted(glob.glob(os.path.join(projects_directory(),'*'))) +
            sorted(glob.glob(os.path.join(config.renpy_base,'*')))
        )
        return [d for d in dirs if os.path.isdir(os.path.join(d,'game'))]

    def languages_list():
        if store.projectpath is None:
            return []
        dirs = glob.glob(os.path.join(projectpath,'game','tl','*'))
        return [os.path.basename(d) for d in sorted(dirs) if os.path.isdir(d)]

    # The color of non-interactive text.
    TEXT = "#545454"

    # Colors for buttons in various states.
    IDLE = "#42637b"
    HOVER = "#d86b45"
    DISABLED = "#808080"

    # Colors for reversed text buttons (selected list entries).
    REVERSE_IDLE = "#78a5c5"
    REVERSE_HOVER = "#d86b45"
    REVERSE_TEXT = "#ffffff"

    # Colors for the scrollbar thumb.
    SCROLLBAR_IDLE = "#dfdfdf"
    SCROLLBAR_HOVER = "#d86b45"

    INDENT = 20

define projectpath = None
define language = None

# Recover from Python exception on "Ignore"
label start:
    call screen main_menu

screen main_menu():
    style_prefix "main_menu"

    add gui.main_menu_background

    ## This empty frame darkens the main menu.
    hbox:
        null width 10
        vbox:
            text _("PROJECTS:") style "l_label_text" size 36 yoffset 10
            null height 20
            for p in projects_list():
                textbutton os.path.basename(p) action SetVariable('projectpath',p),SetVariable('language',None)
        null width 20
        vbox:
            null height 10
            textbutton "Generate POT template (tl2pot)" action TL2POT()
            textbutton "Convert Ren'Py translations to PO catalog (tl2po)" action TL2PO()
            textbutton "Update Ren'Py translation from MO catalog (mo2tl)" action MO2TL()
            null height 20
            text "Set language:":
                color "#000000"
            for l in languages_list():
                textbutton l action SetVariable('language',l)

    vbox:
        xalign 1.0
        xoffset -20
        xmaximum 800
        yalign 1.0
        yoffset -20

        text "Project path: [projectpath]"
        text "Selected language: [language]"

        text "[config.name!t]":
            style "main_menu_title"

        hbox:
            xalign 1.0
            text "v[config.version]":
                style "main_menu_version"
            text " {a=https://www.beuc.net/donate/}by Beuc{/a}":
                style "main_menu_version"

style main_menu_frame is empty
style main_menu_vbox is vbox
style main_menu_text is gui_text
style main_menu_title is main_menu_text
style main_menu_version is main_menu_text

style main_menu_text:
    properties gui.text_properties("main_menu", accent=True)

style main_menu_title:
    properties gui.text_properties("title")

style main_menu_version:
    properties gui.text_properties("version")
    xalign 1.0

style game_menu_label_text:
    size gui.title_text_size
    color gui.accent_color
    yalign 0.5


style l_default is default:
    color TEXT
    idle_color IDLE
    hover_color HOVER
    size 18
style l_label_text is l_default:
    size 24
    xpos INDENT
    yoffset 6