Changeset a14c6b0 in flexograder for gui/attach_media_dialog.py
- Timestamp:
- 12/15/25 14:10:35 (4 months ago)
- Branches:
- fake-data, main, master
- Children:
- 9b1abd2
- Parents:
- 34e976b
- File:
-
- 1 edited
-
gui/attach_media_dialog.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
gui/attach_media_dialog.py
r34e976b ra14c6b0 1 1 import tkinter as tk 2 2 from tkinter import ttk, filedialog 3 from pathlib import Path 3 4 from builder.media_items import MediaItem 4 from flexoentity import FlexOID # if you use entity-based IDs5 5 6 6 class AttachMediaDialog(tk.Toplevel): 7 def __init__(self, parent, question ):7 def __init__(self, parent, question_dict): 8 8 super().__init__(parent) 9 9 self.title("Media attachments") 10 self.question = question 10 self.question_dict = question_dict 11 self.result = [] 12 # Ensure media list exists 13 self.media_list = question_dict.get("media", []) 11 14 self.resizable(False, False) 12 15 … … 15 18 self.listbox.pack(padx=10, pady=5, fill="both") 16 19 17 print(question.media) 18 for m in question.media: 19 self.listbox.insert(tk.END, f"{m.mtype.upper()}: {m.src}") 20 for m in self.media_list: 21 mtype = str(m.get("mtype", "unknown")).upper() 22 src = m.get("src", "?") 23 self.listbox.insert(tk.END, f"{mtype}: {src}") 20 24 21 25 btn_frame = ttk.Frame(self) … … 24 28 ttk.Button(btn_frame, text="Add...", command=self.add_media).pack(side=tk.LEFT, padx=5) 25 29 ttk.Button(btn_frame, text="Remove", command=self.remove_media).pack(side=tk.LEFT, padx=5) 26 ttk.Button(btn_frame, text="Close", command=self. destroy).pack(side=tk.RIGHT, padx=5)30 ttk.Button(btn_frame, text="Close", command=self.on_ok).pack(side=tk.RIGHT, padx=5) 27 31 28 32 def add_media(self): 29 print("add")30 33 path = filedialog.askopenfilename( 31 34 title="Select media file", … … 34 37 if not path: 35 38 return 36 media_item = MediaItem(src=path) 37 self.question.media.append(media_item) 38 self.listbox.insert(tk.END, f"{media_item.mtype.upper()}: {path}") 39 40 # Determine media type from extension 41 ext = Path(path).suffix.lower() 42 if ext in {".png", ".jpg", ".jpeg"}: 43 mtype = "image" 44 elif ext in {".mp4"}: 45 mtype = "video" 46 elif ext in {".wav"}: 47 mtype = "audio" 48 elif ext in {".pdf"}: 49 mtype = "pdf" 50 else: 51 mtype = "unknown" 52 media_entry = {"mtype": mtype, "src": path} 53 self.media_list.append(media_entry) 54 print("List:", self.media_list) 55 self.listbox.insert(tk.END, f"{mtype.upper()}: {path}") 39 56 40 57 def remove_media(self): … … 44 61 idx = selection[0] 45 62 self.listbox.delete(idx) 46 del self.question.media[idx] 63 try: 64 del self.media_list[idx] 65 except IndexError: 66 pass 67 68 def on_ok(self): 69 """Return the final edited media list.""" 70 print("OK:", self.media_list) 71 self.result = self.media_list 72 self.destroy() 73 74 def on_close(self): 75 """Return the final edited media list.""" 76 self.result = self.media_list 77 self.destroy()
Note:
See TracChangeset
for help on using the changeset viewer.
