import logging import tkinter as tk from tkinter import ttk from . import builders from .data import _configuration from .gainlayer import SubMixFrame logger = logging.getLogger(__name__) class Navigation(ttk.Frame): def __init__(self, parent): super().__init__(parent) self.parent = parent self.logger = logger.getChild(self.__class__.__name__) self.grid(row=0, column=3, padx=(0, 2), pady=(5, 5), sticky=(tk.W, tk.E)) if not _configuration.navigation_show: self.grid_remove() self.styletable = self.parent.styletable self.builder = builders.NavigationFrameBuilder(self) self.builder.setup() self.builder.create_submix_button() self.builder.create_channel_button() self.builder.create_extend_button() self.builder.create_info_button() self.builder.grid_configure() self.mainframebuilder = builders.MainFrameBuilder(self.parent) def show_submix(self): if self.submix.get(): self.parent.submix_frame = SubMixFrame(self.parent) self.logger.info( f'Finished building submixframe for submix {_configuration.submixes}' ) else: if _configuration.extends_horizontal: self.parent.submix_frame.teardown() if self.parent.bus_frame: self.parent.bus_frame.grid() else: self.parent.columnconfigure(1, weight=0) else: self.parent.submix_frame.teardown() if self.parent.bus_frame: self.parent.bus_frame.grid() else: self.parent.rowconfigure(2, weight=0, minsize=0) self.logger.info( f'Finished tearing down submixframe for submix {_configuration.submixes}' ) if not _configuration.themes_enabled: self.styletable.configure( 'Submix.TButton', background=f'{"purple" if self.submix.get() else "white"}', ) def switch_channel(self): if self.channel_text.get() == 'STRIP': self.mainframebuilder.create_channelframe('bus') self.parent.strip_frame.teardown() else: self.mainframebuilder.create_channelframe('strip') self.parent.bus_frame.teardown() self.extend_button['state'] = ( 'disabled' if self.channel_text.get() == 'STRIP' else 'normal' ) [frame.teardown() for frame in self.parent.configframes] self.channel_text.set('BUS' if self.channel_text.get() == 'STRIP' else 'STRIP') def extend_frame(self): _configuration.extended = self.extend.get() if self.extend.get(): self.channel_button['state'] = 'disabled' self.mainframebuilder.create_channelframe('bus') else: [ frame.teardown() for frame in self.parent.configframes if '!busconfig' in str(frame) ] self.parent.bus_frame.teardown() self.parent.bus_frame = None self.channel_button['state'] = 'normal' if self.parent.submix_frame: self.parent.submix_frame.teardown() self.submix.set(False) if not _configuration.themes_enabled: self.styletable.configure( 'Submix.TButton', background=f'{"purple" if self.submix.get() else "white"}', ) self.extend_text.set('REDUCE' if self.extend.get() else 'EXTEND')