{ "info": { "author": "ousttrue", "author_email": "ousttrue@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Graphics :: 3D Modeling" ], "description": "# glglue\n\nThe glue code which mediates between OpenGL and some GUI\n\n## Requirements\n\n* Python 3.2\n\n## Site\n\n* http://pypi.python.org/pypi/glglue/\n* https://github.com/ousttrue/glglue\n\n## minimal usage\n\n* [minimal](./examples/minimal.py)\n\nthen implement your own Controller.\n\n## Controller convention\n\nYou should implement Controller class that has follow methods.\n\n``` py\nclass Controller:\n def onResize(self, w: int, h: int) -> None:\n ''' when OpenGL window is resized. '''\n pass\n\n def onLeftDown(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onLeftUp(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onMiddleDown(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onMiddleUp(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onRightDown(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onRightUp(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onMotion(self, x: int, y: int) -> None:\n ''' mouse input '''\n pass\n\n def onWheel(self, d: int) -> None:\n ''' mouse input '''\n pass\n\n def onKeyDown(self, keycode: int) -> None:\n ''' keyboard input'''\n pass\n\n def onUpdate(self, d: int) -> None:\n ''' each frame. milliseconds '''\n pass\n\n def draw(self) -> None:\n ''' each frame'''\n pass\n```\n\n## implementations\n\n### maintenance\n\n* [Windows](./examples/wgl_sample.py)\n* [glut](./examples/glut_sample.py)\n* [SDL2](./examples/pysdl2_sample.py)\n\n* [PyQt5](./examples/qyqt5_sample.py)\n* [PySide2](./examples/qyside2_sample.py)\n\n### not maintenance\n\n* [tkinter](./examples/tkinter_sample.py)\n* [PyQt4](./examples/pyqt4_sample.py)\n* [PySide](./examples/pyside_sample.py)\n* wxglcanvas\n\n## History\n\n* 20190824 1.1.0 add PySide2\n* 20190824 1.0.0 README.rst to README.md\n* 20170926 0.4.4 add PySide\n* 20170730 0.4.3 add PySDL2\n* 20170726 0.4.2 add PyQt5\n* 20160417 0.4.1 remove print. use logger\n* 20160318 0.4 fix for python3. drop python2 support\n* 20130113 0.3.1 fix mouse manipulation for PyQt4\n* 20120127 0.3.0 add mouse manipulation\n* 20120127 0.2.6 add stencil buffer for glut/wgl/sdl sample\n* 20120126 0.2.5 use glutIdleFunc for glut animation\n* 20120125 0.2.4 add wgl/sdl animation\n* 20120124 0.2.3 add glut animation\n* 20120123 0.2.2 add glut width, height parameter\n* 20120119 0.2.0 python3 support\n* 20120119 0.1.3 add SetFocus when mouseDown on wxglcanvas\n* 20120115 0.1.2 update README. add MANIFEST.in\n* 20120114 0.1.1 update README\n* 20120114 0.1.0 implement wxglcanvas mouse event and keyboard event handling\n* 20120113 0.0.9 fix wxglcanvas\n* 20120112 0.0.8 fix lacking of README.rst\n* 20111230 0.0.7 add wgl.mainloop, implement wgl mouse callback\n* 20111230 0.0.4 fix SetWindowLongPtr\n* 20111229 0.0.3 include glglue.sample. add wgl\n\n## maintenance\n\n```\n$ python setup.py sdist\n$ twine upload --repository-url https://test.pypi.org/legacy/ dist/glglue-1.0.0.tar.gz\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "opengl", "license": "zlib", "maintainer": "", "maintainer_email": "", "name": "glglue", "package_url": "https://pypi.org/project/glglue/", "platform": "", "project_url": "https://pypi.org/project/glglue/", "project_urls": null, "release_url": "https://pypi.org/project/glglue/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "The glue code which mediates between OpenGL and some GUI", "version": "1.1.0" }, "last_serial": 5723174, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "da2f9f78ca1471f45c2da2c7526f51ba", "sha256": "814e77431cb1ee42188aaa3258f84effe987dbd7b234e68ec4c300fbecb1a7b6" }, "downloads": -1, "filename": "glglue-0.0.1.tar.gz", "has_sig": false, "md5_digest": "da2f9f78ca1471f45c2da2c7526f51ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4600, "upload_time": "2011-12-28T18:43:43", "url": "https://files.pythonhosted.org/packages/e3/3a/8365ee99f8ae28c7128ef02b54bef14c30afad5783379ed63481068bf3c2/glglue-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "deebd0ae9d94c2513a3418d7196b8dcc", "sha256": "2929018852cd3d9e5775b34956463cda2c1d84e034ef57089196941ae20e64a3" }, "downloads": -1, "filename": "glglue-0.0.2.tar.gz", "has_sig": false, "md5_digest": "deebd0ae9d94c2513a3418d7196b8dcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5127, "upload_time": "2011-12-28T19:06:28", "url": "https://files.pythonhosted.org/packages/51/e8/0b408498edc3b97cd155730e584bf6f7311a61d1e967ee558d6cfb28b7da/glglue-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "494b530691a3d05379c895c7a311dae8", "sha256": "462a8cc2fc2101894f155e996b7cbc47a73a94384f19932092a8ccac74139562" }, "downloads": -1, "filename": "glglue-0.0.3.tar.gz", "has_sig": false, "md5_digest": "494b530691a3d05379c895c7a311dae8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9124, "upload_time": "2011-12-29T05:53:26", "url": "https://files.pythonhosted.org/packages/d1/53/47519b2243e84828298a1b01bbec67e1fefc97fd1008454d90955773578b/glglue-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3a221211f8e13695901e5dff7ac89df7", "sha256": "e69d11f0ad84adb217be3fe094b86e19e43879f1867e6ed249414d434bacd8fe" }, "downloads": -1, "filename": "glglue-0.0.4.zip", "has_sig": false, "md5_digest": "3a221211f8e13695901e5dff7ac89df7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15364, "upload_time": "2011-12-29T16:35:43", "url": "https://files.pythonhosted.org/packages/66/5d/05f9d8518f572d992cb6191d88260c5db66c25de81cd2fa55782270d894e/glglue-0.0.4.zip" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "b8b1bfd6b8da54a7eb45130274f06e7c", "sha256": "4d95695b6ad392341a421f702c02981b8b8c37c46191baaa1b241803789b166e" }, "downloads": -1, "filename": "glglue-0.0.5.tar.gz", "has_sig": false, "md5_digest": "b8b1bfd6b8da54a7eb45130274f06e7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9367, "upload_time": "2011-12-30T12:55:30", "url": "https://files.pythonhosted.org/packages/e5/2e/4b8077c8aa273e5025ebc873026581a7a55d6c8054c04ebda5a6c3f9fecc/glglue-0.0.5.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "452b70525b16eee85fc555eac548ec26", "sha256": "680c9fcf6bd2ca7872e5498d422c1dec3e03e1ebc5c953bf10e4808ef350fc03" }, "downloads": -1, "filename": "glglue-0.0.7.tar.gz", "has_sig": false, "md5_digest": "452b70525b16eee85fc555eac548ec26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9926, "upload_time": "2011-12-31T02:55:53", "url": "https://files.pythonhosted.org/packages/48/00/a01798a3731ed007133322a3417f1358de299764b8c2803cf68af8bbd0dc/glglue-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "4ec40032583bd585675894ebae98d30f", "sha256": "961a7c811a6947cd7088d648f56f84bec84a925793f0550222bc417e2a018577" }, "downloads": -1, "filename": "glglue-0.0.8.tar.gz", "has_sig": false, "md5_digest": "4ec40032583bd585675894ebae98d30f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10407, "upload_time": "2012-01-11T19:02:05", "url": "https://files.pythonhosted.org/packages/72/6f/313e4c538858df5a4525f011df773d32b5fd981c6a7abd3730e2dd053eb5/glglue-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "a00b6783cd06683385280c5c64db3ba7", "sha256": "0a609e7cf67a99c08e96bdafe98b378fc333892f37e7fc3a1622d98afd3ab31f" }, "downloads": -1, "filename": "glglue-0.0.9.zip", "has_sig": false, "md5_digest": "a00b6783cd06683385280c5c64db3ba7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18329, "upload_time": "2012-01-13T07:41:17", "url": "https://files.pythonhosted.org/packages/db/df/bc470dd9ccb9ac9814dd8bca4cbfceab04109ea848793843453434a9ae1f/glglue-0.0.9.zip" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "7aca47c61dc01cfa00d3083cdcde83e7", "sha256": "c34318c08d52d7875bd958f085b84461e544362bec9c8acf88c5d9389c772f49" }, "downloads": -1, "filename": "glglue-0.1.0.zip", "has_sig": false, "md5_digest": "7aca47c61dc01cfa00d3083cdcde83e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18532, "upload_time": "2012-01-13T16:34:09", "url": "https://files.pythonhosted.org/packages/94/a7/815a02c3783dcb68b2cfe153af8b1739276d75b02219ff40c03c4860275d/glglue-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "948c4911e66f0bcfc15f53de629ed603", "sha256": "226b9f7b391ce104f816fefff4584cd7b1887b8b8b98c6c2dc1ff6f1174b3606" }, "downloads": -1, "filename": "glglue-0.1.1.zip", "has_sig": false, "md5_digest": "948c4911e66f0bcfc15f53de629ed603", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19123, "upload_time": "2012-01-13T18:36:55", "url": "https://files.pythonhosted.org/packages/25/84/1c70b22a5dc3b911dbdc4afdd52d225ec24630a5f8dd83a1852bd7869972/glglue-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "319f90fb09dc6f72ec07d7c50fda0a1c", "sha256": "6f46fd33b71bc94dd877b63ee8b5aae4dc48bac0594486fa7defaf56b6ca1f7c" }, "downloads": -1, "filename": "glglue-0.1.2.zip", "has_sig": false, "md5_digest": "319f90fb09dc6f72ec07d7c50fda0a1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19538, "upload_time": "2012-01-14T19:30:43", "url": "https://files.pythonhosted.org/packages/97/4e/a03d410d5716a26a830888d6c56e2d10f1bd5af73a92125fc0e41bda026b/glglue-0.1.2.zip" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "bd108a9d8b8e206fdfd71cb5814a39b1", "sha256": "9ed5baf827724d9ea095e016a551b6112f972d2996d58d9f610b05a91a58906b" }, "downloads": -1, "filename": "glglue-0.1.3.zip", "has_sig": false, "md5_digest": "bd108a9d8b8e206fdfd71cb5814a39b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19627, "upload_time": "2012-01-19T10:24:25", "url": "https://files.pythonhosted.org/packages/bd/32/6c9cc4c31176ecd80fb394cd5ac857d029b15fd85531d01ef013744d17fe/glglue-0.1.3.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e6300c88c248b5514a94412feadb51f5", "sha256": "dd1482fb4da01572a47e7ef9955fc7a21281f69d002c293d07e45c67892588f3" }, "downloads": -1, "filename": "glglue-0.2.0.zip", "has_sig": false, "md5_digest": "e6300c88c248b5514a94412feadb51f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19997, "upload_time": "2012-01-19T19:07:06", "url": "https://files.pythonhosted.org/packages/5f/b9/536359bde28b32a33f838567d2a360c6a4319a731b24ff1e129dfb8a920b/glglue-0.2.0.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "de1c36e05d48722967bf824f7d0ebe99", "sha256": "686772a8503bf080da7ae09da3b2940daf0f0ba4e7fb0b8d1e7ded8083312a99" }, "downloads": -1, "filename": "glglue-0.2.1.zip", "has_sig": false, "md5_digest": "de1c36e05d48722967bf824f7d0ebe99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20008, "upload_time": "2012-01-19T19:13:42", "url": "https://files.pythonhosted.org/packages/2b/04/ba11c79a07f4b3530e53b42245bddfbf45ca02149f96f5ce67e5aa3d2588/glglue-0.2.1.zip" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "32976e7237f700cff920be92e143b085", "sha256": "8eb507702b3364c8f801c102a8a6d43712762258bb2d3737d6e75ec6ada23bff" }, "downloads": -1, "filename": "glglue-0.2.4.zip", "has_sig": false, "md5_digest": "32976e7237f700cff920be92e143b085", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20542, "upload_time": "2012-01-25T07:07:25", "url": "https://files.pythonhosted.org/packages/a8/7c/7d5ab33caf685443d827739a05ec4c95c64ec776957c7dd9db3f605bdda3/glglue-0.2.4.zip" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "f6a18a2114abc1c8895d49c9290b5ee4", "sha256": "a09cd3c8f87d270f5de447c63a6862029ef75aef66a927900aeff8c1b3d7f397" }, "downloads": -1, "filename": "glglue-0.2.5.zip", "has_sig": false, "md5_digest": "f6a18a2114abc1c8895d49c9290b5ee4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20716, "upload_time": "2012-01-26T12:46:39", "url": "https://files.pythonhosted.org/packages/c8/11/101418e3fc1853d12fec4f3697babd25a25f16d81f554e21f76bd415c40c/glglue-0.2.5.zip" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "28f7770c3c4c56a93cbe1dd049cc5d50", "sha256": "0f1f941f5378438155279fba701a38dec9c408127df37e70fef4ee6a2b6ef74d" }, "downloads": -1, "filename": "glglue-0.2.6.zip", "has_sig": false, "md5_digest": "28f7770c3c4c56a93cbe1dd049cc5d50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20993, "upload_time": "2012-01-26T18:43:29", "url": "https://files.pythonhosted.org/packages/99/7f/59f2ad02b9c1750ec62fb11dedf83367a2477b8e27bc9cc7f1c87adebd7c/glglue-0.2.6.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7c5e2a7c4ce2c6f572c69b7525406aae", "sha256": "c3fab6c2fda9ad51a1fb68f35b3bc2e730f759f0843e9def7b42813491c3de9c" }, "downloads": -1, "filename": "glglue-0.3.0.zip", "has_sig": false, "md5_digest": "7c5e2a7c4ce2c6f572c69b7525406aae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22345, "upload_time": "2012-01-28T19:44:34", "url": "https://files.pythonhosted.org/packages/18/00/8511257e94adfa6308bb729f31630a8aa5b182012cc7be6482d0448ea154/glglue-0.3.0.zip" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "735148818d73dff0366299cc26fffd66", "sha256": "1260e7a039a538f9ffc4ad2dc7f329429085befd03ee22b976b1b5facac04ebf" }, "downloads": -1, "filename": "glglue-0.3.1.tar.gz", "has_sig": false, "md5_digest": "735148818d73dff0366299cc26fffd66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13028, "upload_time": "2013-01-12T20:24:20", "url": "https://files.pythonhosted.org/packages/21/9b/12970a334c8eb52d3e78bf8f1401bea3906e2a4943ba9ec2aae332b85a5e/glglue-0.3.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "80a6fce9ffc6b5484c6053a23d8a3fd6", "sha256": "68302d3379fca57f81daa319541e3ea3c7cb160b05cfa271f8313079b6c0efd1" }, "downloads": -1, "filename": "glglue-1.0.0.tar.gz", "has_sig": false, "md5_digest": "80a6fce9ffc6b5484c6053a23d8a3fd6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53369, "upload_time": "2019-08-23T21:24:40", "url": "https://files.pythonhosted.org/packages/a1/9f/91c93be70e1b1f3ec6f8d0713f93e86b1b20d1f3c557c7f16f088d210b5c/glglue-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "df277471f60cebed9baae880438d17cb", "sha256": "206f820691f81cbbd7a3421203c3c108fc400b00a52854a1153824cb7d69c57c" }, "downloads": -1, "filename": "glglue-1.1.0.tar.gz", "has_sig": false, "md5_digest": "df277471f60cebed9baae880438d17cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53877, "upload_time": "2019-08-23T23:41:25", "url": "https://files.pythonhosted.org/packages/28/7b/cf07df80c5e0676f944bb5df7edf93ada8d53399520faf6a03ea54342e1a/glglue-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "df277471f60cebed9baae880438d17cb", "sha256": "206f820691f81cbbd7a3421203c3c108fc400b00a52854a1153824cb7d69c57c" }, "downloads": -1, "filename": "glglue-1.1.0.tar.gz", "has_sig": false, "md5_digest": "df277471f60cebed9baae880438d17cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53877, "upload_time": "2019-08-23T23:41:25", "url": "https://files.pythonhosted.org/packages/28/7b/cf07df80c5e0676f944bb5df7edf93ada8d53399520faf6a03ea54342e1a/glglue-1.1.0.tar.gz" } ] }