Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io

Overview

BODEN CROSS-PLATFORM FRAMEWORK

Build purely native cross-platform experiences with Boden

Website Getting Started API Reference Guides Twitter Feedback

  • Native widgets: Instead of drawing widgets that look nearly identical to the platform's design, Boden uses native OEM widgets ensuring that your app will always have a truly native look and feel.
  • Fast: Boden is written in modern C++17 to make development easy and apps fast and battery-friendly.
  • Open: Boden is an open framework and welcomes contributions and feedback from the community. We want you to shape its development so Boden can meet your requirements.

Note: This is a beta release. The Boden API is not yet fully complete and stable.

Table of Contents

Getting Started

Prerequisites

On a Mac: macOS 10.14+, Xcode 10.1+, Python 3.4+, CMake 3.15.0+.

On Windows: Windows 10, Python 3.4+, CMake 3.10.2+, Ninja, Git, Oracle JDK 8, and Android Studio (with Android NDK, see the installation instructions for further details).

On Ubuntu 18.04: sudo apt update && sudo apt install git cmake ninja-build python python3-distutils openjdk-8-jdk qemu-kvm plus Android Studio (with Android NDK, see the installation instructions for further details).

Step 1: Clone the Boden Repo

git clone --recurse-submodules https://github.com/AshampooSystems/boden.git

Step 2: Generate and Open an IDE Project

cd boden
python boden.py open -t bodendemo

This will bring up Xcode on macOS or Android Studio on Linux/Windows.

If anything goes wrong, please make sure that all dependencies are installed and set up correctly. Check out our extended guides for help:

Step 3: Run a Boden Example Application

In Xcode, select the bodendemo target and hit Cmd+R.

In Android Studio, select the bodendemo target and hit Shift+F10.

Your First Boden Application

To create your first Boden app, open up a terminal (or command prompt), change to your local boden directory, and execute the following commands:

python boden.py new -n AwesomeApp
cd AwesomeApp
python ../boden.py open

This will create a new folder named AwesomeApp and generate source and project files for a simple Hello World cross-platform application. The last command will prepare and open an Xcode project on the Mac or an Android Studio project on Linux/Windows.

In Xcode, select the AwesomeApp target and then press Cmd+R to build and run the Hello World application.

In Android Studio, wait for Gradle to finish its sync and configuration processes and then select the bodendemo target and press Cmd+R to build and run the example application, then select the AwesomeApp target and then press Ctrl+R on Mac or Shift+F10 on Linux/Windows to build an run the Hello World application.

Note: On macOS and Linux you can also simply type ./boden instead of calling python boden.py explicitly. If you want to build the Android version of the app on macOS, run ../boden open -p android.

Hello World

Here's a quick look at the source code generated by the boden new command:

// MainViewController.cpp
#include <bdn/ui.h>
#include <bdn/ui/yoga.h>

#include "MainViewController.h"

using namespace bdn;
using namespace bdn::ui;

MainViewController::MainViewController()
{
    _window = std::make_shared<Window>();
    _window->title = "AwesomeApp";
    _window->geometry = Rect{0, 0, 400, 300};
    _window->setLayout(std::make_shared<yoga::Layout>());

    auto button = std::make_shared<Button>();
    button->label = "Hello World";

    _window->contentView = button;

    _window->visible = true;
}

MainViewController.cpp is the most interesting part of the source generated for the Hello World application. The main view controller will be instantiated at application launch. It's responsible for setting up the application's user interface.

Here's what the code does in detail:

First, create a new Window and set its title to AwesomeApp:

_window = std::make_shared<Window>();
_window->title = "AwesomeApp";

To get an automatic layout, use a yogalayout::Layout and set a default window size:

_window->geometry = Rect{0, 0, 400, 300};
_window->setLayout(std::make_shared<yoga::Layout>());

Then, instantiate a new Button and set its label to "Hello World":

auto button = std::make_shared<Button>();
button->label = "Hello World";

As the button is the only control which will be displayed in this example, set it as the window's content view:

_window->contentView = button;

Finally, make the window visible:

_window->visible = true;

Documentation

You can find the full Boden documentation on our website.

