From 78d4a61eb2746f055f921db1c1ff50025835bb7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Miquel?= Date: Sun, 18 Jan 2026 15:07:31 +0100 Subject: [PATCH] Add a restart current file binding to page_splitter. --- page_splitter.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/page_splitter.py b/page_splitter.py index b470fde..596812e 100644 --- a/page_splitter.py +++ b/page_splitter.py @@ -79,11 +79,14 @@ class PDFPreviewer: "← / → : Move line 1cm left/right\n" "'c': Rotate page 180°, 'C' : rotate all pages, ',' : rotate all files\n" "t s r n: keep left, next page, keep none, keep right\n" - "z: send this page to the end\n" + "z: send this page to the end, 'R':restart file\n" ) self.info_label = tk.Label(master, text=instructions, justify=tk.LEFT) self.info_label.pack(pady=5, side=tk.TOP) + # self.restart_btn = tk.Button(master, text="Restart File (R)", command=self.restart_current_file) + # self.restart_btn.pack(pady=2, side=tk.TOP) + self.page_label = tk.Label(master, text="", font=("Helvetica", 12)) self.page_label.pack(pady=5, side=tk.TOP) @@ -103,6 +106,8 @@ class PDFPreviewer: self.master.bind("s", self.confirm_and_next_page) self.master.bind("r", self.discard_page) self.master.bind("z", self.send_page_end) + self.master.bind("R", self.restart_current_file) # New binding + # Bind the resize event on the canvas self.canvas.bind("", self.on_resize) @@ -173,6 +178,31 @@ class PDFPreviewer: # Center the image on the canvas self.canvas.create_image(canvas_width / 2, canvas_height / 2, anchor="center", image=self.photo_img) + + def restart_current_file(self, event=None): + """Restarts the processing of the current file.""" + # Close the modified in-memory document + if hasattr(self, 'doc'): + self.doc.close() + + # Re-open the file from disk to reset changes (like moved pages) + try: + self.doc = fitz.open(self.pdf_path) + except Exception as e: + messagebox.showerror("Error", f"Failed to reopen PDF file: {e}") + self.master.destroy() + return + + # Reset state variables for the current file + self.file_rotation = 0 + self.current_page_index = 0 + self.page_settings = [] + self.processing = False + + # Reload UI + self._initialize_current_page_settings() + self.load_page() + def move_line_left(self, event=None): """Moves the split line to the left."""