Short: Progress window, bevel boxes, icons as gadgets, etc. Author: chris.planb@dnet.co.uk (Chris Perver) Uploader: chris planb dnet co uk (Chris Perver) Type: dev/e Replaces: dev/e/Chris_emods.lha Architecture: m68k-amigaos Here is my slightly useful AmigaE modules. There are probably loads of bugs in them. :). You do not need permission to use them in your programs, but if you do use them, I wouldn't mind an email :). -------------------------------------------------------------------------------- mygfxtools.m mydrawbox() ----------- NAME: mydrawbox() SYNOPSIS: mydrawbox(rp, dri, x, y, x2, y2, type, recessed, light, lightpen, darkpen) DESCRIPTION: Draw a varitey of bevel boxes in a rastport INPUT: rp - rastport dri - screen drawinfo x - left coord y - top coord x2 - right coord y2 - bottom coord type - type of box to draw, a number ranging from 1 to 6... 1 = Box 2 = Bevel 3 = Smooth bevel 4 = Embossed 5 = Ridge 6 = Wide ridge 7 - Smooth ridge recessed - if TRUE the box will be drawn recessed light - if TRUE the light and dark pen will be used instead of the black and white pens. lightpen - pen number of light colour darkpen - pen number of dark colour myscrollraster() ---------------- NAME: myscrollraster() SYNOPSIS: myscrollraster(rp, x, y, x2, y2, deltax, deltay) DESCRIPTION: Works exactly like ScrollRaster(). myscrollraster() uses BlitCopy(), and doesn't clear the new area of raster, which is useful for when you want to have clean looking scrolling. INPUT: rp - rastport x - left coord y - top coord x2 - right coord y2 - bottom coord deltax - how many pixels to scroll horizontally deltay - how many pixels to scroll vertically BUGS: Can't handle scrolls larger than the area to scroll. But because this function doesn't clear the new area of raster, there wouldn't be any visual difference anyway. -------------------------------------------------------------------------------- list.m insertinlist() -------------- NAME: insertinlist() SYNOPSIS: insertinlist(list, str) DESCRIPTION: Will take a string of integers seperated by slashes, and insert them into an ARRAY. INPUT: list - an array str - a string of integers seperated by slashes mergelist2str() --------------- NAME: mergelist2str() SYNOPSIS: mergelist2str(str, list, hex = FALSE) DESCRIPTION: Will take an array of integers and put them into a string seperated by slashes. INPUT: str - a string of integers seperated by slashes list - an array of integers hex - if TRUE, put a $ before each integer -------------------------------------------------------------------------------- execlists.m addName() --------- NAME: addName() SYNOPSIS: addName(list, str, prednode) DESCRIPTION: Add a node to an execlist INPUT: list - pointer to an execlist str - string to insert in the list prednode - node to insert string into list after freeNode() ---------- NAME: freeNode() SYNOPSIS: freeNode(list, num) DESCRIPTION: Remove a node from an execlist INPUT: list - pointer to an execlist num - number of node to remove freeNameNodes() --------------- NAME: freeNameNodes() SYNOPSIS: freeNameNodes(list) DESCRIPTION: Remove all nodes from an execlist INPUT: list - pointer to an execlist findNodeNumber() ---------------- NAME: findNodeNumber() SYNOPSIS: num := findNodeNumber(list, str) DESCRIPTION: Find the number of a node in an execlist INPUT: list - pointer to an execlist str - string to compare nodes with RESULTS: num - number of node in the execlist which matched str findNodeName() -------------- NAME: findNodeName() SYNOPSIS: str := findNodeName(list, num) DESCRIPTION: Get the string of a node in an execlist INPUT: list - pointer to an execlist num - number of node to get string from RESULTS: str - string of a node in an execlist movelistnode() -------------- NAME: movelistnode() SYNOPSIS: movelistnode(list, num, list2, num2) DESCRIPTION: Move a node to a new position in a list INPUT: list - pointer to an execlist num - number of node to move list2 - pointer to an execlist num2 - new position of node in execlist countnodes() NAME: countnodes() SYNOPSIS: num := countnodes(list) DESCRIPTION: Find the number of nodes in an execlist INPUT: list - pointer to an execlist RESULTS: num - number of nodes in an execlist -------------------------------------------------------------------------------- myscreens.m findpubscreen() --------------- NAME: findpubscreen() SYNOPSIS: success := findpubscreen(str) DESCRIPTION: Find if a screen exists with the name str INPUT: str - name of screen to find RESULTS: success - TRUE if we found a screen with the name str getscreenlist() --------------- NAME: getscreenlist() SYNOPSIS: list := getscreenlist(list) DESCRIPTION: Get an execlist of the public screens open INPUT: list - an execlist RESULTS: list - an execlist -------------------------------------------------------------------------------- progresswin.m First, put this module into your source. MODULE '*progresswin' Then you need to make a DEF. DEF pw:PTR TO progresswin At the start of your program, put.. NEW pw And at the end of your program, put.. END pw openprogresswin() ----------------- NAME: openprogresswin() SYNOPSIS: pw.openprogresswin(scrname, win, str) DESCRIPTION: Open a progress window INPUT: scrname - name of screen to open window on win - window pointer to centre window on str - progress window text closeprogresswin() ----------------- NAME: closeprogresswin() SYNOPSIS: pw.closeprogresswin() DESCRIPTION: Close the progress window progresswinopen() ----------------- NAME: progresswinopen() SYNOPSIS: bool := pw.progresswinopen() DESCRIPTION: Check if the progress window is open RESULTS: bool - TRUE if the progress window is currently open drawprogressgad() ----------------- NAME: drawprogressgad() SYNOPSIS: pw.drawprogressgad(percent) DESCRIPTION: Update the progress gadget to percent INPUT: percent - percent to fill progress gadget by drawprogresstext() ------------------ NAME: drawprogresstext() SYNOPSIS: pw.drawprogresstext(str) DESCRIPTION: Change the text in the progress window INPUT: str - text to print in the progress window Exceptions ---------- Exception Exception info Description "PUBS" Screen name Unable to lock pubscreen "WIN" Unable to open window -------------------------------------------------------------------------------- icongad.m First, put this module into your source. MODULE '*icongad' Then you need to make a DEF. DEF mygads:PTR TO icongads At the start of your program, put.. NEW mygads And at the end of your program, put.. END mygads initicongad() ------------- NAME: initicongad() SYNOPSIS: mygads.initicongad(list) DESCRIPTION: Load the icons and create the gadgets. INPUT: list - a list of strings of the paths of icons NOTE: If for some reason we fail to get an icon, the default icon WBTOOL is used instead sizex(), sizey() ---------------- NAME: sizex(), sizey() SYNOPSIS: int := mygads.sizex(num) int := mygads.sizey(num) DESCRIPTION: Get the size of a gadget INPUT: num - the position the icon came in the list, starting 0,1... RESULTS: int - the size of gadget num addicongad() ------------ NAME: addicongad() SYNOPSIS: mygads.addicongad(num, gadgetid, x, y, win) DESCRIPTION: Attach a gadget to the window INPUT: num - the position the icon came in the list gadgetid - the unique gadgetid to give this gadget x - x position of gadget in the window y - y position of gadget in the window win - pointer of window to attach gadget to NOTE: A gadget can only be attached once to a window. It must be removed before it can be attached again removeicongad() --------------- NAME: removeicongad() SYNOPSIS: mygads.removeicongad(num, win) DESCRIPTION: Remove a gadget from the window INPUT: num - the position the icon came in the list win - pointer of window the gadget is attached to endicongad() ------------ NAME: endicongad() SYNOPSIS: mygads.endicongad() DESCRIPTION: Free all the icons got by initicongad() Exceptions ---------- The module will raise several exceptions if it fails. Exception Exception info Description "LIB" Library name Unable to open library -------------------------------------------------------------------------------- appitem.m First, put this module into your source. MODULE '*appitem' Then you need to make a DEF. DEF ai:PTR TO appitem At the start of your program, put.. NEW ai And at the end of your program, put.. END ai initappitem() ------------- NAME: initappitem() SYNOPSIS: ai.initappitem() DESCRIPTION: Open the required libraries for this module endappitem() ------------ NAME: endappitem() SYNOPSIS: ai.endappitem() DESCRIPTION: Close the required libraries for this module addappicon() ------------ NAME: addappicon() SYNOPSIS: ai.addappicon(path, text, x, y) DESCRIPTION: Add an appicon to the default pubscreen INPUT: path - path of icon to use text - text to place under appicon x - x position on the screen y - y position on the screen removeappicon() --------------- NAME: removeappicon() SYNOPSIS: ai.removeappicon() DESCRIPTION: Remove the appicon from the screen addappmenu() ------------ NAME: addappmenu() SYNOPSIS: ai.addappmenu(text) DESCRIPTION: Add an appmenuitem to the Workbench Tools menu INPUT: text - text to use for the appmenuitem removeappmenu() --------------- NAME: removeappmenu() SYNOPSIS: ai.removeappmenu() DESCRIPTION: Remove the appmenuitem from the Workbench Tools menu openappwindow() --------------- NAME: openappwindow() SYNOPSIS: ai.openappwindow(win) DESCRIPTION: Make win into an appwindow INPUT: win - pointer to window to make into an appwindow closeappwindow() ---------------- NAME: closeappwindow() SYNOPSIS: ai.closeappwindow() DESCRIPTION: Remove appwindow iconsigbit() ------------ NAME: iconsigbit() SYNOPSIS: sigbit, port := ai.iconsigbit() DESCRIPTION: Get the appiconitem port sigbit RESULTS: sigbit - signal bit of the appicon port port - pointer to the port of the appicon menusigbit() ------------ NAME: menusigbit() SYNOPSIS: sigbit, port := ai.menusigbit() DESCRIPTION: Get the appmenuitem port sigbit RESULTS: sigbit - signal bit of the appmenu port port - pointer to the port of the appmenu winsigbit() ----------- NAME: winsigbit() SYNOPSIS: sigbit, port := ai.winsigbit() DESCRIPTION: Get the appwinitem port sigbit RESULTS: sigbit - signal bit of the appwindow port port - pointer to the port of the appwindow Exceptions ---------- The module will raise several exceptions if it fails. Exception Exception info Description "APIC" Unable to create appicon "APMN" Unable to create appmenuitem "APWN" Unable to create appwindow "LIB" Library name Unable to open library "PORT" Unable to create a message port