{"id":18098495,"url":"https://github.com/danieloneill/qmlstorybook","last_synced_at":"2026-02-07T12:01:06.546Z","repository":{"id":89578138,"uuid":"566611249","full_name":"danieloneill/QMLStorybook","owner":"danieloneill","description":"A simple \"Storybook\" for my QML components.","archived":false,"fork":false,"pushed_at":"2022-12-23T02:23:07.000Z","size":193,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-25T09:53:30.968Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"QML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danieloneill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-16T03:08:06.000Z","updated_at":"2022-11-16T03:25:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"8336f3a7-e8c7-4c45-9fda-7d1ce046d2dd","html_url":"https://github.com/danieloneill/QMLStorybook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danieloneill/QMLStorybook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2FQMLStorybook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2FQMLStorybook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2FQMLStorybook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2FQMLStorybook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danieloneill","download_url":"https://codeload.github.com/danieloneill/QMLStorybook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieloneill%2FQMLStorybook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29193998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T07:37:03.739Z","status":"ssl_error","status_checked_at":"2026-02-07T07:37:03.029Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-31T20:11:27.718Z","updated_at":"2026-02-07T12:01:06.529Z","avatar_url":"https://github.com/danieloneill.png","language":"QML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QMLStorybook\nA simple \"Storybook\" for my QML components.\n\n![QMLStorybook Screenshot](https://user-images.githubusercontent.com/10540429/202076390-0c6d7708-a9a6-464b-a521-8d44c689a9b7.png)\n\nThis is for making a (relatively) quick layout of your controls/components.\n\nIt's possible to instantiate a component several times with different properties.\n\n## Defining a Control/Component\n\nAny .qml file beginning with a capital letter which can be generally instantiated can be used.\n\n*[controls/](/controls/)* contains some example component files and entries.\n\n*[main.qml](main.qml)* contains some example entries.\n\nEntries must define:\n * A **name** (to identify it in the list)\n * An **instances** array, which may contain only a single empty object ({}) to see a default instance\n\nand optionally:\n * A **bindSignals** callback, intended to bind signals from the instance object (*obj*) to some sort of feedback\n * A **notes** string containing markdown content\n\n```\n        { 'name':'MCheckBox',\n            'source':'MCheckBox.qml',\n            'instances': [\n                { 'properties':{'text':'MCheckBox'} }\n            ],\n            'bindSignals': function(obj) {\n                obj.checkedChanged.connect( function() { storybook.log(`Checkbox checked: ${obj.checked}`); } );\n            },\n            'notes': \"**MCheckBox** inherits **MButton** and reuses the signals and properties therein.\"\n        }\n```\n\n*MCalendar* sometimes doesn't size its children (the days) based on the layout. This is also a bug, and another cool reason to have this.\n\n*MButton* works properly though, I'm pretty sure, but as you can see in the Storybook.qml entry for it, I don't yet test out all the property options.\n\n## Demo?\n\nAlthough it's painfully close to pure QML, I use a a couple methods from the C++ side to load file source into the **Source** tab, and to watch files for changes. This makes loading it in [Canonic](https://www.canonic.com/) not possible, so for as long as I keep paying the server tab you can try it here:\n\n[https://oneill.app/storybook/](https://oneill.app/storybook/)\n\nOn Webassembly the text and lines look pretty jaggy. I suspect it's a Qt 6.4 thing. (On Desktop it doesn't look gross like that.)\n\n\n## Usage\n\nJust compile it somewhere using standard Qt Qmake techniques, then point it at your storybook:\n\n```\n[l33th4x@pwnbox QMLStorybook]$ mkdir build\n[l33th4x@pwnbox QMLStorybook]$ cd build\n[l33th4x@pwnbox build]$ qmake ..\nInfo: creating stash file /home/l33th4x/code/QMLStorybook/build/.qmake.stash\n[l33th4x@pwnbox build]$ make\nclang++ -c -pipe -bang -kaboom -shizang -c -o awesomeness.o awesomeness.cpp -Isolaris -Isolaris/beos\n....\n....\n[l33th4x@pwnbox build]$ ./Storybook ../main.qml\n```\n\nCopy or modify *main.qml* to reflect your content, then launch Storybook pointing at it.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieloneill%2Fqmlstorybook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanieloneill%2Fqmlstorybook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieloneill%2Fqmlstorybook/lists"}