home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; 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.
- */
-
- // prefwutils.h
- // Various utilities used by preference window
- // They are apart from Prefw, so that our file size is manageable
-
- #pragma once
-
- #include "MoreMixedMode.h"
-
- #include <LTable.h>
-
-
- class CValidEditField;
- class LArrowControl;
- class CApplicationIconInfo;
- class CPrefHelpersContain;
- class CMimeMapper;
- class CStr255;
-
- /********************************************************************************
- * Classes
- ********************************************************************************/
-
- //======================================
- class CFilePicker
- //======================================
- : public LView
- , public LListener
- , public LBroadcaster
- {
- public:
- enum { class_ID = 'fpck' }; // illegal, needs one UC char.- jrm
-
- enum PickEnum { Folders = 0, Applications, TextFiles,
- ImageFiles, MailFiles, AnyFile };
-
- CFilePicker( LStream* inStream );
-
-
- virtual void ListenToMessage( MessageT inMessage, void* ioParam );
-
- void SetFSSpec( const FSSpec& fileSpec, Boolean touchSetFlag = true );
- const FSSpec& GetFSSpec() const { return fCurrentValue; }
-
- void SetPickType( CFilePicker::PickEnum pickTypes ) { fPickTypes = pickTypes; }
- void SetCaptionForPath( LCaption* captionToSet, const FSSpec& folderSpec );
- CStr255 FSSpecToPathName( const FSSpec& spec );
-
- Boolean WasSet() const { return fSet; }
-
-
- static Boolean DoCustomGetFile( StandardFileReply& spec,
- CFilePicker::PickEnum fileType,
- Boolean inited );
- static Boolean DoCustomPutFile( StandardFileReply& spec,
- const CStr255& prompt,
- Boolean inited );
- protected:
- struct PickClosure
- {
- StandardFileReply* reply;
- Boolean inited;
- };
-
- enum EPaneIDs {
- kPathNameCaption = 1,
- kBrowseButton = 2
- };
-
- virtual void FinishCreateSelf();
-
- static pascal short SetCurrDirHook( short item, DialogPtr dialog, void* data );
- PROCDECL( static, SetCurrDirHook )
- static pascal short DirectoryHook( short item, DialogPtr dialog, void* data );
- PROCDECL( static, DirectoryHook )
-
- static pascal Boolean OnlyFoldersFileFilter( CInfoPBPtr pBlock, void* data );
- static pascal Boolean IsMailFileFilter( CInfoPBPtr pBlock, void* data );
- PROCDECL( static, OnlyFoldersFileFilter )
- PROCDECL( static, IsMailFileFilter )
-
- static void SetButtonTitle( Handle buttonHdl, CStr255& name, const Rect& buttonRect );
-
- static CStr255 sPrevName;
- static Boolean sResult;
- static Boolean sUseDefault;
-
- FSSpec fCurrentValue;
- LControl* fBrowseButton;
- LCaption* fPathName;
- Boolean fSet;
- PickEnum fPickTypes;
- }; // class CFilePicker
-
- // COtherSizeDialog.cp <- double-click + Command-D to see class implementation
- //
- // This is a PowerPlant dialog box to handle the Other╔ command in the Size
- // menu.
-
- class LEditField;
-
- class COtherSizeDialog: public LDialogBox, public LBroadcaster
- {
- public:
- enum { class_ID = 'OFnt' };
- COtherSizeDialog( LStream* inStream );
-
-
- virtual void SetValue( Int32 inFontSize );
- virtual Int32 GetValue() const;
-
- void SetReference( LControl* which );
-
- virtual void ListenToMessage( MessageT inMessage, void* ioParam );
-
- LControl* fRef;
- protected:
- virtual void FinishCreateSelf();
- LEditField* mSizeField;
- };
-
- class LArrowGroup: public LView, public LListener
- {
- public:
- LArrowGroup( LStream* inStream );
-
- void ListenToMessage( MessageT message, void* ioParam );
-
- void SetValue( Int32 value );
- Int32 GetValue() const { return fValue; }
-
- void SetMaxValue( Int32 value );
- void SetMinValue( Int32 value );
- void SetStringID(ResIDT stringID);
- protected:
- void BuildControls();
-
- Int32 fValue;
- Int32 fMinValue;
- Int32 fMaxValue;
- ResIDT fStringID;
- LCaption* fSize;
- LArrowControl* fArrows;
- };
-
- /*****************************************************************************
- * class CColorButton
- * Just a button that pops up a color wheel when pressed
- *****************************************************************************/
-
- class CColorButton: public LButton
- {
- public:
- enum { class_ID = 'pcol' };
- // ÑÑ constructors
- CColorButton( LStream* inStream );
-
- // ÑÑ colors
- void SetColor( const RGBColor& color ) { fColor = color; }
- RGBColor GetColor() { return fColor; }
-
- // ÑÑ control overrides
- virtual void HotSpotResult( short inHotSpot );
- virtual void DrawGraphic( ResIDT inGraphicID );
- protected:
- RGBColor fColor;
- Boolean fInside;
- };
-
- //-----------------------------------------------------------------------------
- #include "PopupBox.h"
- class FileIconsLister: public StdPopup {
- public:
- FileIconsLister (CGAPopupMenu * target);
- virtual ~FileIconsLister();
- CStr255 GetText (short item);
- void SetIconList(CApplicationIconInfo *);
- short GetCount();
- private:
- CApplicationIconInfo * fIcons;
- };
-
- /*****************************************************************************
- * class PrefCellInfo
- * All the information needed to draw a cell. This is what the table stores
- *****************************************************************************/
- class PrefCellInfo
- {
- public:
- PrefCellInfo();
- PrefCellInfo(CMimeMapper* mapper, CApplicationIconInfo* iconInfo);
-
- CMimeMapper* fMapper; // The mapper from the preference MIME list
- CApplicationIconInfo* fIconInfo; // Information about icon to draw
- };
-
- //-----------------------------------------------------------------------------------
- // CApplicationList
- // Application list is a list that contains information about
- //-----------------------------------------------------------------------------------
- struct BNDLIds
- { // Utility structure for bundle parsing
- Int16 localID;
- Int16 resID;
- };
-
- class CApplicationList : public LArray
- {
- public:
- // ÑÑ constructors
- CApplicationList();
- virtual ~CApplicationList();
-
- // ÑÑ access
- // Gets information specified by the mapper
- CApplicationIconInfo* GetAppInfo(OSType appSig, CMimeMapper* mapper = NULL);
-
- private:
- // Creates application icon info for an app with a given signature
- CApplicationIconInfo* CreateNewEntry(OSType appSig, CMimeMapper* mapper = NULL);
- // Creates application icon info for an app with given specs
- CApplicationIconInfo* AppInfoFromFileSpec(OSType appSig, FSSpec appSpec);
- void GetResourcePointers(Handle bundle,
- BNDLIds* &iconOffset, BNDLIds * &frefOffset,
- short& numOfIcons, short & numOfFrefs);
- };
-
-
- /*****************************************************************************
- * class CMimeTable
- * A container view that contains all the CMimeInfo views. Here we are
- * faking a list view. This view expands so that it contains all of its
- * subviews.
- *****************************************************************************/
-
- #define msg_LaunchRadio 300 // Launch option changed
- #define msg_BrowseApp 301 // Pick a new application
- #define msg_FileTypePopup 302 // New file type picked
- //msg_EditField // User typed in a field
- #define msg_NewMimeType 303 // New Mime type
- #define msg_NewMimeTypeOK 305 // Sent by newMimeType dialog window
- //#define msg_ClearCell 306
- #define msg_EditMimeType 307 // Edit Mime type
- #define msg_DeleteMimeType 308 // Delete Mime type
- #define msg_PluginPopup 309 // Pick a plug-in
-
- class CMimeTable : public LTable, public LCommander
- {
- public:
- // ÑÑ Constructors/destructors/access
-
- CMimeTable(LStream *inStream);
- void FinishCreateSelf();
- void BindCellToApplication(TableIndexT row, CMimeMapper * mapper);
- CApplicationIconInfo* GetAppInfo(CMimeMapper* mapper);
-
- // ÑÑ access
- void SetContainer( CPrefHelpersContain* container) { fContainer = container; }
- void GetCellInfo(PrefCellInfo& cellInfo, int row);
- void FreeMappers();
-
- // ÑÑ Cell selection
- virtual void DrawCell( const TableCellT& inCell );
-
- // Drawing
- virtual void DrawSelf();
- virtual void HiliteCell(const TableCellT &inCell);
- virtual void UnhiliteCell(const TableCellT &inCell);
- void ScrollCellIntoFrame(const TableCellT& inCell);
-
- // Events
- virtual Boolean HandleKeyPress(const EventRecord &inKeyEvent);
-
- protected:
- CApplicationList fApplList; // List of application and their icons
- CPrefHelpersContain* fContainer; // Containing view
- Handle fNetscapeIcon; // Icon for Netscape
- Handle fPluginIcon; // Icon for plug-ins
- };
-
- //-----------------------------------------------------------------------------------
- // CFileType holds information about a single file type
- //-----------------------------------------------------------------------------------
- class CFileType
- {
- public:
- CFileType( OSType iconSig );
- CFileType( OSType iconSig, Handle icon ) {fIcon = icon; fIconSig = iconSig;}
- ~CFileType();
-
- static void ClearDefaults(); // Does class globals memory cleanup
- static void InitializeDefaults(); // Initializes default values
-
- static Handle sDefaultDocIcon;
-
- Handle fIcon; // Really an icon suite
- OSType fIconSig;
- };
-
- //-----------------------------------------------------------------------------------
- // CApplicationIconInfo
- // holds all icon information about an application
- //-----------------------------------------------------------------------------------
- class CApplicationIconInfo
- {
- public:
- // ÑÑ╩constructors/destructors
- // Call me when application has not been found
- CApplicationIconInfo( OSType appSig );
- // Call me when app was found
- CApplicationIconInfo( OSType appSig, Handle appIcon,
- LArray* documentIcons, Boolean handlesAE );
-
- ~CApplicationIconInfo();
- // ÑÑ access
- CFileType* GetFileType( int i ); // Gets file type by the index
- int GetFileTypeArraySize(); // Gets number of file types
- // ÑÑ misc
- static void InitializeDefaults(); // Initializes default values
- static void ClearDefaults(); // Does class globals memory cleanup
-
- static Handle sDefaultAppIcon; // Defaults, in case that application is not found
- Handle fApplicationIcon; // Handle of application icons (iconSuite)
- LArray* fDocumentIcons; // List of CFileType objects
- Boolean fHandlesAE; // Does it handle apple events
- OSType fAppSig; // Signature of the application
- Boolean fApplicationFound; // Was application found on my disk?
-
- private:
- static LArray* sDocumentIcons; // ditto
- static Boolean sHandlesAE; // ditto
-
- };
-
- /*****************************************************************************
- * Class LFocusEditField
- * ----------------------
- * Just like an LListBox, except that it will send messages on
- * a single click. Used in the Document Encoding Dialog Box.
- *****************************************************************************/
-
- class LFocusEditField : public LEditField , public LBroadcaster{
- public:
- enum { class_ID = 'Fedi' };
-
- LFocusEditField(
- const LFocusEditField &inOriginal);
- LFocusEditField(
- LStream *inStream);
- virtual ~LFocusEditField();
- LFocusBox* GetFocusBox();
-
- Int16 GetReturnMessage() { return mReturnMessage; }
- virtual void SetReturnMessage(Int16 inMessage)
- { mReturnMessage = inMessage;}
- virtual Boolean HandleKeyPress( const EventRecord &inKeyEvent);
-
- private:
- Int16 mReturnMessage;
-
- protected:
- LFocusBox *mFocusBox;
-
- virtual void BeTarget();
- virtual void DontBeTarget();
-
- };
-
- /*****************************************************************************
- * Class OneClickLListBox
- * ----------------------
- * Just like an LListBox, except that it will send messages on
- * a single click. Used in the Document Encoding Dialog Box.
- *****************************************************************************/
-
- class OneClickLListBox : public LListBox
- {
-
- public:
- OneClickLListBox(LStream * inStream);
-
- Int16 GetSingleClickMessage() { return mSingleClickMessage; }
- virtual void SetSingleClickMessage(Int16 inMessage)
- { mSingleClickMessage = inMessage;}
- virtual void ClickSelf(const SMouseDownEvent &inMouseDown);
-
- protected:
- Int16 mSingleClickMessage;
-
- };
-
- /*****************************************************************************
- * Class OneRowLListBox
- *****************************************************************************/
- class OneRowLListBox : public OneClickLListBox
- {
-
- public:
- enum { class_ID = 'ocLB' };
- OneRowLListBox(LStream * inStream);
- virtual Boolean HandleKeyPress(const EventRecord &inKeyEvent);
-
- virtual Int16 GetRows();
- virtual void AddRow(Int32 rowNum, char* data, Int16 datalen);
- virtual void RemoveRow(Int32 rowNum);
- virtual void GetCell(Int32 rowNum, char* data, Int16* datalen);
- virtual void SetCell(Int32 rowNum, char* data, Int16 datalen);
- };
-