-- Automatically generated by HaskellDirect (ihc.exe), snapshot 281203 -- Created: 00:28 E. Europe Standard Time, Saturday 21 February, 2004 -- Command line: DocObj.idl -server module DocObjProxy ( OLECMDF(..) , OLECMD(..) , writeOLECMD , readOLECMD , sizeofOLECMD , OLECMDTEXT(..) , freeOLECMDTEXT , writeOLECMDTEXT , readOLECMDTEXT , sizeofOLECMDTEXT , OLECMDTEXTF(..) , OLECMDEXECOPT(..) , OLECMDID(..) , IOleCommandTarget , IOleCommandTarget_ , iidIOleCommandTarget , mkIOleCommandTarget_vtbl ) where import Prelude (fromEnum, toEnum) import qualified Prelude import qualified Automation (VARIANT, unmarshallVARIANT, marshallVARIANT) import qualified Bits ((.&.)) import qualified Com (IUnknown, IID, mkIID, GUID, unmarshallGUID, returnHR) import qualified ComServ (ComVTable, createComVTable, getObjState) import qualified Foreign.Ptr (Ptr, nullPtr, castPtr) import qualified Foreign.StablePtr (StablePtr(..), newStablePtr) import qualified HDirect (Flags(..), pow2Series, orList, writeWord32, addNCastPtr, readWord32, Wchar_t, free, writeWord16, sizeofWord16, writelist, unmarshallWord32, readWord16, unmarshalllist, unmarshallunique, allocBytes, writeunique, marshallMaybe) import qualified Int (Int32) import qualified Maybe (mapMaybe) import qualified Word (Word32) import qualified Wtypes (DWORD, ULONG) -- -------------------------------------------------- -- -- interface IOleCommandTarget -- -- -------------------------------------------------- data IOleCommandTarget_ a = IOleCommandTarget__ type IOleCommandTarget a = Com.IUnknown (IOleCommandTarget_ a) iidIOleCommandTarget :: Com.IID (IOleCommandTarget ()) iidIOleCommandTarget = Com.mkIID "{B722BCCB-4E68-101B-A2BC-00AA00404770}" mkIOleCommandTarget_vtbl :: (Com.GUID -> [OLECMD] -> Prelude.Maybe OLECMDTEXT -> objState -> Prelude.IO ([OLECMD], Prelude.Maybe OLECMDTEXT)) -> (Com.GUID -> Wtypes.DWORD -> Wtypes.DWORD -> Automation.VARIANT -> Automation.VARIANT -> objState -> Prelude.IO ()) -> Prelude.IO (ComServ.ComVTable (IOleCommandTarget ()) objState) mkIOleCommandTarget_vtbl queryStatus exec = do meth_arg0 <- export_queryStatus (prim_queryStatus queryStatus) meth_arg1 <- export_exec (prim_exec exec) ComServ.createComVTable [ meth_arg0 , meth_arg1 ] export_queryStatus :: (Foreign.Ptr.Ptr a -> Foreign.Ptr.Ptr Com.GUID -> Word.Word32 -> Foreign.Ptr.Ptr (Foreign.Ptr.Ptr ()) -> Foreign.Ptr.Ptr OLECMDTEXT -> Prelude.IO Int.Int32) -> Prelude.IO (Foreign.Ptr.Ptr ()) export_queryStatus fun = Foreign.StablePtr.newStablePtr fun Prelude.>>= c_export_queryStatus foreign import ccall "export_queryStatus" c_export_queryStatus :: Foreign.StablePtr.StablePtr (Foreign.Ptr.Ptr a -> Foreign.Ptr.Ptr Com.GUID -> Word.Word32 -> Foreign.Ptr.Ptr (Foreign.Ptr.Ptr ()) -> Foreign.Ptr.Ptr OLECMDTEXT -> Prelude.IO Int.Int32) -> Prelude.IO (Foreign.Ptr.Ptr ()) foreign import stdcall "wrapper" export_exec :: (Foreign.Ptr.Ptr a -> Foreign.Ptr.Ptr Com.GUID -> Word.Word32 -> Word.Word32 -> Automation.VARIANT -> Automation.VARIANT -> Prelude.IO Int.Int32) -> Prelude.IO (Foreign.Ptr.Ptr ()) data OLECMDF = OLECMDFList__ [OLECMDF] | OLECMDF_SUPPORTED | OLECMDF_ENABLED | OLECMDF_LATCHED | OLECMDF_NINCHED | OLECMDF_INVISIBLE | OLECMDF_DEFHIDEONCTXTMENU instance HDirect.Flags (OLECMDF) where x1 .+. x2 = Prelude.toEnum ((Prelude.fromEnum x1 Prelude.+ Prelude.fromEnum x2)) instance Prelude.Enum (OLECMDF) where fromEnum v = case v of (OLECMDFList__ xs) -> HDirect.orList (Prelude.map Prelude.fromEnum xs) OLECMDF_SUPPORTED -> 1 OLECMDF_ENABLED -> 2 OLECMDF_LATCHED -> 4 OLECMDF_NINCHED -> 8 OLECMDF_INVISIBLE -> 16 OLECMDF_DEFHIDEONCTXTMENU -> 32 toEnum v = case v of 1 -> OLECMDF_SUPPORTED 2 -> OLECMDF_ENABLED 4 -> OLECMDF_LATCHED 8 -> OLECMDF_NINCHED 16 -> OLECMDF_INVISIBLE 32 -> OLECMDF_DEFHIDEONCTXTMENU x -> OLECMDFList__ (Maybe.mapMaybe (\ val -> if ((val Bits..&. Prelude.fromIntegral x) Prelude.== val) then Prelude.Just (Prelude.toEnum (Prelude.fromIntegral val)) else Prelude.Nothing) (HDirect.pow2Series 6 1)) _ -> Prelude.error "unmarshallOLECMDF: illegal enum value " data OLECMD = TagOLECMD {cmdID :: Wtypes.ULONG, cmdf :: Wtypes.DWORD} writeOLECMD :: Foreign.Ptr.Ptr OLECMD -> OLECMD -> Prelude.IO () writeOLECMD ptr (TagOLECMD cmdID cmdf) = let pf0 = ptr pf1 = HDirect.addNCastPtr pf0 0 in do HDirect.writeWord32 pf1 cmdID let pf2 = HDirect.addNCastPtr pf1 4 HDirect.writeWord32 pf2 cmdf readOLECMD :: Foreign.Ptr.Ptr OLECMD -> Prelude.IO OLECMD readOLECMD ptr = let pf0 = ptr pf1 = HDirect.addNCastPtr pf0 0 in do cmdID <- HDirect.readWord32 pf1 let pf2 = HDirect.addNCastPtr pf1 4 cmdf <- HDirect.readWord32 pf2 Prelude.return (TagOLECMD cmdID cmdf) sizeofOLECMD :: Word.Word32 sizeofOLECMD = 8 data OLECMDTEXT = TagOLECMDTEXT {cmdtextf :: Wtypes.DWORD, cwActual :: Wtypes.ULONG, rgwz :: [HDirect.Wchar_t]} freeOLECMDTEXT :: Foreign.Ptr.Ptr OLECMDTEXT -> Prelude.IO () freeOLECMDTEXT ptr = let struct_ptr__ = HDirect.addNCastPtr ptr 12 in HDirect.free struct_ptr__ writeOLECMDTEXT :: Foreign.Ptr.Ptr OLECMDTEXT -> OLECMDTEXT -> Prelude.IO () writeOLECMDTEXT ptr (TagOLECMDTEXT cmdtextf cwActual rgwz) = let cwBuf = (Prelude.fromIntegral (Prelude.length rgwz) :: Word.Word32) pf0 = ptr pf1 = HDirect.addNCastPtr pf0 0 in do HDirect.writeWord32 pf1 cmdtextf let pf2 = HDirect.addNCastPtr pf1 4 HDirect.writeWord32 pf2 cwActual let pf3 = HDirect.addNCastPtr pf2 4 HDirect.writeWord32 pf3 cwBuf let pf4 = HDirect.addNCastPtr pf3 4 HDirect.writelist Prelude.False HDirect.sizeofWord16 HDirect.writeWord16 pf4 rgwz readOLECMDTEXT :: Foreign.Ptr.Ptr OLECMDTEXT -> Prelude.IO OLECMDTEXT readOLECMDTEXT ptr = let pf0 = ptr pf1 = HDirect.addNCastPtr pf0 0 in do cmdtextf <- HDirect.readWord32 pf1 let pf2 = HDirect.addNCastPtr pf1 4 cwActual <- HDirect.readWord32 pf2 let pf3 = HDirect.addNCastPtr pf2 4 cwBuf <- HDirect.readWord32 pf3 let pf4 = HDirect.addNCastPtr pf3 4 rgwz <- Prelude.return pf4 cwBuf <- HDirect.unmarshallWord32 cwBuf rgwz <- HDirect.unmarshalllist HDirect.sizeofWord16 0 ((Prelude.fromIntegral cwBuf :: Word.Word32)) HDirect.readWord16 rgwz Prelude.return (TagOLECMDTEXT cmdtextf cwActual rgwz) sizeofOLECMDTEXT :: Word.Word32 sizeofOLECMDTEXT = 16 data OLECMDTEXTF = OLECMDTEXTFList__ [OLECMDTEXTF] | OLECMDTEXTF_NONE | OLECMDTEXTF_NAME | OLECMDTEXTF_STATUS instance HDirect.Flags (OLECMDTEXTF) where x1 .+. x2 = Prelude.toEnum ((Prelude.fromEnum x1 Prelude.+ Prelude.fromEnum x2)) instance Prelude.Enum (OLECMDTEXTF) where fromEnum v = case v of (OLECMDTEXTFList__ xs) -> HDirect.orList (Prelude.map Prelude.fromEnum xs) OLECMDTEXTF_NONE -> 0 OLECMDTEXTF_NAME -> 1 OLECMDTEXTF_STATUS -> 2 toEnum v = case v of 0 -> OLECMDTEXTF_NONE 1 -> OLECMDTEXTF_NAME 2 -> OLECMDTEXTF_STATUS x -> OLECMDTEXTFList__ (Maybe.mapMaybe (\ val -> if ((val Bits..&. Prelude.fromIntegral x) Prelude.== val) then Prelude.Just (Prelude.toEnum (Prelude.fromIntegral val)) else Prelude.Nothing) (HDirect.pow2Series 3 0)) _ -> Prelude.error "unmarshallOLECMDTEXTF: illegal enum value " data OLECMDEXECOPT = OLECMDEXECOPT_DODEFAULT | OLECMDEXECOPT_PROMPTUSER | OLECMDEXECOPT_DONTPROMPTUSER | OLECMDEXECOPT_SHOWHELP deriving (Prelude.Enum) data OLECMDID = OLECMDID_OPEN | OLECMDID_NEW | OLECMDID_SAVE | OLECMDID_SAVEAS | OLECMDID_SAVECOPYAS | OLECMDID_PRINT | OLECMDID_PRINTPREVIEW | OLECMDID_PAGESETUP | OLECMDID_SPELL | OLECMDID_PROPERTIES | OLECMDID_CUT | OLECMDID_COPY | OLECMDID_PASTE | OLECMDID_PASTESPECIAL | OLECMDID_UNDO | OLECMDID_REDO | OLECMDID_SELECTALL | OLECMDID_CLEARSELECTION | OLECMDID_ZOOM | OLECMDID_GETZOOMRANGE | OLECMDID_UPDATECOMMANDS | OLECMDID_REFRESH | OLECMDID_STOP | OLECMDID_HIDETOOLBARS | OLECMDID_SETPROGRESSMAX | OLECMDID_SETPROGRESSPOS | OLECMDID_SETPROGRESSTEXT | OLECMDID_SETTITLE | OLECMDID_SETDOWNLOADSTATE | OLECMDID_STOPDOWNLOAD | OLECMDID_ONTOOLBARACTIVATED | OLECMDID_FIND | OLECMDID_DELETE | OLECMDID_HTTPEQUIV | OLECMDID_HTTPEQUIV_DONE | OLECMDID_ENABLE_INTERACTION | OLECMDID_ONUNLOAD | OLECMDID_PROPERTYBAG2 | OLECMDID_PREREFRESH | OLECMDID_SHOWSCRIPTERROR | OLECMDID_SHOWMESSAGE | OLECMDID_SHOWFIND | OLECMDID_SHOWPAGESETUP | OLECMDID_SHOWPRINT | OLECMDID_CLOSE | OLECMDID_ALLOWUILESSSAVEAS | OLECMDID_DONTDOWNLOADCSS | OLECMDID_UPDATEPAGESTATUS | OLECMDID_PRINT2 | OLECMDID_PRINTPREVIEW2 | OLECMDID_SETPRINTTEMPLATE | OLECMDID_GETPRINTTEMPLATE instance Prelude.Enum (OLECMDID) where fromEnum v = case v of OLECMDID_OPEN -> 1 OLECMDID_NEW -> 2 OLECMDID_SAVE -> 3 OLECMDID_SAVEAS -> 4 OLECMDID_SAVECOPYAS -> 5 OLECMDID_PRINT -> 6 OLECMDID_PRINTPREVIEW -> 7 OLECMDID_PAGESETUP -> 8 OLECMDID_SPELL -> 9 OLECMDID_PROPERTIES -> 10 OLECMDID_CUT -> 11 OLECMDID_COPY -> 12 OLECMDID_PASTE -> 13 OLECMDID_PASTESPECIAL -> 14 OLECMDID_UNDO -> 15 OLECMDID_REDO -> 16 OLECMDID_SELECTALL -> 17 OLECMDID_CLEARSELECTION -> 18 OLECMDID_ZOOM -> 19 OLECMDID_GETZOOMRANGE -> 20 OLECMDID_UPDATECOMMANDS -> 21 OLECMDID_REFRESH -> 22 OLECMDID_STOP -> 23 OLECMDID_HIDETOOLBARS -> 24 OLECMDID_SETPROGRESSMAX -> 25 OLECMDID_SETPROGRESSPOS -> 26 OLECMDID_SETPROGRESSTEXT -> 27 OLECMDID_SETTITLE -> 28 OLECMDID_SETDOWNLOADSTATE -> 29 OLECMDID_STOPDOWNLOAD -> 30 OLECMDID_ONTOOLBARACTIVATED -> 31 OLECMDID_FIND -> 32 OLECMDID_DELETE -> 33 OLECMDID_HTTPEQUIV -> 34 OLECMDID_HTTPEQUIV_DONE -> 35 OLECMDID_ENABLE_INTERACTION -> 36 OLECMDID_ONUNLOAD -> 37 OLECMDID_PROPERTYBAG2 -> 38 OLECMDID_PREREFRESH -> 39 OLECMDID_SHOWSCRIPTERROR -> 40 OLECMDID_SHOWMESSAGE -> 41 OLECMDID_SHOWFIND -> 42 OLECMDID_SHOWPAGESETUP -> 43 OLECMDID_SHOWPRINT -> 44 OLECMDID_CLOSE -> 45 OLECMDID_ALLOWUILESSSAVEAS -> 46 OLECMDID_DONTDOWNLOADCSS -> 47 OLECMDID_UPDATEPAGESTATUS -> 48 OLECMDID_PRINT2 -> 49 OLECMDID_PRINTPREVIEW2 -> 50 OLECMDID_SETPRINTTEMPLATE -> 51 OLECMDID_GETPRINTTEMPLATE -> 52 toEnum v = case v of 1 -> OLECMDID_OPEN 2 -> OLECMDID_NEW 3 -> OLECMDID_SAVE 4 -> OLECMDID_SAVEAS 5 -> OLECMDID_SAVECOPYAS 6 -> OLECMDID_PRINT 7 -> OLECMDID_PRINTPREVIEW 8 -> OLECMDID_PAGESETUP 9 -> OLECMDID_SPELL 10 -> OLECMDID_PROPERTIES 11 -> OLECMDID_CUT 12 -> OLECMDID_COPY 13 -> OLECMDID_PASTE 14 -> OLECMDID_PASTESPECIAL 15 -> OLECMDID_UNDO 16 -> OLECMDID_REDO 17 -> OLECMDID_SELECTALL 18 -> OLECMDID_CLEARSELECTION 19 -> OLECMDID_ZOOM 20 -> OLECMDID_GETZOOMRANGE 21 -> OLECMDID_UPDATECOMMANDS 22 -> OLECMDID_REFRESH 23 -> OLECMDID_STOP 24 -> OLECMDID_HIDETOOLBARS 25 -> OLECMDID_SETPROGRESSMAX 26 -> OLECMDID_SETPROGRESSPOS 27 -> OLECMDID_SETPROGRESSTEXT 28 -> OLECMDID_SETTITLE 29 -> OLECMDID_SETDOWNLOADSTATE 30 -> OLECMDID_STOPDOWNLOAD 31 -> OLECMDID_ONTOOLBARACTIVATED 32 -> OLECMDID_FIND 33 -> OLECMDID_DELETE 34 -> OLECMDID_HTTPEQUIV 35 -> OLECMDID_HTTPEQUIV_DONE 36 -> OLECMDID_ENABLE_INTERACTION 37 -> OLECMDID_ONUNLOAD 38 -> OLECMDID_PROPERTYBAG2 39 -> OLECMDID_PREREFRESH 40 -> OLECMDID_SHOWSCRIPTERROR 41 -> OLECMDID_SHOWMESSAGE 42 -> OLECMDID_SHOWFIND 43 -> OLECMDID_SHOWPAGESETUP 44 -> OLECMDID_SHOWPRINT 45 -> OLECMDID_CLOSE 46 -> OLECMDID_ALLOWUILESSSAVEAS 47 -> OLECMDID_DONTDOWNLOADCSS 48 -> OLECMDID_UPDATEPAGESTATUS 49 -> OLECMDID_PRINT2 50 -> OLECMDID_PRINTPREVIEW2 51 -> OLECMDID_SETPRINTTEMPLATE 52 -> OLECMDID_GETPRINTTEMPLATE _ -> Prelude.error "unmarshallOLECMDID: illegal enum value " prim_queryStatus :: (Com.GUID -> [OLECMD] -> Prelude.Maybe OLECMDTEXT -> objState -> Prelude.IO ([OLECMD], Prelude.Maybe OLECMDTEXT)) -> Foreign.Ptr.Ptr (Com.IUnknown ()) -> Foreign.Ptr.Ptr Com.GUID -> Word.Word32 -> Foreign.Ptr.Ptr (Foreign.Ptr.Ptr ()) -> Foreign.Ptr.Ptr OLECMDTEXT -> Prelude.IO Int.Int32 prim_queryStatus queryStatus_meth iptr pguidCmdGroup cCmds prgCmds pCmdText = Com.returnHR (HDirect.unmarshallWord32 cCmds Prelude.>>= \ cCmds -> HDirect.unmarshalllist sizeofOLECMD 0 cCmds readOLECMD prgCmds Prelude.>>= \ in__prgCmds -> Com.unmarshallGUID Prelude.False pguidCmdGroup Prelude.>>= \ pguidCmdGroup -> HDirect.unmarshallunique readOLECMDTEXT pCmdText Prelude.>>= \ in__pCmdText -> ComServ.getObjState iptr Prelude.>>= \ obj -> queryStatus_meth pguidCmdGroup in__prgCmds in__pCmdText obj Prelude.>>= \ (res__prgCmds, res__pCmdText) -> HDirect.writelist Prelude.False sizeofOLECMD writeOLECMD (Foreign.Ptr.castPtr prgCmds) res__prgCmds Prelude.>> case res__pCmdText of Prelude.Just cmdText | pCmdText Prelude./= Foreign.Ptr.nullPtr -> writeOLECMDTEXT pCmdText cmdText _ -> Prelude.return ()) prim_exec :: (Com.GUID -> Wtypes.DWORD -> Wtypes.DWORD -> Automation.VARIANT -> Automation.VARIANT -> objState -> Prelude.IO ()) -> Foreign.Ptr.Ptr (Com.IUnknown ()) -> Foreign.Ptr.Ptr Com.GUID -> Word.Word32 -> Word.Word32 -> Automation.VARIANT -> Automation.VARIANT -> Prelude.IO Int.Int32 prim_exec exec_meth iptr pguidCmdGroup nCmdID nCmdexecopt pvaIn pvaOut = Com.returnHR (Com.unmarshallGUID Prelude.False pguidCmdGroup Prelude.>>= \ pguidCmdGroup -> ComServ.getObjState iptr Prelude.>>= \ obj -> exec_meth pguidCmdGroup nCmdID nCmdexecopt pvaIn pvaOut obj)