Version: 6.3.1
Public Types | Public Slots | Signals | Public Member Functions | Protected Member Functions | Private Slots | Private Member Functions | Private Attributes | Friends

QtxWorkstack Class Reference

Workstack widget. More...

#include <QtxWorkstack.h>

Inheritance diagram for QtxWorkstack:
Inheritance graph

Public Types

enum  {
  SplitVertical = 0x01, SplitHorizontal = 0x02, Close = 0x04, Rename = 0x08,
  All
}
 

Workstack actions (context menu items)

More...
enum  { VersionMarker = 0x01, SplitMarker = 0x02, AreaMarker = 0x04, WidgetMarker = 0x08 }
enum  { Horizontal = 0x01, Visible = 0x02 }
enum  SplitType { SplitStay, SplitAt, SplitMove }
 

Workstack splitting type.

More...

Public Slots

void splitVertical ()
 Split widgets vertically.
void splitHorizontal ()
 Split widgets horizontally.

Signals

void windowActivated (QWidget *)
 Emitted when the workstack's child widget is activated.

Public Member Functions

 QtxWorkstack (QWidget *=0)
 Constructor.
virtual ~QtxWorkstack ()
 Destructor.
QWidgetList windowList (QWidget *=0) const
 Get list of all widgets in all areas or in specified area which given widget belongs to.
QWidgetList splitWindowList () const
 Get all child widgets in the active workarea.
QWidgetactiveWindow () const
 Get active widget.
int accel (const int) const
 Get the action's accelerator key-combination.
void setAccel (const int, const int)
 Set accelerator key-combination for the action with specified id.
QIcon icon (const int) const
 Get icon for the specified action.
void setIcon (const int, const QIcon &)
 Set menu item icon for the specified action.
void setMenuActions (const int)
 Set actions to be visible in the context popup menu.
int menuActions () const
 Set actions to be visible in the context popup menu.
void stack ()
 Group all windows in one area.
void split (const int)
 Split workstack.
bool move (QWidget *wid, QWidget *wid_to, const bool before)
 Moves the first widget to the same area which the second widget belongs to.
QWidgetaddWindow (QWidget *, Qt::WindowFlags=0)
 Add child widget.
QByteArray saveState (int) const
 Dump workstack configuration to the state description array.
bool restoreState (const QByteArray &, int)
 Restore workstack configuration from the state description array.
void setOpaqueResize (bool=true)
 Set resize mode of all splitters opaque or transparent.
bool opaqueResize () const
 Get resize mode of all splitters: opaque (true) or transparent (false).
void Split (QWidget *wid, const Qt::Orientation o, const SplitType type)
 Split workarea of the given widget on two parts.
void Attract (QWidget *wid1, QWidget *wid2, const bool all)
 Move widget(s) from the source workarea into the target workarea or reorder widgets inside one workarea.
void SetRelativePosition (QWidget *wid, const Qt::Orientation o, const double pos)
 Set position of the widget relatively to the entire workstack.
void SetRelativePositionInSplitter (QWidget *wid, const double pos)
 Set position of the widget relatively to its parent splitter.

Protected Member Functions

virtual void customEvent (QEvent *)
 Handle custom events.
QActionaction (const int) const
void saveState (QDataStream &) const
bool restoreState (QDataStream &)

Private Slots

void onRename ()
 Called when user activates "Rename" menu item.
void onCloseWindow ()
 Close active window.
void onDestroyed (QObject *)
 Called when workarea is destroyed.
void onWindowActivated (QWidget *)
 Called on window activating.
void onContextMenuRequested (QWidget *, QPoint)
 Create and show popup menu for workarea.
void onDeactivated (QtxWorkstackArea *)
 Called on window deactivating.

Private Member Functions

QSplittersplitter (QtxWorkstackArea *) const
 Get splitter corresponding to the workarea.
void splitters (QSplitter *, QList< QSplitter * > &, const bool=false) const
 Get list of child splitters.
void areas (QSplitter *, QList< QtxWorkstackArea * > &, const bool=false) const
 Get list of child workareas.
QSplitterwrapSplitter (QtxWorkstackArea *)
 Wrap area into the new splitter.
void insertWidget (QWidget *, QWidget *, QWidget *)
 Reparent and add widget.
QtxWorkstackAreaareaAt (const QPoint &) const
 Get workarea covering point.
QtxWorkstackAreawgArea (QWidget *) const
 Gets area containing given widget.
QtxWorkstackAreatargetArea ()
 Get target area (for which the current operation should be done).
QtxWorkstackAreaactiveArea () const
 Get active workarea.
QtxWorkstackAreacurrentArea () const
 Get current workarea.
void setActiveArea (QtxWorkstackArea *)
 Set active workarea.
