Source code for curver.application.options
try:
import Tkinter as TK
import tkFont as TK_FONT
except ImportError: # Python 3.
import tkinter as TK
import tkinter.font as TK_FONT
LABEL_EDGES_NONE = 'None'
LABEL_EDGES_INDEX = 'Index'
LABEL_EDGES_GEOMETRIC = 'Geometric'
LABEL_EDGES_GEOMETRIC_PROJ = 'Projective geometric'
SIZE_SMALL, SIZE_MEDIUM, SIZE_LARGE = 0, 1, 2
# SIZE_XLARGE = 3
[docs]class Options(object):
def __init__(self, parent):
self.parent = parent
self.application_font = TK_FONT.Font(family='TkDefaultFont', size=10)
self.canvas_font = TK_FONT.Font(family='TkDefaultFont', size=10)
self.show_internals_var = TK.BooleanVar(value=False)
self.show_orientations_var = TK.BooleanVar(value=False)
self.straight_laminations_var = TK.BooleanVar(value=False)
self.smooth_var = TK.BooleanVar(value=True)
self.label_edges_var = TK.StringVar(value=LABEL_EDGES_NONE)
self.size_var = TK.IntVar(value=SIZE_SMALL)
self.show_internals = False
self.show_orientations = False
self.straight_laminations = False
self.label_edges = LABEL_EDGES_NONE
self.smooth = True
self.line_size = 2
self.dot_size = 3
self.arrow_shape = (12, 15, 5)
# Set it so that self.update() will be called whenever these variables are changed.
self.show_internals_var.trace('w', self.update)
self.show_orientations_var.trace('w', self.update)
self.straight_laminations_var.trace('w', self.update)
self.smooth_var.trace('w', self.update)
self.label_edges_var.trace('w', self.update)
self.size_var.trace('w', self.update)
# Drawing parameters.
self.epsilon = 10
self.float_error = 0.001
self.vertex_buffer = 0.2 # Must be in (0, 0.5)
self.zoom_fraction = 0.8 # Must be in (0, 1)
[docs] def update(self, *args):
self.show_internals = bool(self.show_internals_var.get())
self.show_orientations = bool(self.show_orientations_var.get())
self.straight_laminations = bool(self.straight_laminations_var.get())
self.smooth = bool(self.smooth_var.get())
self.label_edges = str(self.label_edges_var.get())
if self.size_var.get() == SIZE_SMALL:
self.line_size = 2
self.dot_size = 3
self.arrow_shape = (12, 15, 5)
self.application_font.configure(size=10)
self.canvas_font.configure(size=10)
elif self.size_var.get() == SIZE_MEDIUM:
self.line_size = 4
self.dot_size = 5
self.arrow_shape = (16, 20, 6)
self.application_font.configure(size=11)
self.canvas_font.configure(size=12)
elif self.size_var.get() == SIZE_LARGE:
self.line_size = 6
self.dot_size = 7
self.arrow_shape = (24, 30, 9)
self.application_font.configure(size=12)
self.canvas_font.configure(size=14)
self.parent.redraw()