All Projects → jagenjo → Litegui.js

jagenjo / Litegui.js

Licence: mit
Javascript Library to create webapps with a desktop look-alike interface. All the widgets are created from Javascript instead of using HTML.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Litegui.js

Orbtk
The Rust UI-Toolkit.
Stars: ✭ 3,460 (+2541.22%)
Mutual labels:  gui, widgets
Fltk Rs
Rust bindings for the FLTK GUI library.
Stars: ✭ 241 (+83.97%)
Mutual labels:  gui, widgets
Libs Gui
The GNUstep gui library is a library of graphical user interface classes written completely in the Objective-C language; the classes are based upon Apple's Cocoa framework (which came from the OpenStep specification). *** Larger patches require copyright assignment to FSF. please file bugs here. ***
Stars: ✭ 148 (+12.98%)
Mutual labels:  gui, widgets
Iced
A cross-platform GUI library for Rust, inspired by Elm
Stars: ✭ 12,176 (+9194.66%)
Mutual labels:  gui, widgets
Bogue
GUI library for ocaml based on SDL2
Stars: ✭ 48 (-63.36%)
Mutual labels:  gui, widgets
Clui
Command Line User Interface (Console UI inspired by TurboVision)
Stars: ✭ 561 (+328.24%)
Mutual labels:  gui, widgets
Qml Creative Controls
QML controls for creative applications and creative coding
Stars: ✭ 199 (+51.91%)
Mutual labels:  gui, widgets
Vim Quickui
The missing UI extensions for Vim 8.2 (and NeoVim 0.4) !! 😎
Stars: ✭ 714 (+445.04%)
Mutual labels:  gui, widgets
Ttkwidgets
A collection of widgets for Tkinter's ttk extensions by various authors
Stars: ✭ 57 (-56.49%)
Mutual labels:  gui, widgets
Horus ui
HorusUI Immediate Mode Graphical User Interface
Stars: ✭ 106 (-19.08%)
Mutual labels:  gui, widgets
Fastclass
Little tools to download and then weed through images, delete and classify them into groups for building deep learning image datasets (based on crawler and tkinter)
Stars: ✭ 123 (-6.11%)
Mutual labels:  gui
Proxmark3gui
A cross-platform GUI for Proxmark3 client | 为PM3设计的图形界面
Stars: ✭ 122 (-6.87%)
Mutual labels:  gui
Nukleardotnet
.NET binding for the Nuklear immediate mode GUI
Stars: ✭ 126 (-3.82%)
Mutual labels:  gui
Instantsearch Android
A library of widgets and helpers to build instant-search applications on Android.
Stars: ✭ 129 (-1.53%)
Mutual labels:  widgets
Phoenix
wxPython's Project Phoenix. A new implementation of wxPython, better, stronger, faster than he was before.
Stars: ✭ 1,698 (+1196.18%)
Mutual labels:  gui
I Simpa
An Open Source software for 3D sound propagation modelling
Stars: ✭ 125 (-4.58%)
Mutual labels:  gui
React Yue
Render the views of Yue with React.
Stars: ✭ 122 (-6.87%)
Mutual labels:  gui
Jclasslib
jclasslib bytecode editor is a tool that visualizes all aspects of compiled Java class files and the contained bytecode.
Stars: ✭ 1,789 (+1265.65%)
Mutual labels:  gui
Core
OPNsense GUI, API and systems backend
Stars: ✭ 1,827 (+1294.66%)
Mutual labels:  gui
Spperspective
Widgets iOS 14 animation with 3D and dynamic shadow. Customisable transform and duration.
Stars: ✭ 127 (-3.05%)
Mutual labels:  widgets

litegui.js

Litegui is a javascript library to create webapps with a desktop look-alike user interface. All the widgets, panels, dialogs, etc are created from Javascript instead of HTML. The upside of this is that this helps to create more dynamic interfaces and gives a lot of flexibility. The downside is that you'll need to write some code to make it all work. If you're looking for a library that just needs some HTML and a couple of event handlers to work, litegui is not what you're looking for. On the other hand, any advanced UI will need a lot of coding and in creating advanced UI's litegui shines.

Example

Utils

Litegui includes several commands in the utils folder to generate docs, check for errors and build minifyed versions.

Feedback

You can write any feedback to [email protected]

Creating a UI

So let's start with building something simple. This first introduction will show you how to create a menubar and add some items to it. Please note that the javascript is brief on purpose and doesn't reflect javascript best coding practices. The goal here is to get you up and running as fast as possible.

Start with the following index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Algae</title>
    <link type="text/css" rel="stylesheet" href="litegui.js/build/litegui.css">

    <script type="text/javascript" src="litegui.js/external/jscolor/jscolor.js"></script>

    <script type="application/javascript" src="litegui.js/build/litegui.js"></script>
</head>
<body>
    <script src="init.js"></script>
</body>
</html>

Add the following to init.js:

// Initialize litegui.js
LiteGUI.init();

// Create a menu bar
var menu = new LiteGUI.Menubar();

// Add some items to it
menu.add('File/New');
menu.add('File/Settings');
// This will be shown greyed out
menu.add('File/I\'m not clickable', { disabled: true });

// Add a second main menu item
menu.add('Help/Help');
menu.add('Help/About');

// Add the menu bar to litegui
LiteGUI.add(menu);

Now open index.html in your browser. You should see a menu bar on the top of the screen. That might be pretty nifty, but it's not yet doing anything usefull. Let's fix that by adding a settings dialog

Add the following code to init.js after the call to LiteGUI.init():

function createSettingsDialog() {
    // Create a new dialog
    var dialog = new LiteGUI.Dialog('Settings', { title:'Settings', close: true, minimize: false, width: 300, height: 500, scroll: false, resizable: false, draggable: true });

    // Create a collection of widgets
    var widgets = new LiteGUI.Inspector();
    var nameWidget = widgets.addString("Your name","foo");
    var ageWidget = widgets.addNumber("Your age", 35, { min: 0, max: 125 });

    dialog.add(widgets);

    // Placeholder function to show the new settings. Normally you would do something usefull here
    // with the new settings.
    function applySettings() {
        console.log("Your name is " + nameWidget.getValue() + ", and you are " + ageWidget.getValue() + " years old");
    }

    // Add some buttons
    dialog.addButton('Ok', { close: true, callback: applySettings });
    dialog.addButton('Apply', { close: false, callback: applySettings });
    dialog.addButton('Cancel',{ close: 'fade' });

    return dialog;
}

var settingsDialog = createSettingsDialog();

// dialogs are shown on creation, let's hide it until the settings menu item is clicked
settingsDialog.hide();

And change the initialization of the menu bar:

menu.add('File/Settings', {callback: function() { settingsDialog.show('fade'); } });

Now when you click the setting item, you should see a dialog asking about your name and age.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].