diff --git a/dashBoard.py b/dashBoard.py index f73bcaecad20129093e605cae5f0464e17f2240a..ec5c0a1f3bf2a2fd3163c9f45602b78da758a28f 100644 --- a/dashBoard.py +++ b/dashBoard.py @@ -22,14 +22,29 @@ def openFile(): top = Toplevel(guiRoot) top.title("Result Window") - top.geometry("1920x1080") - - createMetrics(diagram, top) + top.geometry("1600x900") + + topFrame = Frame(top) + topFrame.grid() + canvas = Canvas(topFrame, width=1450, height= 900) # Create Canvas to be able to scroll + canvas.grid() + # Define scrollbar + scrollbar = Scrollbar(topFrame, orient="vertical", command=canvas.yview) + scrollbar.grid(row=0, column=1, sticky="ns") + + canvas.configure(yscrollcommand=scrollbar.set) + canvas.bind( + '<Configure>', lambda e: canvas.configure(scrollregion=canvas.bbox("all")) + ) -def createResults(diagram: Diagram, top): - pass + + canvasFrame = createMetrics(diagram, canvas) + canvasFrame.grid_columnconfigure(0, weight=1) + + canvas.create_window((0,0), window=canvasFrame, anchor="nw") + def createThreats(diagram: Diagram, top): rowIndex = 0 @@ -73,14 +88,16 @@ def createThreats(diagram: Diagram, top): linkedComponents.grid(row = 4, column = 15) def createMetrics(diagram: Diagram, topWindow): + metrics = diagram.metrics.values() rowIndex = 0 - frameWidth = 1600 + frameWidth = 1980 - rankedFrame = ttk.Frame(topWindow, padding=10) # Frame for the ranked metrics, should cover 80% of the window and stack vertically + rankedFrame = ttk.Frame(topWindow, padding=10, width=frameWidth) # Frame for the ranked metrics, should cover 80% of the window and stack vertically rankedFrame.grid(sticky="nsew") + rankedFrame.grid_columnconfigure(0, weight=1) - + topLabel = ttk.Label(rankedFrame, text="Ranked metrics", font=("Helvetica", 20, "bold")) topLabel.grid(row=0, column=0, sticky="nw") @@ -106,14 +123,16 @@ def createMetrics(diagram: Diagram, topWindow): s.configure('Head.TLabel', background='white', font=('Helvetica', 20, 'bold')) s.configure('Test.TLabel', background='white', font=('Helvetica', 20)) - metricFrame = ttk.Frame(rankedFrame ,style='Test.TFrame', height= 200, width= frameWidth) # Frame for each metric, should cover 80% of the window and stack vertically - metricFrame.grid(padx=10, pady=10, sticky="nsew") + metricFrame = ttk.Frame(rankedFrame ,style='Test.TFrame', height= 200, width=frameWidth) # Frame for each metric, should cover 80% of the window and stack vertically + metricFrame.grid(padx=10, pady=10, sticky="nsew") + metricFrame.grid_columnconfigure(0, weight=1) + rowIndex +=1 # Increment the row index for the next frame ttk.Label(metricFrame, text= f"Metric number: {rowIndex}", style="Head.TLabel").grid(row=0, column=0, sticky="nw") ttk.Label(metricFrame, text= f"Metric Name: {metricName}", style="Test.TLabel").grid(row=1, column=0, sticky="nw") # First label = Metric id and description - ttk.Label(metricFrame, text= f"Metric value: {metricValue}", style="Test.TLabel", wraplength=0.3*frameWidth).grid(row=2, column=0, sticky="nw") # First label = Metric id and description + ttk.Label(metricFrame, text= f"Metric value: {metricValue}", style="Test.TLabel", wraplength=0.5*frameWidth).grid(row=2, column=0, sticky="nw") # First label = Metric id and description ttk.Label(metricFrame, text = f"Number of associated components: {amountOFComponents}", style="Test.TLabel").grid(row=1, column=2, sticky="n") # Second label = Number of associated components in both diagrams @@ -121,6 +140,9 @@ def createMetrics(diagram: Diagram, topWindow): for child in metricFrame.winfo_children(): child.grid_configure(padx=3, pady=3,) + child.grid_columnconfigure(0, weight=3) + + return rankedFrame @@ -165,6 +187,8 @@ def createDynamic(diagram: Diagram, top): else: # If not it is a bowtie dynamic pass + + labelWindow = Label(guiRoot, text="Please select CSV export file containing ER diagram, BowTie diagram and dynamics matrix", font=("Arial", 20)) buttonGetFile = Button(guiRoot, text="Select file", command=openFile, width=20, height=2)