File size: 3,017 Bytes
b8077d0
 
 
 
97ba84c
b8077d0
 
 
 
 
 
 
 
97ba84c
 
b8077d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ddd87aa
 
 
 
 
b8077d0
 
 
 
 
97ba84c
 
b8077d0
 
 
 
 
 
 
 
 
 
 
 
 
97ba84c
 
 
b8077d0
 
 
97ba84c
 
 
 
 
b8077d0
 
 
 
 
 
 
 
 
 
 
97ba84c
 
 
 
8e5df59
b8077d0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import logging
import os

import gradio as gr

# from htrflow.models.huggingface.trocr import TrOCR

from app.gradio_config import css, theme

# from app.tabs.export import collection as collection_export_state
# from app.tabs.export import export
from app.tabs.submit import collection_submit_state, submit

from app.tabs.visualizer import collection as collection_viz_state
from app.tabs.visualizer import visualizer

# Suppress transformers logging
logging.getLogger("transformers").setLevel(logging.ERROR)


TEMPLATE_YAML_FOLDER = "app/assets/templates"
gr.set_static_paths(paths=[TEMPLATE_YAML_FOLDER])


def load_markdown(language, section, content_dir="app/content"):
    """Load markdown content from files."""
    if language is None:
        file_path = os.path.join(content_dir, f"{section}.md")
    else:
        file_path = os.path.join(content_dir, language, f"{section}.md")

    if os.path.exists(file_path):
        with open(file_path, "r", encoding="utf-8") as f:
            return f.read()
    return f"## Content missing for {file_path} in {language}"


def activate_tab(collection):
    return gr.update(interactive=collection is not None)


html_header = ""


with gr.Blocks(title="Dawsonia Demo", theme=theme, css=css, head=html_header) as demo:
    gr.Markdown(load_markdown(None, "main_title"))

    with gr.Sidebar(label="Menu"):
        gr.Markdown(load_markdown(None, "main_sub_title"))
        gr.Markdown(load_markdown(None, "sidebar"))

    with gr.Tabs(elem_classes="top-navbar") as navbar:
        with gr.Tab(label="Upload") as tab_submit:
            submit.render()

        with gr.Tab(label="Result", interactive=False, id="result") as tab_visualizer:
            visualizer.render()
        #
        # with gr.Tab(label="Export", interactive=False) as tab_export:
        #     export.render()

    # @demo.load()
    # def inital_trocr_load():
    #     TrOCR("Riksarkivet/trocr-base-handwritten-hist-swe-2")

    def sync_gradio_object_state(input_value, state_value):
        """Synchronize the Collection."""
        state_value = input_value
        return state_value if state_value is not None else gr.skip()

    collection_submit_state.change(
        activate_tab, collection_submit_state, tab_visualizer
    )
    # collection_submit_state.change(activate_tab, collection_submit_state, tab_export)
    collection_submit_state.change(lambda: gr.Tabs(selected="result"), outputs=navbar)

    tab_visualizer.select(
        inputs=[collection_submit_state, collection_viz_state],
        outputs=[collection_viz_state],
        fn=sync_gradio_object_state,
    )
    #
    # tab_export.select(
    #     inputs=[collection_submit_state, collection_export_state],
    #     outputs=[collection_export_state],
    #     fn=sync_gradio_object_state,
    # )

demo.queue()

if __name__ == "__main__":
    demo.launch(
        server_name="0.0.0.0",
        server_port=7860,
        enable_monitoring=True,
        show_api=False,
        allowed_paths=["output"],
    )