// =========================================================================== // BasicApp.h PPx Stationery ©2003 Metrowerks Corp. // =========================================================================== #ifndef H_BasicApp #define H_BasicApp #pragma once #include #include #include #include #include #include "AECycloneEvents.h" #include #include "CyclonePreferences.h" #include "CInputBuffer.h" #include "COutputBuffer.h" const UInt32 cmd_Convert = 'Conv'; const UInt32 cmd_ConvertClipboard = 'CvCp'; class BasicApp : public PPx::Application, public PPx::CommandConverter, public PPx::NavEventResponder, public PPx::AEOpenDocumentsDoer, public PPx::SpecificMenuCommandEnableDoer, public PPx::SpecificMenuCommandDoer, public PPx::SpecificMenuCommandDoer, public PPx::CommandHandler, public PPx::CommandHandler, public AEConvertFilesDoer, public AEConvertClipboardDoer, public AEConvertTextDoer, public AESetAlertModeDoer { public: BasicApp(); virtual ~BasicApp(); protected: virtual OSStatus DoSpecificCommand( PPx::CommandIDType, PPx::SysCarbonEvent& ioEvent); virtual OSStatus DoSpecificCommand( PPx::CommandIDType, PPx::SysCarbonEvent& ioEvent); virtual OSStatus DoSpecificCommand( PPx::CommandIDType, PPx::SysCarbonEvent& ioEvent); virtual OSStatus DoSpecificCommandStatus( PPx::CommandIDType, PPx::SysCarbonEvent& ioEvent); virtual OSStatus DoSpecificCommand( PPx::CommandIDType, PPx::SysCarbonEvent& ioEvent); virtual OSStatus DoSpecificCommandStatus( PPx::CommandIDType, PPx::SysCarbonEvent& ioEvent); virtual OSStatus DoAEOpenDocuments( const PPx::AutoAEDesc& inAppleEvent, PPx::AutoAEDesc& outAEReply); virtual OSStatus DoAEConvertFiles(const AppleEvent& inAppleEvent, AEDesc& outResult); virtual OSStatus DoAEConvertClipboard(const AppleEvent& inAppleEvent, AEDesc& outResult); virtual OSStatus DoAEConvertText(const AppleEvent& inAppleEvent, AEDesc& outResult); virtual OSStatus DoAESetAlertMode(const AppleEvent& inAppleEvent, AEDesc& outResult); TextEncoding GetEncodingFromAppleEventParam(const AppleEvent& inAppleEvent, AEKeyword inKey); void GetLineBreakOptionFromAppleEventParam( const AppleEvent& inAppleEvent, UInt16 &outLineBreak ); void ProcessOneFile(FSRef &ioRef); bool ClipboardHasText(bool &outIsUnicode); bool AskForConversionType( TextEncoding &inputEncoding, TextEncoding &outputEncoding, UInt16 &outLineBreak, CFStringRef inFileName); OSErr GetFSSpecFromAEDesc(const AEDesc &inDesc, FSSpec &outSpec); OSErr GetFSRefFromAEDesc(const AEDesc &inDesc, FSRef &outRef); OSErr CreateAliasDesc( const AliasHandle inAliasH, AEDesc *outAliasAEDesc ); OSErr CreateAliasDesc( const FSRef *inFSRef, AEDesc *outAliasAEDesc ); virtual void DoNavUserAction( NavCBRecPtr inParams ); void DoNavOpenDocument( NavCBRecPtr inParams ); void OpenListOfDocuments( const PPx::AutoAEDesc& inDocList ); // void OpenOneDocument( const FSRef& inFileRef ); Boolean SaveFileAs(FSRef &outFSRef, const FSRef &inFSRef); Boolean MakeNewRef(FSRef &ioFSRef); protected: CyclonePreferences mPrefs; CInputBuffer mInputBuffer; COutputBuffer mOutputBuffer; FSRef mCurrParentRef; HFSUniStr255 mCurrFileName; TextEncoding mCurrFileNameEncodingHint; TextEncoding mInputTextEncoding; TextEncoding mOutputTextEncoding; UInt16 mLineBreak; Boolean mAskForConversion; Boolean mStopMultipleConversion; private: virtual CFStringRef ClassName() const; }; #endif // H_BasicApp