Computer Science Canada

How to hide a widget/GUI (not sure what to call it)?

Author:  conbunthedestroyer [ Mon Apr 03, 2017 5:45 pm ]
Post subject:  How to hide a widget/GUI (not sure what to call it)?

What is it you are trying to achieve?
Hi! So I'm trying to actually hide the GUI in my run window

What is the problem you are having?
When I run it and press the mute/unmute button, it does make them inactive for a teensy bit, but it leaves a giant white rectangle, and I want to get rid of that.


Describe what you have tried to solve this problem
I've tried drawing a box over it, but it doesn't seem to work.


Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)


Turing:


import GUI

setscreen ("graphics: 900;900, nobuttonbar")
colourback (black)
cls

forward procedure unmute
forward procedure mute
forward procedure hideMute
forward procedure hideUnmute

var menuFont : int := Font.New ("castellar:30:bold")
var muteButton : int := GUI.CreateButton (maxx div 2, 750, 100, "MUTE", mute)
GUI.SetColour (muteButton, white)
var unmuteButton : int := GUI.CreateButton (maxx div 2, 700, 100, "UNMUTE", unmute)
GUI.SetColour (unmuteButton, white)
GUI.Hide (unmuteButton)

Music.PlayFileLoop ("menu.mp3")
Font.Draw ("MENU", 430, 850, menuFont, white)

%The boxes I tried to draw
body procedure hideMute
    const x1 : int := GUI.GetX (muteButton)
    const y1 : int := GUI.GetY (muteButton)
    const width1 : int := GUI.GetWidth (muteButton)
    const height1 : int := GUI.GetHeight (muteButton)
    Draw.Box (x1, y1, x1 + width1 - 1, y1 + height1 - 1, black)
end hideMute

%more box drawing
body procedure hideUnmute
    const x : int := GUI.GetX (unmuteButton)
    const y : int := GUI.GetY (unmuteButton)
    const width : int := GUI.GetWidth (unmuteButton)
    const height : int := GUI.GetHeight (unmuteButton)
    Draw.Box (x, y, x + width - 1, y + height - 1, black)
end hideUnmute

%the actual GUIs
body procedure mute
    Music.PlayFileStop
    GUI.Hide (muteButton)
    const x1 : int := GUI.GetX (muteButton)
    const y1 : int := GUI.GetY (muteButton)
    const width1 : int := GUI.GetWidth (muteButton)
    const height1 : int := GUI.GetHeight (muteButton)
    Draw.Box (x1, y1, x1 + width1 - 1, y1 + height1 - 1, black)
    GUI.Show (unmuteButton)
end mute

%More guis
body procedure unmute
    Music.PlayFileLoop ("menu.mp3")
    GUI.Hide (unmuteButton)
    hideUnmute
    GUI.Show (muteButton)
end unmute

loop
    exit when GUI.ProcessEvent
end loop




Please specify what version of Turing you are using
Turing 4.1.1 for Windows

Author:  pttptppt [ Fri Apr 07, 2017 6:58 pm ]
Post subject:  RE:How to hide a widget/GUI (not sure what to call it)?

Im not quite sure i understand what you're trying to do but how about after the button goes inactive, just draw a Draw.FillBox of the background color over that specified area. Its not the best solution ever BUTTT, turing isnt the best either and this solution just adds 1 line to your code


: