Source code for NekUpload.frontend.scenes.upload_widgets.session

import ttkbootstrap as ttk
from ttkbootstrap.constants import *
import tkinter as tk
from tkinter import filedialog
from NekUpload.frontend.components.help import HelpNotification
from NekUpload.frontend import style_guide

[docs] class UploadSessionFrame(ttk.LabelFrame): def __init__(self,parent): super().__init__( master=parent, text="Session", bootstyle=DANGER, padding=10 ) self.columnconfigure(0,weight=1) self.columnconfigure(1,weight=1) self.rowconfigure(0,weight=1) self.rowconfigure(1,weight=1) label = ttk.Label( master=self, text="Upload all input related files here.", font=("TKDefaultFont", 12), anchor="w", justify="left", ) label.grid(row=0,column=0,columnspan=2,pady=2,sticky=(NSEW)) n = ttk.Notebook(self,bootstyle=SECONDARY) n.grid(row=1,column=0,columnspan=2,sticky=NSEW) f1: ttk.Frame = self._upload_session(n) n.add(f1,text="Upload from Source") def _upload_session(self,parent) -> ttk.Frame: frame = ttk.Frame(master=parent) frame.rowconfigure(0,weight=1) frame.rowconfigure(1,weight=1) frame.columnconfigure(0,weight=1) frame.columnconfigure(1,weight=1) frame.columnconfigure(2,weight=1) session_file_frame: ttk.Labelframe = self._session_mandatory_info(frame) session_file_frame.grid(row=0,column=0,sticky=NSEW) return frame def _session_mandatory_info(self,parent) -> ttk.Labelframe: session_file_frame= ttk.Labelframe( master=parent, text="Mandatory" ) session_file_frame.columnconfigure(0,weight=1) session_file_frame.columnconfigure(1,weight=3) session_file_frame.columnconfigure(2,weight=1) session_file_frame.columnconfigure(3,weight=1) ################################ # Ask for title title_label = ttk.Label( master=session_file_frame, text="Session Title: " ) title_label.grid(row=0,column=0,sticky=NSEW) self._session_title = tk.StringVar() self.session_title_entry = ttk.Entry( master=session_file_frame, textvariable=self._session_title, ) self.session_title_entry.grid(row=0,column=1,sticky=NSEW) #for highlighting missing fields and turning off red when user is inputting self.session_title_entry.bind("<FocusOut>",lambda event: style_guide.highlight_mandatory_entry_on_focus_out(self.session_title_entry)) self.session_title_entry.bind("<FocusIn>",lambda event: style_guide.highlight_mandatory_entry_on_focus_in(self.session_title_entry)) ################################ # Ask for session file session_file_label = ttk.Label( master=session_file_frame, text="Select Session File: " ) session_file_label.grid(row=1,column=0,sticky=NSEW) self._session_file = tk.StringVar() self.session_file_entry = ttk.Entry( master=session_file_frame, textvariable=self._session_file, ) self.session_file_entry.grid(row=1,column=1,sticky=NSEW) #for highlighting missing fields and turning off red when user is inputting self.session_file_entry.bind("<FocusOut>",lambda event: style_guide.highlight_mandatory_entry_on_focus_out(self.session_file_entry)) self.session_file_entry.bind("<FocusIn>",lambda event: style_guide.highlight_mandatory_entry_on_focus_in(self.session_file_entry)) def browse_file(): file_path = filedialog.askopenfilename( title="Select Session File", filetypes=(("Session Files",".xml"),) ) self._session_file.set(file_path) browse = ttk.Button( master=session_file_frame, text="Browse Files", command=browse_file ) browse.grid(row=1,column=2,sticky=NSEW) help_logo:ttk.Label = HelpNotification(session_file_frame) help_logo.add_help_message("This will be the title of the session record") help_logo2:ttk.Label = HelpNotification(session_file_frame) help_logo2.add_help_message("Only XML formatted session files are accepted") help_logo.grid(row=0, column=3, sticky=NSEW) help_logo2.grid(row=1, column=3, sticky=NSEW) return session_file_frame @property def session_file_name(self): return self._session_file.get() @property def session_dataset_title(self): return self._session_title.get()
[docs] def add_error_style_to_mandatory_entries(self): if not self.session_file_entry.get(): print("H") style_guide.show_error_in_entry(self.session_file_entry) if not self.session_title_entry.get(): style_guide.show_error_in_entry(self.session_title_entry)