▲ 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