CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
Vispa.Main.SplitterTab.SplitterToolBar Class Reference
Inheritance diagram for Vispa.Main.SplitterTab.SplitterToolBar:

Public Member Functions

def __init__ (self, parent=None)
 
def addSection (self, alignment=None)
 
def addWidgetToSection (self, widget, section)
 
def setSectionSizes (self, sizes)
 
def showEvent (self, event)
 
def takeToolBoxContainerButtons (self, toolBox, section)
 

Private Member Functions

def _createSpacer (self, width=0)
 

Private Attributes

 _sections
 
 _sizes
 

Detailed Description

A vertical toolbar which can be split up in sections.

The toolbar can be placed in the verticalSplitter() of the SplitterTab
to separate two parts. The toolbar can hold buttons to control its
neighboring views.

Definition at line 107 of file SplitterTab.py.

Constructor & Destructor Documentation

def Vispa.Main.SplitterTab.SplitterToolBar.__init__ (   self,
  parent = None 
)

Definition at line 119 of file SplitterTab.py.

119  def __init__(self, parent=None):
120  self._sections = []
121  self._sizes = None
122  QToolBar.__init__(self, parent)
123  self.layout().setSpacing(0)
124 

Member Function Documentation

def Vispa.Main.SplitterTab.SplitterToolBar._createSpacer (   self,
  width = 0 
)
private

Definition at line 125 of file SplitterTab.py.

Referenced by Vispa.Main.SplitterTab.SplitterToolBar.addSection().

125  def _createSpacer(self, width=0):
126  spacer = QWidget(self)
127  spacer.setFixedSize(width, self.iconSize().height())
128  return spacer
129 
def Vispa.Main.SplitterTab.SplitterToolBar.addSection (   self,
  alignment = None 
)

Definition at line 130 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar._createSpacer(), Vispa.Main.SplitterTab.SplitterToolBar._sections, Vispa.Main.SplitterTab.SplitterToolBar._sizes, Vispa.Gui.Header.FrameWithHeader.addWidget(), Vispa.Gui.ToolBoxContainer.ToolBoxContainer.addWidget(), Vispa.Views.WidgetView.WidgetView.addWidget(), and Vispa.Main.SplitterTab.SplitterToolBar.setSectionSizes().

130  def addSection(self, alignment=None):
131  if alignment == None:
132  alignment = self.ALIGNMENT_CENTER
133 
134  leftSpacer = self._createSpacer()
135  rightSpacer = self._createSpacer()
136  contentList = []
137  leftSpacerAction = self.addWidget(leftSpacer)
138  rightSpacerAction = self.addWidget(rightSpacer)
139  section = {"leftSpacer": leftSpacer, "leftSpacerAction": leftSpacerAction,
140  "contentList": contentList,
141  "rightSpacer": rightSpacer, "rightSpacerAction": rightSpacerAction,
142  "alignment": alignment}
143 
144  self._sections.append(section)
145  if self._sizes:
146  self.setSectionSizes(self._sizes)
147  return len(self._sections) - 1
148 
def addSection(self, alignment=None)
Definition: SplitterTab.py:130
def Vispa.Main.SplitterTab.SplitterToolBar.addWidgetToSection (   self,
  widget,
  section 
)

Definition at line 149 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar._sections, Vispa.Main.SplitterTab.SplitterToolBar._sizes, mps_setup.append, and Vispa.Main.SplitterTab.SplitterToolBar.setSectionSizes().

Referenced by Vispa.Main.SplitterTab.SplitterToolBar.takeToolBoxContainerButtons().

149  def addWidgetToSection(self, widget, section):
150  if section > len(self._sections) - 1:
151  logging.error(self.__class__.__name__ +": addWidgetToSection() - Unknown section number %d. Aborting..." % section)
152  return
153 
154  widget.show()
155  self._sections[section]["contentList"].append(widget)
156  self.insertWidget(self._sections[section]["rightSpacerAction"], widget)
157  # TODO: implement remove function
158  if self._sizes:
159  self.setSectionSizes(self._sizes)
160 
def addWidgetToSection(self, widget, section)
Definition: SplitterTab.py:149
def Vispa.Main.SplitterTab.SplitterToolBar.setSectionSizes (   self,
  sizes 
)
sizes is list of widths for section spacers.

Definition at line 161 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar._sections, Vispa.Main.SplitterTab.SplitterToolBar._sizes, PhysicsTools::MLP.layout, ProcMLP.layout, SiStripPI.max, and min().

Referenced by Vispa.Main.SplitterTab.SplitterToolBar.addSection(), Vispa.Main.SplitterTab.SplitterToolBar.addWidgetToSection(), and Vispa.Main.SplitterTab.SplitterToolBar.showEvent().

161  def setSectionSizes(self, sizes):
162  """ sizes is list of widths for section spacers.
163  """
164  self._sizes = sizes # try to fix design, need to find better solution
165  for i in range(min(len(self._sections), len(sizes))):
166  section = self._sections[i]
167  contentsWidth = 0
168  for content in section["contentList"]:
169  contentsWidth += content.width() + self.layout().spacing() + 1
170  if section["alignment"] == self.ALIGNMENT_LEFT:
171  rightWidth = sizes[i] - contentsWidth
172  leftWidth = 0
173  elif section["alignment"] == self.ALIGNMENT_RIGHT:
174  contentsWidth += self.layout().spacing() * 2
175  rightWidth = 0
176  leftWidth = sizes[i] - contentsWidth
177  else:
178  # Default is ALIGNMENT_CENTER
179  leftWidth = 0.5 * (sizes[i] - contentsWidth)
180  rightWidth = leftWidth
181  section["leftSpacer"].setFixedSize(max(0, leftWidth), self.iconSize().height())
182  section["rightSpacer"].setFixedSize(max(0, rightWidth), self.iconSize().height())
183 
T min(T a, T b)
Definition: MathUtil.h:58
def Vispa.Main.SplitterTab.SplitterToolBar.showEvent (   self,
  event 
)

Definition at line 188 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar._sizes, and Vispa.Main.SplitterTab.SplitterToolBar.setSectionSizes().

188  def showEvent(self, event):
189  QToolBar.showEvent(self, event)
190  if self._sizes:
def Vispa.Main.SplitterTab.SplitterToolBar.takeToolBoxContainerButtons (   self,
  toolBox,
  section 
)

Definition at line 184 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar.addWidgetToSection().

184  def takeToolBoxContainerButtons(self, toolBox, section):
185  for button in toolBox.toggleButtons():
186  self.addWidgetToSection(button, section)
187 
def addWidgetToSection(self, widget, section)
Definition: SplitterTab.py:149
def takeToolBoxContainerButtons(self, toolBox, section)
Definition: SplitterTab.py:184

Member Data Documentation