The Boden documentation is still work in progress. If you can't find the information you're looking for, please don't hesitate to ask by opening a GitHub issue or contacting us directly.

License

You may license Boden under one of the following open-source licenses:

For commercial/proprietary licensing, please contact us at [email protected].

Contact & Feedback

We are happy about your feedback!

Get in touch with us and stay up to date about Boden:

If you find something that is missing or doesn't work, please consider opening a GitHub issue.

Comments
  • build-folder option not working

    build-folder option not working

    It looks like something is broken with the --build-folder option.

    $ ./boden prepare --build-folder ./build2
    [2019-08-19 21:24:57,146] Defaulting to: ios - Xcode
    [2019-08-19 21:24:57,146] Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files.
    [2019-08-19 21:24:57,160] Preparing ./build2/ios/std/Xcode
    [2019-08-19 21:24:57,189] Configuring ...
    -- The C compiler identification is unknown
    -- CMake Error: Could not find cmake module file: ./build2/ios/std/Xcode/CMakeFiles/3.12.3/CMakeCCompiler.cmake
    -- The CXX compiler identification is unknown
    -- CMake Error: Could not find cmake module file: ./build2/ios/std/Xcode/CMakeFiles/3.12.3/CMakeCXXCompiler.cmake
    -- CMake Error at CMakeLists.txt:14 (project):
      No CMAKE_C_COMPILER could be found.
    
    
    
    -- CMake Error at CMakeLists.txt:14 (project):
      No CMAKE_CXX_COMPILER could be found.
    
    
    
    -- Configuring incomplete, errors occurred!
    See also "./build2/ios/std/Xcode/CMakeFiles/CMakeOutput.log".
    See also "./build2/ios/std/Xcode/CMakeFiles/CMakeError.log".
    Traceback (most recent call last):
      File "/Users/duncan/Projects/boden_build/./bauer/bauer.py", line 71, in main
        return run(argv)
      File "/Users/duncan/Projects/boden_build/./bauer/bauer.py", line 67, in run
        commandProcessor.process()
      File "/Users/duncan/Projects/boden_build/./bauer/commandprocessor.py", line 91, in process
        self.prepare(configuration, platformState);
      File "/Users/duncan/Projects/boden_build/./bauer/commandprocessor.py", line 135, in prepare
        self.buildExecutor.prepare(platformState, configuration, self.args)
      File "/Users/duncan/Projects/boden_build/./bauer/buildexecutor.py", line 155, in prepare
        self.cmake.configure(cmakeArguments)
      File "/Users/duncan/Projects/boden_build/./bauer/cmake.py", line 92, in configure
        self.waitForResult("configure", "CONFIGURE")
      File "/Users/duncan/Projects/boden_build/./bauer/cmake.py", line 83, in waitForResult
        raise Exception("Error occured during configure:", payload["errorMessage"])
    Exception: ('Error occured during configure:', 'Configuration failed.')
    

    Any ideas?

    Doing ./boden prepare --build-folder $(pwd)/build2 seems to work fine for some reason.

    bug question 
    opened by mrexodia 11
  • Implement Application::copyToClipboard for iOS

    Implement Application::copyToClipboard for iOS

    Usage:

    App()->copyToClipboard("Hello clipboard");
    

    Currently I do not have enough disk space to test on an emulator on Android unfortunately. I will try to make space and implement it for Android and OSX too. I'll sign the CLA in a separate PR once that's applicable.

    opened by mrexodia 10
  • Bodendemo seems to be broken on Android

    Bodendemo seems to be broken on Android

    Just tried the build - it worked and I managed to run the app on my phone. But when I tried out some menu items in the list and clicked back button to go back to the menu page I got this:

    Screenshot_20190628-235449

    It seems that each item is still clickable and functional in that sense; it's just that all the labels are gone.

    bug 
    opened by lingnand 6
  • boden open doesn't work on Fedora

    boden open doesn't work on Fedora

    I followed the instructions to setup boden on Fedora.

    I get an error when I try to open the demo project :

    [2019-07-13 12:05:48,320] Defaulting to: android - AndroidStudio [2019-07-13 12:05:48,320] Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files. [2019-07-13 12:05:48,335] Preparing /data/dimitri/gits/boden/build/android/std/AndroidStudio [2019-07-13 12:05:48,335] Preparing android environment... [2019-07-13 12:05:48,335] Ensuring that all necessary android packages are installed... Warning: File /home/dimitri/.android/repositories.cfg could not be loaded. Warning: File /home/dimitri/.android/repositories.cfg could not be loaded.
    [=======================================] 100% Computing updates...
    [2019-07-13 12:05:52,158] Done updating packages. No Gradle daemons are running. [2019-07-13 12:05:52,808] Configuring ... -- Check for working C compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -- Check for working C compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -- Check for working CXX compiler: /home/dimitri/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Boden platform: -- Name: android -- Family: posix -- Boden configuration: -- Uses foundation kit: No -- Uses java: Yes -- Force shared: Yes -- Force static: No -- clang-format was not found! -- Found PythonInterp: /usr/bin/python (found version "2.7.16") -- Using the single-header code from /home/dimitri/gits/boden/3rdparty/json/single_include/ -- CMake Warning (dev) at 3rdparty/googletest/CMakeLists.txt:3 (project): Policy CMP0048 is not set: project() command manages VERSION variables. Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

    The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
    

    This warning is for project developers. Use -Wno-dev to suppress it.

    -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - found -- Found Threads: TRUE
    -- Boden library configuration: -- Shared: Off -- Architecture: 32 bit -- Package name: boden-0.2.0-android-x86-28-%BUILD_TYPE%-Clang -- Configuring done [2019-07-13 12:05:54,270] Done. [2019-07-13 12:05:54,270] Generating ... -- Generating done Traceback (most recent call last): File "/data/dimitri/gits/boden/./bauer/bauer.py", line 66, in main return run(argv) File "/data/dimitri/gits/boden/./bauer/bauer.py", line 62, in run commandProcessor.process() File "/data/dimitri/gits/boden/./bauer/commandprocessor.py", line 119, in process self.prepare(configuration, platformState) File "/data/dimitri/gits/boden/./bauer/commandprocessor.py", line 133, in prepare self.androidExecutor.prepare(platformState, configuration, self.args) File "/data/dimitri/gits/boden/./bauer/androidexecutor.py", line 84, in prepare self.prepareAndroidStudio(platformState, configuration, androidAbi, androidHome, buildDir, args) File "/data/dimitri/gits/boden/./bauer/androidexecutor.py", line 168, in prepareAndroidStudio project = config["main-project"] KeyError: 'main-project'

    I tried both ./boden and python boden

    Do I have a dependency missing ?

    I'm using Fedora 30.

    bug 
    opened by ShadowMitia 4
  • Add public to NativeInit::baseInit

    Add public to NativeInit::baseInit

    I want to access NativeInit::baseInit from outside package. Would you like to add public?

        static void baseInit(String nativeLibName)
        {
            if(!mBaseInitialized)
            {
                System.loadLibrary(nativeLibName);
    
                mBaseInitialized = true;
            }
        }
    
    opened by stakemura 2
  • error: 'tuple_size' when building with Android NDK r20

    error: 'tuple_size' when building with Android NDK r20

    Building the bodendemo with the latest version of Android Studio and the NDK (r20) results in the following error:

    [50/129] Building CXX object framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o
    FAILED: framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o 
    /home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --gcc-toolchain=/home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot  -DBDN_HAS_NLOHMANN_JSON -DBDN_SHARED_LIB=1 -DUNICODE -D_UNICODE -Dui_EXPORTS -I../../../../../../../../../framework/ui/include -Iframework/ui/include -I../../../../../../../../../framework/foundation/include -Iframework/foundation/include -I../../../../../../../../../framework/foundation/platforms/android/include -I../../../../../../../../../3rdparty/json/single_include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -frtti -fexceptions -std=c++17 -frtti -fexceptions -O0 -fno-limit-debug-info  -fPIC   -Werror -Wmost -std=gnu++17 -MD -MT framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o -MF framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o.d -o framework/ui/CMakeFiles/ui.dir/src/Button.cpp.o -c ../../../../../../../../../framework/ui/src/Button.cpp
    In file included from ../../../../../../../../../framework/ui/src/Button.cpp:1:
    In file included from ../../../../../../../../../framework/ui/include/bdn/ui/Button.h:4:
    In file included from ../../../../../../../../../framework/ui/include/bdn/ui/ClickEvent.h:3:
    In file included from ../../../../../../../../../framework/ui/include/bdn/ui/ViewEvent.h:3:
    In file included from ../../../../../../../../../framework/ui/include/bdn/ui/View.h:3:
    ../../../../../../../../../3rdparty/json/single_include/nlohmann/json.hpp:1799:1: error: 'tuple_size' defined as a class template here but previously declared as a struct template [-Werror,-Wmismatched-tags]
    class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
    ^
    /home/hasse/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
    template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size;
                         ^
    1 error generated.
    
    bug 
    opened by jhasse 2
  • Build is not working on macOS Mojave 10.14.5 (18F132)

    Build is not working on macOS Mojave 10.14.5 (18F132)

    Hi guys, When I run: $ python boden.py open

    I get this error: [2019-05-30 22:02:56,335] Defaulting to: ios - Xcode [2019-05-30 22:02:56,335] Build system does not match the one used when the projects for this platform were first prepared. Cleaning existing build files. [2019-05-30 22:02:56,336] Preparing /Users/myusername/projects/games/boden/build/ios/std/Xcode

    2019-05-30 22:02:56,352] Configuring ... -- CMake Error: Xcode 1.5 not supported.

    Traceback (most recent call last): File "/Users/myusername/projects/games/boden/./bauer/bauer.py", line 66, in main return run(argv) File "/Users/myusername/projects/games/boden/./bauer/bauer.py", line 62, in run commandProcessor.process() File "/Users/myusername/projects/games/boden/./bauer/commandprocessor.py", line 119, in process self.prepare(configuration, platformState) File "/Users/myusername/projects/games/boden/./bauer/commandprocessor.py", line 135, in prepare self.buildExecutor.prepare(platformState, configuration, self.args) File "/Users/myusername/projects/games/boden/./bauer/buildexecutor.py", line 155, in prepare self.cmake.configure(cmakeArguments) File "/Users/myusername/projects/games/boden/./bauer/cmake.py", line 92, in configure self.waitForResult("configure", "CONFIGURE") File "/Users/myusername/projects/games/boden/./bauer/cmake.py", line 83, in waitForResult raise Exception("Error occured during configure:", payload["errorMessage"]) Exception: ('Error occured during configure:', u'Could not set up the requested combination of "generator" and "extraGenerator"')

    I am really looking forward to play on this. Thanks, Jongi

    bug question 
    opened by valduze 2
  • linux.md: fix typo in the IDE name

    linux.md: fix typo in the IDE name

    🎉 Thank you for taking the time to contribute to the Boden Framework! 🎉

    Important: Please note that any code you submit to us is subject to our Contribution License Agreement.

    Please include a description of your pull request here.

    Minor typo in docs.

    We'll review your PR and get back to you as soon as possible 🤓

    opened by mcraveiro 1
  • Info.plist generation improvements

    Info.plist generation improvements

    Just some minor whitespace improvements and added variables MACOSX_ADDITIONAL_PLIST_PROPERTIES and IOS_ADDITIONAL_PLIST_PROPERTIES to allow users to customize the Info.plist generation.

    This work is the base for my attempt to support URI handling for Boden apps on iOS.

    opened by mrexodia 0
  • Installing and running test demo

    Installing and running test demo

    Dear Boden Team,

    I installed all dependencies and tryed running the demo via python boden.py open -p android -t bodendemo .

    I got the following response: Traceback (most recent call last): File "C:\Users\DR\Documents\boden\./bauer\bauer.py", line 71, in main return run(argv) File "C:\Users\DR\Documents\boden\./bauer\bauer.py", line 37, in run generatorInfo = GeneratorInfo(); File "C:\Users\DR\Documents\boden\./bauer\generatorinfo.py", line 23, in __init__ cmakeHelp = subprocess.check_output("\"" + self.cmakeExecutable + "\" --help", shell=True, universal_newlines=True, stderr=errOutFile ); File "C:\Program Files\Python310\lib\subprocess.py", line 420, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "C:\Program Files\Python310\lib\subprocess.py", line 503, in run stdout, stderr = process.communicate(input, timeout=timeout) File "C:\Program Files\Python310\lib\subprocess.py", line 1136, in communicate stdout = self.stdout.read() File "C:\Program Files\Python310\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3: character maps to <undefined>

    Has anyone else run into this? Any possible solution??

    opened by flower78 1
  • boden.py fails, Windows 10

    boden.py fails, Windows 10

    attempting to run the example using boden.py throws an error saying it is unable to find ANDROID_HOME variable; after hardcoding the absolute path the .bat file fails and is unable to correctly create an android studio project. Could you guys maybe just provide a template with starting files already configured, instead of running a python script to create everyhting, especially if it is going to fail

    opened by edubblefan1 0
  • Unknow Failure: cmake.

    Unknow Failure: cmake.

    Hi, I'm gettin error exception while running

    python boden.py open -t bodendemo
    

    or

    python boden.py open -p android -t bodendemo
    

    Error

        raise Exception("Unknown failure, maybe cmake does not support server mode")
    Exception: Unknown failure, maybe cmake does not support server mode
    

    I also tried to add boden to local environment. The result are same.


    System info:

    • Windows 10
    • Cmake 3.20.0
    • Git 2.30.2
    • Android Studio 4.1.2
    • Ninja 1.10.0.git.kitware.jobserver-1
    • Python 3.7.9
    • JDK 15.0.2 2021-01-19
    opened by prothegee 2
  • Ability or inability

    Ability or inability

    Hello dear boden team I am very interested in boden framework but due to a lack of resources and statements from friends and relatives, I have become discouraged by boden framework . My friends at the university and around me tell me that with boden framework you can not implement and develop advanced UIs for mobile devices and you should use flutter and react native for advanced UIs, for example, UIs such as the link below can not be used. Implemented in boden framework : https://search.muz.li/YzA3M2MwZTAy and https://search.muz.li/ZjcyYjQ1Yzhl so can i implement like this ui with boden framework ?and how? and I have some question: can I use other api with other language like python for backend?

    Please answer all my questions and guide me

    opened by hadimousavi79 0
