America Online APPLE II DEVELOPMENT FORUM CONFERENCE LOG Tuesday, January 8, 1991 10:00 p.m. Eastern Time Topic: Toolbox Programming Forum Leader: Dave Sugar (AFL Dyfet) AFL Dyfet Tonight's toolbox night :) AFA Gary J Yep :) INF2 Is it the toolbox today? AFL Dyfet Yes it is Inf2...In fact, I think DevScott had the first question for tonight. INF2 Today, the ToolBox... Tommorow, the WORLD!!!:D DevScott I am trying to learn more about the GS and programming it by creating a simple DevScott paint program using pascal and am having problems with an about dialog DevScott box "disfiguring" the drawing window behind it. What do I need to do DevScott to preserve the drawing already done? GetPort/SetPort stuff? AFL Dyfet GA Winkie.... WinkieJim Is the window behind it getting the partthe dialog covered erased? DevScott What was that? DevScott The part of the window the dialog covers is filled with the current color DevScott selected (a different problem). WinkieJim Is the window behind the dialog just getting erased without being redrawn? WinkieJim Not the background color? DevScott Well, I'm not quite sure... AFA Gary J Probably the background color. WinkieJim Is it white? DevScott The color is selected using DevScott SetPenPat, but when drawing, the color drawn isn't what was DevScott selected? Hard to tell. DevScott Not always white, though. WinkieJim Scott, you do redraw the entire window when your update routine for that WinkieJim window is drawn, right? DevScott I believe so...what exactly do I do to make sure that it's done. DevScott <---- sorry, kind of a novice here. AFL Dyfet That's okay Scott!! WinkieJim In your update rouine for the window you're supposed to redraw EVERYTHING WinkieJim that is displayed in the context region of the window. DevScott So, do you have to set up a routine that "remembers" everything the user DevScott did draw? WinkieJim Right Scott AFL Dyfet Yes, Scott DevScott Well, I'm still a little foggy about how to do that, but I'll do some more DevScott digging to see if I can figure it out. WinkieJim Scott you could also draw everything to the window on screen AND to an WinkieJim off-screen window and then copy all the pixels to the on-screen window at WinkieJim update time. DevScott PPToPort, or is that a little different? WinkieJim I believe CopyPixels is what you'd want to use DevScott Ok, I'll try it out. Thanks for the guidance! DevScott <-- Done. WinkieJim Good luck Scott. GA DevScott :) AFL Dyfet Okay, go ahead Steve.... SteveB Just wanted to thank the people who helped my figure out.... SteveB how to handle what SFP gives me. Nice guys here! :) SteveB And, I have to be leaving, so g'night all! :) AFL Dyfet Thanks :) SteveB GA :) AFL Dyfet Okay, INF2 has the next question...GA INF2... INF2 Well, actually, not much of a "question", but I'll GA... INF2 Well, it's only been one year, since I've got my IIGS, but I don't understand INF2 the ToolBox at all... Do you need stuff like ORCA/C? INF2 Or APW? AFL Dyfet A good place to start, actually, is a wonderful book Michael Fisher wrote, the AFL Dyfet Apple IIgs Technical Reference.... AFL Marty Who? :) INF2 The "Technical Introduction to the IIGS"? AFL Dyfet It is published by Osborn/Mcgraw Hill INF2 Oh AFL Dyfet It was the first IIgs programming book I started with....and still use it for AFL Dyfet reference from time to time....GA Dave... Dave Lyons If you do any real toolbox work, you definitely want the real reference manuals--the stuff Dave Lyons in Toolbox Ref Volume 3 wasn't even conceived when Fischer's book came out (and you want the Dave Lyons official books anyway). ga INF2 Well, can't I use ANY part of the ToolBox from GS/OS itself? AFL Dyfet That is true...at some point you will want to get the IIgs toolbox references. AFL Dyfet GA Gary... AFA Gary J As for languages and such, yes ORCA/C is one you could use, but you can also AFA Gary J access the IIGS toolbox from assembly, Pascal, or even BASIC on the IIGS. INF2 BASIC? INF2 HOW? AFA Gary J You can even experiment with toolbox calls using Nifty List CDA :) AFL Dyfet GA Marty.... AFA Gary J Not Applesoft BASIC, but IIGS specific basics. AFA Gary J GA INF2 Oh... AFL Marty I started reading a good book on toolbox programming last night... AFL Marty it's called "Mastering the Apple IIGS Toolbox" by... AFL Marty Dan Gookin and Morgan Davis. AFL Marty I got through about 60 pages or so. It goes at a rather good rate for me AFL Marty (I'm the rankest of beginners)... INF2 But you see, INF2 I don't have ANYTHING I can use to acess the ToolBox, I think... AFL Marty You can experiment with toolbox calls from BASIC or from the monitor. AFL Marty GA AFL Dyfet Or from Nifty List :) AFA Gary J (Or Nifty List :) INF2 I only have AppleSoft.... AFA Gary J :) AFL Marty Or from Nifty List :) INF2 And what is Nifty List? AFA Gary J (Nifty List is available in our software library. It's a CDA written by AFA Gary J Dave Lyons) INF2 Oh. AFL Dyfet GA Dave :) AFA Gary J :) Dave Lyons Nifty List got its name because its original purpose in life was to disassemble ("List") Dave Lyons assembly code with extra information displayed in the margin (the names of toolbox calls, for INF2 But what is it now? Dave Lyons example). It's grown into a generally useful tool for learing about the GS toolbox and OS, and Dave Lyons for debugging GS programs (yours and other people's). INF2 Does it come with Docs? Dave Lyons Starting with version 3.0, you can make toolbox calls interactively and write your own commands Dave Lyons if you want. Sure, docs are included, and most of the information is available right from Nifty Dave Lyons List (by putting a "?" in front of the command name). Dave Lyons ga INF2 OK... Thanks Dave!:) AFA Gary J BUT, I'd like to add.... it REALLY HELPS to have manuals of some type AFA Gary J guiding you along in making those toolcalls. INF2 Uh-huh... AFA Gary J :) INF2 I'll D/L that right now. INF2 BYE! AFL Dyfet Okay, GSShadow has the next question, and the floor now...GA GS... GSShadow Ok. this should be qiuck. First, where can i find info on the GSShadow QuickDrawII 'picture' format, the one used with the Draw Picture command? AFL Dyfet GA Dave Dave Lyons Apple IIgs Technical Note #46 (this was revealed to me by page 6 of the Apple II Technical Note Dave Lyons Index, amazingly enough). Dave Lyons The information is provided for Dave Lyons debugging purposes, mainly--the format may be extended in the future, but it isn't too likely Dave Lyons to change soon. ga GSShadow O.k. I thought It might be in the tech notes. I have been waiting of APDA's GSShadow compilation of tech notes. How can I get tech notes sent to me? Is there some GSShadow kind of subscription? AFA Gary J GSShadow: You can download TN#46 right here on America Online AFL Dyfet GA Matt Matt DTS As of the new APDAlog automagically winging its way around the world, the APDA subscription policy Matt DTS for TNs changes. Now you can buy a complete back set and a one-year subscription independent of the Matt DTS calendar year (for example, if you subscribe in September 1991 it goes until September 1992). Matt DTS GA AFA Gary J (That sounds good :) Tamira when does the new APDA cat go out Matt??? Matt DTS Dunno. I have mine already. WinkieJim Tam, I got mine today AFA Gary J Tamira, mine came yesterday. Tamira sigh again.....and again :( GSShadow THANKS. Also, for some reason my program (asm) is not getting update events GSShadow for my modeless dialogs. I have used taskmaster, and the is Dialog/Dialog GSShadow select combo but I cannot get my dialogs redrawn when they're covered by GSShadow windows. If it is covered by a modal dialog, everything owrks fine! Help? AFL Dyfet GA Dave Dave Lyons GSShadow, the least painful way is to not use modeless dialogs, and just Dave Lyons use regular windows instead. Dave Lyons The Dialog Manager should be automatically updating Dave Lyons your modeless dialogs during DialogSelect, though--I don't know what going wroing, unless Dave Lyons you are expecting it to draw something *other* than your dialog items in there. (That is, if you have Dave Lyons a wContDefProc that you expect the system to call for that window, you will be disappointed.) Dave Lyons ga WinkieJim I love it when Dave saves the painful stuff for last :) GSShadow O.k. My problem is that I want to get input from controls without having to GSShadow select a window, and I was hoping to accomplish that w/ a modeless dialog. GSShadow I guess I can get around it. Dave Lyons Okay, you want the user to type Dave Lyons into, say, a Line Edit control while the window isn't in front? GSShadow No, I want the user to be able to click on an icon while the window isn't GSShadow in front. (same difference) Dave Lyons I don't see how modeless dialogs simplifies it-- Dave Lyons what's stopping you from calling FindControl and TrackControl on a window that's not in front? Dave Lyons (It's just that TaskMaster doesn't help you out as much there.) GSShadow I was hoping it some magical property I could use to my advantage. But I guess GSShadow not, Huh? Dave Lyons (Not that I've thought of, anyway. ga) AFL Dyfet Okay, Nuzz, you have the floor now... Nuzz If an App that does NOT have a resource fork wishes to open other files RForks, Nuzz must that app issue resource startup/down calls, and if it does have to and Nuzz doesn't, what are the consequences WinkieJim Yes it must startup and shotdown the resource manager. AFL Dyfet GA Dave... Dave Lyons Yes, your application has to start and shut down the resource manager--but StartUpTools and Dave Lyons ShutDownTools take care of that for you, even if your application has no resource fork. ga Nuzz OK, how about Da's in the same context? WinkieJim Yup, if they are going to make resource manager calls. Dave Lyons In system 5.0.4 and earlier, Dave Lyons StartUpTools and ShutDownTools must *not* be called from a DA, so you have to do your own Dave Lyons ResourceStartUp and ResourceShutDown calls from the DA, as shown in GS Technote #71. ga Nuzz OK. Done AFL Dyfet Okay, go ahead Foreigner... Foreigner1 Coupla quick Questions: 1. Should a LocInfo BoundsRect ever have a v1 of -25? Foreigner1 That's what I get with a GetLocInfo call on the samples from ORCA/C... AFL Dyfet GA Dave Dave Lyons Yes, the BoundsRect of a QuickDraw II grafport that points to video memory is the rectangle Dave Lyons bounding the screen, in the local coordinates of the window. So if the top line of your window's Dave Lyons content region is on scanline 25, the boundsRect.v1 of your window's port will be -25. ga Dave Lyons (BTW, you can use Nifty List to quickly check on things like this!) AFL Dyfet :) Foreigner1 Okay, thanks. #2- how do you do Icons, when the header file states the length WinkieJim Dyfet, do you think we should have Dave pay fro all his commercials? :) :):) Foreigner1 of them to all be one? (The QDIconRecord in QDAUX.h)? Foreigner1 GA AFL Dyfet :) AFL Dyfet GA Dave... Dave Lyons What? Most icons -don't- have length 1. How are you determining that they do? Dave Lyons Are you examining Finder icon FILES, or individual icons? Coach101 Dave, I think he is referring to the struct/typedeff in the .h file.... Foreigner1 The struct definition in the header file states, (and I quote) Byte iconImage[1]; Foreigner1 Same with the cursor definition in Quickdraw.h Foreigner1 GA AFL Dyfet GA Matt Matt DTS (I found it just before he said it) That doesn't mean the icons are all one byte long. It's some Matt DTS kind of C hocus-pocus to define the structure so you can access it later. Someone who actually knows Matt DTS C will have to explain it in detail. GA. Dave Lyons Ah! Since icons are variable-length, you can't really write structures for them in Pascal or C; Dave Lyons those are just templates you can use as a starting point. If you want to use those data structures, Dave Lyons make a copy & make one with the height and width you need. Ditto for QuickDraw cursors. AFL Dyfet So you just use IconImage to reference the FIRST byte of the image.... Foreigner1 Gotcha. One last (easy) question- Address/Phone # of APDA? Dave Lyons 1-800-282-APDA Foreigner1 ga. I'm done! AFL Dyfet Okay, A2 has the next question...GA A2... A2GS 2 short Q's.....1) Do Apple Dealers still give the system disk upgrades? WinkieJim A2GS, yes if they want too...Apple doesn't require them too... WinkieJim if you have a good one they should allow you to get a copy of the latest WinkieJim system. A2GS I'm currently using a 1987 ver. of AppleLink (developer ver.) has A2GS there been any upgrade for II users since then??????? A2GS GA AFL Dyfet GA MAtt Matt DTS Send me an AppleLink with your name and system configuration and we'll talk offline. A2GS huh? Matt DTS Using '87 AppleLink = you have an AppleLink account. Matt DTS Use it to send me (DEATHERAGE1) an AppleLink that contains your name, your system configuration and Matt DTS we'll talk about upgrades. GA. A2GS oh...o.k......now I see....need to get more sleep :) AFL Dyfet Okay, are there any more questions for tonight? AFA Parik (I read somewhere that AppleLink will [soon] allow anyone online, alaCIS/GEnie) AFA Parik (er, I mean you don't need a Mac...you can use a IBM. still need a acct!) A2GS got a Q... WinkieJim We have a question! A2GS Is there anyway to force the Cntrl-pnl NDA to come up without using having A2GS to use PDM's? A2GS GA WinkieJim PDM's? A2GS pull down menus WinkieJim Oh....:) AFL Dyfet GA Winkie DangardAce Someone write QuickeysGS :) WinkieJim I Edited the Control panel NDA file to have a keyboard equivalent :) Coach101 Cheating :) A2GS I'd prefer NOT to do that....any other suggestions? A2GS Dave...Matt? WinkieJim Only way I know, until someone creates a macro program that simulates mouse WinkieJim movements to the event manager... A2GS Matt...Dave? Dave Lyons There's no built-in shortcut for opening the Control Panel NDA, no. WinkieJim Well, I like keyboard equivalents for NDas...I wrote the only NDA that has WinkieJim a keyboard equivalent for it's menu item :) :) :) AFA Gary J You could use CTRL-OA-ESC :) A2GS sorry won't cut it Nuzz How do you know someone else won't use that Key combo Jim WinkieJim Nuzz, I took a chance...the new version will have it selectable by the user. :) Coach101 There is the OpenNDA call that looks like it would do it if..... Coach101 you could come up with the idNum to pass it. Does anyone know how to "safely" find the idNum? AFL Dyfet GA Matt Matt DTS Keyboard equivalents for NDA menu items aren't such a good idea - depending on the (unguaranteed) Matt DTS search order of MenuKey, either your NDA or the application's menu item that share key equivalents Matt DTS will never get to use it. If it's yours, it's OK, but it's not OK to take the applications. GA. Coach101 Matt, can you safely run the menu manager's menu lists to find a particular NDAs idNum and Coach101 then call OpenNDA? A2GS Is there any "safe" way to find out the ID assigned to the CP Nda? Dave Lyons Coach, it's not guaranteed, but it's reasonably safe to call GetMItemName on 1, 2, 3... until you Dave Lyons find the DA you're looking for. It'll work. Dave Lyons You may confuse some applications that way, though--it would be better to make Dave Lyons the application think there was a mouse-down in the menu bar, and then make MenuSelect return that Dave Lyons ID. This way if the app does some housekeeping when it opens an NDA itself, it will still get Dave Lyons to do it (not all apps let TaskMaster open DAs for them). Coach101 So, then one could cause any NDA to come up by looping on GetMItenName till they find the one Coach101 they wish to start and then do an OpenNDA with the resulting idNum? We solved ?'s problem! A2GS how do we check whether we got the id for the CP? Coach101 A2, remember Dave's caveats about confusing an applicatoin (but if its your application, where Coach101 is the confusion), the Get... call will give you the menu name of the NDA (I think) so you just go Coach101 on looking until you hit the end (some sort of error return, I suppose) or get an equality on the Coach101 name you are looking for. Coach101 ga AFL Dyfet Okay, do we have anything else for tonight> A2GS thanx...will study the matter further