Workstack widget. More...
#include <QtxWorkstack.h>

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. | |
| QWidget * | activeWindow () 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. | |
| QWidget * | addWindow (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. | |
| QAction * | action (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 | |
| QSplitter * | splitter (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. | |
| QSplitter * | wrapSplitter (QtxWorkstackArea *) |
| Wrap area into the new splitter. | |
| void | insertWidget (QWidget *, QWidget *, QWidget *) |
| Reparent and add widget. | |
| QtxWorkstackArea * | areaAt (const QPoint &) const |
| Get workarea covering point. | |
| QtxWorkstackArea * | wgArea (QWidget *) const |
| Gets area containing given widget. | |
| QtxWorkstackArea * | targetArea () |
| Get target area (for which the current operation should be done). | |
| QtxWorkstackArea * | activeArea () const |
| Get active workarea. | |
| QtxWorkstackArea * | currentArea () const |
| Get current workarea. | |
| void | setActiveArea (QtxWorkstackArea *) |
| Set active workarea. | |
| QtxWorkstackArea * | neighbourArea (QtxWorkstackArea *) const |
| Get workarea which is nearest to area. | |
| QtxWorkstackArea * | createArea (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< QWidget > | myWin |
| active widget | |
| QPointer< QtxWorkstackArea > | myArea |
| active workarea | |
| QtxWorkstackSplitter * | mySplit |
| tol-level splitter | |
| QPointer< QWidget > | myWorkWin |
| widget where popup menu is invoked (used internally) | |
| QPointer< QtxWorkstackArea > | myWorkArea |
| workarea where popup menu is invoked (used internally) | |
| QMap< int, QAction * > | myActionsMap |
| actions map | |
Friends | |
| class | QtxWorkstackArea |
| class | QtxWorkstackDrag |
| class | QtxWorkstackAction |
| class | QtxWorkstackSplitter |
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.
| anonymous enum |
| QtxWorkstack::QtxWorkstack | ( | QWidget * | parent = 0 | ) |
| parent | parent widget |
References Close, myActionsMap, mySplit, onCloseWindow(), onRename(), QtxWorkstackSplitter, Rename, splitHorizontal(), SplitHorizontal, splitVertical(), and SplitVertical.
| QtxWorkstack::~QtxWorkstack | ( | ) | [virtual] |
| QWidgetList QtxWorkstack::windowList | ( | QWidget * | wid = 0 | ) | const |
| QWidgetList QtxWorkstack::splitWindowList | ( | ) | const |
References myArea.
| int QtxWorkstack::accel | ( | const int | id | ) | const |
| void QtxWorkstack::setAccel | ( | const int | id, |
| const int | accel | ||
| ) |
| id | action ID |
| accel | action accelerator |
References myActionsMap.
| QIcon QtxWorkstack::icon | ( | const int | id | ) | const |
If id is invalid, null icon is returned.
| id | menu action ID |
References myActionsMap.
| void QtxWorkstack::setIcon | ( | const int | id, |
| const QIcon & | icon | ||
| ) |
| id | menu action ID |
| ico | new 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.
| flags | ORed 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.
| flags | ORed together actions flags |
References Close, myActionsMap, Rename, TestSalomeApp.ret, SplitHorizontal, and SplitVertical.
| void QtxWorkstack::stack | ( | ) |
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.
| o | splitting orientation (Qt.Orientation) |
References activeArea(), QtxWorkstackArea.activeWidget(), areas(), createArea(), distributeSpace(), QtxWorkstackArea.insertWidget(), myWorkArea, QtxWorkstackArea.removeWidget(), splitter(), splitters(), QtxWorkstackArea.widgetList(), and wrapSplitter().
| wid | widget to be moved |
| wid_to | widget specified the destination area |
| before | specifies whether the first widget has to be moved before or after the second widget |
References QtxWorkstackArea.insertWidget(), QtxWorkstackArea.removeWidget(), wgArea(), and QtxWorkstackArea.widgetList().
| w | widget |
| f | widget flags |
References QtxWorkstackArea.insertWidget(), and targetArea().
| QByteArray QtxWorkstack::saveState | ( | int | version | ) | const |
| bool QtxWorkstack::restoreState | ( | const QByteArray & | state, |
| int | version | ||
| ) |
| void QtxWorkstack::setOpaqueResize | ( | bool | opaque = true | ) |
| opaque | opaque mode |
References mySplit, split(), and splitters().
| bool QtxWorkstack::opaqueResize | ( | ) | const |
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.
| wid | widget belonging to the workstack |
| o | splitting orientation type (Qt.Orientation) |
| type | splitting type (QtxWorkstack.SplitType) |
References QtxWorkstackArea.activeWidget(), areas(), createArea(), distributeSpace(), QtxWorkstackArea.insertWidget(), insertWidget(), mySplit, QtxWorkstackArea.removeWidget(), SplitAt, SplitMove, SplitStay, splitter(), splitters(), QtxWorkstackArea.widgetList(), and wrapSplitter().
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.
| wid1 | widget from target workarea |
| wid2 | widget from source workarea |
| all | if 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.
| wid | widget |
| o | orientation of positioning (Qt.Horizontal or Qt.Vertical) |
| pos | position 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.
| wid | widget |
| pos | position 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] |
| w | widget being activated |
| void QtxWorkstack::splitVertical | ( | ) | [slot] |
References Horizontal, and split().
| 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.
| obj | workarea being destroyed |
References myArea, and neighbourArea().
| void QtxWorkstack::onWindowActivated | ( | QWidget * | ) | [private, slot] |
| area | workarea being activated (not used) |
References PyInterp.obj, and setActiveArea().
| void QtxWorkstack::onContextMenuRequested | ( | QWidget * | w, |
| QPoint | p | ||
| ) | [private, slot] |
| w | workarea |
| p | popup position |
References activeArea(), Close, myActionsMap, myWorkArea, myWorkWin, Rename, Qtx.simplifySeparators(), SplitHorizontal, SplitVertical, and QtxWorkstackArea.widgetList().
| void QtxWorkstack::onDeactivated | ( | QtxWorkstackArea * | area | ) | [private, slot] |
| area | workarea being deactivated |
References QtxWorkstackArea.activeWidget(), areas(), myArea, mySplit, myWin, and neighbourArea().
| void QtxWorkstack::customEvent | ( | QEvent * | ) | [protected, virtual] |
| e | custom event (not used) |
References updateState().
| QAction * QtxWorkstack::action | ( | const int | id | ) | const [protected] |
References myActionsMap.
| void QtxWorkstack::saveState | ( | QDataStream & | stream | ) | const [protected] |
References mySplit, and QtxWorkstackSplitter.saveState().
| bool QtxWorkstack::restoreState | ( | QDataStream & | stream | ) | [protected] |
| QSplitter * QtxWorkstack::splitter | ( | QtxWorkstackArea * | area | ) | const [private] |
| void QtxWorkstack::splitters | ( | QSplitter * | split, |
| QList< QSplitter * > & | splitList, | ||
| const bool | rec = false |
||
| ) | const [private] |
| split | parent splitter |
| splitList | list to be filled with child splitters |
| rec | if true, perform recursive search of children |
| void QtxWorkstack::areas | ( | QSplitter * | split, |
| QList< QtxWorkstackArea * > & | areaList, | ||
| const bool | rec = false |
||
| ) | const [private] |
| split | parent splitter |
| areaList | list to be filled with child workareas |
| rec | if true, perform recursive search of children |
| QSplitter * QtxWorkstack::wrapSplitter | ( | QtxWorkstackArea * | area | ) | [private] |
| wid | widget |
| pWid | parent widget |
| after | widget after which wid should be added |
| QtxWorkstackArea * QtxWorkstack::areaAt | ( | const QPoint & | p | ) | const [private] |
| QtxWorkstackArea * QtxWorkstack::wgArea | ( | QWidget * | wid | ) | const [private] |
| 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.
References activeArea(), areas(), createArea(), currentArea(), and mySplit.
| QtxWorkstackArea * QtxWorkstack::activeArea | ( | ) | const [private] |
References myArea.
| QtxWorkstackArea * QtxWorkstack::currentArea | ( | ) | const [private] |
Current workarea is that one which has input focus.
| void QtxWorkstack::setActiveArea | ( | QtxWorkstackArea * | area | ) | [private] |
| workarea |
References myArea, myWin, QtxWorkstackArea.updateActiveState(), and windowActivated().
| QtxWorkstackArea * QtxWorkstack::neighbourArea | ( | QtxWorkstackArea * | area | ) | const [private] |
| QtxWorkstackArea * QtxWorkstack::createArea | ( | QWidget * | parent | ) | const [private] |
| parent | parent widget |
References onContextMenuRequested(), onDeactivated(), onDestroyed(), onWindowActivated(), and QtxWorkstackArea.
| void QtxWorkstack::updateState | ( | ) | [private] |
References mySplit.
| void QtxWorkstack::updateState | ( | QSplitter * | split | ) | [private] |
| split | splitter to be updated |
References areas(), mySplit, splitters(), and updateState().
| void QtxWorkstack::distributeSpace | ( | QSplitter * | split | ) | const [private] |
| split | splitter |
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.
| wid | widget to be moved |
| split | currently processed splitter (goes from more common to more particular splitter in recursion calls) |
| o | orientation of positioning |
| need_pos | required position of the given widget in pixels (from top/left side of workstack area) |
| splitter_pos | position of the splitter split (from top/left side of workstack area) |
References areas(), QtxWorkstackArea.contains(), Horizontal, isFound(), positionSimple(), and setSizes().
friend class QtxWorkstackArea [friend] |
friend class QtxWorkstackDrag [friend] |
friend class QtxWorkstackAction [friend] |
friend class QtxWorkstackSplitter [friend] |
QPointer<QWidget> QtxWorkstack.myWin [private] |
QPointer<QtxWorkstackArea> QtxWorkstack.myArea [private] |
QtxWorkstackSplitter* QtxWorkstack.mySplit [private] |
QPointer<QWidget> QtxWorkstack.myWorkWin [private] |
QPointer<QtxWorkstackArea> QtxWorkstack.myWorkArea [private] |
QMap<int, QAction*> QtxWorkstack.myActionsMap [private] |