File size: 3,523 Bytes
4a02afe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# import gradio as gr
# from caption_store import get_all_collections

# def render_collections():
#     with gr.Column(visible=False) as page:
#         gr.Markdown("# πŸ“ Collections")
#         with gr.Row():
#             # Dynamically determine valid initial choices
#             choices = get_all_collections()
#             if not choices:
#                 choices = ["General"]
#             val = "General" if "General" in choices else choices[0]
            
#             view_coll_selector = gr.Dropdown(
#                 choices=choices, 
#                 value=val, 
#                 label="Select Collection to Browse", 
#                 scale=4
#             )
#             refresh_coll_btn = gr.Button("πŸ”„ Refresh", scale=1)
        
#         coll_status = gr.Markdown("Browse your organized photos.")
#         coll_gallery = gr.Gallery(label="Collection Photos", columns=5, height="auto")
        
#     return page, view_coll_selector, refresh_coll_btn, coll_status, coll_gallery


import os
import gradio as gr
from caption_store import get_all_collections

def render_collections():
    # Gradio selection tracking states
    selected_paths = gr.State([])
    loaded_original_paths = gr.State([])

    with gr.Column(visible=False, elem_classes="page-container") as page:
        gr.HTML("""

        <div style='margin-bottom: 20px;'>

            <h1 style='font-size: 2rem; font-weight: 700; color: #f8fafc;'>πŸ“ Browse Collections</h1>

            <p style='color: #94a3b8;'>Select images by clicking them in the gallery to package and download.</p>

        </div>

        """)
        
        with gr.Row():
            choices = get_all_collections()
            if not choices:
                choices = ["General"]
            val = "General" if "General" in choices else choices[0]
            
            view_coll_selector = gr.Dropdown(
                choices=choices, 
                value=val, 
                label="Select Collection to Browse", 
                scale=4
            )
            refresh_coll_btn = gr.Button("πŸ”„ Refresh list", scale=1)
            
        coll_status = gr.Markdown("Browse your organized photos.")

        # Full-width panel for selected files output
        selection_status = gr.Markdown(
            value="**0** image(s) selected for download packaging.\n\n*No files currently selected.*",
            elem_classes="selection-status-box"
        )

        # Standalone row for action buttons
        with gr.Row(elem_classes="selection-buttons-row"):
            select_all_btn = gr.Button("βœ… Select All", size="sm", variant="secondary")
            clear_selection_btn = gr.Button("🧹 Clear Selection", size="sm", variant="secondary")
            download_btn = gr.Button("πŸ“¦ Zip & Download Selected", variant="primary", size="sm")

        # Dynamic hidden archive download trigger
        download_file = gr.File(label="Source Quality ZIP Archive", visible=False)
        
        coll_gallery = gr.Gallery(
            label="Collection Photos", 
            columns=5, 
            height="auto", 
            elem_classes="custom-gallery",
            allow_preview=False
        )
        
    return (
        page, view_coll_selector, refresh_coll_btn, coll_status, coll_gallery, 
        selected_paths, loaded_original_paths, selection_status, download_btn, 
        download_file, clear_selection_btn, select_all_btn
    )