Computer Science Canada

Custom Created GUI(added text field)

Author:  Homer_simpson [ Sun Apr 13, 2003 3:16 pm ]
Post subject:  Custom Created GUI(added text field)

Here's the first CCG(custom created GUI) i made. Some people(me=Þ) find GUI a little hard to use so i made these to make it a little easier. 8)

code:
var bfont : int := Font.New ("System:12")
var menu1 := 0
View.Set ("offscreenonly")

function mouseover (x1, y1, x2, y2 : int) : boolean
    var mousex, mousey, mouseb : int
    mousewhere (mousex, mousey, mouseb)
    if mousex >= x1 and mousex <= x2 then
        if mousey >= y1 and mousey <= y2 then
            result true
        end if
    end if
    result false
end mouseover

procedure button (x1, y1, x2, y2, c, tc : int, s : string, num : int, var i : int, font : int)
    var mousex, mousey, mouseb : int
    mousewhere (mousex, mousey, mouseb)

    if mouseover (x1, y1, x2, y2) then
        drawline (x1, y1, x2, y1, 30)
        drawline (x2, y1, x2, y2, 30)
        drawline (x2, y2, x1, y2, 25)
        drawline (x1, y2, x1, y1, 25)
        if mouseb = 1 then
            i := num
            drawfillbox (x1 + 1, y1 + 1, x2 - 1, y2 - 1, 1)
            Font.Draw (s, (x1 + ((x2 - x1) div 2)) - (Font.Width (s, bfont) div 2) + 1, ((y1 + ((y2 - y1) div 2)) - 4) - 1, font, 14)
        else
            drawfillbox (x1 + 1, y1 + 1, x2 - 1, y2 - 1, c)
            Font.Draw (s, (x1 + ((x2 - x1) div 2)) - (Font.Width (s, bfont) div 2) + 1, ((y1 + ((y2 - y1) div 2)) - 4) - 1, font, tc)
        end if
    else
        drawline (x1, y1, x2, y1, 25)
        drawline (x2, y1, x2, y2, 25)
        drawline (x2, y2, x1, y2, 30)
        drawline (x1, y2, x1, y1, 30)
        drawfillbox (x1 + 1, y1 + 1, x2 - 1, y2 - 1, c)
        Font.Draw (s, (x1 + ((x2 - x1) div 2)) - (Font.Width (s, bfont) div 2), (y1 + ((y2 - y1) div 2)) - 4, font, tc)
    end if
end button



loop
    locate (1, 1)
    put "key ", menu1, " pressed"
    button (15, 320, 115, 340, 8, 16, "Button 1", 1, menu1, bfont)
    button (15, 290, 115, 310, 8, 16, "Button 2", 2, menu1, bfont)
    button (15, 260, 115, 280, 8, 16, "Button 3", 3, menu1, bfont)
    button (15, 230, 115, 250, 8, 16, "Button 4", 4, menu1, bfont)
    View.Update
    delay (10)
end loop



i am currently working on other CCGs but if there's any bugs please report here.

Author:  Asok [ Sun Apr 13, 2003 3:49 pm ]
Post subject: 

Quote:
button (15, 320, 115, 340, 8, 16, "Button 1", mousex, mousey, 1, menu1, mouseb)


Adding more paramaters makes something harder as opposed to easier.

nonetheless, good cusom GUI, I'm not sure if you're using 4.x but I'd reccomend a View.Update in there to reduce the flashing.

Author:  Homer_simpson [ Sun Apr 13, 2003 4:00 pm ]
Post subject: 

Thx
I tried view update but for some strange reason it slows down the program (very slow =( )
and i know that more parameters makes it harded to use but it gives it more functionalities although i could make the mousex and mousey inside the procedure...

Author:  FwuffyTheBunny [ Mon Apr 14, 2003 11:52 am ]
Post subject: 

Hmmm, well whut exactly is a GUI? Wink

Author:  Tony [ Mon Apr 14, 2003 3:38 pm ]
Post subject: 

GUI - Graphic User Interface

basically means any way of getting/putting information OTHER then by typing ~text. Includes buttons, textboxs, images, etc.

Author:  Homer_simpson [ Thu Apr 17, 2003 11:46 am ]
Post subject: 

code:
var bfont : int := Font.New ("System:12")
procedure button2 (x1, y1, x2, y2, c, tc : int, s : string)
    drawline (x1, y1, x2, y1, 30)
    drawline (x2, y1, x2, y2, 30)
    drawline (x2, y2, x1, y2, 25)
    drawline (x1, y2, x1, y1, 25)
    drawfillbox (x1 + 1, y1 + 1, x2 - 1, y2 - 1, c)
    %Font.Draw (s, (x1 + ((x2 - x1) div 2)) - (Font.Width (s, bfont) div 2), (y1 + ((y2 - y1) div 2)) - 4, bfont, tc)
    Font.Draw (s, x1 + 5, (y1 + ((y2 - y1) div 2)) - 4, bfont, tc)
end button2
function textfield (x, y, l, c, cb : int) : string
    var ch : char
    var st, st2 := ""
    button2 (x, y, x + l, y + 20, c, cb, st)
    loop
        if hasch then
            ch := getchar
            if ch not= chr (10) then
                if ch = chr (8) then
                    st2 := st
                    st := ""
                    for i : 1 .. Str.length (st2) - 1
                        st := st + st2 (i)
                    end for
                else
                    if (Font.Width (st, bfont) + 10) < l then
                        st := st + ch
                    end if
                end if
                button2 (x, y, x + l, y + 20, c, cb, st)
            else
                result st
            end if
        end if

        delay (10)
        drawline (x + Font.Width (st, bfont) + 7, y + 3, x + Font.Width (st, bfont) + 7, y + 17, c)
        delay (10)
        drawline (x + Font.Width (st, bfont) + 7, y + 3, x + Font.Width (st, bfont) + 7, y + 17, cb)

    end loop
end textfield


colorback (8)
cls
var s := textfield (10, 300, 500, 0, 16)
put s


this is the text field

Author:  BigBear [ Wed Jan 30, 2008 9:45 pm ]
Post subject:  Re: Custom Created GUI(added text field)

I think your buttons are really cool but how would you use them to run code or procedures.

Author:  Euphoracle [ Thu Jan 31, 2008 7:28 am ]
Post subject:  RE:Custom Created GUI(added text field)

Pointer to a function or procedure?

Author:  Clayton [ Thu Jan 31, 2008 8:02 am ]
Post subject:  RE:Custom Created GUI(added text field)

5 year-old post?

Author:  SNIPERDUDE [ Tue Mar 18, 2008 3:03 pm ]
Post subject:  RE:Custom Created GUI(added text field)

As for parameters, keep it simple.
On my newest version I reduced the parameters for simplicity, but added a customization proc to make things more advanced. It is styed similar to that of setscreen

ex:
buttonProperties ("text:green, back: white, etc...


: