Skip to content
This repository was archived by the owner on Apr 5, 2022. It is now read-only.

Soundux/webviewpp

Repository files navigation

Archived

This project has been superseded by saucer.


webviewpp

A cross-platform C++17 library that allows you to create a simple webview.

Compatibility

Platform Used Browser GUI
Windows Webview2 (Edge Chromium) WinAPI
Linux WebKit2GTK GTK

Supported Windows Versions

Version Remarks
11 Will not require Webview2 Runtime or Canary-Edge build
10 Explicit installation of the Webview2 Runtime may be required
8 Requires WINDOWS_8 to be set to ON from your CMakeLists

Usage

  • Add the library to your project
    • add_subdirectory(/path/to/webviewpp EXCLUDE_FROM_ALL)
      link_libraries(webview)
  • Use the library

Dependencies

  • Windows
    • (Runtime) Webview2 or Edge Chromium Canary Build
  • Linux
    • (Runtime & Build) webkit2gtk

Example

#include <webview.hpp>

int main()
{
  Webview::Window webview("webview", 800, 900);
  webview.expose(Webview::Function("addTen", [](int num) {
      return num + 10;
  }));

  webview.show();
  webview.run();
  return 0;
}

For more examples see examples

Embedding

webviewpp supports embedding of all required files.
To embed your files you have to use the embed-helper.

Usage:

  • Compile the embed-helper
    • mkdir build && cd build && cmake .. && cmake --build . --config Release
  • Run the embed-helper
    • ./embed_helper <path to folder containing all the required files>
  • Add the parent folder of the embedded folder to your include directories
  • Change setUrl calls to
    • embedded:///<filepath> on Linux
    • file:///embedded/<filepath> on Windows

For an example see examples/embedded

Documentation

Window::hide

void hide();

Hides the window


Window::show

void show();

Shows the window


Window::isHidden

bool isHidden();

Returns:

Whether or the window is hidden


Window::setSize

void setSize(std::size_t, std::size_t);

Sets the window size


Window::getSize

std::pair<std::size_t, std::size_t> getSize();

Returns:

The width and height in form of an std::pair


Window::getTitle

std::string getTitle();

Returns:

The title of the window


Window::setTitle

void setTitle(std::string);

Sets the window title


Window::run

void run();

Runs the mainloop

Remarks:

Is blocking


Window::exit

void exit();

Closes the webview


Window::getUrl

std::string getUrl();

Returns:

The current url


Window::setUrl

void setUrl(std::string);

Navigates to the given url


Window::enableContextMenu

void enableContextMenu(bool);

Enables the context menu


Window::enableDevTools

void enableDevTools(bool);

Enables the developer tools


Window::expose

void expose(Webview::Function const&);

Exposes the given function

Remarks:

If the given Function is an AsyncFunction it will be run in a new thread


Window::callFunction

template <typename T>
std::future<T> callFunction(Webview::JavaScriptFunction&& function);

Calls the given javascript function

Returns:

The result of the javascript function call as T

Preconditions

T must be serializable by nlohmann::json

Remarks:

You should never call .get() on the returned future in a non async context as it will freeze the webview


Window::runCode

void runCode(std::string const&);

Runs the given javascript code


Window::injectCode

void injectCode(std::string const&);

Makes the given javascript code run on document load


Window::setCloseCallback

void setCloseCallback(std::function<bool ()>);

Sets the close-callback to the given callback

Remarks:

If the callback returns true the webview will not close


Window::setNavigateCallback

void setNavigateCallback(std::function<void (const std::string &)>);

Sets the navigate-callback to the given callback


Window::setResizeCallback

void setResizeCallback(std::function<void (std::size_t, std::size_t)>);

Sets the resize-callback to the given callback


This work was originally based on the work of MichaelKim

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy