Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/muiPublic
forked frommalisipi/mui

A Cross-Platform UI Library

License

NotificationsYou must be signed in to change notification settings

sarvex/mui

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MUI - A Cross-Platform UI Libraryfor V & C

MUI Demo

Supports Windows, Linux, Android1 & Web2 (Experimental).Not tested on MacOS3.

1: System themes & map widget not working on Android now. If you interested with compiling for android, lookhere

2: With Emscripten. System themes & map widget not working now. If you interested with compiling for web, lookhere

3: All critical processes (like Widget drawing, click handling etc.) should work on MacOS. But themes and screen reader won't work, and could be include MacOS-only bug.

Example

importmuiasmfnincrease_count(event_details m.EventDetails,mut app&m.Window, app_datavoidptr){unsafe{   app.get_object_by_id("count")[0]["text"].str=(app.get_object_by_id("count")[0]["text"].str.int()+1).str()   }}mutapp:=m.create(m.WindowConfig{ title:"Counter - MUI Example", height:100, width:400 })app.label(m.Widget{ id:"count", x:"5%x", y:"5%y", width:"45%x", height:"90%y" text:"0" })app.button(m.Widget{ id:"count_button", x:"# 5%x", y:"5%y", width:"45%x", height:"90%y", text:"Count", onclick:increase_count })app.run()

You can find more examples in./examples/ folder. Also you can visitGallery that lists applications screenshots uses MUI.

You can test MUI easily fromhere.

Abilities

  • C Bindings (Desktop Only & Experimental)
  • Theme from system accent color,If couldn't found accent color, use dark/light theme preference. If couldn't found dark/light theme preference, choose light themeThemes
  • Webview Window
  • Widgets
    • Slider (Verical & Horizontal)
    • Button
    • Label
    • Textbox
    • Password
    • Group
    • Rect
    • Image
    • Progress
    • Radio Button
    • Checkbox
    • Link
    • Selectbox
    • Table
    • Graphs
      • Line Graph
      • Area Graph
    • Menubar
    • Map (Desktop Only)
    • Switch
    • Textarea
    • Codefield
    • Scrollbar (Verical & Horizontal)
    • Frames & Nested-Frames
    • List View
    • Spinner (aka UpDown)
    • Tabbed View
  • Custom/Thirdparty Widget Support (Not Finished Completely Yet)
  • Screen Reader Support (Experimental - Linux & Windows Only)
  • Emoji Icon Support (Desktop Only)
  • Dialogs
    • Messagebox (Tinyfiledialogs & built-in & web)
    • Inputbox (Tinyfiledialogs & built-in & web)
    • Passwordbox (Tinyfiledialogs & built-in & web)
    • Color Chooser (Tinyfiledialogs & built-in & web)
    • File Open/Save Dialog (Tinyfiledialogs)
    • Folder Open Dialog (Tinyfiledialogs)
    • Notification Support (Tinyfiledialogs)
    • Custom Dialog Support (Not Finished Completely Yet)
  • Anchor System
  • Transition Animations (Supports Anchors)
  • File Drag-n-Drop (Desktop Only)
  • Z-Index Support
  • Ask Quit Dialog & Quit Function (Desktop Only)
  • Keybindings (Ctrl+Key Combinations for now)Will be ignored pressed keys/key combinations that used by widgets if the assigned function to the key/key combination.
  • Japanese Input Support (Experimental)

To-Do List

  • Widgets:
    • Treeview
    • Status Bar
    • Editable Label
    • Bar Chart
    • Pie Chart
    • Column Chart
    • Gauge chart
    • Split View
    • Grid View
  • Themes:
    • Custom Colors for Widgets (except Themes)
    • Improve Light Theme
  • Other:
    • Context Menu
    • Syntax Highlighting For Codefield
    • Hot Code Reloading
    • Disable Status (for Buttons, Checkboxs, Selectboxs, etc.)
    • Load UI from External XML/JSON File
    • Improve Documentation
    • Support Other languages except V like Python and C

Thirdparty Widgets/Plugins

You can make your MUI applications more powerful with plugins.

BrowseMUI plugin list

Installation

To install, runv install https://github.com/malisipi/mui

To remove, runv remove malisipi.mui

Compile-Time Flags

FlagsDescription
-d show_fpsShow FPS of the window
-d no_emojiDisable emoji support and font embedding
-d emscriptenCompile for emscripten (use with-os wasm32-emscripten)
-d dont_clipFor debugging purposes, it disables clipping the widgets area. (Not recommend)
-d power_saveEnables power save mode. It's recommend if your application require more resource or you're running the application on low-hardware computer. Some drawing lags would be appeared with the flag, please report them.
-d support_japanese_inputSupport basic japanese input

Compile for android

  • You need to useV Android Bootstrapper to compile for Android.
  • Tinyfiledialogs won't work on Android, but you can use built-in dialogs.
  • If you want to working keyboard, you need patch the sokol library that placed into v/thirdparty. You can found the patch file from./patches.

