class DataInsightsApp(tk.Tk): def __init__(self, account, init_config, ver=None, showlog=False): # if showlog = self.log = logging.getLogger(__name__).info self.bug = logging.getLogger(__name__).debug logging.info("DataInsightsApp init started.") super().__init__() self.log("Super init completed.") self.account = account self.log("Account id = {}".format(self.account)) # APP-VARS self.init_cfg = init_config # self.analysispages = [] # APP DETAILS self.app_version_text = ver self.developers_text = "Developed by Justin H Kim." # BUILD GUI self._build_mainframe() self._populate_notebook() self.columnconfigure(0, weight=1) self.rowconfigure(0, weight=1) self.update() def _build_mainframe(self): self.mainframe = tk.Frame(self) self.mainframe.grid(row=0, column=0, sticky="ensw") self.mainframe.columnconfigure(0, weight=1) self.mainframe.rowconfigure(0, weight=1) self.notebook = ttk.Notebook(self.mainframe) def _populate_notebook(self): # SETTINGS MANAGER PAGE INIT self.settingsmanager = SettingsManager(self.notebook, self, self.init_cfg, dbvar=None) self.notebook.add(self.settingsmanager, text="Settings", sticky="nesw") curr_config = self.settingsmanager.get_latest_config(needcopy=True) # DATA MANAGER PAGE INIT self.dbmanager = DBManager(self.notebook, self, curr_config) self.notebook.add(self.dbmanager, text="DB Manager", sticky="nsew") # PRODUCT VIEWER PAGE INIT self.product_viewer_page = ProductViewer( self.notebook, self, curr_config, dbvar=self.dbmanager.get_dbvar()) self.notebook.add(self.product_viewer_page, text="Product Viewer") # ANALYSIS PAGE INIT self.ap = AnalysisPage(self.notebook, self, curr_config, dbvar=self.dbmanager.get_dbvar()) self.notebook.add(self.ap, text="Analysis", sticky="nsew") # MULTIGRAPHER INIT self.multigrapher = MultiGrapher(self.notebook, self, curr_config) self.notebook.add(self.multigrapher, text="MultiGrapher", sticky="snew") # Cafe24 INIT self.cafe24manager = Cafe24Manager(self.notebook, self, curr_config, user=self.account) self.notebook.add(self.cafe24manager, text="Cafe24 Manager", sticky="snew") # FINALIZE NOTEBOOK self.notebook.grid(row=0, column=0, sticky="ENSW") self.notebook.enable_traversal() self.notebook.select(self.dbmanager) def propagate_db_var_change(self, new_dbvar): # Required when DBManager does full resets of its dbvar, meaning the # correct dbvar now has a new id. try: self.product_viewer_page.set_dbvar(new_dbvar) except AttributeError: self.bug( "Tried to send new db to productviewer, but it does not exist yet." ) try: self.ap.set_dbvar(new_dbvar) except AttributeError: self.bug( "Tried to send new db to productviewer, but it does not exist yet." ) def propagate_cfg_var_change(self, new_cfgvar): self.dbmanager.set_cfgvar(new_cfgvar) self.product_viewer_page.set_cfgvar(new_cfgvar) self.ap.set_cfgvar(new_cfgvar) def send_to_multigrapher(self, path, pack, slot): self.log("Send_to_multigrapher for path: {}".format(path)) self.multigrapher.receive_image(path, pack) def get_graph_path(self, request_pack): self.ap.request_and_graph_data(request_pack) return self.ap.export_png(outdir="exports\multigrapher") def send_new_presets(self, multigrapher_cfg): self.settingsmanager.set_new_presets(multigrapher_cfg) def get_default_presets(self): return self.settingsmanager.get_latest_config()["multigrapher"]