Wt, C++ Web Toolkit

Overview

What is Wt ?

Wt is a C++ library for developing web applications. It consists of:

  • libwt, a widget/rendering library
  • libwthttp, an (async I/O) HTTP/WebSockets server
  • libwtfcgi, a FastCGI connector library (Unix)
  • libwtisapi, an ISAPI connector library (Windows)
  • libwttest, a test connector environment

It also contains a C++ ORM, which can be used in a web application (obviously), but can also be used on its own:

  • libwtdbo, a C++ ORM
  • libwtdbopostgres, PostgreSQL backend
  • libwtdbosqlite3, Sqlite3 backend
  • libwtdbomysql, MySQL and MariaDB backend
  • libwtdbomssqlserver, Microsoft SQL Server backend
  • libwtdbofirebird, Firebird backend

For more information, see the homepage.

Dependencies

To build Wt from source you will need at least CMake (>= 3.1), and boost (version >= 1.50).

Optionally, you may want to add:

  • OpenSSL for SSL and WebSockets support in the built-in httpd, the HTTP(S) client, and additional cryptographic hashes in the authentication module
  • Haru PDF library which is used for painting to PDF
  • GraphicsMagick which is used for painting to PNG, GIF (on Windows, Direct2D can be used instead)
  • PostgreSQL for the PostgreSQL Dbo backend
  • MySQL or MariaDB for the MySQL Dbo backend
  • An ODBC driver for the Microsoft SQL Server Dbo backend, and unixODBC on Unix-like platforms
  • Firebird for the Firebird Dbo backend
  • Pango for improved font support in PDF and raster image painting. On Windows, DirectWrite can be used instead.
  • ZLib for compression in the built-in httpd.

For the FastCGI connector, you also need:

Building

Generic instructions for Unix-like platforms or Windows platforms.

Bug Reporting

Bugs can be reported here http://redmine.webtoolkit.eu/projects/wt/issues/new

Demos, examples

The homepage, itself a Wt application, contains also various examples.

License

Wt is available under two licenses:

  • the GNU General Public License, Version 2, with OpenSSL exception. Only version 2 of the GPL applies. See the LICENSE file for more information.
  • a commercial license, which does not require you to distribute the source code of your application. Request a quotation online or contact [email protected] for more information.

See doc/licenses.md for an exhaustive list of the licenses used by Wt, source code from external sources included in Wt and common (optional) external dependencies.

