예제 #1
0
    def __init__(self, pestannas, idioma):
        """
        Constructor de la clase MediadorPestannas se encargara de inicializar los objetos 
        pasados al constructor y tambien de inicializar las variables y objetos necesarios 
        en el constructor.
        
        @param pestannas: Instancia de la clase que la crea. 
        """
        self.idioma = idioma
        self.pestannas = pestannas
        if self.idioma == "ESP":
            self.dic = Diccionario()
        else:
            self.dic = DiccionarioING()

        self.fachada_botones_and_layaout = FachadaBotonesAndLayaout(
            self.pestannas, self.dic)

        #         self.estad = Estadistica()
        #         self.escribeCSV = DatosToCsv()
        #         self.escribeXML = ConfiguracionToXML()
        self.borrar = False

        self.fachada_entrada_salida = FachadaEntradaSalida(self, self.idioma)
        self.inicializa_msg()
예제 #2
0
    def __init__(self, parent=None):
        """
        Constructor de la clase panel de pestannas que comtendra el panel de 
        pestannas e inicializara luego los compoenentes necesarios tanto 
        la intancia del padre que lo contine para poder comunicarse con el.
        
        @param parent: padre que llama al panel de pestannas 
        """
        #------Creamos los componentes -------------------------
        super(PanelDePestannas, self).__init__(parent)
        self.ventana = parent
        self.idioma = self.ventana.idioma

        self.mediador_pestannas = MediadorPestannas(self, self.idioma)

        self.inicia_paneles()
        self.tab_1_ui()
        self.tab_2_ui()

        if self.idioma == "ESP":
            self.dic = Diccionario()
        else:
            self.dic = DiccionarioING()

        self.row_actual = -1
        self.nombres = {}
        self.nombres[self.dic.docu1] = self.dic.tab
        self.nombres[self.dic.docu2] = self.dic.sal_estad
        self.nombres[self.dic.docu3] = self.dic.sal_lin
        self.nombres[self.dic.docu4] = self.dic.origi
        self.nombres[self.dic.docu5] = self.dic.pintada
예제 #3
0
    def __init__(self, ventana, idioma):
        """
        Constructor de la clase ventana que nos proporciona las inicializaciones de
        variables y de objetos que vana a ser encesarios para su gestion e implementacion
        de los metodos que va a contener la ventana.
        
        @param ventana: instancia de la clase que crea la ventana.
        """

        self.idioma = idioma
        if self.idioma == "ESP":
            self.dic = Diccionario()
        else:
            self.dic = DiccionarioING()
        self.ventana = ventana
        self.ventana.ax = self.ventana.fig.add_subplot(111)
        self.procesado = ProcesadoDeImagen()
        self.procesado_de_lineas = ProcesadoDeLineas()
        self.img = self.procesado.leer_imagen(self.ventana.path)
        self.ventana.ax = self.ventana.fig.add_subplot(111)
        self.ventana.ax.set_xlim([0, self.img.shape[1]])
        self.ventana.ax.set_ylim([self.img.shape[0], 0])
        self.ventana.ax.imshow(self.img, interpolation=self.dic.md_v_ori)
        if os.name == 'nt':
            self.ref_numeros = self.procesado.obtener_numeros(self.img)
        else:
            self.ref_numeros = 100
        self.color = []
        self.ventana.pestannas.button.setEnabled(False)
        self.ventana.pestannas.button_fijar.setEnabled(False)

        self.terminar = False
        self.detectado = True
        self.automatic_mode = ProcesadoAutomatico()
    def leer_imagen(self, path_img):
        """
        Metodo Para leer una imagen a traves de scikit-Image (skimage)
        dandole el path de la imagen.
        @param path_img: camino hasta la imagen.
        @retrun Img: imagen leida.
        """
        self.dic = Diccionario()
        img = io.imread(path_img.replace('\\', '/'))

        return gray2rgb(img)
예제 #5
0
 def __init__(self, mediador, idioma):
     """
     Constructor de la clase FachadaEntradaSalida que inicializa y prepara todos
     los objetos que tendremos que usar mas adelante en la clase.
     """
     self.idioma = idioma
     self.mediador = mediador
     self.escribeCSV = DatosToCsv()
     if self.idioma == "ESP":
         self.dic = Diccionario()
     else:
         self.dic = DiccionarioING()
     self.conf_to_xml = ConfiguracionToXML()
     self.estad = Estadistica()
