#!/usr/bin/scriba IMPORT visio.bas REM ******************The sine wave drawing routine SUB draw_sinus amplitude = v_spin_get(spin1) frequence = v_spin_get(spin2) FOR x = 0 to (v_canvas_width(canvas)/frequence) STEP (1/amplitude) y = SIN(x) v_canvas_plot(canvas,x*frequence,v_canvas_height(canvas)/2 - y*amplitude) NEXT x END SUB REM ****************The cosine wave drawing routine SUB draw_cosine amplitude = v_spin_get(spin3) frequence = v_spin_get(spin4) FOR x = 0 to (v_canvas_width(canvas)/frequence) STEP (1/amplitude) y = COS(X) v_canvas_plot(canvas,x*frequence,v_canvas_height(canvas)/2 + y*amplitude) NEXT x END SUB REM ****************Initialize the Visio library v_init() REM ****************Define main window win = v_window("Scriptbasic graphics", 400, 400, V_POS_CENTRE) grid = v_grid (win, 50, 60) REM ****************Define regular buttons wipebutton = v_button (grid, 39, 44, 10, 6, "Wipe") exitbutton = v_button (grid, 39, 53, 10, 6, "Exit") REM ****************Define sinusbuttons sinusbutton = v_button(grid, 1, 44, 15, 5, "Sinus") label1 = v_label(grid, 1, 50, 8, 4, "Amplitude:") spin1 = v_spin(grid, 11, 50, 5, 4) v_spin_set(spin1,80,1,99,1) label2 = v_label(grid, 1, 55, 9, 4, "Frequency:") spin2 = v_spin(grid, 11, 55, 5, 4) v_spin_set(spin2,20,1,99,1) REM ****************Define cosinebuttons cosinebutton = v_button(grid, 20, 44, 15, 5, "Cosine") label3 = v_label(grid, 20, 50, 8, 4, "Amplitude:") spin3 = v_spin(grid, 30, 50, 5, 4) v_spin_set(spin3,60,1,99,1) label4 = v_label(grid, 20, 55, 9, 4, "Frequency:") spin4 = v_spin(grid, 30, 55, 5, 4) v_spin_set(spin4, 30, 1, 99, 1) REM ****************Define menu item1 = v_menu_list (1,"About") item2 = v_menu_list (1,"Quit") bar = v_menu_bar (grid, 0,0,50,5) v_menu_connect (bar,1,"Help",V_POS_LEFT) REM ****************Define canvas frame = v_frame(grid,1, 6, 48, 37, V_SHADOW_ETCHED_IN) canvas = v_canvas(grid, 2,7,46,35) REM ****************Define dialogue window dialog = v_window("About...",150,100,V_POS_MOUSE) grid2 = v_grid(dialog, 7, 7) okbutton = v_button(grid2, 2, 4, 3, 2, "OK") info = v_label(grid2, 0, 0, 7, 4, "Demo program by PvE.") REM ****************Main program v_show(win) REPEAT v_wait(V_FALSE) IF v_button_clicked(sinusbutton) THEN draw_sinus IF v_button_clicked(cosinebutton) THEN draw_cosine IF v_button_clicked(wipebutton) THEN v_canvas_clear(canvas) IF v_menu_clicked(item1) THEN v_show(dialog) IF v_button_clicked(okbutton) THEN v_hide(dialog) UNTIL v_button_clicked(exitbutton) OR v_menu_clicked(item2) v_exit()