{ "info": { "author": "Tamini Bean", "author_email": "takd4com@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: User Interfaces" ], "description": "dominter\n========\ndominter is a simple GUI (Graphical User Interface) Python package for small asynchronous web application.\n\nFeatures\n--------\n* JavaScript style API and other types of API that can be written shorter.\n* Any tags and attributes can be used.\n* Supports onclick(), onchange() and addEventListener().\n* Supports multiple window.\n* Supports both multiple-instance and single-instance.\n* Supports Element.className and Element.style properties.\n* Supports Window.addEventListener() for events such as 'hashchange'.\n* Supports localStorage and sessionStorage.\n* Supports fake Window.onload() to inform localStorage, sessionStorage and location has been set.\n* Supports invoke() to operate from other threads.\n* Depends only on `Tornado `_.\n\nInstallation\n------------\n\n::\n\n pip install dominter\n\nExample\n-------\n\n* Hello world:\n\n.. code-block:: python\n\n from dominter import Window, start_app\n\n class MyWindow(Window):\n def __init__(self):\n super().__init__()\n document = self.document\n self.p1 = document.createElement('p')\n self.p1.textContent = \"text content\"\n self.btn1 = document.createElement('button')\n self.btn1.textContent = \"button1\"\n self.btn1.onclick = self.on_btn1\n document.body.appendChild(self.p1)\n document.body.appendChild(self.btn1)\n\n def on_btn1(self, ev):\n self.p1.textContent = 'Hello world!'\n\n win = MyWindow()\n start_app(win)\n\n* Without class:\n\n.. code-block:: python\n\n from dominter import Window, start_app\n\n win = Window()\n document = win.document\n tag_p1 = document.createElement('p')\n tag_p1.textContent = \"text content\"\n\n def on_btn1(ev):\n tag_p1.textContent = 'Hello world!'\n\n tag_btn1 = document.createElement('button')\n tag_btn1.textContent = \"button1\"\n tag_btn1.onclick = on_btn1\n document.body.appendChild(tag_p1)\n document.body.appendChild(tag_btn1)\n start_app(win)\n\n* Three types of tag creation and childList attribute\n\n.. code-block:: python\n\n from dominter import Window, start_app\n\n win = Window()\n document = win.document\n # js like\n p1 = document.createElement('p')\n p1.textContent = 'by createElement() '\n # html like : specify all by text excepts event handler\n p2 = document.tag('p _=\"by tag() \"') # use '_=' for textContent\n # individual tag method\n p3 = document.p('by p() method. ')\n document.body.childList = [p1, p2, p3]\n start_app(win)\n\nIndividual tag methods:\ntitle, style, link, script,\nbr, p, span, div, button,\ntext, checkbox, radio, color,\ndate, month, time, week, number,\npassword, range, select, option,\ntextarea, table, tr, th, td,\nfieldset, legend, img, a, label,\nh1, h2, h3, h4, h5, h6, ol, li, ul, section, header, footer\n\n* multiple window\n\n.. code-block:: python\n\n from dominter import Window, start_app\n\n class MyWindow1(Window):\n def __init__(self):\n super(MyWindow1, self).__init__()\n document = self.document\n self.txt1 = document.text('windows1')\n self.btn1 = document.button('test1', onclick=self.on_btn1)\n document.body.appendChild(self.txt1)\n document.body.appendChild(self.btn1)\n\n def on_btn1(self, ev):\n self.txt1.value = 'changed1'\n\n class MyWindow2(Window):\n def __init__(self):\n super(MyWindow2, self).__init__()\n document = self.document\n self.txt1 = document.text('windows2')\n self.btn1 = document.button('test1', onclick=self.on_btn1)\n document.body.appendChild(self.txt1)\n document.body.appendChild(self.btn1)\n\n def on_btn1(self, ev):\n self.txt1.value = 'changed2'\n\n start_app([MyWindow1(), # localhost:8888/index.html\n MyWindow2()]) # localhost:8888/index1.html\n\n* multiple-instance and single-instance\n\n.. code-block:: python\n\n from dominter import Window, start_app\n\n class MyWindow1(Window):\n def __init__(self):\n super(MyWindow1, self).__init__()\n document = self.document\n self.txt1 = document.text('windows1')\n self.btn1 = document.button('test1', onclick=self.on_btn1)\n document.body.appendChild(self.txt1)\n document.body.appendChild(self.btn1)\n\n def on_btn1(self, ev):\n self.txt1.value = 'changed1'\n\n class MyWindow2(Window):\n def __init__(self):\n super(MyWindow2, self).__init__()\n document = self.document\n self.txt1 = document.text('windows2')\n self.btn1 = document.button('test1', onclick=self.on_btn1)\n document.body.appendChild(self.txt1)\n document.body.appendChild(self.btn1)\n\n def on_btn1(self, ev):\n self.txt1.value = 'changed2'\n\n\n start_app([MyWindow1(), # instance for single-instance. localhost:8888/index.html\n MyWindow2]) # class for multiple-instance. localhost:8888/index1.html\n\nStatus\n------\nAlpha\n\n\n| Copyright (c) 2017-2018 Tamini Bean\n| License: MIT\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/takd4com/dominter", "keywords": "dom browser gui asynchronous web", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dominter", "package_url": "https://pypi.org/project/dominter/", "platform": "", "project_url": "https://pypi.org/project/dominter/", "project_urls": { "Homepage": "https://github.com/takd4com/dominter" }, "release_url": "https://pypi.org/project/dominter/0.4.0/", "requires_dist": [ "tornado" ], "requires_python": "", "summary": "A simple GUI package for small asynchronous web application", "version": "0.4.0" }, "last_serial": 3997082, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "7cd6b29e75aecad9577a5bcb56645724", "sha256": "2e10f3a69573770b03d5458d63501db76aa025bbb5a757c5964a0dca3b978a50" }, "downloads": -1, "filename": "dominter-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7cd6b29e75aecad9577a5bcb56645724", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15081, "upload_time": "2017-11-09T21:34:25", "url": "https://files.pythonhosted.org/packages/98/70/4c751e92893af0c7531b5cfc42d5d6498c1d49032ebe60720c801506affc/dominter-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0a7146f1b5894db39a55c483f63fec5", "sha256": "c2014ff0ce39ac6ebb20e1fcf33d7b03a6a2f33f12bbeba4976127700c5373fa" }, "downloads": -1, "filename": "dominter-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b0a7146f1b5894db39a55c483f63fec5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48425, "upload_time": "2017-11-09T21:34:29", "url": "https://files.pythonhosted.org/packages/ae/0f/ecea8d88e10685c809298dacea61744dc1bb85378d9c072dc4918ceee651/dominter-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "5e8852f0e18a1544ad53e06ffde039eb", "sha256": "a19169b69048bdd8b4663f03de10fdc1227f48337f9ce4df0ceeb4a6b9b09824" }, "downloads": -1, "filename": "dominter-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e8852f0e18a1544ad53e06ffde039eb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20499, "upload_time": "2018-01-14T05:37:37", "url": "https://files.pythonhosted.org/packages/bf/34/f95c3d30475f8e6c9c3c6d302bac2a00a93c191c87ca3535ab360681526b/dominter-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae5f332be3fb998138f342ebe4f2b167", "sha256": "2c36d2726814605f363837cd4d0e9b38985aa970db9e26f852a94eb25ec62413" }, "downloads": -1, "filename": "dominter-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ae5f332be3fb998138f342ebe4f2b167", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 162371, "upload_time": "2018-01-14T05:37:41", "url": "https://files.pythonhosted.org/packages/08/88/54b15f989c34ca55852a27851003c735b1c2d2fb0f630cd4fc1e44c27043/dominter-0.1.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "64f4569b268e8a98f91b87c3f9528f13", "sha256": "8734aec60ee57c898401667c70a8e438163acab178a71b681499e16154bf6af1" }, "downloads": -1, "filename": "dominter-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64f4569b268e8a98f91b87c3f9528f13", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23484, "upload_time": "2018-02-17T23:40:59", "url": "https://files.pythonhosted.org/packages/6a/0c/da8c1af3e57c5cd5a36036f9ac3cf1e7af11602c6cb1199a17290779db9b/dominter-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8533b8764ef3891f17287d88296ad4ea", "sha256": "625e4bfd440355f3f4281f079b44c640900d752f7b7e2d5737b4f709c137e438" }, "downloads": -1, "filename": "dominter-0.2.1.tar.gz", "has_sig": false, "md5_digest": "8533b8764ef3891f17287d88296ad4ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 172571, "upload_time": "2018-02-17T23:41:06", "url": "https://files.pythonhosted.org/packages/ed/3e/3edf2a5041dfdc59bd64ca66b877783161a53a5b0e497aa0f5297d8dcdb3/dominter-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "00f7f047400ca8464c6c1aa1ced8e0ce", "sha256": "eb45b5e4926f714c1b3f9ddd3dddf7e4f1ba4a072fa6c9ce5d9680d06307a84f" }, "downloads": -1, "filename": "dominter-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "00f7f047400ca8464c6c1aa1ced8e0ce", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23967, "upload_time": "2018-03-03T03:42:29", "url": "https://files.pythonhosted.org/packages/98/c8/14c2460e74470e02170ca0de203640662e704320afd509011376bfa74374/dominter-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a9a6db3f1b9c27079df67a3628e0733", "sha256": "3c476de4ac3b6dacef718fc765bba67333bc00ece236546318bc33ef50521f74" }, "downloads": -1, "filename": "dominter-0.2.2.tar.gz", "has_sig": false, "md5_digest": "9a9a6db3f1b9c27079df67a3628e0733", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 173016, "upload_time": "2018-03-03T03:42:33", "url": "https://files.pythonhosted.org/packages/d2/ec/1005cf501fb7f617437c80debe06171e5ec6da55eb70e6fbce5a0fb327c3/dominter-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "22ca63070bfcc9ac07863622384de60b", "sha256": "a13b704a5091a94f31a8672dd824fd01e3c758fd794c1245b42f80a8588a9bb0" }, "downloads": -1, "filename": "dominter-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "22ca63070bfcc9ac07863622384de60b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25332, "upload_time": "2018-04-15T09:05:01", "url": "https://files.pythonhosted.org/packages/81/7c/f12e1e9228df3362b8a47f23b38564bc6e5ca6ad63e9cbae3b1878a25206/dominter-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b28f7034a03abc0bdcdf7dd6b2d48d78", "sha256": "92e14deb5151b24cf0c48ffa7df2615550d1d0dd17d99e18416c5d01eeab70c7" }, "downloads": -1, "filename": "dominter-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b28f7034a03abc0bdcdf7dd6b2d48d78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174282, "upload_time": "2018-04-15T09:05:04", "url": "https://files.pythonhosted.org/packages/d3/65/428cae61e25458ac1d335797c4e399e001da27aacbb16e081422704c1f6d/dominter-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "575a1a140bb449165191aab1fb41380f", "sha256": "7932cfdfc02afa0558563f3a353c4c712cb98416b95d0389c321e44ead17b06c" }, "downloads": -1, "filename": "dominter-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "575a1a140bb449165191aab1fb41380f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25326, "upload_time": "2018-04-15T21:58:23", "url": "https://files.pythonhosted.org/packages/77/a9/e9d0d5dcdad566f5ef3110696fcb06ee9fa53c32ac1c221150715857f896/dominter-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb66fc83acf7ec772646799f9da466d8", "sha256": "0a274c5f9c95684b151e17faa698e91bddae12f0b15edc181a0df70f0675f919" }, "downloads": -1, "filename": "dominter-0.3.1.tar.gz", "has_sig": false, "md5_digest": "bb66fc83acf7ec772646799f9da466d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 174314, "upload_time": "2018-04-15T21:58:27", "url": "https://files.pythonhosted.org/packages/63/21/da529920210e03ad8ac4d9c05df79fd7d6b7f98fa7c449d310762c17b55e/dominter-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "b6b69eacf7f0085c841bb04a28e12196", "sha256": "bfd143f21ca1535d1aaa9809bb6ef9d64bba3042969e4e875eedd48dd8ba48e8" }, "downloads": -1, "filename": "dominter-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b6b69eacf7f0085c841bb04a28e12196", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27540, "upload_time": "2018-06-24T15:52:15", "url": "https://files.pythonhosted.org/packages/12/1c/9f85fe4fdac0997fe2eaa402b59d5071bfe381d8e39812c6b00694befdef/dominter-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0e159f18ccda39a1ed0d10e0023fb8d", "sha256": "d4306185fc73221aa96e08f029925914aee5c019fef57c8461fbe7bcc0e2b785" }, "downloads": -1, "filename": "dominter-0.4.0.tar.gz", "has_sig": false, "md5_digest": "b0e159f18ccda39a1ed0d10e0023fb8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 182032, "upload_time": "2018-06-24T15:52:18", "url": "https://files.pythonhosted.org/packages/0c/a3/e9aaa3b6a298f6878c150001f33a67e6d249baf2d0cd572df61549be791c/dominter-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b6b69eacf7f0085c841bb04a28e12196", "sha256": "bfd143f21ca1535d1aaa9809bb6ef9d64bba3042969e4e875eedd48dd8ba48e8" }, "downloads": -1, "filename": "dominter-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b6b69eacf7f0085c841bb04a28e12196", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27540, "upload_time": "2018-06-24T15:52:15", "url": "https://files.pythonhosted.org/packages/12/1c/9f85fe4fdac0997fe2eaa402b59d5071bfe381d8e39812c6b00694befdef/dominter-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0e159f18ccda39a1ed0d10e0023fb8d", "sha256": "d4306185fc73221aa96e08f029925914aee5c019fef57c8461fbe7bcc0e2b785" }, "downloads": -1, "filename": "dominter-0.4.0.tar.gz", "has_sig": false, "md5_digest": "b0e159f18ccda39a1ed0d10e0023fb8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 182032, "upload_time": "2018-06-24T15:52:18", "url": "https://files.pythonhosted.org/packages/0c/a3/e9aaa3b6a298f6878c150001f33a67e6d249baf2d0cd572df61549be791c/dominter-0.4.0.tar.gz" } ] }