#!/usr/bin/env python # -*- coding: utf-8 -*- #==================================== # qdocpy.py - muestra información de los módulos de python #------------------------------------------------------------------------------------- # FJA - fja@neocipres.com Noviembre de 2014 #==================================== import sys from apihelper1 import help from PyQt4 import QtCore, QtGui from ui_qdocpy import Ui_MainWindow class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.modulo = "" self.compTexto = 0 self.listaM = [] self.listaItem = QtGui.QListWidget(self.ui.lVModulos) QtCore.QObject.connect(self.ui.pBSalir, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("close()")) QtCore.QObject.connect(self.ui.pBaceptar, QtCore.SIGNAL("clicked()"), self.pBaceptar_clicked) QtCore.QObject.connect(self.ui.cBCollapse, QtCore.SIGNAL("clicked()"), self.cBCollapse_clicked) QtCore.QObject.connect(self.ui.lEModulo, QtCore.SIGNAL("returnPressed()"), self.lEModulo_returnPressed) self.listaItem.clicked.connect(self.ItemClicked) @QtCore.pyqtSlot() def on_actionSalir_triggered(self): self.close() @QtCore.pyqtSlot() def on_actionAcerca_de_Qt_triggered(self): QtGui.QMessageBox.aboutQt(self, "Acerca de Qt") @QtCore.pyqtSlot() def on_actionAcerca_de_triggered(self): nomAp = QtCore.QString(self.tr("<p><b><BIG><BIG>qdocpy</BIG></BIG></b></p>")) desAp1 =QtCore.QString(self.tr(u"<p><b>Información sobre los módulos de python</b></p>")) desAp2 = QtCore.QString(self.tr("<p></p>")) autor = QtCore.QString(self.tr("<p><b>FJA</b> - fja@neocipres.com</p>")) version = QtCore.QString(self.tr(u"<p>Versión: 0.9.7</p>")) modificado = QtCore.QString(self.tr("<p>Noviembre de 2014 - Modificado el 2 de Dic/2014</p>")) licencia = QtCore.QString(self.tr(u"<p>Distribuido de acuerdo a los términos de la <a href= http://www.viti.es/gnu/licenses/gpl.html>licencia GNU/GPL</a></p>")) gnu = QtCore.QString(self.tr("<p><a href= http://www.gnu.org/home.es.html>Proyecto GNU</a></p>")) #otro =QtCore.QString(self.tr("<p><em> </em> </p>")) rep = lambda p: p[0]*p[1] separador = QtCore.QString(self.tr("<p><b>"+rep((80,"-"))+"</b></p>")) QtGui.QMessageBox.about(self ," Acerca de ...", nomAp+desAp1+desAp2+separador+autor+modificado+separador+version+licencia+gnu) @QtCore.pyqtSlot(QtGui.QListWidgetItem) def ItemClicked(self, index): self.modulo = index.data().toString() self.imprimeHoja() def imprimeHoja(self): self.ui.tEHoja.clear() self.ui.tEHoja.append(u"=============== Módulo: " + str(self.modulo)+" ===============\n\n") try: m = __import__( str(self.modulo) ) texto = help(m, collapse = self.compTexto, imprime = 0) for bloque in texto: self.ui.tEHoja.append(bloque) except: newItem = 0 self.ui.tEHoja.append("\n\t Error: "+ str( sys.exc_info() [0] )+ "\n") else: newItem = 1 self.statusBar().showMessage(u" > Información sobre el módulo: "+str(self.modulo), 5000) return newItem def pBaceptar_clicked(self): self.modulo = self.ui.lEModulo.text() nuevo = self.imprimeHoja() estaM = 0 if nuevo: for elemento in self.listaM: if elemento == self.modulo: estaM = 1 break if not estaM and nuevo: self.listaM.append(self.modulo) self.listaItem.addItem(self.modulo) def cBCollapse_clicked(self): if self.ui.cBCollapse.isChecked(): self.compTexto = 1 else: self.compTexto = 0 def lEModulo_returnPressed(self): self.pBaceptar_clicked() def closeEvent(self, e): try: self.listaM.sort() dirH = QtCore.QDir.homePath() # lo mismo con: os.path.expanduser('~'), expandirá el nombre del directorio HOME del usuario actual. f = open(str(dirH)+'/.modpy', 'w') for linea in self.listaM: f.write(str(linea)+"\n") f.close() except IOError, detalle: self.statusBar().showMessage(u" Error: " + str(detalle)) else: e.accept() def showEvent(self, e): noI = e.spontaneous() if not noI: try: dirH = QtCore.QDir.homePath() f = open(str(dirH)+'/.modpy') linea = "" for linea in f.readlines(): if linea: linea = linea.rstrip('\n') self.listaM.append(linea) self.listaItem.addItem(linea) f.close() except IOError, detalle: self.statusBar().showMessage(u" Error: " + str(detalle), 5000) except: self.statusBar().show.Message(u"\n\t Error: "+ str( sys.exc_info() [0] )+ "\n", 5000) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) ficha = MainWindow() ficha.show() sys.exit(app.exec_())