From fd838613995c7568f90dddf91894c5edc4d2f219 Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Thu, 12 Dec 2019 21:05:45 -0800 Subject: [PATCH] updated cel to alerts dialog, updated layout to support resizing, added styles for alert button to be different colors --- coretk/coretk/dialogs/{cel.py => alerts.py} | 58 +++++++++------------ coretk/coretk/statusbar.py | 20 +++---- coretk/coretk/themes.py | 24 +++++++++ 3 files changed, 57 insertions(+), 45 deletions(-) rename coretk/coretk/dialogs/{cel.py => alerts.py} (77%) diff --git a/coretk/coretk/dialogs/cel.py b/coretk/coretk/dialogs/alerts.py similarity index 77% rename from coretk/coretk/dialogs/cel.py rename to coretk/coretk/dialogs/alerts.py index ee836737..58f65933 100644 --- a/coretk/coretk/dialogs/cel.py +++ b/coretk/coretk/dialogs/alerts.py @@ -8,36 +8,26 @@ from grpc import RpcError from core.api.grpc import core_pb2 from coretk.dialogs.dialog import Dialog -from coretk.images import ImageEnum, Images from coretk.themes import PADX, PADY from coretk.widgets import CodeText -class CheckLight(Dialog): +class AlertsDialog(Dialog): def __init__(self, master, app): - super().__init__(master, app, "CEL", modal=True) + super().__init__(master, app, "Alerts", modal=True) self.app = app self.tree = None self.text = None self.draw() def draw(self): + self.top.columnconfigure(0, weight=1) + self.top.rowconfigure(0, weight=1) + self.top.rowconfigure(1, weight=1) row = 0 - frame = ttk.Frame(self) + frame = ttk.Frame(self.top) frame.columnconfigure(0, weight=1) - frame.columnconfigure(1, weight=1) - image = Images.get(ImageEnum.ALERT, 18) - label = ttk.Label(frame, image=image) - label.image = image - label.grid(row=0, column=0, sticky="e") - label = ttk.Label(frame, text="Check Emulation Light") - label.grid(row=0, column=1, sticky="w") - frame.grid(row=row, column=0, padx=PADX, pady=PADY, sticky="nsew") - row = row + 1 - - frame = ttk.Frame(self) - frame.columnconfigure(0, weight=1) - frame.grid(row=row, column=0, sticky="nsew") + frame.grid(row=row, column=0, sticky="nsew", pady=PADY) self.tree = ttk.Treeview( frame, columns=("time", "level", "session_id", "node", "source"), @@ -86,27 +76,27 @@ class CheckLight(Dialog): self.tree.configure(xscrollcommand=xscrollbar.set) row = row + 1 - self.text = CodeText(self) + self.text = CodeText(self.top) self.text.config(state=tk.DISABLED) - self.text.grid(row=row, column=0, sticky="nsew") + self.text.grid(row=row, column=0, sticky="nsew", pady=PADY) row = row + 1 - frame = ttk.Frame(self) + frame = ttk.Frame(self.top) + frame.grid(row=row, column=0, sticky="nsew") frame.columnconfigure(0, weight=1) frame.columnconfigure(1, weight=1) frame.columnconfigure(2, weight=1) frame.columnconfigure(3, weight=1) - button = ttk.Button(frame, text="Reset CEL", command=self.reset_cel) - button.grid(row=0, column=0, sticky="nsew", padx=PADX) - button = ttk.Button(frame, text="View core-daemon log", command=self.daemon_log) - button.grid(row=0, column=1, sticky="nsew", padx=PADX) - button = ttk.Button(frame, text="View node log") - button.grid(row=0, column=2, sticky="nsew", padx=PADX) + button = ttk.Button(frame, text="Reset", command=self.reset_alerts) + button.grid(row=0, column=0, sticky="ew", padx=PADX) + button = ttk.Button(frame, text="Daemon Log", command=self.daemon_log) + button.grid(row=0, column=1, sticky="ew", padx=PADX) + button = ttk.Button(frame, text="Node Log") + button.grid(row=0, column=2, sticky="ew", padx=PADX) button = ttk.Button(frame, text="Close", command=self.destroy) - button.grid(row=0, column=3, sticky="nsew", padx=PADX) - frame.grid(row=row, column=0, sticky="nsew") + button.grid(row=0, column=3, sticky="ew") - def reset_cel(self): + def reset_alerts(self): self.text.delete("1.0", tk.END) for item in self.tree.get_children(): self.tree.delete(item) @@ -160,20 +150,22 @@ class DaemonLog(Dialog): self.draw() def draw(self): - frame = ttk.Frame(self) + self.top.columnconfigure(0, weight=1) + self.top.rowconfigure(1, weight=1) + frame = ttk.Frame(self.top) + frame.grid(row=0, column=0, sticky="ew", pady=PADY) frame.columnconfigure(0, weight=1) frame.columnconfigure(1, weight=9) label = ttk.Label(frame, text="File: ") label.grid(row=0, column=0) entry = ttk.Entry(frame, textvariable=self.path, state="disabled") - entry.grid(row=0, column=1, sticky="nsew") - frame.grid(row=0, column=0, sticky="nsew") + entry.grid(row=0, column=1, sticky="ew") try: file = open("/var/log/core-daemon.log", "r") log = file.readlines() except FileNotFoundError: log = "Log file not found" - text = CodeText(self) + text = CodeText(self.top) text.insert("1.0", log) text.see("end") text.config(state=tk.DISABLED) diff --git a/coretk/coretk/statusbar.py b/coretk/coretk/statusbar.py index 945b5336..0528bbf2 100644 --- a/coretk/coretk/statusbar.py +++ b/coretk/coretk/statusbar.py @@ -2,22 +2,21 @@ import tkinter as tk from tkinter import ttk -from coretk.dialogs.cel import CheckLight -from coretk.images import ImageEnum, Images +from coretk.dialogs.alerts import AlertsDialog +from coretk.themes import Styles class StatusBar(ttk.Frame): def __init__(self, master, app, **kwargs): super().__init__(master, **kwargs) self.app = app - self.status = None self.statusvar = tk.StringVar() self.progress_bar = None self.zoom = None self.cpu_usage = None self.memory = None - self.emulation_light = None + self.alerts_button = None self.running = False self.core_alarms = [] self.draw() @@ -56,16 +55,13 @@ class StatusBar(ttk.Frame): ) self.cpu_usage.grid(row=0, column=3, sticky="ew") - image = Images.get(ImageEnum.ALERT, 18) - self.emulation_light = ttk.Button( - self, image=image, text="Alert", compound="left" + self.alerts_button = ttk.Button( + self, text="Alerts", command=self.click_alerts, style=Styles.green_alert ) - self.emulation_light.image = image - self.emulation_light.bind("", self.cel_callback) - self.emulation_light.grid(row=0, column=4, sticky="ew") + self.alerts_button.grid(row=0, column=4, sticky="ew") - def cel_callback(self, event): - dialog = CheckLight(self.app, self.app) + def click_alerts(self): + dialog = AlertsDialog(self.app, self.app) dialog.show() def start_session_callback(self, process_time): diff --git a/coretk/coretk/themes.py b/coretk/coretk/themes.py index cb8a8b06..43b59ffd 100644 --- a/coretk/coretk/themes.py +++ b/coretk/coretk/themes.py @@ -13,6 +13,9 @@ class Styles: tooltip_frame = "Tooltip.TFrame" service_checkbutton = "Service.TCheckbutton" picker_button = "Picker.TButton" + green_alert = "GAlert.TButton" + red_alert = "RAlert.TButton" + yellow_alert = "YAlert.TButton" class Colors: @@ -163,3 +166,24 @@ def update_menu(style, widget): def theme_change(style, event): style.configure(Styles.picker_button, font=("TkDefaultFont", 8, "normal")) + style.configure( + Styles.green_alert, + background="green", + padding=0, + relief=tk.NONE, + font=("TkDefaultFont", 8, "normal"), + ) + style.configure( + Styles.yellow_alert, + background="yellow", + padding=0, + relief=tk.NONE, + font=("TkDefaultFont", 8, "normal"), + ) + style.configure( + Styles.red_alert, + background="red", + padding=0, + relief=tk.NONE, + font=("TkDefaultFont", 8, "normal"), + )