home *** CD-ROM | disk | FTP | other *** search
- #ifndef MAGICWINDOW_H
- #include "MagicWindow.h"
- #endif
-
- #ifndef FLYPAPERINIT_H
- #include "FlyPaperINIT.h"
- #endif
-
- #ifndef FLYPAPERAPP_H
- #include "FlyPaperApp.h"
- #endif
-
- #ifndef CLIPPINGFILE_H
- #include "ClippingFile.h"
- #endif
-
- #ifndef CLIPPINGWINDOW_H
- #include "ClippingWindow.h"
- #endif
-
- #include "Floaters.h"
-
- #ifndef __DRAG__
- #include <Drag.h>
- #endif
-
- static
- void MagicDisposeProc (WindowPtr win)
- {
- try {
- FlyPaperGestaltPtr data = GetINITData ();
-
- if (data && data -> magicWindow == win) {
- data -> magicWindow = nil;
- }
-
- DisposeFloater (win);
- } catch (...) {
- }
- }
-
- static
- void MagicEventHandler (EventRecord *theEvent, WindowPtr win)
- {
- try {
- if (theEvent -> what == updateEvt) {
- BeginUpdate(win);
- EndUpdate (win);
- }
- } catch (...) {
- }
- }
-
- static pascal
- OSErr MagicTrackingHandler (DragTrackingMessage message, WindowPtr win, long myA5,
- DragReference dragRef)
- {
- try {
-
-
-
- } catch (OSErr error) {
- return error;
- } catch (...) {
- return memFullErr;
- }
- return noErr;
- }
-
- static
- pascal OSErr MagicReceiveHandler (WindowPtr win, long homeA5, DragReference dragRef)
- {
- long oldA5 = SetA5(homeA5);
- GrafPtr oldPort;
- Point dropLocation = { 1, 1 };
-
- try {
- GetPort (&oldPort);
- SetPort (win);
- LocalToGlobal (&dropLocation);
- SetPort (oldPort);
- short tile = 0;
-
- MoveWindow (win, 30000, 30000, false);
-
- unsigned short numItems;
-
- OSErr error = CountDragItems (dragRef, &numItems);
- if (error)
- throw error;
-
- for (unsigned short whichItem = 1; whichItem <= numItems; ++whichItem) {
- ItemReference dragItem;
- unsigned short numFlavors;
-
- error = GetDragItemReferenceNumber (dragRef, whichItem, &dragItem);
- if (error)
- throw error;
-
- CClippingFile* file = CClippingFile::NewClippingFileFromDragItem (dragRef,
- dragItem, dropLocation, tile);
- if (file) {
- try {
- FSSpec spec;
- file -> GetFSSpec (spec);
- QueueUpFileForProcessing (&spec);
- delete file;
- } catch (...) {
- delete file;
- throw;
- }
- ++tile;
- }
- }
- } catch (OSErr error) {
- SetA5 (oldA5);
- return error;
- } catch (...) {
- SetA5 (oldA5);
- return memFullErr;
- }
-
- SetA5 (oldA5);
- return noErr;
- }
-
- WindowPtr CreateMagicWindow (void)
- {
- Rect bounds = { 30000, 30000, 30003, 30003 };
- WindowPtr win = NewFloater (0, &bounds, "\pFly Paper!", false, plainDBox, (WindowPtr) -1,
- true, 0, 0, MagicEventHandler, MagicDisposeProc);
- if (!win)
- throw memFullErr;
-
- FlyPaperGestaltPtr data = GetINITData ();
- data -> magicWindow = win;
-
- static DragTrackingHandlerUPP trackingHandler=0;
- static DragReceiveHandlerUPP receiveHandler=0;
-
- if (!trackingHandler)
- trackingHandler = NewDragTrackingHandlerProc (MagicTrackingHandler);
- if (!receiveHandler)
- receiveHandler = NewDragReceiveHandlerProc (MagicReceiveHandler);
-
- if (trackingHandler && receiveHandler) {
- InstallTrackingHandler (trackingHandler, win, (void*) GetCurrentA5 ());
- InstallReceiveHandler (receiveHandler, win, (void*) GetCurrentA5 ());
- } else
- throw memFullErr;
-
- return win;
- }
-