Popularity
6.0
Growing
Activity
3.1
-
31
2
1

Programming language: Crystal
License: MIT License
Tags: GUI Development    
Latest version: v0.1.0

Iu alternatives and similar shards

Based on the "GUI Development" category.
Alternatively, view Iu alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Iu or a related project?

Add another 'GUI Development' Shard

README

Control gallery

IU

UI framework based on the Fusion/libui.cr library, with custom elements from watzon/cru.

Motivation

Currently avaliable Crystal UI frameworks are either not maintained anymore or the documentation is scarce and a single error might cause a developer to lose motivation, which is why I decided to build IU on top of the LibUI framework which is a multi-platform powerful UI toolkit.

Build status

Build Status

Features

Widgets

  • Horizontal box, Vertical box, Checkbox, Combobox, Editable combobox.
  • Button, Font button, Color button, Radio button.
  • Datetime picker, Progress bar, Slider, Spinbox.
  • Text entry, Multiline text entry.
  • Form, Grid, Group, Table, Tab, Separator.
  • Image, Label.
  • Window, Menubar, Area.
  • Many more.

Platforms

  • Mac OSX
  • Linux
  • Windows (Once crystal will be available on Windows)

Code example

require "iu"

module Example
  include Iu::Components

  # Ability to reuse components extracted to other classes.
  class MyComponent < Iu::ReusableComponent
    def initialize(@id : Int32); end

    def render : Iu::Component
      Group
        .new(title: "MyComponent", margined: true)
        .adopt(
          VerticalBox
            .new(padded: true)
            .adopt(
              Label.new(text: "Hello, World ##{@id}!"),
              stretchy: true
            )
            .adopt(
              Button.new(text: "Click Me!"),
              stretchy: true
            )
        )
    end
  end

  # :nodoc:
  class Application < Iu::Application
    def initialize_component
      window =
        Window.new(
          title: "Example",
          width: 800,
          height: 600,
          menu_bar: false
        )

      window.margined = true

      window
        .adopt(
          HorizontalBox
            .new(padded: true)
            .adopt(
              MyComponent.new(1),
              stretchy: true
            )
            .adopt(
              MyComponent.new(2),
              stretchy: true
            )
            .adopt(
              MyComponent.new(3),
              stretchy: true
            )
        )

      window.closing.on do
        exit(0)
      end

      window.show
    end
  end
end

app = Example::Application.new

app.should_quit.on do
  exit(0)
end

app.start

Installation

  1. Follow the instructions for installation laid out in andlabs/libui.
  2. Copy the compiled files from step 1 (i.e. files in build/out) to /usr/lib for OSX and Linux users.
  3. Go to your shard.yml file, and enter this in:
dependencies:
  iu:
    github: grkek/iu
  1. Run shards install.