{"id":26116950,"url":"https://github.com/bartoszwarzocha/bwx_sdk","last_synced_at":"2026-04-10T11:01:47.763Z","repository":{"id":279279588,"uuid":"938287727","full_name":"bartoszwarzocha/bwx_sdk","owner":"bartoszwarzocha","description":"BWX_SDK Library - multiplatform extension of the wxWidgets library","archived":false,"fork":false,"pushed_at":"2025-11-17T15:41:26.000Z","size":1313,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-17T17:25:39.058Z","etag":null,"topics":["cpp","cross-platform","linux","macos","windows","wxwidgets"],"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/bartoszwarzocha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-24T18:04:03.000Z","updated_at":"2025-11-17T15:41:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"395df43c-a3b9-4bf9-b95d-e7ad77f8d80e","html_url":"https://github.com/bartoszwarzocha/bwx_sdk","commit_stats":null,"previous_names":["bartoszwarzocha/bwx_sdk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bartoszwarzocha/bwx_sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartoszwarzocha%2Fbwx_sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartoszwarzocha%2Fbwx_sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartoszwarzocha%2Fbwx_sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartoszwarzocha%2Fbwx_sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bartoszwarzocha","download_url":"https://codeload.github.com/bartoszwarzocha/bwx_sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartoszwarzocha%2Fbwx_sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31639524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: 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":["cpp","cross-platform","linux","macos","windows","wxwidgets"],"created_at":"2025-03-10T10:53:23.155Z","updated_at":"2026-04-10T11:01:47.758Z","avatar_url":"https://github.com/bartoszwarzocha.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BWX_SDK Library\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n  - [List of component libraries](#list-of-component-libraries)\n- [Requirements](#requirements)\n  - [Supported Compilers](#supported-compilers)\n- [CI/CD – GitHub Actions](#cicd--github-actions)\n- [Library Documentation](#library-documentation)\n- [Installation \u0026 Build Instructions](#installation--build-instructions)\n  - [Option 1: Automated (Recommended)](#option-1-automated-recommended)\n  - [Option 2: Manual Setup](#option-2-manual-setup)\n    - [1. Clone the Repository](#1-clone-the-repository)\n    - [2. Install Dependencies](#2-install-dependencies)\n    - [3. Build with CMake](#3-build-with-cmake)\n- [Directory Structure](#directory-structure)\n- [Usage Example](#usage-example)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact](#contact)\n\n---\n\n## Overview\n**BWX_SDK** is a C++ library designed to extend and enhance the functionality of [wxWidgets](https://www.wxwidgets.org/). It provides a set of additional classes and utilities that simplify the usage of wxWidgets, making development more efficient and user-friendly.\n\nThe library is cross-platform, supporting **Windows**, **Linux**, and **macOS**, and offers both static and shared builds. BWX_SDK is distributed under the **wxWidgets license**.\n\n[![LINUX](https://github.com/bartoszwarzocha/bwx_sdk/actions/workflows/ci-linux.yml/badge.svg)](https://github.com/bartoszwarzocha/bwx_sdk/actions/workflows/ci-linux.yml)\n[![WINDOWS](https://github.com/bartoszwarzocha/bwx_sdk/actions/workflows/ci-windows.yml/badge.svg)](https://github.com/bartoszwarzocha/bwx_sdk/actions/workflows/ci-windows.yml)\n[![MACOS](https://github.com/bartoszwarzocha/bwx_sdk/actions/workflows/ci-macos.yml/badge.svg)](https://github.com/bartoszwarzocha/bwx_sdk/actions/workflows/ci-macos.yml)\n[![License](https://img.shields.io/badge/License-wxWidgets-orange)](https://www.wxwidgets.org/about/licence/)\n[![Version](https://img.shields.io/badge/Version-Under_construction-blue)](https://github.com/bartoszwarzocha/bwx_sdk)\n\n### From author...\n_The library is a collection of solutions I have developed in over 25 years of programming work with the [wxWidgets](https://www.wxwidgets.org/) library. It addresses a variety of programming problems for various domains, often going beyond the implementation of the GUI itself, but with a focus on maintaining consistency with [wxWidgets](https://www.wxwidgets.org/)._\n\n### Current version/release\nThe current GitHub version is still under construction (it's a long way to first release) and comes from my personal collection and is constantly being added to, while the code is updated and rewritten for modern C++. **I hope you find this stuff useful and are inspired to discover more uses for the fantastic [wxWidgets](https://www.wxwidgets.org/) library.**\n\n---\n\n## Features\n- Extended classes for core wxWidgets components.\n- Utilities for simplifying common tasks with wxWidgets:\n    - comfortable command line parser\n    - lightweight JSON parser and serializer (merge, diff, transform etc.)\n    - easy to use internationalization stuff\n    - and others...\n- Cross-platform compatibility (Windows, Linux, macOS).\n- Support for both static and shared (Windows) library builds.\n- Examples demonstrating library usage.\n\n### List of component libraries\nLibrary|Description|Comments|Status\n-|-|-|-\n_bwx_adv_|Advanced stuff like **Python** plugins system, etc.||In preparation\n_bwx_core_|Basic classes and functions for general functions (application configuration, cmd command parser, etc.), operations (such as data conversion or mathematical operations) and types (string, datetime, json, etc.)||**Moving in progress**\n_bwx_gl_|A collection of classes and functions to facilitate working with **OpenGL** in wxWidgets applications; macOS version is not available due to lack of OpenGL support - please use Metal |Requires _bwx_core_; example app available|**Moving in progress**\n_bwx_gui_|A collection of various custom GUI parts (sizer wrappers, dialog windows, custom GUI controls, etc.)|Requires _bwx_core_|**Moving in progress**\n_bwx_utils_|A collection of different classes and functions that provide ‘non-primary’ solutions, such as operations on colours|Requires _bwx_core_|**Moving in progress**\n\n---\n\n## Requirements\n- **C++20** compliant compiler.\n- **CMake \u003e= 3.21**\n- **vcpkg** for dependency management.\n- **wxWidgets \u003e= 3.2.6** (handled via `vcpkg`).\n\n### Supported Compilers\n- **Windows:** MSVC (Visual Studio 2022, 2019), Ninja\n- **Linux:** GCC, Clang, Ninja\n- **macOS:** AppleClang, Xcode, Ninja\n\n**(Tested for: Windows 11, Ubuntu Linux 22.04, macOS 14)**\n\n---\n\n## **CI/CD – GitHub Actions (_.github/workflows/..._)**  \n### **Purpose:**  \nAutomatically build and optionally test the project on **Windows**, **Linux**, and **macOS**.  \n\n### **What Does the Pipeline Do?**  \n- Automatically builds the project after each source code **push** and **pull request** to master branch.  \n- Installs system dependencies and dependencies from `vcpkg.json`.  \n- Compiles the project in **Release** and **Debig** mode.  \n- (Optional) Runs tests if defined.\n- In release publish mode packs files to release pack.\n\n_Results can be found in the **Actions** tab on GitHub._\n\n---\n\n## Library documentation\nThe library is supplied with a doxygen configuration file with which you can generate HTML and man documentation.\n\n#### Usage:\n```bash\ncd docs/doxygen/\ndoxygen ./doxyfile\n```\n\nIf you need documentation in the form of a CHM file, please enable the GENERATE_HTMLHELP parameter and disable the HTML_DYNAMIC_MENUS parameter in the doxygen file and generate the documentation again. You will get a set of files ready to build a CHM help file.\n\n---\n\n## Installation \u0026 Build Instructions\n\n### Option 1: Automated (Recommended)\nThe repository includes a Python script (`init_lib_project.py`) that automates both the dependency installation and the build process.\n\n#### Usage:\n```bash\npython init_lib_project.py\n```\n\nThis script allows you to:\n- Install all required dependencies (including `wxWidgets` via `vcpkg`).\n- Select the build configuration: **Release**, **Debug**, or **Both**.\n- Choose the desired IDE or build system.\n- Decide between static or shared library builds (Windows only).\n\n\u003e Wrapper scripts are also available for convenience:\n\u003e - **Windows:** `init_lib_project.bat`\n\u003e - **Linux/macOS:** `init_lib_project.sh`\n\n### Option 2: Manual Setup\n\n#### 1. Clone the Repository\n```bash\ngit clone https://github.com/your_username/bwx_sdk.git\ncd bwx_sdk\n```\n\n#### 2. Install Dependencies\nManually install dependencies using `vcpkg`:\n```bash\nvcpkg install wxwidgets:x64-windows   # For Windows\nvcpkg install wxwidgets:x64-linux     # For Linux\nvcpkg install wxwidgets:x64-osx       # For macOS\n```\n\u003e Ensure that the environment variable `VCPKG_ROOT` is set and `vcpkg` is accessible from the command line.\n\n#### 3. Build with CMake\n```bash\nmkdir build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release -DVCPKG_TARGET_TRIPLET=x64-windows\ncmake --build . --config Release\n```\n\n---\n\n## Directory Structure\n```\n[bwx_sdk]\n    ├── .github/              # GitHub workflows (CI/CD)\n    ├── docs/                 # Library documentation\n    │   └── doxygen/          # Doxygen configuration\n    ├── examples/             # Example applications demonstrating usage\n    ├── include/              # Public header files\n    │   └── bwx_sdk/\n    │       ├── bwx_globals.h # Common BWX SDK globals\n    │       └── [specific libraries folders]/\n    ├── locale/               # Multilanguage library files\n    ├── scripts/              # Helper scripts\n    ├── src/                  # Source files\n    ├── vcpkg.json            # Dependency manifest\n    ├── CMakeLists.txt        # Project-wide CMake configuration\n    ├── init_lib_project.py   # Python script for automated setup and build\n    ├── init_lib_project.bat  # Windows wrapper script\n    ├── init_lib_project.sh   # Unix-like systems wrapper script\n    ├── LICENSE.md            # License information\n    └── README.md             # Project documentation (this file)\n```\n\n---\n\n## Usage Example\nAll available example applications can be found in the _**examples**_ folder.\n\nBelow is a minimal sample application demonstrating how to use **BWX_SDK**:\n\n```cpp\n#include \u003cwx/wx.h\u003e\n#include \u003cbwx_sdk/bwx_core/bwx_core.h\u003e\n\nclass MyApp : public wxApp {\npublic:\n    bool OnInit() override {\n        auto* frame = new wxFrame(nullptr, wxID_ANY, \"Example BWX_SDK Application\", wxDefaultPosition, wxSize(400, 300));\n\n        auto* panel = new wxPanel(frame);\n        auto* sizer = new wxBoxSizer(wxVERTICAL);\n\n        auto* btn = new wxButton(panel, wxID_ANY, \"Test BWX_SDK function\");\n        btn-\u003eBind(wxEVT_BUTTON, [](wxCommandEvent\u0026) { bwx_sdk::bwxStdPathsInfo(); });\n\n        sizer-\u003eAdd(btn, 0, wxALL | wxEXPAND, 10);\n        panel-\u003eSetSizer(sizer);\n\n        frame-\u003eShow();\n        return true;\n    }\n};\n\nwxIMPLEMENT_APP(MyApp);\n```\n\n---\n\n## Contributing\nContributions are welcome! Feel free to open issues or submit pull requests.  \nFor significant changes, please open an issue to discuss the proposed modifications beforehand.\n\n---\n\n## License\nThis project is licensed under the [wxWidgets License](https://www.wxwidgets.org/about/licence/).\n\nInformation about third-party components can be found directly in the source code of the library or, if required by the licence, in the relevant project files.\n\n---\n\n## Contact\nDeveloped and maintained by **Bartosz Warzocha**.\n\nFor any ideas and suggestions, inquiries or support, please open an issue on the [GitHub repository](https://github.com/bartoszwarzocha/bwx_sdk/issues).\n\n---\n© 2025 Bartosz Warzocha (bartosz.warzocha@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartoszwarzocha%2Fbwx_sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbartoszwarzocha%2Fbwx_sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartoszwarzocha%2Fbwx_sdk/lists"}