Scene Window ================================================================================ .. currentmodule:: ost.gui The scene window holds a list of all graphical objects currently registered to the :class:`gfx.Scene`. .. image:: images/100208_Scene_Win.png Every node of the graphical scene tree is shown as a subnode of the scene. It is possible to select one or more objects in the scenewin (`ctrl + <left mouse>` ). The available actions of the context menu are applied to all currently selected objects. .. class:: SceneWin .. method:: GetContextMenu() Returns the :class:`ContextMenu`-instance. :rtype: ContextMenu .. method:: GetQObject() Get the SIP-QObject (QWidget), learn more about :doc:`python_cpp`. :rtype: QWidget .. method:: Hide() Hide the Widget .. method:: Show() Shows the Widget Context Menu -------------------------------------------------------------------------------- The Context Menu of the Scene Window is context sensitive. So, dependent on what is selected in the :class:`SceneWin` the context menu changes. Context menu of an entity: .. image:: images/100614_entity_context_menu.png Context menu of an entity view: .. image:: images/100614_context_menu_view.png It is possible to extend the Context Menu from python, by creating a QAction and add it to the ContextMenu-Class. If you want to display the action only for certain objects / states, you can pass flags which marks when the action should be shown. .. code-block:: python from PyQt5 import QtWidgets cm = gui.GostyApp.Instance().scene_win.GetContextMenu() action = QtWidgets.QAction("Test single entity", cm.qobject) cm.AddAction(action, gui.ContextActionType.ENTITY | gui.ContextActionType.SINGLE) .. class:: ContextMenu The ContextMenu is shown whenever the user presses `<right click>` on the :class:`SceneWin` .. method:: AddAction(action, flags) Adds the given action to the context menu of the scene window. :param action: The Action which should be displayed in the context menu :type action: :class:`QAction` :param flags: Flags that indicates, when the context_menu should be active. The action will be shown, when all flags are true. :type flags: :data:`ContextActionTypes` .. method:: GetQObject() Get the SIP-QObject (QObject), learn more about :doc:`python_cpp`. :rtype: QObject .. data:: ContextActionType It is possible to specify flags for new :class:`ContextMenu` actions of the :class:`SceneWin` These flags are used, to specify when the action should be shown on the scene window. The actions can be combined by `oring` them (|). When flags are combined with an `or`, the resulting object is a :data:`ContextActionTypes`-object. The following flags are defined by default: * NOT_SCENE All selected objects are not the root node * GFX_OBJECT All selected objects are :class:`gfx.GfxObj` * ENTITY All selected objects are :class:`gfx.Entity` * MAP All selected objects are :class:`gfx.MapIso` * ENTITY_VIEW All selected objects are parts of the same Entity (either Queries or Views) * CUSTOM_VIEW All selected objects are named views (created by the user) * NOT_HIDDEN All selected objects are visible (can not be combined with the ENTITY_VIEW flag) * NOT_VISIBLE All selected objects are hidden (can not be combined with the ENTITY_VIEW flag) * SINGLE There is only one selected object in the :class:`SceneWin` * MULTI There are multiple objects selected object in the :class:`SceneWin` .. data:: ContextActionTypes When multiple :data:`ContextActionType` objects are being combined with an or (|) you will get an :data:`ContextActionTypes`-Object. .. code-block:: python ctx_act_types = gui.ContextActionType.ENTITY | gui.ContextActionType.SINGLE