{
"info": {
"author": "Hiroyuki Takagi",
"author_email": "miyako.dev@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Software Development :: User Interfaces"
],
"description": "WDOM\n====\n\n.. image:: https://img.shields.io/pypi/v/wdom.svg\n :target: https://pypi.python.org/pypi/wdom\n\n.. image:: https://img.shields.io/pypi/pyversions/wdom.svg\n :target: https://pypi.python.org/pypi/wdom\n\n.. image:: https://img.shields.io/badge/docs-latest-brightgreen.svg\n :target: https://miyakogi.github.io/wdom/\n :alt: Documentation\n\n.. image:: https://travis-ci.org/miyakogi/wdom.svg?branch=dev\n :target: https://travis-ci.org/miyakogi/wdom\n\n.. image:: https://codecov.io/github/miyakogi/wdom/coverage.svg?branch=dev\n :target: https://codecov.io/github/miyakogi/wdom?branch=dev\n\n--------------------------------------------------------------------------------\n\nWDOM is a python GUI library for browser-based desktop applications. WDOM\ncontrols HTML elements (DOM) on browser from python, as if it is a GUI element.\nAPIs are same as DOM or browser JavaScript, but of course, you can write logic\ncodes in python.\n\nThis library includes web-server (`tornado`_), but is not intended to\nbe used as a web framework, please use for **Desktop** GUI Applications.\n\nDocument: `WDOM Documentation `_\n\nDisclaimer\n----------\n\nWDOM is in the early development stage, and may contain many bugs. All APIs are\nnot stable, and may be changed in future release.\n\nFeatures\n--------\n\n* Pure python implementation\n* APIs based on `DOM specification`_\n\n * Not need to learn new special classes/methods for GUI\n * Implemented DOM features are listed in `Wiki page `_\n\n* Theming with CSS frameworks (see `ScreenShots on Wiki `_)\n* JavaScript codes are executable on browser\n* Testable with browsers and `Selenium`_ WebDriver\n* Licensed under MIT licence\n\nRequirements\n------------\n\nPython 3.5.3+ and any modern-browsers are required.\nAlso supports Electron and PyQt's webkit browsers.\n\nInstallation\n------------\n\nInstall by pip::\n\n pip install wdom\n\nOr, install latest version from github::\n\n pip install git+http://github.com/miyakogi/wdom\n\nExample\n-------\n\nSimple example:\n\n.. code-block:: python\n\n from wdom.document import get_document\n from wdom.server import start\n\n if __name__ == '__main__':\n document = get_document()\n h1 = document.createElement('h1')\n h1.textContent = 'Hello, WDOM'\n document.body.appendChild(h1)\n start()\n\nExecute this code and access ``http://localhost:8888`` by browser.\n``\"Hello, WDOM\"`` will shown on the browser.\nTo stop process, press ``CTRL+C``.\n\nAs you can see, methods of WDOM (``document.createElement`` and\n``document.body.appendChild``) are very similar to browser JavaScript.\n\nWDOM provides some new DOM APIs (e.g. ``append`` for appending child) and some\ntag classes to easily generate elements:\n\n.. code-block:: python\n\n from wdom.tag import H1\n from wdom.document import set_app\n from wdom.server import start\n\n if __name__ == '__main__':\n h1 = H1()\n h1.textContent = 'Hello, WDOM'\n set_app(h1) # equivalent to `wdom.document.get_document().body.appendChild(h1)`\n start()\n\nOf course, WDOM can handle events:\n\n.. code-block:: python\n\n from wdom.tag import H1\n from wdom.document import set_app\n from wdom.server import start\n\n def rev_text(event):\n elm = event.currentTarget\n elm.textContent = elm.textContent[::-1]\n\n if __name__ == '__main__':\n h1 = H1('Hello, WDOM')\n h1.addEventListener('click', rev_text)\n set_app(h1)\n start()\n\nWhen string ``\"Hello, WDOM\"`` is clicked, it will be flipped.\n\nMaking components with python class:\n\n.. code-block:: python\n\n from wdom.tag import Div, H1, Input\n from wdom.document import set_app\n from wdom.server import start\n\n class MyApp(Div):\n def __init__(self, *args, **kwargs):\n super().__init__(*args, **kwargs)\n self.text = H1('Hello', parent=self)\n self.textbox = Input(parent=self, placeholder='input here...')\n self.textbox.addEventListener('input', self.update)\n\n def update(self, event):\n self.text.textContent = event.currentTarget.value\n # Or, you can write as below\n # self.text.textContent = self.textbox.value\n\n if __name__ == '__main__':\n set_app(MyApp())\n start()\n\n\nWDOM package includes some tiny examples. From command line, try::\n\n python -m wdom.exapmles.rev_text\n python -m wdom.exapmles.data_binding\n python -m wdom.exapmles.timer\n\nSource codes of these examples will be found in `wdom/examples `_.\n\nTheming with CSS Frameworks\n---------------------------\n\nWDOM is CSS friendly, and provides easy way to theme your app with CSS\nframeworks. For example, use bootstrap3:\n\n.. code-block:: python\n\n from wdom.themes import bootstrap3\n from wdom.themes.bootstrap3 import Button, PrimaryButton, DangerButton\n from wdom.document import get_document\n from wdom.server import start\n\n if __name__ == '__main__':\n document = get_document()\n document.register_theme(bootstrap3)\n document.body.append(\n Button('Button'), PrimaryButton('Primary'), DangerButton('Danger')\n )\n start()\n\nDifferences are:\n\n- import tag classes from ``wdom.themes.[theme_name]`` instead of ``wdom.tag``\n- register theme-module by ``document.register_theme(theme_module)``\n\nIf you want to more easily change themes (or, css frameworks), try command-line\noption ``--theme``. ``wdom.themes.default`` module would be switched to\n``--theme`` option.\n\nFor example, in the above code, change ``from wdom.themes import bootstrap3`` to\n``from wdom.themes import default``. And execute the code with ``--theme\ntheme_name`` option (see below).\n\n\n.. image:: https://raw.githubusercontent.com/wiki/miyakogi/wdom/screencasts/themes.gif\n :target: https://raw.githubusercontent.com/wiki/miyakogi/wdom/screencasts/themes.gif\n :width: 90%\n\n\nCurrently, WDOM bundles 20+ CSS frameworks by default, and they are listed in\n`Wiki `_ with screenshots. In\neach theme module, only primitive HTML elements (typographies, buttons, form\ncomponents, tables, and grids) are defined, but complex elements like\nnavigations or tabs are not defined.\n\nIf your favourite CSS framework is not included, please let me know on `Issues`_,\nor write its wrapper module and send `PR`_.\n\nOf course you can use your original css. See `Loading Static Contents -> Local\nResource\n`_\nsection in the `User Guide`_.\n\nContributing\n------------\n\nContributions are welcome!!\n\nIf you find any bug, or have any comments, please don't hesitate to report to\n`Issues`_ on GitHub.\nAll your comments are welcome!\n\nMore Documents\n--------------\n\nPlease see `User Guide`_.\n\n.. _DOM specification: https://dom.spec.whatwg.org/\n.. _Selenium: http://selenium-python.readthedocs.org/\n.. _tornado: http://www.tornadoweb.org/en/stable/\n.. _User Guide: https://miyakogi.github.io/wdom/guide/index.html\n.. _Issues: https://github.com/miyakogi/wdom/issues\n.. _PR: https://github.com/miyakogi/wdom/pulls\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/miyakogi/wdom",
"keywords": "dom browser gui ui",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "wdom",
"package_url": "https://pypi.org/project/wdom/",
"platform": "",
"project_url": "https://pypi.org/project/wdom/",
"project_urls": {
"Homepage": "https://github.com/miyakogi/wdom"
},
"release_url": "https://pypi.org/project/wdom/0.3.1/",
"requires_dist": null,
"requires_python": "",
"summary": "GUI library for browser-based desktop applications",
"version": "0.3.1"
},
"last_serial": 3727090,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "ec53c601b444e3c8b5ef9801346a51c8",
"sha256": "1105f4504c625a9a75b6ab29afa64b2eb871e99d3037d4fa0c413f152da0b11d"
},
"downloads": -1,
"filename": "wdom-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "ec53c601b444e3c8b5ef9801346a51c8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 198882,
"upload_time": "2016-05-14T23:32:08",
"url": "https://files.pythonhosted.org/packages/a2/04/a496d44f356c75e84b717559149b4063f07cdb45c2e5accad03a921126fa/wdom-0.1.0.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "30245547b8c0f0654e3ca6edf643466b",
"sha256": "7d277e1910b8cca28d932e33f0219154b193a4ab2eb93131233aa236346cf9f6"
},
"downloads": -1,
"filename": "wdom-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "30245547b8c0f0654e3ca6edf643466b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 198989,
"upload_time": "2016-05-14T23:58:53",
"url": "https://files.pythonhosted.org/packages/ad/01/d16ba3a92be6d1c4bbe54d62bc8a7f5a5b0e1e578bd01563a67153494c34/wdom-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "b0f883a6a2fdcebe62b31a5d7f9b8b76",
"sha256": "6798bdf022d4eefd0578c4c2a9ab05e74ef2fc8cad52eb7305d490a9b183c041"
},
"downloads": -1,
"filename": "wdom-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "b0f883a6a2fdcebe62b31a5d7f9b8b76",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 200386,
"upload_time": "2016-05-15T13:13:57",
"url": "https://files.pythonhosted.org/packages/42/5c/40f17b4fae066b4d54ffe310664f12d9f247640580719a092215f6af6d0d/wdom-0.1.2.tar.gz"
}
],
"0.1.3": [
{
"comment_text": "",
"digests": {
"md5": "d2576adda1a2c6445658507ef3da9adc",
"sha256": "565de244d863a9424147e7ab06e361f550ed493163dc082badc3d19d55e6075a"
},
"downloads": -1,
"filename": "wdom-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "d2576adda1a2c6445658507ef3da9adc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 275871,
"upload_time": "2016-05-17T12:22:01",
"url": "https://files.pythonhosted.org/packages/9f/44/d94fd80b4941a3dc4a1062c2aa56f9d67f080ca3cfdb3c15fcbea801fac9/wdom-0.1.3.tar.gz"
}
],
"0.1.4": [
{
"comment_text": "",
"digests": {
"md5": "9a33d73b40d20aad6b2f08302ed3a6d3",
"sha256": "3cf293cdd2a0165a6bc2ce426a117fabc0b9c05cae5cbf67c9a0b7d62f411ed0"
},
"downloads": -1,
"filename": "wdom-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "9a33d73b40d20aad6b2f08302ed3a6d3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 278956,
"upload_time": "2016-05-20T11:42:18",
"url": "https://files.pythonhosted.org/packages/b7/fc/132176f86d85821f2afac12b7a94ea0d9ddefd4ffb06dbed6823a7ded41b/wdom-0.1.4.tar.gz"
}
],
"0.1.5": [
{
"comment_text": "",
"digests": {
"md5": "a420637320e5a56a00bd70978809ead1",
"sha256": "db400d1633733ae3dbd0052c38705e6efe4cd0ad4d6a0e1e633fc24ad04c274e"
},
"downloads": -1,
"filename": "wdom-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "a420637320e5a56a00bd70978809ead1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 380433,
"upload_time": "2017-06-03T03:15:58",
"url": "https://files.pythonhosted.org/packages/05/35/4da29fe02536ccb44b271dec670e3a793eef72728dae32f900662b4b9f57/wdom-0.1.5.tar.gz"
}
],
"0.1.6": [
{
"comment_text": "",
"digests": {
"md5": "cf2c87710fe23e5956882c3c537bfc0c",
"sha256": "173f8a408a0a79a79156debe3f94a4ea8c2f419d67a2728fc02e57fe806e5c10"
},
"downloads": -1,
"filename": "wdom-0.1.6.tar.gz",
"has_sig": false,
"md5_digest": "cf2c87710fe23e5956882c3c537bfc0c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 352420,
"upload_time": "2017-07-21T10:23:34",
"url": "https://files.pythonhosted.org/packages/91/5d/f5c4d816cdd9965393dba8465b865b0eb3dcb2bd01a712a64c4e3476e827/wdom-0.1.6.tar.gz"
}
],
"0.1.7": [
{
"comment_text": "",
"digests": {
"md5": "0245fc98e8b355db854aacba40effdde",
"sha256": "f4052ea824d8dac38a2c66aafa414eb61dd1c40fc1066ec7f080333b5c58b500"
},
"downloads": -1,
"filename": "wdom-0.1.7.tar.gz",
"has_sig": false,
"md5_digest": "0245fc98e8b355db854aacba40effdde",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 352157,
"upload_time": "2017-07-21T14:10:24",
"url": "https://files.pythonhosted.org/packages/b8/04/ba876752194dd44cd79f5f6ceca5282acd2287806bcfb64c126eacb5bd0c/wdom-0.1.7.tar.gz"
}
],
"0.1.8": [
{
"comment_text": "",
"digests": {
"md5": "20d087af6e81cf69010a4d0054832cf7",
"sha256": "136b56360e08589be386183103a376841470fef74c5156355718bb56bfdab179"
},
"downloads": -1,
"filename": "wdom-0.1.8.tar.gz",
"has_sig": false,
"md5_digest": "20d087af6e81cf69010a4d0054832cf7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 378554,
"upload_time": "2017-07-23T10:48:56",
"url": "https://files.pythonhosted.org/packages/06/5c/5299267b25e7ec48b461d6cc05038108353fd438bd20ac871459e3ee221f/wdom-0.1.8.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "64c6cb3d76f97232fefffb776a480c41",
"sha256": "656db8819b894362c9aa096e3a67e036f8c18bcca8b5a523004aa60cc9300993"
},
"downloads": -1,
"filename": "wdom-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "64c6cb3d76f97232fefffb776a480c41",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 409680,
"upload_time": "2017-08-11T01:29:57",
"url": "https://files.pythonhosted.org/packages/7b/76/5f8f891074ad91629e9ad7e27b5fe213168de9b976b8b7e5ef62699dc341/wdom-0.2.0.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "5129c74817b78f13b45ddd289e975bf9",
"sha256": "06c9157a59ad47acbdb6aab005687c7fa1a82ee375d86edd764f74c3b92cf166"
},
"downloads": -1,
"filename": "wdom-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "5129c74817b78f13b45ddd289e975bf9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 409811,
"upload_time": "2017-08-11T08:39:53",
"url": "https://files.pythonhosted.org/packages/d2/37/5207a9c4c2e47b20a06bc98d8f7c68317e07829b628ea906cd328834e485/wdom-0.2.1.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "88707e6997ddb9f3502358dfcd168aba",
"sha256": "e149308a9b86b5bea17fd9e4d2c974fc6229f68566a9a3c2a1489856c6bea09c"
},
"downloads": -1,
"filename": "wdom-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "88707e6997ddb9f3502358dfcd168aba",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 371594,
"upload_time": "2017-09-13T16:27:09",
"url": "https://files.pythonhosted.org/packages/44/10/cb5609e421a55afc623e6522c8e31bf7a66c0ee4a797ba892f76f6497da5/wdom-0.3.0.tar.gz"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "ad8d7c2e8b8c21999695403a0e8d22dc",
"sha256": "4fe4e38caae30278ba594b6a09c96cc145f7306f77ae078a205685a05c665a2f"
},
"downloads": -1,
"filename": "wdom-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "ad8d7c2e8b8c21999695403a0e8d22dc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 372578,
"upload_time": "2018-04-02T18:23:44",
"url": "https://files.pythonhosted.org/packages/d8/60/38042bd6c0b8696f8c9e6b1de4252a7459b7cb215f624d3a7eb03cda5c0b/wdom-0.3.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "ad8d7c2e8b8c21999695403a0e8d22dc",
"sha256": "4fe4e38caae30278ba594b6a09c96cc145f7306f77ae078a205685a05c665a2f"
},
"downloads": -1,
"filename": "wdom-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "ad8d7c2e8b8c21999695403a0e8d22dc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 372578,
"upload_time": "2018-04-02T18:23:44",
"url": "https://files.pythonhosted.org/packages/d8/60/38042bd6c0b8696f8c9e6b1de4252a7459b7cb215f624d3a7eb03cda5c0b/wdom-0.3.1.tar.gz"
}
]
}