Issues
  • CMake: Export Wt package

    CMake: Export Wt package

    The IMPORTED targets:

    • Wt::Wt
    • Wt::Ext
    • Wt::Test
    • Wt::HTTP
    • Wt::FCGI
    • Wt::Isapi
    • Wt::Dbo
    • Wt::DboSqlite3
    • Wt::DboPostgres
    • Wt::DboFirebird
    • Wt::DboMySQL

    Usage in CMake project:

    find_package(Wt) add_executable(hello hello.cpp) target_link_libraries(hello Wt::HTTP)

    Use the NEW behavior for the policy CMP0022 to export relocatable Config-file package

    Use Boost IMPORTED targets if defined

    Update minimum required CMake version to 2.8.12

    opened by podsvirov 23
  • Add traverse() method for WAbstractItemModel

    Add traverse() method for WAbstractItemModel

    Add a method to traverse the whole sub tree of a valid index using the iterative approach. The method is implemented in WAbstractItemModel but a convenience function is added to WModelIndex. For each new visited index, a callback function is called. The callback is declared like this: std::function<bool(const Wt::WModelIndex &)> The parameter is a const reference to the currently traversed index. The return value indicates if the traversing should be continued or interrupted. 'true' means interrupt, 'false' means do not interrupt. When the traversing is finished, the last traversed index is returned.

    opened by ekondayan 11
  • Client side clock/timezone offset time feature in WEnvironment using JavaScript

    Client side clock/timezone offset time feature in WEnvironment using JavaScript

    This commit adds the feature to get the client's clock time and client's time by applying a timezone offset to UTC time in Wt::WEnvironment.

    Boot.min.js was compressed on http://javascriptcompressor.com/ There may be some places where there are Tab indents instead of 2 spaces :)

    opened by SaiFi0102 9
  • Perfect forwarding for Signal parameters

    Perfect forwarding for Signal parameters

    This fix allows you to pass move-only objects as signal parameters. To do this, they are wrapped in std::forward(). In other words the parameters are perfectly forwarded.

    An example use cases where this can be useful:

    Example emiting: button->clicked().connect( [this] { my_signal.emit(std::make_unique<Wt::WText>("Send this text widget by a signal")); });

    Example Slot :

    void contentLoad(std::unique_ptr<Wt::WWidget> widget) { root()->addWidget(std::move(widget)); }

    opened by ekondayan 7
  • fix compiler warning and optimization

    fix compiler warning and optimization

    fix compiler warning and optimization

    clang++ was warning that adding a char to a string does not append to the string, so I changed it to std::string.push_back(c);

    I also changed the loop into a switch statement, allowing for better compiler optimization than the loop.

    opened by matiu2 7
  • Implement

    Implement "RESTRICT" foreign key constraint in Wt::Dbo module

    The RESTRICT foreign key constraint is supported by all the major databases. It is a must have feature for quite a lot of database schemes. It's implementation in the Wt::Dbo module is very straight forward process, so there is no apparent reason no to do so.

    Tested:

    1. Wt compiles successfully
    2. SQLite3 - SQL generation for the tables works as expected
    opened by ekondayan 5
  • CMake is not able to find boost components using wt-config.cmake

    CMake is not able to find boost components using wt-config.cmake

    The expression

    find_package(Boost QUIET COMPONENTS "@[email protected]")
    

    results in

    find_package(Boost QUIET COMPONENTS "program_options;filesystem;thread")
    

    according to the CMake documentation [1] and [2] is a list with one entry "program_options;filesystem;thread" and CMake is unable to find the component "program_options;filesystem;thread"

    The correct form is

    find_package(Boost QUIET COMPONENTS program_options;filesystem;thread)
    

    Then CMake interprets program_options;filesystem;thread as a list with three entries.

    [1] https://cmake.org/cmake/help/latest/command/find_package.html?highlight=components [2] https://cmake.org/cmake/help/latest/command/list.html

    opened by StefanRommel 5
  • HTTP PATCH support for Wt 3.7

    HTTP PATCH support for Wt 3.7

    This patchset adds support for making Http Patch requests using Wt::Http::Client. This patchset allows WResource to respond to Http Patch requests. This patchset expands Wt::Http::Redirection support to allow for Method preserving redirection - e.g. Http 307/308 with a POST results in a Post. This patchset expands Wt::Http::Redirection support to allow for Method translating redirection - e.g. Http 301/302 with a POST results in a Get.

    opened by jamal-fuma 5
  • Fix WTimePicker segfault on construction

    Fix WTimePicker segfault on construction

    Constructors which do not take a WTimeEdit as parameter segfault due to dereferencing uninitialised timeEdit_ variable. Issue fixed by default initialising timeEdit_ in these cases

    opened by shiftee 5
  • Added WCompositeWidget::formWidgetImpl() as an alternative to

    Added WCompositeWidget::formWidgetImpl() as an alternative to "WCompositeFormWidget":

    -Added feature to add WFormModel::validator to WCompositeWidget's WFormWidget Impl by WTemplateFormView -Made the WCompositeWidget::setDisabled function similar to WWebWidget::setDisabled so that propagateSetEnabled should only be called when isEnabled() has changed -Should have fixed WCompositeWidget::setDisabled so that it doesn't call impl_->propagateSetEnabled() twice, since impl_->setDisabled() should also call the same function -Added WTemplate::Functions::fwId() to get WCompositeWidget::formWidgetImpl()'s ID or WObject::id() -Added a test in WSuggestionPopup::forEdit so that multiple calls to forEdit shouldn't cause trouble

    opened by SaiFi0102 5
  • Rate limit scrolling history.replaceState

    Rate limit scrolling history.replaceState

    Scrolling on Chrome Beta for Linux with native smooth scrolling generates a pretty high frequency of scroll events which results in choppy scrolling behaviour. Chrome Inspector shows a repeated message of:

    Throttling history state changes to prevent the browser from hanging.
    

    This PR rate-limits the updateScrollHistory call to avoid those stalls.

    opened by hyperair 4
  • Add information for using WResource

    Add information for using WResource

    I didn't see any other documentation that lays this pointer out, so I think this is the best place for it.

    It might also be helpful to point to a pertinent example such as blog.C:49 or the URL Params example (lines 53 and following).

    opened by limitedAtonement 0
  • Implement device to pixelratio (proof of concept)

    Implement device to pixelratio (proof of concept)

    Signed-off-by: apivan <[email protected]

    An initial implementation for device to pixel ratio aware chart canvas.
    Aims to solve the 4k screen canvas rendering quality

    A chart on 4k screen without device to pixel ratio aware 4kdpioff

    After this patch 4kdvcimplement

    Please feel free to review. Or provide feedback.

    opened by Apivan 0
  • Improved performance of adding rows and columns to the WTable

    Improved performance of adding rows and columns to the WTable

    The issue was the calling of WTableRow::rowNum() for every added cell, which iterated over the whole table.

    The methods WTableRow::createCell(), WTableRow::insertColumn() and WTableRow::expand() got the new row argument defaulting to -1 that WTable can use when creating new elements with WTable::insertRow() and WTable::insertColumn(). These methods are called by WTable::expand() so the performance improvement affects every operation that expands the table.

    The performance of populating a new table row by row is increased with this commit from O(n^2+n) to O(n).

    opened by jakub-w 2
