u/Due_Engineer_7647

▲ 5 r/raylib

Multi backend framework Nevu-UI has been updated to version 0.7.6!

update log: https://github.com/GolemBebrov/nevu-ui/releases/tag/v0.7.6

please give a star to nevu ui github i will really appreciate it

code in the video:

import nevu_ui as ui
import pyray as rl
import random


rl.set_trace_log_level(rl.TraceLogLevel.LOG_ERROR)


FONT_PATH = "vk_font.ttf" #! CHANGE THIS TO YOUR FONT


window = ui.Window((300, 300), title = "nevu ui!", backend = ui.Backend.RayLib, ratio = ui.NvVector2(2, 1))


base_style = ui.Style(colortheme = ui.ColorThemeLibrary.github_dark, border_radius = 0, border_width = 0, font_name = FONT_PATH)
base_style_aero = base_style(gradient = ui.Gradient([(25, 255, 105, 100),(10, 230, 100, 30)], type = ui.GradientType.Radial, direction = ui.RadialPosition.TopRight), border_radius=10)
menu = ui.Menu(window, (100%ui.fill, 100%ui.fill), base_style(gradient = ui.Gradient([ui.Color.Teal, ui.Color.Blue], type = ui.GradientType.Linear, direction = ui.LinearSide.BottomRight)))


ui.nevu_object_globals.modify(size = (100%ui.gc, 100%ui.gc), style = base_style_aero)


def set_new_anims():
    ncol1 = random.choice(colors1_list)
    ncol2 = random.choice(colors2_list)
    rand_pos = ui.NvVector2(random.randint(0, 300), random.randint(0, 300))
    rand_pos2 = ui.NvVector2(random.randint(0, 300), random.randint(0, 300))
    anim_manager.add_continuous_animation("gr_color1", ui.animations.ColorAnimation(ncol1, ncol2, 8, ui.animations.ease_in_out))
    anim_manager.add_continuous_animation("gr_color2", ui.animations.ColorAnimation(ncol2, ncol1, 12, ui.animations.ease_in_out))
    anim_manager.add_continuous_animation("position", ui.animations.Vector2Animation(rand_pos, rand_pos2, 20, ui.animations.ease_in_out))


chk_group = ui.CheckBoxGroup(single_selection = True)


button = ui.Button(lambda: None, "Placeholder", size = (200%ui.gc, 50%ui.gc), style = base_style_aero(font_size = 10), single_instance = False)


layout = ui.Grid((100%ui.fill, 100%ui.fill), y = 6, x = 12, content = {
    (6.5, 1): ui.Widget((100%ui.vw, 30%ui.gc)),
    (6.5, 6): ui.Widget((100%ui.vw, 30%ui.gc)),
    (2, 2): ui.Label("Nevu UI!", style = base_style_aero(font_size = 10)),
    (6.5, 3.5): ui.Button(set_new_anims, "Reset!", size = (200%ui.gc, 50%ui.gc), style = base_style_aero(font_size = 10)),
    (2, 5): ui.Slider((200%ui.gc, 50%ui.gc),start = 0, end = 100, current_value = 50, style = base_style_aero(font_size = 10)),
    (2, 3.5): ui.Grid((200%ui.gc, 200%ui.gc), x = 4, y = 2, content = {
        (1, 2): ui.RectCheckBox((10, 20), checkbox_group=chk_group),
        (2, 1): ui.RectCheckBox((10, 20), checkbox_group=chk_group),
        (3, 2): ui.RectCheckBox((10, 20), checkbox_group=chk_group),
        (4, 1): ui.RectCheckBox((10, 20), checkbox_group=chk_group)
    }), 
    (6.5, 5): ui.Input((200%ui.gc, 150%ui.gc), placeholder = "input", multiple=True),
    (10, 2): ui.ElementSwitcher((200%ui.gc, 70%ui.gc), elements = ["Apple", "Banana", "Cherry", "Date", "Banana"], style = base_style_aero(font_size = 8)),
    (10, 4): button
    
})


colors1_list = [
    ui.Color.Teal, ui.Color.Blue, ui.Color.Black, ui.Color.Violet
]


colors2_list = [
    ui.Color.Aqua, ui.Color.Purple, ui.Color.Wheat, ui.Color.Aquamarine
]



menu.layout = layout


anim_manager = ui.animations.AnimationManager()


set_new_anims()


def create_gradient(color1, color2, position: ui.NvVector2, size: ui.NvVector2):
    #THIS IS GRADIENT ONLY FOR RAYLIB BACKEND
    normalized = position / size
    return ui.rendering.GradientRaylib([color1, color2], type = ui.GradientType.Radial, center=normalized)


c1 = None
c2 = None
pos = None


while True:
    window.begin_frame()
    rl.clear_background(ui.Color.Black)
    window.update(fps = 999999999)
    anim_manager.update()
    new_c1 = anim_manager.get_animation_value("gr_color1")
    new_c2 = anim_manager.get_animation_value("gr_color2")
    new_pos = anim_manager.get_animation_value("position")
    if c1 != new_c1 or c2 != new_c2 or pos != new_pos:
        c1 = new_c1
        c2 = new_c2
        pos = new_pos
        gradient = create_gradient(c1, c2, pos, window.original_size)
        menu.style = menu.style(gradient = gradient)
        menu._clear_surfaces()
        
    menu.update()
    menu.draw()
   # rl.draw_fps(10, 10)
    window.end_frame()import nevu_ui as ui
