95 lines
3.3 KiB
Python
95 lines
3.3 KiB
Python
|
|
# -*- 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
|