/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ /* Mac specific viewer driver - a sample application for NGLayout */ // PowerPlant #include #include #include #include #include #include #include #include // Netscape #include "prlog.h" #include "xp_trace.h" #include "nsIWidget.h" #include "nsViewerApp.h" const ResIDT window_Sample = 1; // EXAMPLE class nsMacViewer : public nsViewerApp { // From nsViewerApp public: virtual void AddMenu(nsIWidget* aMainWindow); }; void nsMacViewer::AddMenu(nsIWidget* aMainWindow) { PR_ASSERT(FALSE); } #pragma mark class nsMacApplication // // Prototype simple NGLayout application // class nsMacApplication : public LApplication { nsMacViewer * mViewer; public: nsMacApplication(); virtual ~nsMacApplication(); virtual Boolean ObeyCommand(CommandT inCommand, void* ioParam); virtual void FindCommandStatus(CommandT inCommand, Boolean &outEnabled, Boolean &outUsesMark, Char16 &outMark, Str255 outName); protected: virtual void StartUp(); // overriding startup functions }; nsMacApplication::nsMacApplication() { // Register functions to create core PowerPlant classes RegisterAllPPClasses(); mViewer = new nsMacViewer(); SetViewer(mViewer); } nsMacApplication::~nsMacApplication() { delete mViewer; } void nsMacApplication::StartUp() { nsIWidget *mainWindow = nsnull; // nsDocLoader* dl = aViewer->SetupViewer(&mainWindow, 0, 0); ObeyCommand(cmd_New, nil); // EXAMPLE, create a new window } Boolean nsMacApplication::ObeyCommand( CommandT inCommand, void *ioParam) { Boolean cmdHandled = true; switch (inCommand) { case cmd_New: // EXAMPLE, create a new window LWindow *theWindow; theWindow = LWindow::CreateWindow(window_Sample, this); theWindow->Show(); break; default: cmdHandled = LApplication::ObeyCommand(inCommand, ioParam); break; } return cmdHandled; } // --------------------------------------------------------------------------- // ¥ FindCommandStatus // --------------------------------------------------------------------------- // This function enables menu commands. // void nsMacApplication::FindCommandStatus( CommandT inCommand, Boolean &outEnabled, Boolean &outUsesMark, Char16 &outMark, Str255 outName) { switch (inCommand) { case cmd_New: // EXAMPLE outEnabled = true; // enable the New command break; default: LApplication::FindCommandStatus(inCommand, outEnabled, outUsesMark, outMark, outName); break; } } void main( void ) { SetDebugThrow_(debugAction_Nothing); SetDebugSignal_(debugAction_Nothing); #ifdef DEBUG SetDebugSignal_(debugAction_LowLevelDebugger); // debugAction_SourceDebugger, but SysBreak broken in MetroNub 1.3.2 XP_TraceInit(); #endif // Initialize standard Toolbox managers UQDGlobals::InitializeToolbox( &qd ); nsMacApplication * app = new nsMacApplication; app->Run(); delete app; }