pilas.widget_log

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