예제 #6
0
 def __init__(self, variables, dir_to_guardar):
     """
     Constructor de la clase de los informes. que se encargara de inicializar 
     las variables necesarias.
     
     @param variables: valores a sustituir en la plantilla 
     @param dir_to_guardar: direccion donde guardar la tabal latex generada.
 
     """
     self.dir_to_guardar = dir_to_guardar.replace('\\', '/')
     self.dir_to_guardar += '/'
     self.variables = variables
     self.path = os.getcwd()
     self.path += '\\'
     self.dic = Diccionario()
     template = self.cargar_plantilla()
     self.sustituir(self.variables, template)
예제 #7
0
 def guardar(self, path, nombres, repe, lon, dire, cuadrado):
     """
     Metodo que generara el xml de configuracion con los nombres de los generables.
     
     @param path: ruta donde guardar el fichero de configuracion.
     """
     self.dic = Diccionario()
     proyect = ET.Element(self.dic.proyec)
     ET.SubElement(proyect,
                   self.dic.docu,
                   repeti=str(repe),
                   long=str(lon),
                   direccion=str(dire),
                   xmin=str(cuadrado[1]),
                   ymin=str(cuadrado[3]))
     ET.SubElement(proyect,
                   self.dic.docu1,
                   name=self.dic.tex,
                   path=nombres[self.dic.docu1])
     ET.SubElement(proyect,
                   self.dic.docu2,
                   name=self.dic.csv,
                   path=nombres[self.dic.docu2])
     ET.SubElement(proyect,
                   self.dic.docu3,
                   name=self.dic.csv,
                   path=nombres[self.dic.docu3])
     ET.SubElement(proyect,
                   self.dic.docu4,
                   name=self.dic.jpg1,
                   path=nombres[self.dic.docu4])
     ET.SubElement(proyect,
                   self.dic.docu5,
                   name=self.dic.jpg2,
                   path=nombres[self.dic.docu5])
     tree = ET.ElementTree(proyect)
     tree.write(path + self.dic.pro_xml,
                encoding=self.dic.utf,
                xml_declaration=True)
예제 #8
0
    def leer_xml(self, path):
        """
        Metodo que sirve para leer un documento xml de configuracion y abrir un 
        proyecto existente precargarndo lso resultados anteriores.

        @param path: ruta donde leer el fichero de configuracion.
        """
        self.dic = Diccionario()
        tree = ET2.parse(path + self.dic.pro_xml)
        root = tree.getroot()
        dicion = {}
        i = 0
        for child in root:
            if i == 0:
                repe = child.attrib[self.dic.repeti]
                long = child.attrib[self.dic.long]
                dire = child.attrib[self.dic.direccion]
                xmin = child.attrib[self.dic.xmin]
                ymin = child.attrib[self.dic.ymin]
                i = i + 1
            else:
                dicion[child.tag] = child.attrib[self.dic.path]
        return dicion, repe, long, dire, xmin, ymin
