added styling for listboxes, made use of listbox scroll where all other basic listboxes were being used

This commit is contained in:
Blake Harnden 2019-12-16 13:11:23 -08:00
parent 585d10dd28
commit 713c42a64e
5 changed files with 34 additions and 29 deletions

View file

@ -4,7 +4,7 @@ from tkinter import ttk
from core.api.grpc import core_pb2 from core.api.grpc import core_pb2
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import PADX, PADY from coretk.themes import PADX, PADY
from coretk.widgets import CodeText from coretk.widgets import CodeText, ListboxScroll
class HookDialog(Dialog): class HookDialog(Dialog):
@ -96,8 +96,9 @@ class HooksDialog(Dialog):
self.top.columnconfigure(0, weight=1) self.top.columnconfigure(0, weight=1)
self.top.rowconfigure(0, weight=1) self.top.rowconfigure(0, weight=1)
self.listbox = tk.Listbox(self.top) listbox_scroll = ListboxScroll(self.top)
self.listbox.grid(sticky="nsew", pady=PADY) listbox_scroll.grid(sticky="nsew", pady=PADY)
self.listbox = listbox_scroll.listbox
self.listbox.bind("<<ListboxSelect>>", self.select) self.listbox.bind("<<ListboxSelect>>", self.select)
for hook_file in self.app.core.hooks: for hook_file in self.app.core.hooks:
self.listbox.insert(tk.END, hook_file) self.listbox.insert(tk.END, hook_file)

View file

@ -4,6 +4,7 @@ from tkinter import ttk
from coretk.coreclient import Observer from coretk.coreclient import Observer
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import PADX, PADY from coretk.themes import PADX, PADY
from coretk.widgets import ListboxScroll
class ObserverDialog(Dialog): class ObserverDialog(Dialog):
@ -27,24 +28,16 @@ class ObserverDialog(Dialog):
self.draw_apply_buttons() self.draw_apply_buttons()
def draw_listbox(self): def draw_listbox(self):
frame = ttk.Frame(self.top) listbox_scroll = ListboxScroll(self.top)
frame.grid(sticky="nsew", pady=PADY) listbox_scroll.grid(sticky="nsew", pady=PADY)
frame.columnconfigure(0, weight=1) listbox_scroll.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1) listbox_scroll.rowconfigure(0, weight=1)
self.observers = listbox_scroll.listbox
scrollbar = ttk.Scrollbar(frame, orient=tk.VERTICAL)
scrollbar.grid(row=0, column=1, sticky="ns")
self.observers = tk.Listbox(
frame, selectmode=tk.SINGLE, yscrollcommand=scrollbar.set
)
self.observers.grid(row=0, column=0, sticky="nsew") self.observers.grid(row=0, column=0, sticky="nsew")
self.observers.bind("<<ListboxSelect>>", self.handle_observer_change) self.observers.bind("<<ListboxSelect>>", self.handle_observer_change)
for name in sorted(self.app.core.custom_observers): for name in sorted(self.app.core.custom_observers):
self.observers.insert(tk.END, name) self.observers.insert(tk.END, name)
scrollbar.config(command=self.observers.yview)
def draw_form_fields(self): def draw_form_fields(self):
frame = ttk.Frame(self.top) frame = ttk.Frame(self.top)
frame.grid(sticky="ew", pady=PADY) frame.grid(sticky="ew", pady=PADY)

View file

@ -4,6 +4,7 @@ from tkinter import ttk
from coretk.coreclient import CoreServer from coretk.coreclient import CoreServer
from coretk.dialogs.dialog import Dialog from coretk.dialogs.dialog import Dialog
from coretk.themes import FRAME_PAD, PADX, PADY from coretk.themes import FRAME_PAD, PADX, PADY
from coretk.widgets import ListboxScroll
DEFAULT_NAME = "example" DEFAULT_NAME = "example"
DEFAULT_ADDRESS = "127.0.0.1" DEFAULT_ADDRESS = "127.0.0.1"
@ -32,25 +33,18 @@ class ServersDialog(Dialog):
self.draw_apply_buttons() self.draw_apply_buttons()
def draw_servers(self): def draw_servers(self):
frame = ttk.Frame(self.top) listbox_scroll = ListboxScroll(self.top)
frame.grid(pady=PADY, sticky="nsew") listbox_scroll.grid(pady=PADY, sticky="nsew")
frame.columnconfigure(0, weight=1) listbox_scroll.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1) listbox_scroll.rowconfigure(0, weight=1)
scrollbar = ttk.Scrollbar(frame, orient=tk.VERTICAL) self.servers = listbox_scroll.listbox
scrollbar.grid(row=0, column=1, sticky="ns")
self.servers = tk.Listbox(
frame, selectmode=tk.SINGLE, yscrollcommand=scrollbar.set
)
self.servers.grid(row=0, column=0, sticky="nsew") self.servers.grid(row=0, column=0, sticky="nsew")
self.servers.bind("<<ListboxSelect>>", self.handle_server_change) self.servers.bind("<<ListboxSelect>>", self.handle_server_change)
for server in self.app.core.servers: for server in self.app.core.servers:
self.servers.insert(tk.END, server) self.servers.insert(tk.END, server)
scrollbar.config(command=self.servers.yview)
def draw_server_configuration(self): def draw_server_configuration(self):
frame = ttk.LabelFrame(self.top, text="Server Configuration", padding=FRAME_PAD) frame = ttk.LabelFrame(self.top, text="Server Configuration", padding=FRAME_PAD)
frame.grid(pady=PADY, sticky="ew") frame.grid(pady=PADY, sticky="ew")

View file

@ -1,5 +1,6 @@
import logging import logging
import tkinter as tk import tkinter as tk
from tkinter import ttk
THEME_DARK = "black" THEME_DARK = "black"
PADX = (0, 5) PADX = (0, 5)
@ -160,7 +161,21 @@ def update_menu(style, widget):
if not abg: if not abg:
abg = bg abg = bg
widget.config( widget.config(
background=bg, foreground=fg, activebackground=abg, activeforeground=fg background=bg, foreground=fg, activebackground=abg, activeforeground=fg, bd=0
)
def update_listbox(widget):
style = ttk.Style()
bg = style.lookup(".", "background")
fg = style.lookup(".", "foreground")
widget.config(
background=bg,
foreground=fg,
highlightthickness=1,
highlightcolor="black",
highlightbackground="black",
bd=0,
) )

View file

@ -5,6 +5,7 @@ from tkinter import filedialog, font, ttk
from tkinter.scrolledtext import ScrolledText from tkinter.scrolledtext import ScrolledText
from core.api.grpc import core_pb2 from core.api.grpc import core_pb2
from coretk import themes
from coretk.appconfig import ICONS_PATH from coretk.appconfig import ICONS_PATH
from coretk.themes import FRAME_PAD, PADX, PADY from coretk.themes import FRAME_PAD, PADX, PADY
@ -184,6 +185,7 @@ class ListboxScroll(ttk.LabelFrame):
self.listbox = tk.Listbox( self.listbox = tk.Listbox(
self, selectmode=tk.SINGLE, yscrollcommand=self.scrollbar.set self, selectmode=tk.SINGLE, yscrollcommand=self.scrollbar.set
) )
themes.update_listbox(self.listbox)
self.listbox.grid(row=0, column=0, sticky="nsew") self.listbox.grid(row=0, column=0, sticky="nsew")
self.scrollbar.config(command=self.listbox.yview) self.scrollbar.config(command=self.listbox.yview)