Browse Source

implement check Excel file and clean log console

oscarleiva 5 years ago
parent
commit
ddefd3edc7
1 changed files with 36 additions and 10 deletions
  1. 36 10
      main.py

+ 36 - 10
main.py

@@ -14,6 +14,7 @@ from PIL import Image, ImageTk
 from common import log
 from qhandler import QueueHandler
 from simsdt import runsdt
+from simsdt.utils.excel_checker import check_excel_file
 
 main_logger = logging.getLogger("simsdt.gui")
 
@@ -47,9 +48,17 @@ class ConsoleUi:
 
     def __init__(self, frame):
         self.frame = frame
+
+        trash_icon = Image.open('img/icons/icons8-eliminar-16.png')
+        self.trash_icon = ImageTk.PhotoImage(trash_icon)
         # Create a ScrolledText wdiget
         self.scrolled_text = ScrolledText(frame, state='disabled', height=25)
         self.scrolled_text.grid(row=0, column=0, sticky=(N, S, W, E))
+        self.clear = ttk.Button(frame, text='Limpiar Log',
+                                command=self.clear_console,
+                                image=self.trash_icon,
+                                compoun='right')
+        self.clear.grid(row=1, column=0, sticky=E, pady=(5, 5))
         # Font config
         self.scrolled_text.configure(font='TkFixedFont')
         self.scrolled_text.tag_config('INFO', foreground='black')
@@ -88,6 +97,11 @@ class ConsoleUi:
                 self.display(record)
         self.frame.after(100, self.poll_log_queue)
 
+    def clear_console(self):
+        self.scrolled_text.configure(state='normal')
+        self.scrolled_text.delete(1.0, tk.END)
+        self.scrolled_text.configure(state='disabled')
+
 
 class FormUi:
 
@@ -96,16 +110,22 @@ class FormUi:
     def __init__(self, frame, q):
         self.frame = frame
         self.q = q
-        image = Image.open('img/play.png')
+        image = Image.open('img/icons/icons8-play-16.png')
         self.photo = ImageTk.PhotoImage(image)
 
+        opfile = Image.open('img/icons/icons8-abrir-carpeta-16.png')
+        self.opfile = ImageTk.PhotoImage(opfile)
+
         # Add a text field for file path
         self.file_path = tk.StringVar()
-        ttk.Label(self.frame, text='Archivo:').grid(column=0, row=0, sticky=W)
-        ttk.Entry(self.frame, textvariable=self.file_path,
-                  width=50).grid(column=1, row=0, sticky=(W, E), pady=(5, 5))
+        ttk.Label(self.frame, text='Archivo:').grid(
+            column=0, row=0, sticky=W, pady=(5, 5), padx=(0, 10))
+        self.entry = ttk.Entry(self.frame, textvariable=self.file_path,
+                               width=50)
+        self.entry.grid(column=1, row=0, sticky=(W, E), pady=(5, 5))
         self.button = ttk.Button(
-            self.frame, text='...', command=self.open_file_dialog, width=3)
+            self.frame, image=self.opfile, compound='center',
+            command=self.open_file_dialog, width=3)
         self.button.grid(column=2, row=0, sticky=W)
         self.button_run = ttk.Button(self.frame, image=self.photo,
                                      compound="right", text='Ejecutar',
@@ -114,11 +134,17 @@ class FormUi:
 
     def open_file_dialog(self):
         # Open file dialog
-        file = filedialog.askopenfilename(
-            filetypes=[('Excel', '.xlsx')],
-            title='Seleccione un archivo de subasta...')
-        main_logger.info(f'Archivo seleccionado: {file}')
-        self.file_path.set(file)
+        try:
+            file = filedialog.askopenfilename(
+                filetypes=[('Excel', '.xlsx')],
+                title='Seleccione un archivo de subasta...')
+            check_excel_file(file)
+        except Exception as e:
+            main_logger.error(e)
+            self.file_path.set('')
+        else:
+            main_logger.info(f'Archivo seleccionado: {file}')
+            self.file_path.set(file)
 
     def run(self):
         if not self.file_path.get():