QtxWorkstackAreaneighbourArea (QtxWorkstackArea *) const
 Get workarea which is nearest to area.
QtxWorkstackAreacreateArea (QWidget *) const
 Create new workarea.
void updateState ()
 Update internal state.
void updateState (QSplitter *)
 Update splitter state.
void distributeSpace (QSplitter *) const
 Redistribute space among widgets equally.
int setPosition (QWidget *wid, QSplitter *split, const Qt::Orientation o, const int need_pos, const int splitter_pos)
 Set position of the widget.

Private Attributes

QPointer< QWidgetmyWin
 active widget
QPointer< QtxWorkstackAreamyArea
 active workarea
QtxWorkstackSplittermySplit
 tol-level splitter
QPointer< QWidgetmyWorkWin
 widget where popup menu is invoked (used internally)
QPointer< QtxWorkstackAreamyWorkArea
 workarea where popup menu is invoked (used internally)
QMap< int, QAction * > myActionsMap
 actions map

Friends

class QtxWorkstackArea
class QtxWorkstackDrag
class QtxWorkstackAction
class QtxWorkstackSplitter

Detailed Description

Organizes the child widgets in the tabbed space. Allows splitting the working area to arrange the child widgets in arbitrary way. Any widgets can be moved to another working area with drag-n-drop operation.

This widget can be used as workspace of the application main window, for example, as kind of implementation of multi-document interface.


Member Enumeration Documentation

anonymous enum
Enumerator:
SplitVertical 

"Split vertically" menu item

SplitHorizontal 

"Split horizontally" menu item

Close 

"Close" menu item

Rename 

"Rename" menu item

All 

all menu items

anonymous enum
Enumerator:
VersionMarker 
SplitMarker 
AreaMarker 
WidgetMarker 
anonymous enum
Enumerator:
Horizontal 
Visible 
Enumerator:
SplitStay 

selected widget stays in current workarea, others widgets are moved into a new workarea

SplitAt 

all widgets before selected widget stay in current workarea, other widgess are moved into a new workarea

SplitMove 

selected widget is moved into a new workarea, all other widgets stay in an old workarea


Constructor & Destructor Documentation

QtxWorkstack::QtxWorkstack ( QWidget parent = 0)
QtxWorkstack::~QtxWorkstack ( ) [virtual]

Member Function Documentation

QWidgetList QtxWorkstack::windowList ( QWidget wid = 0) const
Parameters:
widwidget specifying area if it is equal to null when widgets of all areas are retuned
Returns:
list of widgets

References areas(), mySplit, and wgArea().

QWidgetList QtxWorkstack::splitWindowList ( ) const
Returns:
list of widgets in active workarea

References myArea.

QWidget * QtxWorkstack::activeWindow ( ) const
Returns:
active widget

References myWin.

int QtxWorkstack::accel ( const int  id) const
Parameters:
idaction ID
Returns:
action accelerator

References myActionsMap.

void QtxWorkstack::setAccel ( const int  id,
const int  accel 
)
Parameters:
idaction ID
accelaction accelerator

References myActionsMap.

QIcon QtxWorkstack::icon ( const int  id) const

If id is invalid, null icon is returned.

Parameters:
idmenu action ID
Returns:
menu item icon

References myActionsMap.

void QtxWorkstack::setIcon ( const int  id,
const QIcon &  icon 
)
Parameters:
idmenu action ID
iconew menu item icon

References myActionsMap.

void QtxWorkstack::setMenuActions ( const int  flags)

Actions, which IDs are set in flags parameter, will be shown in the context popup menu. Other actions will not be shown.

Parameters:
flagsORed together actions flags

References Close, myActionsMap, Rename, SplitHorizontal, and SplitVertical.

int QtxWorkstack::menuActions ( ) const

Actions, which IDs are set in flags parameter, will be shown in the context popup menu. Other actions will not be shown.

Parameters:
flagsORed together actions flags

References Close, myActionsMap, Rename, TestSalomeApp.ret, SplitHorizontal, and SplitVertical.

void QtxWorkstack::stack ( )
Returns:
TRUE if operation is completed successfully, FALSE otherwise

References QtxWorkstackArea.insertWidget(), QtxWorkstackArea.removeWidget(), wgArea(), and windowList().

void QtxWorkstack::split ( const int  o)

Splitting is possible only if there are two or more widgets in the workarea. This function splits current workarea to two new ones.

Parameters:
osplitting orientation (Qt.Orientation)

References activeArea(), QtxWorkstackArea.activeWidget(), areas(), createArea(), distributeSpace(), QtxWorkstackArea.insertWidget(), myWorkArea, QtxWorkstackArea.removeWidget(), splitter(), splitters(), QtxWorkstackArea.widgetList(), and wrapSplitter().

bool QtxWorkstack::move ( QWidget wid,
QWidget wid_to,
const bool  before 
)
Parameters:
widwidget to be moved
wid_towidget specified the destination area
beforespecifies whether the first widget has to be moved before or after the second widget
Returns:
TRUE if operation is completed successfully, FALSE otherwise

References QtxWorkstackArea.insertWidget(), QtxWorkstackArea.removeWidget(), wgArea(), and QtxWorkstackArea.widgetList().

QWidget * QtxWorkstack::addWindow ( QWidget w,
Qt::WindowFlags  f = 0 
)
Parameters:
wwidget
fwidget flags
Returns:
child widget container

References QtxWorkstackArea.insertWidget(), and targetArea().

QByteArray QtxWorkstack::saveState ( int  version) const
Parameters:
versionnumber
Returns:
state byte array.

References VersionMarker.

bool QtxWorkstack::restoreState ( const QByteArray &  state,
int  version 
)
Parameters:
versionnumber
Returns:
restore performing state

References VersionMarker.

void QtxWorkstack::setOpaqueResize ( bool  opaque = true)
Parameters:
opaqueopaque mode

References mySplit, split(), and splitters().

bool QtxWorkstack::opaqueResize ( ) const
Returns:
current opaque mode

References mySplit.

void QtxWorkstack::Split ( QWidget wid,
const Qt::Orientation  o,
const SplitType  type 
)

Splitting is possible only if there are two or more widgets in the workarea. This function splits current workarea to two new ones.

Parameters:
widwidget belonging to the workstack
osplitting orientation type (Qt.Orientation)
typesplitting type (QtxWorkstack.SplitType)

References QtxWorkstackArea.activeWidget(), areas(), createArea(), distributeSpace(), QtxWorkstackArea.insertWidget(), insertWidget(), mySplit, QtxWorkstackArea.removeWidget(), SplitAt, SplitMove, SplitStay, splitter(), splitters(), QtxWorkstackArea.widgetList(), and wrapSplitter().

void QtxWorkstack::Attract ( QWidget wid1,
QWidget wid2,
const bool  all 
)

Move wid2 in target workarea. Put it right after wid1. If all parameter is true, all widgets from source workarea will be moved including wid2 and source workarea will be deleted then.

If wid1 and wid2 belongs to one workarea, widgets will be just reordered in that workarea.

Parameters:
wid1widget from target workarea
wid2widget from source workarea
allif true, all widgets from source workarea will be moved into the target one, else only the wid2 will be moved

References QtxWorkstackArea.activeWidget(), areas(), distributeSpace(), QtxWorkstackArea.insertWidget(), mySplit, QtxWorkstackArea.removeWidget(), QtxWorkstackArea.setActiveWidget(), splitter(), and QtxWorkstackArea.widgetList().

void QtxWorkstack::SetRelativePosition ( QWidget wid,
const Qt::Orientation  o,
const double  position 
)

If o is Qt.Horizontal, the horizontal position of wid will be changed. If o is Qt.Vertical, the vertical position of wid will be changed.

Parameters:
widwidget
oorientation of positioning (Qt.Horizontal or Qt.Vertical)
posposition relatively to the workstack; value in range [0..1]

References Horizontal, mySplit, and setPosition().

void QtxWorkstack::SetRelativePositionInSplitter ( QWidget wid,
const double  position 
)

Orientation of positioning will correspond to the splitter orientation.

Parameters:
widwidget
posposition relatively to the splitter; value in the range [0..1]

References areas(), Horizontal, isFound(), mySplit, setSizes(), split(), and splitter().

void QtxWorkstack::windowActivated ( QWidget w) [signal]
Parameters:
wwidget being activated
void QtxWorkstack::splitVertical ( ) [slot]

References Horizontal, and split().

void QtxWorkstack::splitHorizontal ( ) [slot]

References split(), and Vertical.

void QtxWorkstack::onRename ( ) [private, slot]

Changes widget title.

References myWorkWin.

void QtxWorkstack::onCloseWindow ( ) [private, slot]

References activeWindow(), and myWorkWin.

void QtxWorkstack::onDestroyed ( QObject obj) [private, slot]

Set input focus to the neighbour area.

Parameters:
objworkarea being destroyed

References myArea, and neighbourArea().

void QtxWorkstack::onWindowActivated ( QWidget ) [private, slot]
Parameters:
areaworkarea being activated (not used)

References PyInterp.obj, and setActiveArea().

void QtxWorkstack::onContextMenuRequested ( QWidget w,
QPoint  p 
) [private, slot]
void QtxWorkstack::onDeactivated ( QtxWorkstackArea area) [private, slot]
Parameters:
areaworkarea being deactivated

