{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "\n# Action activation triggering API demo\n\nActivate actions in the current control of a window.\n\nAction activation works both in direct and socket APIs\nbut querying the lists of available action methods is only available in\ndirect mode.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "import anatomist.direct.api as anatomist\nfrom soma.qt_gui.qt_backend import Qt\nimport sys\n\nrunloop = False\nif Qt.QApplication.instance() is None:\n    runloop = True\n\na = anatomist.Anatomist()\n\nvol = a.loadObject('irm.ima')\nw = a.createWindow('Axial')\nw.addObjects(vol)\n\nw.activateAction(action_type='key_press', method='movie_start_stop')\n# set backward movie mode\nw.activateAction(action_type='key_press', method='movie_next_mode')\n# loop forward\nw.activateAction(action_type='key_press', method='movie_next_mode')\n# loop backward\nw.activateAction(action_type='key_press', method='movie_next_mode')\n# loop both ways\nw.activateAction(action_type='key_press', method='movie_next_mode')\n\n# query available actions methods\nc = w.view().controlSwitch().activeControlInstance()\nprint('in control:', c.name())\nkpmethods = c.keyPressActionLinkNames()\nprint('* keyPress methods:', kpmethods)\nmpmethods = c.mousePressActionLinkNames()\nprint('* mousePress methods:', mpmethods)\n\nw.setControl('SelectionControl')\nc = w.view().controlSwitch().activeControlInstance()\nprint('in control:', c.name())\nkpmethods = c.keyPressActionLinkNames()\nprint('* keyPress methods:', kpmethods)\nmpmethods = c.mousePressActionLinkNames()\nprint('* mousePress methods:', mpmethods)\n\nif runloop:  # and 'sphinx_gallery' not in sys.modules:\n    Qt.QApplication.instance().exec_()\nif runloop or 'sphinx_gallery' in sys.modules:\n    del c, w, vol, kpmethods, mpmethods"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.11.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}