예제 #9
0
    def guardar(self, path, lista):
        """
        Metodo que permitira generar los scv de datos de las lineas uno con sus estadisticos 
        y otro con la longitud y el angulo de cada recta o segmento.
        
        @param path: Camino donde guardar los ficheros generados.
        
        @param lista:
                    v: lista de lineas en vertical.
                    h: lista de lineas en horizontal.
                    md: lista de lineas en diagonal md.
                    dm: lista de lineas en diagonal dm.
                    st_v: estadisticas de lineas en vertical.
                    st_h: estadisticas de lineas en horizontal.
                    st_md: estadisticas de lineas en diagonal md.
                    st_dm: estadisticas de lineas en diagonal dm.
                    st_tot: estadisticas totales de lineas.
        """
        
        self.dic=Diccionario()

        csvsalida_lin = open(path.replace('\\', '/') + self.dic.sal_lin, 'w', newline='')
        salida = csv.writer(csvsalida_lin, escapechar=' ', quoting=csv.QUOTE_NONE, delimiter=';')
        salida.writerow(self.dic.cabecera_csv_lineas)  
        if len(lista[0]) > 0:
            salida.writerows(lista[0])
        if len(lista[1]) > 0:
            salida.writerows(lista[1])        
        if len(lista[2]) > 0:
            salida.writerows(lista[2])
        if len(lista[3]) > 0:
            salida.writerows(lista[3])
        del salida
        csvsalida_lin.close()
        if len(lista[4])>0:
            desv_v=float(lista[4][3])
        else:
            desv_v=0
        if len(lista[5])>0:
            num_h=float(lista[5][1])
            med_h=float(lista[5][2])
            desv_h=float(lista[5][3])
        else:
            num_h,med_h,desv_h=0,0,0
            
        if len(lista[6])>0:
            num_md=float(lista[6][1])
        else:
            num_md=0
            
        if len(lista[7])>0:
            desv_dm=float(lista[7][3])
        else:
            desv_dm=0
            
        if len(lista[8])>0:
            num_tot=float(lista[8][1])
            med_tot=float(lista[8][2])
            desv_tot=float(lista[8][3])
        else:
            num_tot,med_tot,desv_tot=0,0,0
        f1=round((0.11364*num_h)-(0.03017*num_md)-(0.00169*desv_dm)-(0.01485*med_tot)+(0.00958*desv_tot)-(-0.00468*desv_v)+(0.00454*med_h)+(0.00203*num_tot)+0.06819,3)
        f2=round((-0.05361*num_h)+(0.09573*num_md)+(0.00730*desv_h)-(0.01340*med_tot)-(0.00922*desv_tot)+(0.01098*desv_v)+(0.00061*med_h)+(0.03253*num_tot)-0.42014,3)
        pt1="punto_x"
        pt2="punto_y"
        punto=[]
        punto.extend([pt1,f1,pt2,f2])

        csvsalida_stat = open(path.replace('\\', '/') + self.dic.sal_estad, 'w', newline='')
        salida = csv.writer(csvsalida_stat, escapechar=' ', quoting=csv.QUOTE_NONE, delimiter=';')
        salida.writerow(self.dic.cabecera_csv_estad)
        salida.writerow(lista[4])
        salida.writerow(lista[5])
        salida.writerow(lista[6])
        salida.writerow(lista[7])
        salida.writerow(lista[8])
        salida.writerow(punto)

 
        del salida
        csvsalida_stat.close()
    def __init__(self,idioma_path, parent=None):
        """
        Constructor de la clase ventana de inicio en el cual 
        inicializaremos las variabel snecsarias para sus futuros usos.
        
        @param parent: padre que llama al panel de pestannas 
        """
        super(VentanaInicio, self).__init__(parent)

        self.idioma_path=idioma_path
        self.idioma=self.carga_idioma(self.idioma_path)
        if self.idioma=="ESP":
            self.dic=Diccionario()
        else:
            self.dic=DiccionarioING()        

        self.resize(900, 700)
        logging.basicConfig(filename=self.dic.ini_log,level=logging.DEBUG)
        self.bandera=False
        self.inicializa_mensages()
        self.carga_acerca(self.dic)
        
        self.ventana=None
        self.setWindowTitle(self.dic.nombre_api)
        self.cont_cargar=0
        self.abierto=0
        self.open_file = QtWidgets.QAction(self.dic.ini_nuevo, self)
        self.open_file.setShortcut(self.dic.ini_o_nuevo)
        self.open_file.setStatusTip(self.dic.ini_p_abrir)
        self.open_file.triggered.connect(self.file_open) 
        
        self.cargar_proye = QtWidgets.QAction(self.dic.ini_abrir_pro, self)
        self.cargar_proye.setShortcut(self.dic.ini_o_abrir_pro)
        self.cargar_proye.setStatusTip(self.dic.ini_p_abrir_pro)
        self.cargar_proye.triggered.connect(self.file_cargar) 
        
        self.cerrar_all = QtWidgets.QAction(self.dic.ini_salir, self)
        self.cerrar_all.setShortcut(self.dic.ini_o_salir)
        self.cerrar_all.setStatusTip(self.dic.ini_p_salir)
        self.cerrar_all.triggered.connect(self.cerrar)    

        self.save_file = QtWidgets.QAction(self.dic.ini_guardar, self)
        self.save_file.setShortcut(self.dic.ini_o_guardar)
        self.save_file.setStatusTip(self.dic.ini_p_guardar)
        self.save_file.triggered.connect(self.file_save)
        self.save_file.setDisabled(True)
        
        self.help_f = QtWidgets.QAction(self.dic.ini_acerca, self)
        self.help_f.setShortcut(QtCore.Qt.Key_F2)
        self.help_f.setStatusTip(self.dic.ini_o_ayuda)
        self.help_f.triggered.connect(self.acerca_de)
        
        self.ayuda_f = QtWidgets.QAction(self.dic.ini_ayuda, self)
        self.ayuda_f.setShortcut(QtCore.Qt.Key_F1)
        self.ayuda_f.setStatusTip(self.dic.ini_o_ayuda)
        self.ayuda_f.triggered.connect(self.ayuda)
        self.statusBar()

        self.ingles = QtWidgets.QAction(self.dic.idioma, self)
        self.ingles.triggered.connect(self.guarda_ingles)
        
        self.espa = QtWidgets.QAction(self.dic.idioma_esp, self)
        self.espa.triggered.connect(self.guarda_espannol)
        
        self.help_f = QtWidgets.QAction(self.dic.ini_acerca, self)
        self.help_f.setShortcut(QtCore.Qt.Key_F2)
        self.help_f.setStatusTip(self.dic.ini_o_ayuda)
        self.help_f.triggered.connect(self.acerca_de)


        main_menu = self.menuBar()
        self.file_menu = main_menu.addMenu(self.dic.ini_archivo)
        self.help_menu = main_menu.addMenu(self.dic.ini_ayuda)
        self.conf_menu = main_menu.addMenu(self.dic.idioma_selec)
        
        self.conf_menu.addAction(self.ingles)
        self.conf_menu.addAction(self.espa)
        
        self.help_menu.addAction(self.help_f)
        self.help_menu.addAction(self.ayuda_f)
        
        self.file_menu.addAction(self.open_file)
        self.file_menu.addAction(self.cargar_proye)
        self.file_menu.addAction(self.save_file)
        self.file_menu.addAction(self.cerrar_all)
        
        self.styleChoice = QtWidgets.QLabel(self.dic.ini_msg, self)
        self.styleChoice.setAlignment(QtCore.Qt.AlignCenter)
        self.clickables(self.styleChoice).connect(self.file_open)
        self.styleChoice.setAlignment(QtCore.Qt.AlignCenter)

        self.styleChoice2 = QtWidgets.QLabel(self.dic.ini_msg3, self)
        self.styleChoice2.setAlignment(QtCore.Qt.AlignCenter)
        self.clickables(self.styleChoice2).connect(self.file_cargar)
        self.styleChoice2.setAlignment(QtCore.Qt.AlignCenter)

        self.styleChoice2.setStyleSheet(self.dic.ini_color)
        font = QtGui.QFont(self.dic.ini_time, 35, QtGui.QFont.Bold, True)
        self.styleChoice2.setFont(font)

        self.styleChoice3 = QtWidgets.QLabel(self.dic.ini_msg4, self)
        self.styleChoice3.setAlignment(QtCore.Qt.AlignCenter)
        self.styleChoice3.setAlignment(QtCore.Qt.AlignCenter)

        self.styleChoice3.setStyleSheet(self.dic.ini_color)
        font = QtGui.QFont(self.dic.ini_time, 35, QtGui.QFont.Bold, True)
        self.styleChoice3.setFont(font)
        
        self.styleChoice4 = QtWidgets.QLabel(self.dic.ini_msg2, self)
        self.styleChoice4.setAlignment(QtCore.Qt.AlignCenter)

        self.styleChoice4.setStyleSheet(self.dic.ini_color)
        font = QtGui.QFont(self.dic.ini_time, 35, QtGui.QFont.Bold, True)
        self.styleChoice4.setFont(font)
        self.styleChoice4.setAlignment(QtCore.Qt.AlignCenter)

        laout_principal = QtWidgets.QVBoxLayout()
        laout_principal.addWidget(self.styleChoice)
        laout_principal.addWidget(self.styleChoice4)
        laout_principal.addWidget(self.styleChoice2)
        laout_principal.addWidget(self.styleChoice3)
        
        laout_principal.setAlignment(QtCore.Qt.AlignCenter)

        
        self.styleChoice.setStyleSheet(self.dic.ini_color)
        font = QtGui.QFont(self.dic.ini_time, 35, QtGui.QFont.Bold, True)
        self.styleChoice.setFont(font)
        central_widget = QtWidgets.QWidget()
        central_widget.setLayout(laout_principal)
        self.setCentralWidget(central_widget)