From 82d091b1ed682b7f492da68a9052381b2049819f Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Sun, 18 Jan 2026 23:22:08 +0100 Subject: [PATCH] Update tab_gallery_sorter.py --- tab_gallery_sorter.py | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/tab_gallery_sorter.py b/tab_gallery_sorter.py index a61289c..a10c166 100644 --- a/tab_gallery_sorter.py +++ b/tab_gallery_sorter.py @@ -34,6 +34,11 @@ def cb_apply_batch(current_batch, path_o, cleanup_mode): """Commits the batch to disk.""" SorterEngine.commit_batch(current_batch, path_o, cleanup_mode) +def cb_change_page(delta): + """Updates the page number before the script runs.""" + if 't5_page' not in st.session_state: + st.session_state.t5_page = 0 + st.session_state.t5_page += delta # ========================================== # 2. FRAGMENT: SIDEBAR (Category Manager) @@ -237,25 +242,35 @@ def render(quality, profile_name): total_items = len(all_images) total_pages = math.ceil(total_items / page_size) - if st.session_state.t5_page >= total_pages: st.session_state.t5_page = max(0, total_pages - 1) + if st.session_state.t5_page >= total_pages: + st.session_state.t5_page = max(0, total_pages - 1) + if st.session_state.t5_page < 0: + st.session_state.t5_page = 0 start_idx = st.session_state.t5_page * page_size end_idx = start_idx + page_size current_batch = all_images[start_idx:end_idx] - # --- NAVIGATION CONTROLS --- + # --- NAVIGATION CONTROLS (Optimized) --- def nav_controls(key): c1, c2, c3 = st.columns([1, 2, 1]) - if c1.button("⬅️ Prev", disabled=(st.session_state.t5_page==0), key=f"p_{key}"): - st.session_state.t5_page -= 1 - st.rerun() - c2.markdown(f"
Page {st.session_state.t5_page+1} / {total_pages}
", unsafe_allow_html=True) - if c3.button("Next ➡️", disabled=(st.session_state.t5_page>=total_pages-1), key=f"n_{key}"): - st.session_state.t5_page += 1 - st.rerun() - - nav_controls("top") - st.divider() + + # Previous Button + # We pass -1 to the callback to subtract a page + c1.button("⬅️ Prev", + disabled=(st.session_state.t5_page == 0), + on_click=cb_change_page, args=(-1,), + key=f"p_{key}") + + # Page Indicator + c2.markdown(f"
Page {st.session_state.t5_page + 1} / {total_pages}
", unsafe_allow_html=True) + + # Next Button + # We pass 1 to the callback to add a page + c3.button("Next ➡️", + disabled=(st.session_state.t5_page >= total_pages - 1), + on_click=cb_change_page, args=(1,), + key=f"n_{key}") # --- RENDER GALLERY (FRAGMENT) --- render_gallery_grid(current_batch, quality, grid_cols)