diff --git a/ViperFLProject/App/main2.vp b/ViperFLProject/App/main2.vp index c6e9bc1..205ba47 100644 --- a/ViperFLProject/App/main2.vp +++ b/ViperFLProject/App/main2.vp @@ -17,6 +17,7 @@ import fltk term_ptr: t.CPtr = None status_ptr: t.CPtr = None scheme_idx: int = 0 +theme_idx: int = 0 def on_btn_click(w: bytes, data: bytes): @@ -79,6 +80,21 @@ def on_style(w: bytes, data: bytes): fltk.Fl_Output_set_value(status_ptr, f"Scheme: {fltk.Fl.scheme_string()}") +def on_theme(w: bytes, data: bytes): + """Fl_Theme 主题切换:base→Dark→Metro 循环""" + global theme_idx + theme_idx = theme_idx + 1 + if theme_idx == 1: + fltk.Fl.set_theme_dark() + elif theme_idx == 2: + fltk.Fl.set_theme_metro() + else: + fltk.Fl.set_scheme("base") + fltk.Fl.reload_scheme() + theme_idx = 0 + fltk.Fl_Output_set_value(status_ptr, f"Theme: {theme_idx}") + + def on_tick(w: bytes, data: bytes): """定时器回调:每秒终端打印一次并续订""" fltk.Fl_Terminal_append(term_ptr, "tick\n") @@ -95,10 +111,11 @@ def main() -> int: btn = fltk.Fl_Button(10, 70, 120, 30, "Click Me") check = fltk.Fl_Check_Button(150, 70, 100, 30, "Enable") slider = fltk.Fl_Slider(280, 70, 200, 30) - input_ = fltk.Fl_Input(10, 110, 240, 30, "Type here") - go = fltk.Fl_Button(260, 110, 60, 30, "Go") - style = fltk.Fl_Button(330, 110, 60, 30, "Style") - spinner = fltk.Fl_Spinner(400, 110, 120, 30) + input_ = fltk.Fl_Input(10, 110, 210, 30, "Type here") + go = fltk.Fl_Button(230, 110, 55, 30, "Go") + style = fltk.Fl_Button(295, 110, 55, 30, "Style") + theme = fltk.Fl_Button(360, 110, 55, 30, "Theme") + spinner = fltk.Fl_Spinner(425, 110, 100, 30) browser = fltk.Fl_Browser(10, 150, 280, 140) tree = fltk.Fl_Tree(300, 150, 280, 140) term = fltk.Fl_Terminal(10, 300, 570, 120, "Terminal") @@ -118,6 +135,7 @@ def main() -> int: slider.set_callback(on_slider, 0) go.set_callback(on_go, input_._ptr) style.set_callback(on_style, 0) + theme.set_callback(on_theme, 0) # 数值微调框 spinner.set_minimum(0.0) diff --git a/ViperFLProject/project.vpj b/ViperFLProject/project.vpj index 0d45763..0bed6e0 100644 --- a/ViperFLProject/project.vpj +++ b/ViperFLProject/project.vpj @@ -34,6 +34,7 @@ ], "static_libs": [ "../includes/fltk/cfltk/build/libcfltk2.a", + "../includes/fltk/cfltk/build/libfltk_theme.a", "../includes/fltk/cfltk/build/fltk/lib/libfltk_images.a", "../includes/fltk/cfltk/build/fltk/lib/libfltk.a", "../includes/fltk/cfltk/build/fltk/lib/libfltk_png.a",