# Этот файл содержит код, показывающий кнопку вызова редактора,
# и код, запускающий редактор с выбранным файлом.

# Наверное, этот файл может служить примером использования оверлея.

init:

    # Это позволяет управлять, видима ли кнопка.
    $ show_editor_button = False
    
    python hide:
        
        # Эта функция вызывается как минимум раз в каждое взаимодействие. 
        def overlay():

            # Если мы не хотим показывать кнопку, ничего не делать.
            if not show_editor_button:
                return
            
            # Узнаём имя файла и номер строки.
            import os.path
            filename, line = renpy.get_filename_line()
            filename = os.path.basename(filename)

            # Эта функция вызывается при нажатии кнопки.
            def clicked():

                # Мы хотим искать файлы в config.gamedir, а не использовать
                # полное имя файла, возвращаемое функцией get_filename_line.
                # Это потому, что имя файла фиксируется при компиляции
                # файла и может поменяться до запустка скрипта.
                # config.gamedir вычисляется при запуске Ren'Py, так что всегда
                # должно подходить.
                fullfn = config.gamedir + "/" + filename

                # Если файл существует, мы открываем его в редакторе с помощью 
                # недокументированной функции launch_editor.
                if os.path.exists(fullfn):
                    renpy.launch_editor([ fullfn ], line)

            # Показываем кнопку, изменяя её вид так, чтобы она не занимала лишнего места
            ui.button(clicked=clicked,
                      xpos=798, xanchor=1.0, ypos=2, xpadding=6, xminimum=200,
                      background=RoundRect((0, 60, 120, 255), 6),
                      hover_background=RoundRect((0, 80, 160, 255), 6),
                      )

            # Этот текст будет в кнопке. ui.textbutton использовать нельзя,
            # поскольку мы хотим менять стили.
            ui.text("%s:%d" % (filename, line),
                    style="button_text", 
                    size=14)
            
        # Добавить эту оверлейную функцию к списку таковых. 
        config.overlay_functions.append(overlay)
