coriolis/bootstrap/builder/ProjectWidgets.py

85 lines
3.4 KiB
Python

# -*- mode:Python -*-
#
# This file is part of the Coriolis Software.
# Copyright (c) Sorbonne Université 2012-2021, All Rights Reserved
#
# +-----------------------------------------------------------------+
# | C O R I O L I S |
# | T o o l c h a i n B u i l d e r |
# | |
# | Author : Jean-Paul Chaput |
# | E-mail : Jean-Paul.Chaput@lip6.fr |
# | =============================================================== |
# | Python : "./builder/ProjectWidget.py" |
# +-----------------------------------------------------------------+
import string
from PyQt4.QtCore import Qt, QObject, QSettings
from PyQt4.QtGui import QSizePolicy, QFrame, QPushButton, QCheckBox, \
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( bool(settings.value(toolId)) )
return
def saveToSettings ( self ):
settings = QSettings()
for toolCb in self._toolsCheckBoxes:
toolId = 'tools/'+self._project.getName()+'/'+toolCb.text()
settings.setValue( toolId, toolCb.isChecked() )
return