Releases(4.7.2)
Zenotech 7 Nov 13, 2020
Insight Toolkit (ITK) is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration

ITK: The Insight Toolkit C++ Python Linux macOS Windows Linux (Code coverage) Links Homepage Download Discussion Software Guide Help Examples Issue tr

Insight Software Consortium 1k Jun 26, 2022
Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit

The Microsoft Cognitive Toolkit is a unified deep learning toolkit that describes neural networks as a series of computational steps via a directed graph.

Microsoft 17.2k Jun 26, 2022
VNOpenAI 22 Jun 15, 2022
Wt, C++ Web Toolkit

What is Wt ? Wt is a C++ library for developing web applications. It consists of: libwt, a widget/rendering library libwthttp, an (async I/O) HTTP/Web

null 1.4k Jun 26, 2022
MaixPy3 is a Python3 toolkit based on cpython

MaixPy3 is a Python3 toolkit based on cpython, which simplifies the development of applications on Linux AI edge devices through Python programming.

Sipeed 119 Jun 22, 2022
🐸 Coqui STT is an open source Speech-to-Text toolkit which can run in real time on devices ranging from a Raspberry Pi 4 to high power GPU servers

Coqui STT ( ?? STT) is an open-source deep-learning toolkit for training and deploying speech-to-text models. ?? STT is battle tested in both producti

Coqui.ai 1.4k Jun 27, 2022
DyNet: The Dynamic Neural Network Toolkit

The Dynamic Neural Network Toolkit General Installation C++ Python Getting Started Citing Releases and Contributing General DyNet is a neural network

Chris Dyer's lab @ LTI/CMU 3.3k Jun 24, 2022
OpenVINO™ Toolkit repository

This toolkit allows developers to deploy pre-trained deep learning models through a high-level C++ Inference Engine API integrated with application logic.

OpenVINO Toolkit 3.4k Jun 24, 2022
A Modern C++ Data Sciences Toolkit

MeTA: ModErn Text Analysis Please visit our web page for information and tutorials about MeTA! Build Status (by branch) master: develop: Outline Intro

null 638 Jun 25, 2022
使用基于ONNXRuntime的Lite.AI.ToolKit 🚀🚀🌟 C++工具箱来跑RobustVideoMatting的一些案例

RobustVideoMatting.lite.ai.toolkit ?? ?? ?? 1. 简介 使用Lite.AI.ToolKit C++工具箱来跑RobustVideoMatting的一些案例(https://github.com/DefTruth/lite.ai.toolkit) . 整理不

DefTruth 55 Jun 20, 2022
C++ Live Toolkit are tools subset used to perform on-the-fly compilation and running of cpp code

C++ Live Toolkit CLT (C++ Live Toolkit) is subset of tools that are very light in size, and maintained to help programmers in compiling and executing

MondeO 1 Jan 4, 2022
An Open-Source Analytical Placer for Large Scale Heterogeneous FPGAs using Deep-Learning Toolkit

DREAMPlaceFPGA An Open-Source Analytical Placer for Large Scale Heterogeneous FPGAs using Deep-Learning Toolkit. This work leverages the open-source A

Rachel Selina Rajarathnam 14 May 30, 2022
ClanLib is a cross platform C++ toolkit library.

ClanLib ClanLib is a cross platform toolkit library with a primary focus on game creation. The library is Open Source and free for commercial use, und

Kenneth Gangstø 299 Jun 21, 2022
Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer vision

The MRPT project 1. Introduction Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer v

MRPT 1.4k Jun 22, 2022
A powerful and versatile dynamic instrumentation toolkit.

MIGI Migi(My Ideas Got Incepted) is a powerful and versatile dynamic instrumentation toolkit. How it works By injecting Python scripts into target hos

nomads 3 Jan 11, 2022
Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for real-time gesture recognition.

Gesture Recognition Toolkit (GRT) The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, C++ machine learning library designed for re

Nicholas Gillian 777 Jun 19, 2022
YOLO5Face.lite.ai.toolkit

???? YOLO5Face 2021 with MNN/NCNN/TNN/ONNXRuntime C++ !

DefTruth 27 Jun 21, 2022