Compile with emscripten

How to compile demo.v with emscripten:

[~/.vmodules/malisipi/mui/examples]$ v -d emscripten -d no_emoji -gc none -os wasm32-emscripten demo.v -o emscripten_.c[~/.vmodules/malisipi/mui/examples]$ cat emscripten_.c| sed's/waitpid(p->pid, &cstatus, 0);/-1;/g'| sed's/waitpid(p->pid, &cstatus, WNOHANG);/-1;/g'| sed's/wait(0);/-1;/g'&> emscripten.c[path/to/dir/v]$ emcc -fPIC -Wimplicit-function-declaration -w  thirdparty/stb_image/stbi.c -I/usr/include/gc/   -Ithirdparty/stb_image -Ithirdparty/fontstash -Ithirdparty/sokol -Ithirdparty/sokol/util    -DSOKOL_GLES2 -DSOKOL_NO_ENTRY   -DNDEBUG -O3   -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ALLOW_MEMORY_GROWTH -s MODULARIZE -s ASSERTIONS=1~/.vmodules/malisipi/mui/examples/emscripten.c -o~/.vmodules/malisipi/mui/examples/app.js --embed-file~/.vmodules/malisipi/mui/assets/noto.ttf@/noto.ttf --embed-file~/.vmodules/malisipi/mui/examples/v-logo.png@v-logo.png

How to Compile Programs that use malisipi.mui.webview?

  • You must to compile webview.o for one time before starting to building your applications.

  • For Windows

    • Requirenments:
    • %USERPROFILE%\.vmodules\malisipi\mui\webview> build_webview_for_windows.cmd
    • X:\path\to\example> copy "%USERPROFILE%\.vmodules\malisipi\mui\webview\webview2\runtimes\win-<win_arch>\native\WebView2Loader.dll""X:\path\to\example"
    • X:\path\to\example> v -cc gcc example.v
  • For Linux

    • Requirenments:
      • GCC
      • libgtk-3-dev andlibwebkit2gtk-4.0-dev package (on Debian-based systems)
    • [~/.vmodules/malisipi/mui/webview/]$ ./build_webview_for_linux.sh
    • You're ready to go!

Known Bugs

For Windows;

  • MSVC and TCC (without full-winapi, look below) not works. I strongly suggest GCC to compile your programs.v -cc gcc ...

If you have a problem/question or feature request about MUI, you can create a issue.

FAQ

How to use TCC on Windows
  • If you're using webview sub-module, TCC never works. Also some functions will be ignored with TCC. But you can still use TCC for Windows to compile faster.
  • You need full winapi for TCC.winapi-full-for-0.9.27.zip at download-mirror.savannah.gnu.org Download it and extract.
  • Movepath\to\winapi-full-for-0.9.27\include\winapi toC:\winapi.
  • v -cc tcc run example.v
  • And it's works like a charm.
MUI is freezing with blank window and crashing with `gg error: WGL: ARB_create_context_profile required!` error (For Windows OS)

Probably, it's a issue about your drivers. You will need to ensure that you have downloaded and installed a recent driver for your graphics hardware. If your system does not contain a GPU, or the GPU vendor delivers graphics drivers providing OpenGL support that's so old as to be useless to you, you might want to consider installing the Mesa3D OpenGL library on your system.

Installing Mesa3D on Windows

Also you can download pre-built library from here

MUI not working with old-V versions

V is still beta and MUI require to break support of V's old versions to supporting latest.

  • Update V version

or

  • If you need specific V edition, look up commit history and use a commit that released with similar times.
What is operating system of test devices?
  • Windows 11
  • Arch Linux
  • Android 12
  • Windows 7/10 (Sometimes)
  • Wine 8.x (Sometimes)

Suggestions

  • You should run processes that required more time than 0.2s as concurrent. If you don't, app couldn't response until finish processes.
    • Also dialogs (specially, built-in dialogs) must to be runned concurrent as different functions than main threads. If don't, app never response.
    //Don't (App never response when call the function)fnrun_dialog(event_details m.EventDetails,mut app&m.Window, app_datavoidptr){    app.create_dialog(m.Modal{typ:"messagebox",message:"Hello, "+app.wait_and_get_answer(),title:"Hi!"})print(app.wait_and_get_answer())}//Dofndo_another_process(mut app&m.Window){    app.create_dialog(m.Modal{typ:"messagebox",message:"Hello, "+app.wait_and_get_answer(),title:"Hi!"})print(app.wait_and_get_answer())}fnrun_dialog(event_details m.EventDetails,mut app&m.Window, app_datavoidptr){godo_another_process(mut app)}

License

Documentation

You can read documentation from these links.

About

A Cross-Platform UI Library

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • V95.7%
  • C4.0%
  • Other0.3%

[8]ページ先頭

©2009-2025 Movatter.jp