Skip to content

This is a proof of concept project. For the Rust language. To check how would be developing experience, If use UI implemented with the model view update/mvvm. Global variables oriented development.

Notifications You must be signed in to change notification settings

vkopytin/muffui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MuffUI

Experimental UI framework for windows GUI API (win32). To build windows applications with the developer experience similar to recent web technologies. Implemented with Rust programming language. In the form of declarative layout syntax.

This is the proof of concept project. Declarative UI. For the Rust language. To check how would be developing experience if use UI implemented with the model view update/mvvm. Global variables oriented development.

To build project exec:

$cargo build

To run project exec:

$cargo run

This is how it works (TODO example):

ToDO example

The solution has a small set of features.

Implemented controls:

  • Window
  • Group box
  • Panel
  • Label
  • Text (Edit box)
  • Radio box
  • Check box
  • Combobox (dropdown)

Every control has the same set of settings. Such as:

  • PosX, PosY, Width, Height, Title, Font face, Control index.

Implemented simple resize algorithm. A bit buggy. Works slow. But it works.

Utilised design patterns:

  • ELM/Model View Update (MVU)
  • Observable (Event Hub)
  • Model View ViewModel (MVVM)

Conclusion:

Declarative UI/declarative syntax is the future of UI development. It helps to build a UI that is easy to maintain, understand and extend.

It could serve as a basis for multi OS supported UI. Such UI would be easy to backport to another platform/operating system.

It is possible to expand current solution with the bigger set of features. Such as ability to change color, font settings, rendering with custom borders, tabs, etc.

About

This is a proof of concept project. For the Rust language. To check how would be developing experience, If use UI implemented with the model view update/mvvm. Global variables oriented development.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages