Computer Science Canada

[Class] ButtonGroup

Author:  Raknarg [ Tue Feb 19, 2013 2:41 pm ]
Post subject:  [Class] ButtonGroup

Hey guys. I made a new version of my button class, called ButtonGroup. This way the buttons can interact with each other, which means that you can have button layering that works. If the mouse is within the bounds of two buttons, only the button on top will be activated by hovering or clicking, the one underneath will not react.

This is achieved by a parameter called order (because apparently the word priority is already preset... If someone could explain it, that'd be nice), which sets the priority of buttons. If button A has an order of 2 and button B has an order of 1, button A will take priority over button B.

These are the usable functions as listed:

new_button (order_, x1_, y1_, x2_, y2_, font_, c_, bc_, fontc_ : int, text_ : string)
Order: the priority of buttons, highest priority is the highest number. They can be the same number, btw.
x1, x2, y1, y2: Coordinates of the button. Doesn't matter what order you state them in, it'll automatically adjust them.
font: Font ID
c: border colour
bc: back colour
fontc: font colour
text: What you want written on the button

Note that the buttons are set in an array, so you can call specific buttons by calling buttonGroup -> button (x)

delete_button (x : int)
x: The number of the button you want deleted.

is_hovering (bNum : int, b : buttonData)
bNum: button number (they are listed in the order of creation)
b: The button itself (ex. buttonGroup -> button (3))

is_clicking (bNum : int)

is_clicked (bNum : int)

draw

Here's an example program to show it (save the class and the example in the same file):


Note: press the orange button to subtract and the white button to add. The red will do nothing.
Turing:

import ButtonGroup

setscreen ("offscreenonly")

var buttonGroup : ^ButtonGroup

new ButtonGroup, buttonGroup

buttonGroup -> new_button (1, 50, 50, 100, 100, 0, black, white, 0, "")
buttonGroup -> new_button (3, 75, 75, 125, 125, 0, black, 42, 0, "")
buttonGroup -> new_button (2, 60, 40, 110, 90, 0, black, brightred, 0, "")

var num : int := 0

loop
    if buttonGroup -> is_clicked (1) then
        num += 1
    elsif buttonGroup -> is_clicked (2) then
        num -= 1
    end if
    put num
    buttonGroup -> draw
    View.Update
    cls
end loop

Author:  Raknarg [ Tue Feb 19, 2013 3:58 pm ]
Post subject:  RE:[Class] ButtonGroup

note there are a couple bugs, if anyone finds them and wants the fixes, I'll update it


: