Package pilas :: Module widget_log
[hide private]
[frames] | no frames]

Source Code for Module pilas.widget_log

  1  # -*- encoding: utf-8 -*- 
  2  # pilas engine - a video game framework. 
  3  # 
  4  # copyright 2010 - hugo ruscitti 
  5  # license: lgplv3 (see http://www.gnu.org/licenses/lgpl.html) 
  6  # 
  7  # website - http://www.pilas-engine.com.ar 
  8   
  9  import os 
 10  from PyQt4 import QtGui, QtCore 
 11   
12 -class WidgetLog(QtGui.QMainWindow):
13 """ Representa una ventana de log. 14 Mediante pilas.log.imprimir() añadiremos elementos a esta ventana 15 """
16 - def __init__(self):
17 super(WidgetLog, self).__init__() 18 self._initUI() 19 20 self._ejecutando = True
21
22 - def _initUI(self):
23 24 self.setWindowTitle('Pilas Log') 25 26 self.setWindowIcon(QtGui.QIcon(self._ruta_icono('tux.png'))) 27 28 self.centralwidget = QtGui.QWidget(self) 29 30 accionSalir = QtGui.QAction(QtGui.QIcon(self._ruta_icono('door_out.png')), 'Salir', self) 31 accionSalir.setShortcut('Ctrl+S') 32 accionSalir.triggered.connect(self.close) 33 34 accionEjecutar = QtGui.QAction(QtGui.QIcon(self._ruta_icono('control_play.png')), 'Ejecutar', self) 35 accionEjecutar.setShortcut('Ctrl+E') 36 accionEjecutar.triggered.connect(self._ejecutar) 37 38 accionPausar = QtGui.QAction(QtGui.QIcon(self._ruta_icono('control_pause.png')), 'Pausar', self) 39 accionPausar.setShortcut('Ctrl+P') 40 accionPausar.triggered.connect(self._pausar) 41 42 accionResetear = QtGui.QAction(QtGui.QIcon(self._ruta_icono('arrow_refresh.png')), 'Resetear', self) 43 accionResetear.setShortcut('Ctrl+R') 44 accionResetear.triggered.connect(self._resetear) 45 46 self.toolbar = self.addToolBar('Acciones') 47 self.toolbar.addAction(accionSalir) 48 self.toolbar.addAction(accionEjecutar) 49 self.toolbar.addAction(accionPausar) 50 self.toolbar.addAction(accionResetear) 51 52 hbox = QtGui.QHBoxLayout(self.centralwidget) 53 54 self.treeView = QtGui.QTreeWidget(self.centralwidget) 55 56 self.treeView.setColumnCount(2) 57 58 cabecera = QtCore.QStringList() 59 cabecera.append("Clave") 60 cabecera.append("Valor") 61 62 self.treeView.setHeaderLabels(cabecera) 63 64 hbox.addWidget(self.treeView) 65 66 self.setCentralWidget(self.centralwidget) 67 68 self._ejecutar() 69 70 self.setGeometry(50, 50, 250, 250) 71 self.show()
72
73 - def _ejecutar(self):
74 self._ejecutando = True 75 self.statusBar().showMessage('Ejecutando')
76
77 - def _pausar(self):
78 self._ejecutando = False 79 self.statusBar().showMessage('Pausado')
80
81 - def _resetear(self):
82 self.treeView.clear() 83 self._ejecutar()
84
85 - def _ruta_icono(self, icono):
86 return os.path.join('..', '..', '..', 'data' , 'iconos', icono)
87
88 - def imprimir(self, params):
89 if (self._ejecutando): 90 for elemento in params: 91 self._insertar_elemento(elemento) 92 93 self.treeView.header().setResizeMode(3)
94
95 - def _insertar_elemento(self, elemento, elemento_padre=None):
96 97 if (self._contiene_diccionario(elemento)): 98 if (hasattr(elemento, '__class__')): 99 if (elemento.__class__.__name__ != 'dict'): 100 padre = self._insertar_texto_en_lista(elemento.__class__.__name__, elemento_padre) 101 else: 102 padre = None 103 else: 104 padre = None 105 106 for key, value in self._obtener_diccionario(elemento): 107 if self._contiene_diccionario(value): 108 self._insertar_elemento(value, self._insertar_texto_en_lista(key, padre)) 109 else: 110 self._insertar_diccionario_en_lista(key, value, padre) 111 else: 112 self._insertar_texto_en_lista(str(elemento))
113
114 - def _contiene_diccionario(self, valor):
115 if hasattr(valor, '__dict__'): 116 return True 117 elif type(valor) is dict: 118 return True 119 else: 120 return False
121
122 - def _obtener_diccionario(self, valor):
123 if hasattr(valor, '__dict__'): 124 return valor.__dict__.items() 125 elif type(valor) is dict: 126 return valor.items()
127
128 - def _insertar_texto_en_lista(self, texto, itemPadre=None):
129 if (itemPadre == None): 130 item = QtGui.QTreeWidgetItem(self.treeView) 131 else: 132 item = QtGui.QTreeWidgetItem(itemPadre) 133 item.setText(0, str(texto)) 134 return item
135
136 - def _insertar_diccionario_en_lista(self, clave, valor, itemPadre=None):
137 if (itemPadre == None): 138 item = QtGui.QTreeWidgetItem(self.treeView) 139 else: 140 item = QtGui.QTreeWidgetItem(itemPadre) 141 item.setText(0, clave) 142 item.setText(1, str(valor)) 143 return item
144