added spinbox missing from 3.6, added spinbox theme, updated config gen to display a file picker for labels with file in it

This commit is contained in:
Blake Harnden 2019-12-09 13:05:07 -08:00
parent 5003e2356c
commit 4ca9ab910e
3 changed files with 36 additions and 3 deletions

View file

@ -9,6 +9,7 @@ DIALOG_PAD = 5
class Dialog(tk.Toplevel): class Dialog(tk.Toplevel):
def __init__(self, master, app, title, modal=False): def __init__(self, master, app, title, modal=False):
super().__init__(master) super().__init__(master)
self.geometry("800x600")
self.withdraw() self.withdraw()
self.app = app self.app = app
self.modal = modal self.modal = modal

View file

@ -88,6 +88,14 @@ def load(style):
}, },
"map": {"fieldbackground": [("disabled", Colors.frame)]}, "map": {"fieldbackground": [("disabled", Colors.frame)]},
}, },
"TSpinbox": {
"configure": {
"fieldbackground": Colors.white,
"foreground": Colors.black,
"padding": (2, 0),
},
"map": {"fieldbackground": [("disabled", Colors.frame)]},
},
"TCombobox": { "TCombobox": {
"configure": { "configure": {
"fieldbackground": Colors.white, "fieldbackground": Colors.white,

View file

@ -1,7 +1,7 @@
import logging import logging
import tkinter as tk import tkinter as tk
from functools import partial from functools import partial
from tkinter import font, ttk 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
@ -19,6 +19,12 @@ INT_TYPES = {
PAD = 5 PAD = 5
def file_button_click(value):
file_path = filedialog.askopenfilename(title="Select File")
if file_path:
value.set(file_path)
class FrameScroll(ttk.LabelFrame): class FrameScroll(ttk.LabelFrame):
def __init__(self, master, app, _cls=ttk.Frame, **kw): def __init__(self, master, app, _cls=ttk.Frame, **kw):
super().__init__(master, **kw) super().__init__(master, **kw)
@ -100,8 +106,18 @@ class ConfigFrame(FrameScroll):
combobox.grid(row=index, column=1, sticky="ew", pady=pady) combobox.grid(row=index, column=1, sticky="ew", pady=pady)
elif option.type == core_pb2.ConfigOptionType.STRING: elif option.type == core_pb2.ConfigOptionType.STRING:
value.set(option.value) value.set(option.value)
entry = ttk.Entry(frame, textvariable=value) if "file" in option.label:
entry.grid(row=index, column=1, sticky="ew", pady=pady) file_frame = ttk.Frame(frame)
file_frame.grid(row=index, column=1, sticky="ew", pady=pady)
file_frame.columnconfigure(0, weight=1)
entry = ttk.Entry(file_frame, textvariable=value)
entry.grid(row=0, column=0, sticky="ew", padx=padx)
func = partial(file_button_click, value)
button = ttk.Button(file_frame, text="...", command=func)
button.grid(row=0, column=1)
else:
entry = ttk.Entry(frame, textvariable=value)
entry.grid(row=index, column=1, sticky="ew", pady=pady)
elif option.type in INT_TYPES: elif option.type in INT_TYPES:
value.set(option.value) value.set(option.value)
entry = ttk.Entry(frame, textvariable=value) entry = ttk.Entry(frame, textvariable=value)
@ -179,3 +195,11 @@ class CodeText(ScrolledText):
relief=tk.FLAT, relief=tk.FLAT,
**kwargs **kwargs
) )
class Spinbox(ttk.Entry):
def __init__(self, master=None, **kwargs):
super().__init__(master, "ttk::spinbox", **kwargs)
def set(self, value):
self.tk.call(self._w, "set", value)