{"id":14982478,"url":"https://github.com/mpaperno/touchportal-cpp-api","last_synced_at":"2026-02-01T04:34:09.445Z","repository":{"id":144830403,"uuid":"583863816","full_name":"mpaperno/TouchPortal-CPP-API","owner":"mpaperno","description":"A simple TCP/IP network client for use in Touch Portal plugins which wish to utilize the `Qt` C++ framework.","archived":false,"fork":false,"pushed_at":"2022-12-31T08:35:39.000Z","size":285,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-09T12:55:47.944Z","etag":null,"topics":["c-plus-plus","cpp","qt","qt-framework","qt5","qt6","touch-portal","touch-portal-api","touch-portal-plugin","touch-portal-plugin-api","touchportal","touchportalapi"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mpaperno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.GPL.txt","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-12-31T08:01:00.000Z","updated_at":"2023-01-11T09:48:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"0f44acb3-1fe3-4965-9a1a-e6e8880a1942","html_url":"https://github.com/mpaperno/TouchPortal-CPP-API","commit_stats":{"total_commits":3,"total_committers":1,"mean_commits":3.0,"dds":0.0,"last_synced_commit":"e85b79e9eafad8e596e244ac61ef5181bdc82076"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpaperno%2FTouchPortal-CPP-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpaperno%2FTouchPortal-CPP-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpaperno%2FTouchPortal-CPP-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpaperno%2FTouchPortal-CPP-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpaperno","download_url":"https://codeload.github.com/mpaperno/TouchPortal-CPP-API/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242692349,"owners_count":20170228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["c-plus-plus","cpp","qt","qt-framework","qt5","qt6","touch-portal","touch-portal-api","touch-portal-plugin","touch-portal-plugin-api","touchportal","touchportalapi"],"created_at":"2024-09-24T14:05:30.475Z","updated_at":"2026-02-01T04:34:09.415Z","avatar_url":"https://github.com/mpaperno.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Touch Portal Plugin API Client for C++ and Qt\n\n[![Made for Touch Portal](https://img.shields.io/static/v1?style=flat\u0026labelColor=5884b3\u0026color=black\u0026label=made%20for\u0026message=Touch%20Portal\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAetJREFUeNp0UruqWlEQXUePb1HERi18gShYWVqJYGeXgF+Qzh9IGh8QiOmECIYkpRY21pZWFnZaqWBhUG4KjWih4msys8FLbrhZMOfsx6w1e9beWjAYBOMtx0eOGBEZzuczrtcreAyTyQSz2QxN04j3f3J84vim8+cNR4s3rKfTSUQQi8UQjUYlGYvFAtPpVIQ0u90eZrGvnHLXuOKcB1GpkkqlUCqVEA6HsVqt4HA4EAgEMJvNUC6XMRwOwWTRfhIi3e93WK1W1Go1dbTBYIDj8YhOp4NIJIJGo4FEIoF8Po/JZAKLxQIIUSIUChGrEy9Sr9cjQTKZJJvNRtlsVs3r9Tq53W6Vb+Cy0rQyQtd1OJ1O9b/dbpCTyHoul1O9z+dzGI1Gla7jFUiyGBWPx9FsNpHJZNBqtdDtdlXfAv3vZLmCB6SiJIlJhUIB/X7/cS0viXI8n8+nrBcRIblcLlSrVez3e4jrD6LsK3O8Xi8Vi0ViJ4nVid2kB3a7HY3HY2q325ROp8nv94s5d0XkSsR90OFwoOVySaPRiF6DiHs8nmdXn+QInIxKpaJclWe4Xq9fxGazAQvDYBAKfssDeMeD7zITc1gR/4M8isvlIn2+F3N+cIjMB76j4Ha7fb7bf8H7v5j0hYef/wgwAKl+FUPYXaLjAAAAAElFTkSuQmCC)](https://www.touch-portal.com)\n[![Qt](https://img.shields.io/static/v1?style=flat\u0026labelColor=white\u0026color=41CD52\u0026label=\u0026message=Qt%20v5%20%26%20v6\u0026logo=qt)](https://qt.io)\n![Supported Platforms](https://img.shields.io/badge/platforms-Windows%20|%20MacOS%20|%20Linux-AA7722)\n[![GPLv3 License](https://img.shields.io/badge/license-GPLv3-blue.svg)](LICENSE.GPL.txt)\n[![LGPLv3 License](https://img.shields.io/badge/license-LGPLv3-blue.svg)](LICENSE.LGPL.txt)\n![Latest tagged version](https://img.shields.io/github/v/tag/mpaperno/TouchPortal-CPP-API)\n\n**A simple TCP/IP network client for use in [Touch Portal](https://www.touch-portal.com) plugins which wish to utilize the `Qt` C++ library/framework.**\n\n-------------\n## Features\n- Handles bi-directional network transfer and JSON encode/decode of _Touch Portal_ messages.\n- Uses _Qt_ signals to deliver messages from _Touch Portal_ and inform of connection status changes.\n- Send messages to _Touch Portal_ using _Qt_ slots and/or direct client method invocations.\n- Optimized for maximum throughput, no unnecessary data processing is performed (eg. assumes plugin author validates their own data before sending).\n- Includes some optional convenience methods for working with incoming action/connector data (eg. convert JSON array of objects to a `QMap` with the data IDs as keys).\n- Asynchronous socket operations, fully reentrant methods, and can be run in a separate thread if needed (with queued signals/slots communication).\n- Supports _Touch Portal_ plugin API up to v6 (latest released version). Will be updated for future versions as they are released.\n\n-------------\n## Requirements\n- Depends on the `QtCore` and `QtNetwork` libraries/modules.\n- Requires a Qt event loop to process data (uses asynchronous socket operations).\n\t- Typically this would be provided by `Q[Core|Gui]Application::exec()`, but could also be wrapped in a custom class with own event\n\t\tloop for use outside of Qt applications (for example).\n- The client should work on any platform supported by `QtNetwork` library.\n\nTested with `Qt` versions `5.12.12`, `5.15.7`, `6.4.1` on Windows 10/11, MacOS (Big Sur and later), and Linux (Debian 9 (buster) / Ubuntu 18.04 (bionic)).\n\n-------------\n## Using\nThe client consists of a single class -- `TPClientQt`.  The simplest way to use it in a project is to just include the source code files directly in the plugin build.\n\nIt can also be built/used as a shared or static library. The included CMake project file can be used to build this. By default it builds a shared library (DLL),\nbut setting the `BUILD_SHARED_LIBS` variable to 'OFF/FALSE' will build the static version instead.\n\nIn either case, just `#include \"TPClientQt.h\"` somewhere in your plugin code and you're good to go.\n\n-------------\n## Documentation\n\nAPI documentation generated from source comments is published at: https://mpaperno.github.io/TouchPortal-CPP-API/annotated.html\n\n-------------\n## Example\n\nA working plugin using this client can be found at https://github.com/mpaperno/DSEP4TP\n\nI will add a simpler example to this repository ASAP.\n\n-------------\n## Credits\n\nThis project is written, tested, and documented by myself, Maxim (Max) Paperno.\u003cbr/\u003e\nhttps://github.com/mpaperno/\n\nDocumentation generated with [Doxygen](https://www.doxygen.nl/) and styled with the most excellent [Doxygen Awesome](https://jothepro.github.io/doxygen-awesome-css).\n\n-------------\n## Copyright, License, and Disclaimer\n\nTouchPortal-CPP-API Project \u003cbr /\u003e\nCOPYRIGHT: Maxim Paperno; All Rights Reserved.\n\nDual licensed under the terms of either the GNU General Public License (**GPL**)\nor the GNU Lesser General Public License (**LGPL**), as published by the Free Software\nFoundation, either **version 3** of the Licenses, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nCopies of the GNU GPL and LGPL are included with this project\nand are available at \u003chttp://www.gnu.org/licenses/\u003e.\n\nExcept as contained in this copyright notice, the names of the authors or\ntheir institutions shall not be used in advertising or otherwise to\npromote the sale, use, or other dealings in, any product using this\nSoftware, or any derivative of this Software, without prior written\nauthorization from the authors.\n\nThis project may also use 3rd-party Open Source software under the terms\nof their respective licenses. The copyright notice above does not apply\nto any 3rd-party components used within.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpaperno%2Ftouchportal-cpp-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpaperno%2Ftouchportal-cpp-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpaperno%2Ftouchportal-cpp-api/lists"}