Home

Awesome

cREMI

C++ port of remi GUI project

<p align="center"> <img src="https://raw.githubusercontent.com/dddomodossola/remi/master/remi/res/logo.png" width="430"> </p> <h2 align="center" style="font-weight:bolder"> GUI library for your C++ applications </h2> <p align="center" style="white-space:pre"> cRemi is a GUI library for C++ applications that gets rendered in web browsers. This allows you to access your interface locally and remotely. </p>

Remi enables developers to create platform independent GUI with C++. The entire GUI is rendered in your browser. No HTML is required, Remi automatically translates your code into HTML at runtime. When your app starts, it starts a web server that will be accessible on your network.

A basic application appears like this:

#include "remi_server.h"
#include <string.h>

#pragma execution_character_set( "utf-8" )

using namespace std;
using namespace remi;
using namespace remi::utils;

class HelloWorld : public remi::server::App {
private:
	remi::AsciiContainer* mainContainer;
	remi::Button* btn1;
	remi::Label* label;

public:

	Widget* main() {

		mainContainer = new remi::AsciiContainer(
			R"(
			|label          |
			|button         |
			)", 1.0, 1.0
		);

		mainContainer->style.set("width", "500px");
		mainContainer->style.set("height", "600px");

		label = new remi::Label("CRemi");
		label->css_background_color = "yellow";
		label->css_text_align = "center";
		label->css_font_size = "100px";
		mainContainer->append(label, "label");

		btn1 = new remi::Button("Say hello");
		/* registering a class member listener */
		LINK_EVENT_TO_CLASS_MEMBER(remi::Button::onclick, btn1->event_onclick, this, &HelloWorld::onClick);
		mainContainer->append(btn1, "button");

		return mainContainer;
	}

	void onClick(EventSource* emitter, void* userdata) {
		this->label->setText("Hello World!");
	}

};

int main() {
	remi::server::Server<HelloWorld>* srv = new remi::server::Server<HelloWorld>();
	srv->start("127.0.0.1");
	getchar();
	return 0;
}

Run the application then, open the browser at the address "http://127.0.0.1:91".