Преглед на файлове

Arreglos en layout y logs

oscarleiva преди 5 години
родител
ревизия
2d3bf72a1e
променени са 5 файла, в които са добавени 63 реда и са изтрити 98 реда
  1. 1 0
      .gitignore
  2. 13 0
      common/log.py
  3. 45 79
      main.py
  4. 3 11
      simsdt/model.py
  5. 1 8
      simsdt/runsdt.py

+ 1 - 0
.gitignore

@@ -53,6 +53,7 @@ coverage.xml
 
 
 # Django stuff:
 # Django stuff:
 *.log
 *.log
+*.log.*
 local_settings.py
 local_settings.py
 db.sqlite3
 db.sqlite3
 
 

+ 13 - 0
common/log.py

@@ -1,3 +1,16 @@
 #
 #
 # Utility classes for working with the logger
 # Utility classes for working with the logger
 #
 #
+import logging
+from logging.handlers import RotatingFileHandler
+
+fh = RotatingFileHandler(
+    'log/simsdt_app_monitor.log', maxBytes=1024*50, backupCount=10)
+fmt = logging.Formatter(
+    '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
+fh.setFormatter(fmt)
+fh.setLevel(logging.INFO)
+
+main_logger = logging.getLogger('simsdt')
+main_logger.addHandler(fh)
+main_logger.setLevel(logging.INFO)

+ 45 - 79
main.py

@@ -1,11 +1,11 @@
-import datetime
+
 import logging
 import logging
 import queue
 import queue
 import signal
 import signal
 import threading
 import threading
 import time
 import time
 import tkinter as tk
 import tkinter as tk
-from logging.handlers import RotatingFileHandler
+
 from tkinter import (HORIZONTAL, VERTICAL, E, N, S, W, filedialog, messagebox,
 from tkinter import (HORIZONTAL, VERTICAL, E, N, S, W, filedialog, messagebox,
                      ttk)
                      ttk)
 from tkinter.scrolledtext import ScrolledText
 from tkinter.scrolledtext import ScrolledText
@@ -13,24 +13,21 @@ from tkinter.scrolledtext import ScrolledText
 from PIL import Image, ImageTk
 from PIL import Image, ImageTk
 
 
 from qhandler import QueueHandler
 from qhandler import QueueHandler
+from common import log
 from simsdt import runsdt
 from simsdt import runsdt
 
 
 
 
-fh = RotatingFileHandler(
-    'log/simsdt_app_monitor.log', maxBytes=1024*50, backupCount=10)
-fmt = logging.Formatter(
-    '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
-fh.setFormatter(fmt)
-fh.setLevel(logging.INFO)
-# logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
-#                     datefmt='%Y-%m-%dT%H:%M:%S',
-#                     handlers=[RotatingFileHandler(
-#                         'log/simsdt_app_monitor.log', maxBytes=10240, backupCount=10)],
-#                     level=logging.INFO)
+# fh = RotatingFileHandler(
+#     'log/simsdt_app_monitor.log', maxBytes=1024*50, backupCount=10)
+# fmt = logging.Formatter(
+#     '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
+# fh.setFormatter(fmt)
+# fh.setLevel(logging.INFO)
+
 
 
-main_logger = logging.getLogger("simsdt")
-main_logger.addHandler(fh)
-main_logger.setLevel(logging.DEBUG)
+main_logger = logging.getLogger("simsdt.gui")
+# main_logger.addHandler(fh)
+# main_logger.setLevel(logging.INFO)
 
 
 
 
 class RunsdtThread(threading.Thread):
 class RunsdtThread(threading.Thread):
@@ -44,40 +41,11 @@ class RunsdtThread(threading.Thread):
         return
         return
 
 
     def run(self):
     def run(self):
-        now = datetime.datetime.now()
+        t = time.time()
         runsdt.main(self.args)
         runsdt.main(self.args)
-        # time.sleep(30)
-        main_logger.info('Fin de la función run')
-
-    def stop(self):
-        self._stop_event.set()
-
-
-class Clock(threading.Thread):
-    """Class to display the time every seconds
-
-    Every 5 seconds, the time is displayed using the logging.ERROR level
-    to show that different colors are associated to the log levels
-    """
-
-    def __init__(self):
-        super().__init__()
-        self._stop_event = threading.Event()
-
-    def run(self):
-        # main_logger.setLevel(logging.INFO)
-        main_logger.debug('Clock started')
-        previous = -1
-        while not self._stop_event.is_set():
-            now = datetime.datetime.now()
-            if previous != now.second:
-                previous = now.second
-                if now.second % 5 == 0:
-                    level = logging.ERROR
-                else:
-                    level = logging.INFO
-                main_logger.log(level, now)
-            time.sleep(0.2)
+        elapsed_time = time.time() - t
+        et = time.strftime("%H:%M:%S", time.gmtime(elapsed_time))
+        main_logger.info('Tiempo de ejecución %s' % et)
 
 
     def stop(self):
     def stop(self):
         self._stop_event.set()
         self._stop_event.set()
@@ -144,7 +112,7 @@ class FormUi:
         self.file_path = tk.StringVar()
         self.file_path = tk.StringVar()
         ttk.Label(self.frame, text='Archivo:').grid(column=0, row=0, sticky=W)
         ttk.Label(self.frame, text='Archivo:').grid(column=0, row=0, sticky=W)
         ttk.Entry(self.frame, textvariable=self.file_path,
         ttk.Entry(self.frame, textvariable=self.file_path,
-                  width=50).grid(column=1, row=0, sticky=(W, E))
+                  width=50).grid(column=1, row=0, sticky=(W, E), pady=(5, 5))
         self.button = ttk.Button(
         self.button = ttk.Button(
             self.frame, text='...', command=self.open_file_dialog, width=3)
             self.frame, text='...', command=self.open_file_dialog, width=3)
         self.button.grid(column=2, row=0, sticky=W)
         self.button.grid(column=2, row=0, sticky=W)
@@ -184,7 +152,7 @@ class FormUi:
             self.frame.after(100, self.check_thread)
             self.frame.after(100, self.check_thread)
 
 
 
 
-class ThirdUi:
+class StatusUi:
 
 
     def __init__(self, frame, q):
     def __init__(self, frame, q):
         self.q = q
         self.q = q
@@ -194,7 +162,7 @@ class ThirdUi:
         #     column=0, row=1, sticky=W)
         #     column=0, row=1, sticky=W)
         self.progress_bar = ttk.Progressbar(
         self.progress_bar = ttk.Progressbar(
             self.frame, mode='determinate')
             self.frame, mode='determinate')
-        self.progress_bar.pack(expand=True, fill=tk.BOTH, side=tk.TOP)
+        self.progress_bar.pack(expand=True, fill=tk.X, side=tk.TOP)
 
 
         self.frame.after(100, self.check_q)
         self.frame.after(100, self.check_q)
 
 
@@ -217,58 +185,56 @@ class ThirdUi:
                     self.progress_bar.config(value=0)
                     self.progress_bar.config(value=0)
         self.frame.after(100, self.check_q)
         self.frame.after(100, self.check_q)
 
 
-        # max_size = 100
-        # print(self.q.qsize())
-        # while self.q.qsize():
-        #     try:
-        #         active_tread = self.q.get(0)
-        #         print(active_tread)
-        #         main_logger.info(active_tread)
-        #         if active_tread:
-        #             step = 1
-        #             self.progress_bar.step(step)
-        #             if step == max_size:
-        #                 step = 1
-        #             else:
-        #                 step += 1
-        #     except queue.Empty:
-        #         pass
-
-        #     self.frame.after(100, self.check_q)
-
 
 
 class App:
 class App:
 
 
     def __init__(self, root):
     def __init__(self, root):
         self.root = root
         self.root = root
+        # Queue a nivel de App para manejar el progress bar
         pbqueue = queue.Queue()
         pbqueue = queue.Queue()
 
 
         root.title('SimSDT')
         root.title('SimSDT')
         root.iconbitmap("app.ico")
         root.iconbitmap("app.ico")
         root.columnconfigure(0, weight=1)
         root.columnconfigure(0, weight=1)
         root.rowconfigure(0, weight=1)
         root.rowconfigure(0, weight=1)
+        # root.geometry("1080x960")
+
         # Create the panes and frames
         # Create the panes and frames
-        vertical_pane = ttk.PanedWindow(self.root, orient=VERTICAL)
-        vertical_pane.grid(row=0, column=0, sticky="nsew")
+        vertical_pane = ttk.PanedWindow(
+            self.root, orient=VERTICAL)
+        vertical_pane.grid(row=0, column=0, sticky="nsew", padx=10, pady=10)
+
+        main_title = ttk.Label(
+            vertical_pane, text='Simulación de Subastas de Derechos de Transmisión', font=('', '20', 'bold'))
+        vertical_pane.add(main_title, weight=0)
+
         horizontal_pane = ttk.PanedWindow(vertical_pane, orient=HORIZONTAL)
         horizontal_pane = ttk.PanedWindow(vertical_pane, orient=HORIZONTAL)
-        vertical_pane.add(horizontal_pane)
-        form_frame = ttk.Labelframe(horizontal_pane, text="Configuracion")
+        vertical_pane.add(horizontal_pane, weight=1)
+
+        form_frame = ttk.Labelframe(
+            horizontal_pane, text="Configuración", padding=(5, 5))
         form_frame.columnconfigure(1, weight=1)
         form_frame.columnconfigure(1, weight=1)
         horizontal_pane.add(form_frame, weight=1)
         horizontal_pane.add(form_frame, weight=1)
-        console_frame = ttk.Labelframe(horizontal_pane, text="Console")
+
+        console_frame = ttk.Labelframe(
+            horizontal_pane, text="Consola", padding=(5, 5))
         console_frame.columnconfigure(0, weight=1)
         console_frame.columnconfigure(0, weight=1)
         console_frame.rowconfigure(0, weight=1)
         console_frame.rowconfigure(0, weight=1)
+
         horizontal_pane.add(console_frame, weight=1)
         horizontal_pane.add(console_frame, weight=1)
-        third_frame = ttk.Labelframe(vertical_pane, text="Estado")
-        vertical_pane.add(third_frame, weight=1)
+        third_frame = ttk.Labelframe(
+            vertical_pane, text="Estado", padding=(5, 5))
+        vertical_pane.add(third_frame, weight=0)
         # Initialize all frames
         # Initialize all frames
         self.form = FormUi(form_frame, pbqueue)
         self.form = FormUi(form_frame, pbqueue)
         self.console = ConsoleUi(console_frame)
         self.console = ConsoleUi(console_frame)
-        self.third = ThirdUi(third_frame, pbqueue)
+        self.third = StatusUi(third_frame, pbqueue)
         self.root.protocol('WM_DELETE_WINDOW', self.quit)
         self.root.protocol('WM_DELETE_WINDOW', self.quit)
         self.root.bind('<Control-q>', self.quit)
         self.root.bind('<Control-q>', self.quit)
         signal.signal(signal.SIGINT, self.quit)
         signal.signal(signal.SIGINT, self.quit)
 
 
+        print(root.geometry())
+
     def quit(self, *args):
     def quit(self, *args):
 
 
         msg = 'Se esta ejecutando un proceso de optimización\n\n¿Desea salir de la aplicación?'
         msg = 'Se esta ejecutando un proceso de optimización\n\n¿Desea salir de la aplicación?'

+ 3 - 11
simsdt/model.py

@@ -30,23 +30,15 @@ from qhandler import QueueHandler
 pyutilib.subprocess.GlobalData.DEFINE_SIGNAL_HANDLERS_DEFAULT = False
 pyutilib.subprocess.GlobalData.DEFINE_SIGNAL_HANDLERS_DEFAULT = False
 
 
 
 
-# log_queue = queue.Queue()
-# qh = QueueHandler(log_queue)
-# formatter = logging.Formatter(
-#     '%(asctime)s: %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
-# qh.setFormatter(formatter)
-
 fh = RotatingFileHandler(
 fh = RotatingFileHandler(
     'log/simsdt_model_monitor.log', maxBytes=10240, backupCount=10)
     'log/simsdt_model_monitor.log', maxBytes=10240, backupCount=10)
 fmt = logging.Formatter(
 fmt = logging.Formatter(
     '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
     '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
 fh.setFormatter(fmt)
 fh.setFormatter(fmt)
-# ch = logging.StreamHandler()
-# ch.setFormatter(fmt)
 
 
-# logging.basicConfig(handlers=[fh, ch, qh], level=logging.INFO)
-model_logger = logging.getLogger('simsdt.model')
-# model_logger.addHandler(qh)
+
+model_logger = logging.getLogger('simsdt.gui.model')
+
 model_logger.addHandler(fh)
 model_logger.addHandler(fh)
 
 
 
 

+ 1 - 8
simsdt/runsdt.py

@@ -12,11 +12,6 @@ import sys
 from simsdt.model import ModeloSubasta
 from simsdt.model import ModeloSubasta
 from qhandler import QueueHandler
 from qhandler import QueueHandler
 
 
-# log_queue = queue.Queue()
-# qh = QueueHandler(log_queue)
-# formatter = logging.Formatter(
-#     '%(asctime)s: %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
-# qh.setFormatter(formatter)
 
 
 fh = RotatingFileHandler(
 fh = RotatingFileHandler(
     'log/simsdt_run_monitor.log', maxBytes=1024*50, backupCount=10)
     'log/simsdt_run_monitor.log', maxBytes=1024*50, backupCount=10)
@@ -26,11 +21,9 @@ fh.setFormatter(fmt)
 ch = logging.StreamHandler()
 ch = logging.StreamHandler()
 ch.setFormatter(fmt)
 ch.setFormatter(fmt)
 
 
-run_logger = logging.getLogger('simsdt.run')
+run_logger = logging.getLogger('simsdt.gui.run')
 run_logger.setLevel(logging.INFO)
 run_logger.setLevel(logging.INFO)
 run_logger.addHandler(fh)
 run_logger.addHandler(fh)
-# run_logger.addHandler(qh)
-# run_logger.addHandler(ch)
 
 
 
 
 def main(file, solver_path='', q=None):
 def main(file, solver_path='', q=None):