diff --git a/src/Model/DB.py b/src/Model/DB.py index 9405ef78dea59941944b83cac46adf88a2e99d36..eb836c04e07957244dda1204e651cfdfb61b60a8 100644 --- a/src/Model/DB.py +++ b/src/Model/DB.py @@ -2,12 +2,15 @@ import os import sqlite3 +import logging from pathlib import Path from tools import SQL from Model.Except import NotImplementedMethodeError +logger = logging.getLogger() + # Top level model class class SQLModel(SQL): _sub_classes = [] @@ -22,11 +25,11 @@ class SQLModel(SQL): self._cur = self._db.cursor() if is_new: - print("CREATE") + logger.info("Create database") self._create() # Create db # self._save() # Save else: - print("UPDATE") + logger.info("Update database") self._update() # Update db scheme if necessary # self._load() # Load data diff --git a/src/View/Configure/Window.py b/src/View/Configure/Window.py index 69d64a69d5284dc8aaf9fae85012779df885013c..818e5d9c2e9c4170dc68d1e3b006c9a3899ca1f4 100644 --- a/src/View/Configure/Window.py +++ b/src/View/Configure/Window.py @@ -1,6 +1,9 @@ # -*- coding: utf-8 -*- +import logging + from copy import deepcopy + from config import Config from View.ASubWindow import ASubWindow from View.ListedSubWindow import ListedSubWindow @@ -27,6 +30,8 @@ from PyQt5.QtWidgets import ( from Solver.Solvers import solver_long_name +logger = logging.getLogger() + class SolverTableModel(QAbstractTableModel): def __init__(self, headers=[], rows=[]): super(QAbstractTableModel, self).__init__() @@ -215,7 +220,7 @@ class ConfigureWindow(ASubWindow, ListedSubWindow): # Debug def set_debug(self): self.conf.debug = not self.conf.debug - print(f"[DEBUG] Debug mode set : {self.conf.debug}") + logger.info(f"Debug mode set : {self.conf.debug}") self.parent.setup_debug_mode() # Solvers diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index e763e9562d9b803ad6df9bddef66fb546a815dba..d44e53f09f2668bc0fae6deedabd8537a7d9a73a 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import os +import logging from queue import Queue from PyQt5 import QtGui @@ -39,6 +40,8 @@ from View.Debug.Window import ReplWindow from Model.Study import Study +logger = logging.getLogger() + no_model_action = [ "action_menu_new", "action_menu_open", "action_menu_import_mage", "action_menu_import_rubarbe", "action_toolBar_open", @@ -206,6 +209,15 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): # Maximise window self.showMaximized() + def set_debug_lvl(self, debug = True): + if debug: + logger.setLevel(logging.DEBUG) + logger.info("Set logging level to DEBUG") + else: + logger.setLevel(logging.INFO) + logger.info("Set logging level to INFO") + + def setup_debug_mode(self, init = False): menu = self.findChild(QMenu, "menu_help") @@ -216,11 +228,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): if self.conf.debug: menu.addAction(self.debug_action) + self.set_debug_lvl(debug = True) else: if self.conf.debug: menu.addAction(self.debug_action) + self.set_debug_lvl(debug = True) else: menu.removeAction(self.debug_action) + self.set_debug_lvl(debug = False) ######### # MODEL # @@ -283,7 +298,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): else: self.model.filename = file_name + ".pamhyr" - print("[INFO] Save...") + logger.info("Save...") self.model.save() def save_as_study(self): @@ -380,7 +395,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): if dialog.exec_(): file_name = dialog.selectedFiles() self.set_model(Study.open(file_name[0])) - print(f"[MainWindow] Open Study : {self.model.name}") + logger.info(f"Open Study - {self.model.name}") def open_new_study(self): """Open dialog to set new study diff --git a/src/config.py b/src/config.py index 24ebebe987ab931887fc02c53da5eba4c29d118c..c865ded27b588fa6de183263d17887870ed6bf66 100644 --- a/src/config.py +++ b/src/config.py @@ -2,6 +2,7 @@ import os import pickle +import logging from tools import SQL @@ -13,13 +14,15 @@ from Solver.Solvers import solver_type_list config_dir = "/.cache/pamhyr/" config_file = "config.sqlite3" +logger = logging.getLogger() + class Config(SQL): def __init__(self): self._version = '0.0.1' self.filename = Config.filename() self.set_default_value() - print(self.filename) + logging.info(f"Configuration file : {self.filename}") super(Config, self).__init__(filename = self.filename) @@ -61,10 +64,10 @@ class Config(SQL): self.commit() def _update(self): - version = self.execute(f"SELECT value FROM info WHERE key='version'") + version = self.execute(f"SELECT value FROM info WHERE key='version'")[0] if version != self._version: - print("update") + logger.info(f"Configuration file update from {version} to {self._version}...") def _load_solver(self): self._solvers = [] diff --git a/src/pamhyr.py b/src/pamhyr.py index 6bfa2f9bd191d2ace2db51d63a4b81f64fd18a79..8a832e1885e8ee15e78538720d82f8a3b7993724 100755 --- a/src/pamhyr.py +++ b/src/pamhyr.py @@ -3,6 +3,7 @@ import sys, os import locale +import logging from PyQt5.QtCore import QTranslator from PyQt5.QtWidgets import QApplication @@ -15,6 +16,13 @@ from tools import ( from View.MainWindow import ApplicationWindow from Model.Study import Study +logging.basicConfig( + level=logging.DEBUG, + format='[PAMHYR][%(levelname)s] %(message)s' +) +logger = logging.getLogger() +logger.setLevel(logging.INFO) + def main(): conf = Config.load() app = QApplication(sys.argv) @@ -37,7 +45,7 @@ def main(): if lang_file != "": ok = translator.load(lang_file) if not ok: - print("failed") + logger.error("Failed to load translate file") app.installTranslator(translator) diff --git a/src/tools.py b/src/tools.py index 410cb7998f113c98f63890ba5da68bfd8c2a5888..701dd23686b18d68c3f0fb1b74aa6b962ab389bb 100644 --- a/src/tools.py +++ b/src/tools.py @@ -3,6 +3,7 @@ import os import time import sqlite3 +import logging import traceback from datetime import datetime @@ -16,6 +17,12 @@ from functools import ( reduce, partial, wraps ) +########### +# LOGGING # +########### + +logger = logging.getLogger() + ########## # TIMERS # ########## @@ -242,7 +249,7 @@ class SQL(object): @timer def execute(self, cmd, fetch_one = True, commit = False): - # print(f"[SQL] {cmd}") + logger.debug(f"SQL - {cmd}") res = self._cur.execute(cmd) if commit: @@ -252,13 +259,13 @@ class SQL(object): return value def _create(self): - print("TODO: Create") + logger.warning("TODO: Create") def _update(self): - print("TODO: Update") + logger.warning("TODO: Update") def _save(self): - print("TODO: Save") + logger.warning("TODO: Save") def _load(self): - print("TODO: Load") + logger.warning("TODO: LOAD")