# -*- mode:Python -*- # # This file is part of the Coriolis Software. # Copyright (c) UPMC/LIP6 2012-2018, All Rights Reserved # # +-----------------------------------------------------------------+ # | C O R I O L I S | # | C o r i o l i s / C h a m s B u i l d e r | # | | # | Author : Jean-Paul Chaput | # | E-mail : Jean-Paul.Chaput@asim.lip6.fr | # | =============================================================== | # | Python : "./builder/ProjectWidget.py" | # +-----------------------------------------------------------------+ import string from PyQt4.QtCore import Qt from PyQt4.QtCore import QObject from PyQt4.QtCore import QSettings from PyQt4.QtGui import QSizePolicy from PyQt4.QtGui import QFrame from PyQt4.QtGui import QPushButton from PyQt4.QtGui import QCheckBox from PyQt4.QtGui import QLabel class ProjectWidgets ( QObject ): def __init__ ( self, project ): self._project = project self._projectButton = QLabel( string.capwords(self._project.getName()) ) self._projectButton.setStyleSheet( 'font-weight: bold;' ) self._projectButton.setFrameShape( QFrame.Box ) self._projectButton.setSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) self._toolsCheckBoxes = [] for tool in self._project.getTools(): self._toolsCheckBoxes += [ QCheckBox( tool.name ) ] #self._projectButton.clicked.connect( self.toggleToolsVisibility ) return def _getProjectButton ( self ): return self._projectButton def _getToolsCheckBoxes ( self ): return self._toolsCheckBoxes def _getActives ( self ): actives = [] for toolCb in self._toolsCheckBoxes: if toolCb.isChecked(): actives += [ str(toolCb.text()) ] return actives projectButton = property( _getProjectButton ) toolsCheckBoxes = property( _getToolsCheckBoxes ) actives = property( _getActives ) def addToLayout( self, column, layout ): toolsNb = len(self._toolsCheckBoxes) if toolsNb <= 10: layout.addWidget( self._projectButton, 0, column, Qt.AlignLeft ) for row in range(toolsNb): layout.addWidget( self._toolsCheckBoxes[row], row+1, column, Qt.AlignTop ) return 1 columnSpan = toolsNb / 10 if toolsNb % 10: columnSpan += 1 layout.addWidget( self._projectButton, 0, column, 1, columnSpan, Qt.AlignJustify ) for row in range(toolsNb): if row and row % 10 == 0: column += 1 layout.addWidget( self._toolsCheckBoxes[row], row%10+1, column, Qt.AlignTop ) return columnSpan #def toggleToolsVisibility ( self ): # self._visibleTools = not self._visibleTools # for toolCb in self._toolsCheckBoxes: # toolCb.setVisible( self._visibleTools ) # return def readFromSettings ( self ): settings = QSettings() for toolCb in self._toolsCheckBoxes: toolId = 'tools/'+self._project.getName()+'/'+toolCb.text() toolCb.setChecked( settings.value(toolId).toBool() ) return def saveToSettings ( self ): settings = QSettings() for toolCb in self._toolsCheckBoxes: toolId = 'tools/'+self._project.getName()+'/'+toolCb.text() settings.setValue( toolId, toolCb.isChecked() ) return