From 01e67e7d20feb0a99b4186ae370a5708861cadce Mon Sep 17 00:00:00 2001 From: Ralph Weng Date: Fri, 20 Mar 2026 00:28:16 +1100 Subject: [PATCH] Add button usage example files --- .../interface/button-1-example-oop.cs | 54 ++++++++++++++++++ .../interface/button-1-example-top-level.cs | 45 +++++++++++++++ .../interface/button-1-example.cpp | 49 ++++++++++++++++ .../interface/button-1-example.gif | Bin 0 -> 31725 bytes .../interface/button-1-example.py | 35 ++++++++++++ .../interface/button-1-example.txt | 1 + .../json-files/usage-example-references.json | 23 ++++++++ 7 files changed, 207 insertions(+) create mode 100644 public/usage-examples/interface/button-1-example-oop.cs create mode 100644 public/usage-examples/interface/button-1-example-top-level.cs create mode 100644 public/usage-examples/interface/button-1-example.cpp create mode 100644 public/usage-examples/interface/button-1-example.gif create mode 100644 public/usage-examples/interface/button-1-example.py create mode 100644 public/usage-examples/interface/button-1-example.txt diff --git a/public/usage-examples/interface/button-1-example-oop.cs b/public/usage-examples/interface/button-1-example-oop.cs new file mode 100644 index 000000000..acb5efcd9 --- /dev/null +++ b/public/usage-examples/interface/button-1-example-oop.cs @@ -0,0 +1,54 @@ +using SplashKitSDK; + +namespace ButtonExample +{ + public class Program + { + public static void Main() + { + SplashKit.OpenWindow("Button Click Counter", 800, 600); + + // Track click counts for each button + int redCount = 0; + int blueCount = 0; + int greenCount = 0; + + while (!SplashKit.QuitRequested()) + { + SplashKit.ProcessEvents(); + SplashKit.ClearScreen(Color.White); + + // Show instructions for the user + SplashKit.DrawText("Click the buttons to increment counters", Color.Black, 10, 10); + + // Create a panel with three buttons + if (SplashKit.StartPanel("Click Counter", SplashKit.RectangleFrom(50, 50, 200, 200))) + { + // Check if each button is clicked and update counts + if (SplashKit.Button("Red")) + { + redCount++; + } + if (SplashKit.Button("Blue")) + { + blueCount++; + } + if (SplashKit.Button("Green")) + { + greenCount++; + } + SplashKit.EndPanel("Click Counter"); + } + + // Display each button's click count on the window + SplashKit.DrawText("Red clicks: " + redCount.ToString(), Color.Red, 300, 100); + SplashKit.DrawText("Blue clicks: " + blueCount.ToString(), Color.Blue, 300, 130); + SplashKit.DrawText("Green clicks: " + greenCount.ToString(), Color.Green, 300, 160); + + SplashKit.RefreshScreen(60); + } + + SplashKit.CloseAllWindows(); + } + } +} diff --git a/public/usage-examples/interface/button-1-example-top-level.cs b/public/usage-examples/interface/button-1-example-top-level.cs new file mode 100644 index 000000000..782f54ded --- /dev/null +++ b/public/usage-examples/interface/button-1-example-top-level.cs @@ -0,0 +1,45 @@ +using static SplashKitSDK.SplashKit; + +OpenWindow("Button Click Counter", 800, 600); + +// Track click counts for each button +int redCount = 0; +int blueCount = 0; +int greenCount = 0; + +while (!QuitRequested()) +{ + ProcessEvents(); + ClearScreen(ColorWhite()); + + // Show instructions for the user + DrawText("Click the buttons to increment counters", ColorBlack(), 10, 10); + + // Create a panel with three buttons + if (StartPanel("Click Counter", RectangleFrom(50, 50, 200, 200))) + { + // Check if each button is clicked and update counts + if (Button("Red")) + { + redCount++; + } + if (Button("Blue")) + { + blueCount++; + } + if (Button("Green")) + { + greenCount++; + } + EndPanel("Click Counter"); + } + + // Display each button's click count on the window + DrawText("Red clicks: " + redCount.ToString(), ColorRed(), 300, 100); + DrawText("Blue clicks: " + blueCount.ToString(), ColorBlue(), 300, 130); + DrawText("Green clicks: " + greenCount.ToString(), ColorGreen(), 300, 160); + + RefreshScreen(60); +} + +CloseAllWindows(); diff --git a/public/usage-examples/interface/button-1-example.cpp b/public/usage-examples/interface/button-1-example.cpp new file mode 100644 index 000000000..ca64a1671 --- /dev/null +++ b/public/usage-examples/interface/button-1-example.cpp @@ -0,0 +1,49 @@ +#include "splashkit.h" + +int main() +{ + open_window("Button Click Counter", 800, 600); + + // Track click counts for each button + int red_count = 0; + int blue_count = 0; + int green_count = 0; + + while (!quit_requested()) + { + process_events(); + clear_screen(COLOR_WHITE); + + // Show instructions for the user + draw_text("Click the buttons to increment counters", COLOR_BLACK, 10, 10); + + // Create a panel with three buttons + if (start_panel("Click Counter", rectangle_from(50, 50, 200, 200))) + { + // Check if each button is clicked and update counts + if (button("Red")) + { + red_count++; + } + if (button("Blue")) + { + blue_count++; + } + if (button("Green")) + { + green_count++; + } + end_panel("Click Counter"); + } + + // Display each button's click count on the window + draw_text("Red clicks: " + std::to_string(red_count), COLOR_RED, 300, 100); + draw_text("Blue clicks: " + std::to_string(blue_count), COLOR_BLUE, 300, 130); + draw_text("Green clicks: " + std::to_string(green_count), COLOR_GREEN, 300, 160); + + refresh_screen(60); + } + + close_all_windows(); + return 0; +} diff --git a/public/usage-examples/interface/button-1-example.gif b/public/usage-examples/interface/button-1-example.gif new file mode 100644 index 0000000000000000000000000000000000000000..06ad3c0a2a62a4f084968ec07943f499b15d0077 GIT binary patch literal 31725 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 Y?vAmn<3Cb(y)T^7lnphJ|Ml+w0DOh9!vFvP literal 0 HcmV?d00001 diff --git a/public/usage-examples/interface/button-1-example.py b/public/usage-examples/interface/button-1-example.py new file mode 100644 index 000000000..488629082 --- /dev/null +++ b/public/usage-examples/interface/button-1-example.py @@ -0,0 +1,35 @@ +from splashkit import * + +open_window("Button Click Counter", 800, 600) + +# Track click counts for each button +red_count = 0 +blue_count = 0 +green_count = 0 + +while not quit_requested(): + process_events() + clear_screen_to_white() + + # Show instructions for the user + draw_text_no_font_no_size("Click the buttons to increment counters", color_black(), 10, 10) + + # Create a panel with three buttons + if start_panel("Click Counter", rectangle_from(50, 50, 200, 200)): + # Check if each button is clicked and update counts + if button("Red"): + red_count += 1 + if button("Blue"): + blue_count += 1 + if button("Green"): + green_count += 1 + end_panel("Click Counter") + + # Display each button's click count on the window + draw_text_no_font_no_size("Red clicks: " + str(red_count), color_red(), 300, 100) + draw_text_no_font_no_size("Blue clicks: " + str(blue_count), color_blue(), 300, 130) + draw_text_no_font_no_size("Green clicks: " + str(green_count), color_green(), 300, 160) + + refresh_screen_with_target_fps(60) + +close_all_windows() diff --git a/public/usage-examples/interface/button-1-example.txt b/public/usage-examples/interface/button-1-example.txt new file mode 100644 index 000000000..89d60f497 --- /dev/null +++ b/public/usage-examples/interface/button-1-example.txt @@ -0,0 +1 @@ +Button Click Counter diff --git a/scripts/json-files/usage-example-references.json b/scripts/json-files/usage-example-references.json index c41688ec6..92b060ad0 100644 --- a/scripts/json-files/usage-example-references.json +++ b/scripts/json-files/usage-example-references.json @@ -1259,6 +1259,29 @@ ] } ], + "interface": [ + { + "funcKey": "button", + "title": "Button Click Counter", + "url": "/api/interface/#button", + "functions": [ + "open_window", + "quit_requested", + "process_events", + "clear_screen_to_white", + "draw_text_no_font_no_size", + "color_black", + "start_panel", + "rectangle_from", + "end_panel", + "color_red", + "color_blue", + "color_green", + "refresh_screen_with_target_fps", + "close_all_windows" + ] + } + ], "networking": [ { "funcKey": "dec_to_hex",