CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes
Vispa.Main.SplitterTab.SplitterToolBar Class Reference
Inheritance diagram for Vispa.Main.SplitterTab.SplitterToolBar:

Public Member Functions

def __init__
 
def addSection
 
def addWidgetToSection
 
def setSectionSizes
 
def showEvent
 
def takeToolBoxContainerButtons
 

Static Public Attributes

int ALIGNMENT_CENTER = 1
 
int ALIGNMENT_LEFT = 0
 
int ALIGNMENT_RIGHT = 2
 

Private Member Functions

def _createSpacer
 

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 106 of file SplitterTab.py.

Constructor & Destructor Documentation

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

Definition at line 118 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)

Member Function Documentation

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

Definition at line 124 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
def Vispa.Main.SplitterTab.SplitterToolBar.addSection (   self,
  alignment = None 
)

Definition at line 129 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(), Vispa.Main.SplitterTab.SplitterToolBar.ALIGNMENT_CENTER, 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
def Vispa.Main.SplitterTab.SplitterToolBar.addWidgetToSection (   self,
  widget,
  section 
)

Definition at line 148 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar._sections, Vispa.Main.SplitterTab.SplitterToolBar._sizes, python.multivaluedict.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)
def Vispa.Main.SplitterTab.SplitterToolBar.setSectionSizes (   self,
  sizes 
)
sizes is list of widths for section spacers.

Definition at line 160 of file SplitterTab.py.

References Vispa.Main.SplitterTab.SplitterToolBar._sections, Vispa.Main.SplitterTab.SplitterToolBar._sizes, Vispa.Main.SplitterTab.SplitterToolBar.ALIGNMENT_LEFT, Vispa.Main.SplitterTab.SplitterToolBar.ALIGNMENT_RIGHT, PhysicsTools::MLP.layout, ProcMLP.layout, 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())
#define min(a, b)
Definition: mlp_lapack.h:161
const T & max(const T &a, const T &b)
def Vispa.Main.SplitterTab.SplitterToolBar.showEvent (   self,
  event 
)

Definition at line 187 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:
self.setSectionSizes(self._sizes)
def Vispa.Main.SplitterTab.SplitterToolBar.takeToolBoxContainerButtons (   self,
  toolBox,
  section 
)

Definition at line 183 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)

Member Data Documentation

Vispa.Main.SplitterTab.SplitterToolBar._sections
private

Definition at line 119 of file SplitterTab.py.

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

Vispa.Main.SplitterTab.SplitterToolBar._sizes
private

Definition at line 120 of file SplitterTab.py.

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

int Vispa.Main.SplitterTab.SplitterToolBar.ALIGNMENT_CENTER = 1
static

Definition at line 115 of file SplitterTab.py.

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

int Vispa.Main.SplitterTab.SplitterToolBar.ALIGNMENT_LEFT = 0
static

Definition at line 114 of file SplitterTab.py.

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

int Vispa.Main.SplitterTab.SplitterToolBar.ALIGNMENT_RIGHT = 2
static

Definition at line 116 of file SplitterTab.py.

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