References QtxWorkstackArea.activeWidget(), areas(), myArea, mySplit, myWin, and neighbourArea().

void QtxWorkstack::customEvent ( QEvent ) [protected, virtual]
Parameters:
ecustom event (not used)

References updateState().

QAction * QtxWorkstack::action ( const int  id) const [protected]

References myActionsMap.

void QtxWorkstack::saveState ( QDataStream &  stream) const [protected]
bool QtxWorkstack::restoreState ( QDataStream &  stream) [protected]
QSplitter * QtxWorkstack::splitter ( QtxWorkstackArea area) const [private]
Parameters:
workarea
Returns:
splitter corresponding to the workarea

References split().

void QtxWorkstack::splitters ( QSplitter split,
QList< QSplitter * > &  splitList,
const bool  rec = false 
) const [private]
Parameters:
splitparent splitter
splitListlist to be filled with child splitters
recif true, perform recursive search of children
void QtxWorkstack::areas ( QSplitter split,
QList< QtxWorkstackArea * > &  areaList,
const bool  rec = false 
) const [private]
Parameters:
splitparent splitter
areaListlist to be filled with child workareas
recif true, perform recursive search of children
QSplitter * QtxWorkstack::wrapSplitter ( QtxWorkstackArea area) [private]
Parameters:
workarea
Returns:
new splitter

References QtxWorkstackSplitter, and splitter().

void QtxWorkstack::insertWidget ( QWidget wid,
QWidget pWid,
QWidget after 
) [private]
Parameters:
widwidget
pWidparent widget
afterwidget after which wid should be added
QtxWorkstackArea * QtxWorkstack::areaAt ( const QPoint &  p) const [private]
Returns:
workarea
Parameters:
ppoint

References areas(), and mySplit.

QtxWorkstackArea * QtxWorkstack::wgArea ( QWidget wid) const [private]
Parameters:
widwidget
Returns:
pointer to QtxWorkstackArea* object

References areas(), and mySplit.

QtxWorkstackArea * QtxWorkstack::targetArea ( ) [private]

Returns active workarea or current area (if there is no active workarea). If there are no workareas, create new workarea and return it.

Returns:
workarea

References activeArea(), areas(), createArea(), currentArea(), and mySplit.

QtxWorkstackArea * QtxWorkstack::activeArea ( ) const [private]
Returns:
active workarea

References myArea.

QtxWorkstackArea * QtxWorkstack::currentArea ( ) const [private]

Current workarea is that one which has input focus.

Returns:
current area
void QtxWorkstack::setActiveArea ( QtxWorkstackArea area) [private]
Parameters:
workarea

References myArea, myWin, QtxWorkstackArea.updateActiveState(), and windowActivated().

QtxWorkstackArea * QtxWorkstack::neighbourArea ( QtxWorkstackArea area) const [private]
Parameters:
areaarea for which neighbour is searched
Returns:
neighbour area (or 0 if not found)

References areas(), and mySplit.

QtxWorkstackArea * QtxWorkstack::createArea ( QWidget parent) const [private]
Parameters:
parentparent widget
Returns:
created workarea

References onContextMenuRequested(), onDeactivated(), onDestroyed(), onWindowActivated(), and QtxWorkstackArea.

void QtxWorkstack::updateState ( ) [private]

References mySplit.

void QtxWorkstack::updateState ( QSplitter split) [private]
Parameters:
splitsplitter to be updated

References areas(), mySplit, splitters(), and updateState().

void QtxWorkstack::distributeSpace ( QSplitter split) const [private]
Parameters:
splitsplitter

References Horizontal.

int QtxWorkstack::setPosition ( QWidget wid,
QSplitter split,
const Qt::Orientation  o,
const int  need_pos,
const int  splitter_pos 
) [private]

Called from SetRelativePosition() public method.

Parameters:
widwidget to be moved
splitcurrently processed splitter (goes from more common to more particular splitter in recursion calls)
oorientation of positioning
need_posrequired position of the given widget in pixels (from top/left side of workstack area)
splitter_posposition of the splitter split (from top/left side of workstack area)
Returns:
difference between a required and a distinguished position

References areas(), QtxWorkstackArea.contains(), Horizontal, isFound(), positionSimple(), and setSizes().


Friends And Related Function Documentation

friend class QtxWorkstackArea [friend]
friend class QtxWorkstackDrag [friend]
friend class QtxWorkstackAction [friend]
friend class QtxWorkstackSplitter [friend]

Field Documentation

QPointer<QWidget> QtxWorkstack.myWin [private]
QPointer<QWidget> QtxWorkstack.myWorkWin [private]
QMap<int, QAction*> QtxWorkstack.myActionsMap [private]
Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS