5#ifndef __LedItApplication_h__ 
    6#define __LedItApplication_h__ 1 
    8#include "Stroika/Foundation/StroikaPreComp.h" 
   13#if qStroika_Foundation_Common_Platform_MacOS 
   16#include <LDocApplication.h> 
   17#elif qStroika_Foundation_Common_Platform_Windows 
   19#include "Stroika/Foundation/Execution/Platform/Windows/COM.h" 
   21DISABLE_COMPILER_MSC_WARNING_START (5054)
 
   23DISABLE_COMPILER_MSC_WARNING_END (5054)
 
   24#elif qStroika_FeatureSupported_XWindows 
   30#include "Stroika/Frameworks/Led/GDI.h" 
   31#include "Stroika/Frameworks/Led/Support.h" 
   32#include "Stroika/Frameworks/Led/TextStore.h" 
   34#include "LedItConfig.h" 
   36#if qIncludeBasicSpellcheckEngine 
   37#include "Stroika/Frameworks/Led/SpellCheckEngine_Basic.h" 
   40#if qStroika_Foundation_Common_Platform_MacOS 
   41#include "Stroika/Frameworks/Led/Platform/Led_PP.h" 
   42#elif qStroika_Foundation_Common_Platform_Windows 
   43#include "Stroika/Frameworks/Led/Platform/MFC.h" 
   44#elif qStroika_FeatureSupported_XWindows 
   45#include "Stroika/Frameworks/Led/Platform/Gtk.h" 
   48#if qStroika_Foundation_Common_Platform_Windows 
   55#if qStroika_Foundation_Common_Platform_MacOS 
   56using CMD_ENABLER = Platform::Led_PP_TmpCmdUpdater;
 
   57#elif qStroika_Foundation_Common_Platform_Windows 
   58using CMD_ENABLER = Platform::Led_MFC_TmpCmdUpdater;
 
   59#elif qStroika_FeatureSupported_XWindows 
   60using CMD_ENABLER = Platform::Led_Gtk_TmpCmdUpdater;
 
   64#if qStroika_Foundation_Common_Platform_MacOS
 
   65    : 
public LDocApplication
 
   66#elif qStroika_Foundation_Common_Platform_Windows 
   71#if qStroika_Foundation_Common_Platform_MacOS 
   72    using inherited = LDocApplication;
 
   73#elif qStroika_Foundation_Common_Platform_Windows 
   74    using inherited = CWinApp;
 
   79    virtual ~LedItApplication ();
 
   82    static LedItApplication& Get ();
 
   85    static LedItApplication* sThe;
 
   87#if qIncludeBasicSpellcheckEngine 
   89    shared_ptr<SpellCheckEngine_Basic_Simple> fSpellCheckEngine;
 
   92#if qStroika_Foundation_Common_Platform_Windows 
   94    nonvirtual 
void      FixupFontMenu (CMenu* fontMenu);
 
   95    nonvirtual 
SDKString CmdNumToFontName (UINT cmdNum);
 
   96    nonvirtual 
const vector<SDKString>& GetUsableFontNames (); 
 
  100    nonvirtual 
void OnToggleSmartCutNPasteOptionCommand ();
 
  101    nonvirtual 
void OnToggleSmartCutNPasteOption_UpdateCommandUI (CMD_ENABLER* enabler);
 
  102    nonvirtual 
void OnToggleWrapToWindowOptionCommand ();
 
  103    nonvirtual 
void OnToggleWrapToWindowOption_UpdateCommandUI (CMD_ENABLER* enabler);
 
  104    nonvirtual 
void OnToggleShowHiddenTextOptionCommand ();
 
  105    nonvirtual 
void OnToggleShowHiddenTextOption_UpdateCommandUI (CMD_ENABLER* enabler);
 
  108    nonvirtual 
void UpdateViewsForPrefsChange ();
 
  110#if qStroika_Foundation_Common_Platform_Windows 
  112    virtual BOOL InitInstance () 
override;
 
  115#if _MFC_VER >= 0x0700 
  116    virtual void WinHelpInternal (DWORD_PTR dwData, UINT nCmd = HELP_CONTEXT) 
override;
 
  118    vitual 
void WinHelp (DWORD dwData, UINT nCmd = HELP_CONTEXT) 
override;
 
  123    virtual BOOL PumpMessage () 
override;
 
  125    nonvirtual 
void HandleMFCException (CException* e) 
noexcept;
 
  126    nonvirtual 
void HandleHRESULTException (HRESULT hr) 
noexcept;
 
  129    virtual    BOOL    OnIdle (LONG lCount) 
override;
 
  133    nonvirtual 
void AddDocTemplateForString (
const char* tmplStr, 
bool connectToServer);
 
  135    COleTemplateServer fOleTemplateServer;
 
  138    virtual BOOL ProcessShellCommand (CCommandLineInfo& rCmdInfo);
 
  141    afx_msg 
void OnAppAbout ();
 
  142    afx_msg 
void OnToggleSmartCutNPasteOptionUpdateCommandUI (CCmdUI* pCmdUI);
 
  143    afx_msg 
void OnToggleWrapToWindowOptionUpdateCommandUI (CCmdUI* pCmdUI);
 
  144    afx_msg 
void OnToggleShowHiddenTextOptionUpdateCommandUI (CCmdUI* pCmdUI);
 
  147    DECLARE_MESSAGE_MAP ()
 
  151    nonvirtual 
void OnChooseDefaultFontCommand ();
 
  155    nonvirtual 
void HandleBadAllocException () noexcept;
 
  156    nonvirtual 
void HandleBadUserInputException () noexcept;
 
  157    nonvirtual 
void HandleUnknownException () noexcept;
 
  160    nonvirtual 
void DoAboutBox ();
 
  161    nonvirtual 
void OnGotoLedItWebPageCommand ();
 
  162    nonvirtual 
void OnGotoSophistsWebPageCommand ();
 
  163    nonvirtual 
void OnCheckForUpdatesWebPageCommand ();
 
  165#if qStroika_Foundation_Common_Platform_MacOS 
  167    virtual void MakeMenuBar () 
override;
 
  168    virtual void StartUp () 
override;
 
  169    virtual void ProcessNextEvent () 
override;
 
  170    virtual void HandleAppleEvent (
const AppleEvent& inAppleEvent, AppleEvent& outAEReply, AEDesc& outResult, 
long inAENumber) 
override;
 
  173    nonvirtual 
void HandleMacOSException (OSErr err);
 
  174    nonvirtual 
void HandlePowerPlantException (ExceptionCode err);
 
  177    virtual void ShowAboutBox () 
override;
 
  179    virtual Boolean ObeyCommand (CommandT inCommand, 
void* ioParam = nil) 
override;
 
  180    virtual void FindCommandStatus (CommandT inCommand, Boolean& outEnabled, Boolean& outUsesMark, UInt16& outMark, Str255 outName) 
override;
 
  183    nonvirtual 
void OnHelpMenuCommand ();
 
  189    short fGotoLedItWebPageMenuItem;
 
  192    short fGotoSophistsWebPageMenuItem;
 
  195    short fCheckForUpdatesWebPageMenuItem;
 
  198    virtual void UseIdleTime (
const EventRecord& inMacEvent) 
override;
 
  201    float fLastLowMemWarnAt;
 
  204    virtual void          OpenDocument (FSSpec* inMacFSSpec) 
override;
 
  205    virtual void          OpenDocument (FSSpec* inMacFSSpec, FileFormat format) 
override;
 
  206    virtual LModelObject* MakeNewDocument () 
override;
 
  209    virtual void ChooseDocument () 
override;
 
  212    static pascal Boolean SFGetDlgModalFilter (DialogPtr dialog, EventRecord* theEvent, 
short* itemHit, 
void* myData);
 
  213    static pascal 
short   SFGetDlgHook (
short item, DialogPtr dialog, 
void* myData);
 
  216#if qStroika_FeatureSupported_XWindows 
  218    nonvirtual GtkWidget* get_main_menu (GtkWidget* window);
 
  221    static gint delete_event (GtkWidget* widget, gpointer data);
 
  222    static void xdestroy (GtkWidget* widget, gpointer data);
 
  225    LedItDocument* fDocument;
 
  228    nonvirtual 
void OnNewDocumentCommand ();
 
  229    nonvirtual 
void OnOpenDocumentCommand ();
 
  230    nonvirtual 
void OnSaveDocumentCommand ();
 
  231    nonvirtual 
void OnSaveAsDocumentCommand ();
 
  232    nonvirtual 
void OnQuitCommand ();
 
  235    nonvirtual 
void LoadFromFile (
const string& fileName, FileFormat fileFormat);
 
  236    nonvirtual 
void SaveAs (
const string& fileName, FileFormat fileFormat);
 
  237    nonvirtual 
void Save ();
 
  240    nonvirtual 
void UpdateFrameWindowTitle ();
 
  243    static void AppCmdDispatcher (gpointer callback_data, guint callback_action, GtkWidget* widget);
 
  244    static void AppCmdOnInitMenu (GtkMenuItem* menuItem, gpointer callback_data);
 
  247    nonvirtual GtkWidget* GetAppWindow () 
const;
 
  250    GtkWidget* fAppWindow;
 
  251    LedItView* fTextEditor;
 
  254    static GtkItemFactoryEntry kMenuItemResources[];
 
  256#if qStroika_Foundation_Common_Platform_Windows 
  258    Execution::Platform::Windows::COMInitializer fCOMInitializer_{COINIT_APARTMENTTHREADED};
 
  261    Execution::Logger::Activator fLogMgrActivator_;
 
  262#if qStroika_Foundation_Common_Platform_Windows || qStroika_FeatureSupported_XWindows 
  264    InstalledFonts fInstalledFonts; 
 
basic_string< SDKChar > SDKString