Releases(v0.4)
  • v0.4(Sep 17, 2019)

    Boden Logo

    BODEN CROSS-PLATFORM FRAMEWORK

    Follow us on Twitter

    Find our new Documentation at boden.io!

    🎉 Added

    • ui/Button: The Button now supports an imageURL to display an Image instead of text.
    • ui/TextField: The TextField now supports a placeholder text that is displayed while no text was entered.
    • ui/TextField: The TextField now supports obscuring the users input and configuring the appearance of the Keyboard.
    • ui/TextField: Added textInputType and obscureInput properties.
    • ui/Label: The Label's method of handling overflow can now be set with the textOverflow property.
    • foundation/Application: The new function Application::copyToClipboard copies a string to the global clipboard. Thanks @mrexodia!
    • foundation/path: Added the bdn::path namespace featuring functions to retrieve platform-specific paths like e.g. the path of the temporary directory readable/writable by the application.
    • foundation/Application: Added Application base class to the foundation module to make Context accessible from within the module.
    • ui/ListView: Added std::optional<size_t> ListView::rowIndexForView(const std::shared_ptr<View>& view) const
    • foundation/NeedsInit: Added specialization of std::make_shared for types that have an init function but no Constructor Arguments to allow calling std::make_shared<>() without having to specify bdn::needsInit.
    • foundation/c++: Added std:filesystem implementation.

    ⚠️ Changed

    • ui/View: The View hierarchy functions have been reworked extensively. View::childViews returns a std::vector instead of a std::list and the parent View is accessible via a read-only property View::parentView. Functions that change the hierarchy have been moved out of View.
    • ui/View: The offerLayout function has been renamed to setFallbackLayout
    • foundation/Context: Renamed UIContext to Context and moved it to foundation.
    • ui/ListView: Added listView parameter to ListViewDataSource functions
    • cmake: use_boden_template_info_plist() now accepts a bundle id and bundle name.
    • cmake: Renamed ANDROID_PACKAGEID to ANDROID_APP_ID.
    • tooling The template used by ./boden new now uses file(GLOB_RECURSE ...) to discover sources instead of manually listing the files.

    🔥 Deprecated

    • String: The String alias has been deprecated and replaced with std::string.

    🐞 Fixed

    • ui/Label: The Label's wrap property is now by default false on all platforms.
    • cmake: Setting ANDROID_PACKAGEID to custom values no longer breaks resource lookup.
    • tooling: Various path related issues fixed in `./boden.
    Source code(tar.gz)
    Source code(zip)
    v0.4.tar.gz(18.68 MB)
  • v0.3(Aug 13, 2019)

    Boden Logo

    BODEN CROSS-PLATFORM FRAMEWORK

    Stay updated: Follow us on Twitter!

    Find our new Documentation at boden.io!

    ⚠️ Breaking Changes

    • ui/TriState: TriState enum values are now capitalized to remain consistent with Boden's enum value capitalization style. Please make sure to change your code accordingly when updating to v0.3.

    📱 Features

    • foundation/AttributedString: Added the AttributedString class. AttributedString wraps the native platform implementation, i.e. NSAttributedString on iOS and Spanned on Android. You can use the fromHTML() and toHTML() functions to convert HTML markup code to/from an attributed strings.
    • ui/TextField: Added the font property to the TextField class. You can now set a custom Font on a text field using this property.
    • ui/TextField: The TextField's return key type can now be set using the returnKeyType property.
    • ui/TextField: The TextField's auto correction can now be turned on/off explicitly using the autocorrectionType property.
    • ui/TextField: Text fields can now be focussed programatically using the setFocus() action method. We've also added an example of how to implement navigation through multiple text fields within a form using the software keyboard's "next" button.

    🐞 Bugfixes

    • Symlinks in the Boden working tree's parent path are now supported by the boden command line tool.
    Source code(tar.gz)
    Source code(zip)
  • v0.2(Jun 27, 2019)

    Boden Logo

    BODEN CROSS-PLATFORM FRAMEWORK

    Follow us on Twitter

    Find our new Documentation at boden.io!

    Features

    • layout: New Flexbox layout engine based on Facebook's Yoga
    • foundation: Properties as data members: intuitive data bindings, change notifications, comprehensive type support
    • ui/controls: Fully native ListView with support for custom item views
    • ui/controls: Slider
    • ui/controls: NavigationView
    • ui/controls: ImageView
    • ui/controls: WebView
    • ui/controls: LottieView
    • platform: Support for bundling resources (images, binary assets, etc.)
    • platform: Support for device orientation
    • net: HTTP request API — easily make requests to web services without non-native net library dependencies
    • ui/controls: Generalized stylesheet support for views
    • ui/controls: Support for conditional stylesheet properties, similar to CSS media queries (e.g. different layouts per device)
    • ui/controls: Background color support
    • platform: Support for App Icons
    • platform/android: Support for day/night mode
    • ui: ViewCoreFactory mechanism to allow for independent UI modules
    • foundation: Use std::shared_ptr instead of custom reference pointer
    • foundation: Use std::string instead of custom string implementation
    • foundation: Removed Base class
    • foundation: init() pattern via std::make_shared
    • foundation: nlohmann::json
    • ui: Improved ViewCore initialization: controls can now be fully used before added to the view graph
    • ui: CoreLess class for easier subclassing of container views that do not use ViewCore
    • foundation/java New, more convenient template-based Java wrapping classes
    • ui/controls/listview: Improved single selection set/get
    • ui/controls/listview: Support for swipe down gesture
    • ui/controls/listview: Support for custom views
    • ui/controls: RenamedTextView to Label
    • foundation: Consolidated Notifier architecture
    • website: Built boden.io
    • documentation: Improved getting started guides
    • documentation: LottieView documentation
    • documentation: Net module documentation
    • documentation: Switch documentation
    • documentation: WebView documentation
    • documentation: Property documentation
    • documentation: Guides on how to write new views
    • examples: Improved demo app
    • examples: Exemplary Reddit browser app

    Bugfixes

    • platform/ios: Soft keyboard overlaps textfields
    • tooling: Fixed boden new command

    License

    We added LGPL as a new licensing option! Boden can now be licensed under GPL 2/3 or LGPL 2.1/3. This allows you to release iOS apps based on Boden on the iOS App Store without running into any licensing issues.

    Let us know what you think!

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Nov 28, 2018)

    We are happy to release our first preview of the Boden framework.

    This release supports UI development for Android and iOS devices with a small set of basic widgets and limited layouting.

    Source code(tar.gz)
    Source code(zip)
Owner
Ashampoo Systems GmbH & Co KG
Impressum: https://ashampoo-systems.com/base/about
Ashampoo Systems GmbH & Co KG
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

About wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. wxWidgets allows y

null 4.8k Jan 7, 2023
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Jan 2, 2023
A library for creating native cross-platform GUI apps

Yue A library for creating native cross-platform GUI apps. Getting started Documentations FAQ Development Examples Sample apps (with screenshots) Muba

Yue 2.8k Jan 7, 2023
A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs.

webview for golang and c/c++ A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. The goal of the project is to

polevpn 21 Dec 3, 2022
Build performant, native and cross-platform desktop applications with Node.js and CSS like styling. 🚀

NodeGui Build performant, native and cross-platform desktop applications with Node.js and CSS like styling. ?? NodeGUI is powered by Qt5 ?? which make

NodeGui 8.1k Dec 30, 2022
A single-header ANSI C immediate mode cross-platform GUI library

Nuklear This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed a

Immediate Mode UIs, Nuklear, etc. 6.7k Dec 24, 2022
A cross-platform GUI for jzIntv

jzIntvImGui Welcome to jzIntvImGui! It's an all-in-one powerful Dear ImGui interface which allows you to manage your collection of Intellivision games

null 6 Nov 24, 2022
Cross-platform GUI library

Harbour Nuklear backend This backend provides support for Nuklear. It works on on all supported platforms with an OpenGL backend, including iOS and An

Rafał Jopek 2 Jan 19, 2022
FLTK - Fast Light Tool Kit - a cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11)

FLTK - Fast Light Tool Kit - a cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11)

The FLTK Team 1.1k Dec 25, 2022
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

null 95 Nov 19, 2022
Cross-platform malware development library for anti-analysis techniques

The Anti-Analysis Menagerie Cross-platform malware development library for anti-analysis techniques. Design Goals Provide a rich and convenient interf

Alan 21 Sep 16, 2022
DeskGap is a framework for building cross-platform desktop apps with web technologies (JavaScript, HTML and CSS).

A cross-platform desktop app framework based on Node.js and the system webview

Wang, Chi 1.8k Jan 4, 2023
Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS.

?? Available Translations: ???? ???? ???? ???? ???? ???? ???? ???? . View these docs in other languages at electron/i18n. The Electron framework lets

Electron 105.2k Jan 3, 2023
Free open-source modern C++17 / C++20 framework to create console, forms (GUI like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux.

xtd Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applicat

Gammasoft 441 Jan 4, 2023
Framework Open EDA Gui

FOEDAG FOEDAG denotes Qt-based Framework Open EDA Gui Documentation FOEDAG's full documentation includes tutorials, tool options and contributor guide

The Open-Source FPGA Foundation 39 Dec 22, 2022
Neutralinojs is a lightweight and portable desktop application development framework

Neutralinojs is a lightweight and portable desktop application development framework. It lets you develop lightweight cross-platform desktop applications using JavaScript, HTML and CSS.

Neutralinojs 6.3k Dec 30, 2022
Arcan is a powerful development framework for creating virtually anything from user interfaces

Arcan is a powerful development framework for creating virtually anything from user interfaces for specialized embedded applications all the way to full-blown standalone desktop environments.

Bjorn Stahl 1.3k Dec 26, 2022
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Nim bindings, Haskell, C# bindings and Java bindings available.

webview 10.8k Jan 9, 2023
Taitank is a cross platform lightweight flex layout engine implemented in C++.

Taitank is a cross platform lightweight flex layout engine implemented in C++.

Tencent 446 Dec 21, 2022