import pyray as rl
import random


rl.set_trace_log_level(rl.TraceLogLevel.LOG_ERROR)


FONT_PATH = "vk_font.ttf" #! CHANGE THIS TO YOUR FONT


window = ui.Window((300, 300), title = "nevu ui!", backend = ui.Backend.RayLib, ratio = ui.NvVector2(2, 1))


base_style = ui.Style(colortheme = ui.ColorThemeLibrary.github_dark, border_radius = 0, border_width = 0, font_name = FONT_PATH)
base_style_aero = base_style(gradient = ui.Gradient([(25, 255, 105, 100),(10, 230, 100, 30)], type = ui.GradientType.Radial, direction = ui.RadialPosition.TopRight), border_radius=10)
menu = ui.Menu(window, (100%ui.fill, 100%ui.fill), base_style(gradient = ui.Gradient([ui.Color.Teal, ui.Color.Blue], type = ui.GradientType.Linear, direction = ui.LinearSide.BottomRight)))


ui.nevu_object_globals.modify(size = (100%ui.gc, 100%ui.gc), style = base_style_aero)


def set_new_anims():
    ncol1 = random.choice(colors1_list)
    ncol2 = random.choice(colors2_list)
    rand_pos = ui.NvVector2(random.randint(0, 300), random.randint(0, 300))
    rand_pos2 = ui.NvVector2(random.randint(0, 300), random.randint(0, 300))
    anim_manager.add_continuous_animation("gr_color1", ui.animations.ColorAnimation(ncol1, ncol2, 8, ui.animations.ease_in_out))
    anim_manager.add_continuous_animation("gr_color2", ui.animations.ColorAnimation(ncol2, ncol1, 12, ui.animations.ease_in_out))
    anim_manager.add_continuous_animation("position", ui.animations.Vector2Animation(rand_pos, rand_pos2, 20, ui.animations.ease_in_out))


chk_group = ui.CheckBoxGroup(single_selection = True)


button = ui.Button(lambda: None, "Placeholder", size = (200%ui.gc, 50%ui.gc), style = base_style_aero(font_size = 10), single_instance = False)


layout = ui.Grid((100%ui.fill, 100%ui.fill), y = 6, x = 12, content = {
    (6.5, 1): ui.Widget((100%ui.vw, 30%ui.gc)),
    (6.5, 6): ui.Widget((100%ui.vw, 30%ui.gc)),
    (2, 2): ui.Label("Nevu UI!", style = base_style_aero(font_size = 10)),
    (6.5, 3.5): ui.Button(set_new_anims, "Reset!", size = (200%ui.gc, 50%ui.gc), style = base_style_aero(font_size = 10)),
    (2, 5): ui.Slider((200%ui.gc, 50%ui.gc),start = 0, end = 100, current_value = 50, style = base_style_aero(font_size = 10)),
    (2, 3.5): ui.Grid((200%ui.gc, 200%ui.gc), x = 4, y = 2, content = {
        (1, 2): ui.RectCheckBox((10, 20), checkbox_group=chk_group),
        (2, 1): ui.RectCheckBox((10, 20), checkbox_group=chk_group),
        (3, 2): ui.RectCheckBox((10, 20), checkbox_group=chk_group),
        (4, 1): ui.RectCheckBox((10, 20), checkbox_group=chk_group)
    }), 
    (6.5, 5): ui.Input((200%ui.gc, 150%ui.gc), placeholder = "input", multiple=True),
    (10, 2): ui.ElementSwitcher((200%ui.gc, 70%ui.gc), elements = ["Apple", "Banana", "Cherry", "Date", "Banana"], style = base_style_aero(font_size = 8)),
    (10, 4): button
    
})


colors1_list = [
    ui.Color.Teal, ui.Color.Blue, ui.Color.Black, ui.Color.Violet
]


colors2_list = [
    ui.Color.Aqua, ui.Color.Purple, ui.Color.Wheat, ui.Color.Aquamarine
]



menu.layout = layout


anim_manager = ui.animations.AnimationManager()


set_new_anims()


def create_gradient(color1, color2, position: ui.NvVector2, size: ui.NvVector2):
    #THIS IS GRADIENT ONLY FOR RAYLIB BACKEND
    normalized = position / size
    return ui.rendering.GradientRaylib([color1, color2], type = ui.GradientType.Radial, center=normalized)


c1 = None
c2 = None
pos = None


while True:
    window.begin_frame()
    rl.clear_background(ui.Color.Black)
    window.update(fps = 999999999)
    anim_manager.update()
    new_c1 = anim_manager.get_animation_value("gr_color1")
    new_c2 = anim_manager.get_animation_value("gr_color2")
    new_pos = anim_manager.get_animation_value("position")
    if c1 != new_c1 or c2 != new_c2 or pos != new_pos:
        c1 = new_c1
        c2 = new_c2
        pos = new_pos
        gradient = create_gradient(c1, c2, pos, window.original_size)
        menu.style = menu.style(gradient = gradient)
        menu._clear_surfaces()
        
    menu.update()
    menu.draw()
   # rl.draw_fps(10, 10)
    window.end_frame()
u/Due_Engineer_7647 — 2 days ago