зеркало из https://github.com/mozilla/pjs.git
273 строки
8.3 KiB
C++
273 строки
8.3 KiB
C++
// ============================================================================
|
|
// ¥¥¥ QAP_Assist.h
|
|
// ============================================================================
|
|
// QA Partner/Macintosh Driver Assistance Hook Header
|
|
//
|
|
// Copyright © 1993-1997 Segue Software, Inc.
|
|
// All Rights Reserved.
|
|
//
|
|
// QA PARTNER RELEASE VERSION 4.0 BETA 1
|
|
// THIS IS A BETA RELEASE. THIS SOFTWARE MAY HAVE BUGS. THIS SOFTWARE MAY CHANGE BEFORE FINAL RELEASE.
|
|
|
|
|
|
|
|
|
|
#ifndef _MAC //¥NETSCAPE: added these lines
|
|
#define _MAC
|
|
#include <LTableView.h>
|
|
#endif
|
|
|
|
#ifndef __QAP_ASSIST_H__
|
|
#define __QAP_ASSIST_H__
|
|
|
|
#include <LTableView.h>
|
|
|
|
|
|
//¥NETSCAPE: added this definition
|
|
//#define QAP_BUILD
|
|
|
|
// The internal name of the QA Partner 4.0 driver
|
|
#define QAP_DRIVER_NAME "\p.QAP40"
|
|
|
|
// The PBControl code to send the driver to set the assist hook
|
|
#define QAP_SET_ASSIST_HOOK 200
|
|
|
|
// The return value you can use if you're not ready to assist the driver
|
|
#define QAP_CALL_ME_BACK -1
|
|
|
|
// Special "index" values for kQAPGetListContents
|
|
#define QAP_INDEX_ALL -1
|
|
#define QAP_INDEX_SELECTED -2
|
|
|
|
// Prototype for the assist hook function which you must supply
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
pascal short QAP_AssistHook (short selector, long handle, void *buffer, short val, long l_appA5);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
typedef pascal short (*QAPAssistHookPtr)(short, long, void *, short, long);
|
|
|
|
// Mixed-Mode junk for QAP_AssistHook
|
|
#if GENERATINGPOWERPC || defined(powerc) || defined(__powerc) || defined (_MPPC_)
|
|
enum
|
|
{
|
|
uppQAPAssistHookInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
|
|
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *)))
|
|
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
|
|
};
|
|
|
|
typedef UniversalProcPtr QAPAssistHookUPP;
|
|
#define CallQAPAssistHook(userRoutine, selector, handle, buffer, val, appA5) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppQAPAssistHookInfo, (short)(selector), (long)(handle), (void *)(buffer), (short)(val), (long)(appA5))
|
|
#define NewQAPAssistHook(userRoutine) \
|
|
(QAPAssistHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQAPAssistHookInfo, GetCurrentISA())
|
|
#else
|
|
typedef QAPAssistHookPtr QAPAssistHookUPP;
|
|
#define CallQAPAssistHook(userRoutine, selector, handle, buffer, val, appA5) \
|
|
(*(userRoutine))((short)(selector), (long)(handle), (void *)(buffer), (short)(val), (long)(appA5))
|
|
#define NewQAPAssistHook(userRoutine) \
|
|
(QAPAssistHookUPP)(userRoutine)
|
|
#endif
|
|
|
|
// The selectors for the assist hook callback function
|
|
enum
|
|
{
|
|
// selector handle buffer val return
|
|
// -------- ------ --- --- ------
|
|
kQAPGetWindowContents, // WindowPtr wcinfo array ptr max array elements number of items returned
|
|
kQAPGetTextInfo, // from wcinfo textinfo struct ptr 1 0 if no error
|
|
kQAPGetStaticText, // from wcinfo buffer ptr (Str255) buffer size 0 if no erro
|
|
kQAPGetListInfo, // from wcinfo listinfo struct ptr 1 0 if no erro
|
|
kQAPGetListContents, // from wcinfo buffer ptr index 0 if no error
|
|
kQAPGetCustomItemName, // from wcinfo buffer ptr (Str255) 0 0 if no error
|
|
kQAPGetCustomItemValue, // from wcinfo buffer ptr (long *) 0
|
|
kQAPAppToForeground, // NULL NULL 0 0 if no error
|
|
kQAPAppToBackground, // NULL NULL 0 0 if no error
|
|
kQAPGetScrollbarInfo,
|
|
kQAPWin32Service // HWND ptr to paramblock win32 Service Selector
|
|
};
|
|
|
|
// Selectors for win32 services
|
|
|
|
enum
|
|
{
|
|
kQAP_CB_GetContents,
|
|
kQAP_CB_GetAttr,
|
|
kQAP_CB_GetInfo,
|
|
kQAP_CB_GetItemText,
|
|
kQAP_CB_GetText,
|
|
kQAP_CB_IsSelected,
|
|
kQAP_CB_SelectText,
|
|
|
|
kQAP_LB_GetContents,
|
|
kQAP_LB_GetAtPoint,
|
|
kQAP_LB_GetAttr,
|
|
kQAP_LB_GetInfo,
|
|
kQAP_LB_GetItemInfo,
|
|
kQAP_LB_GetItemText,
|
|
kQAP_LB_IsSelected,
|
|
|
|
kQAP_LV_GetContents,
|
|
kQAP_LV_GetAttr,
|
|
kQAP_LV_GetInfo,
|
|
kQAP_LV_GetItemInfo,
|
|
kQAP_LV_GetItemText,
|
|
kQAP_LV_IsSelected,
|
|
kQAP_LV_MakeVisible,
|
|
|
|
kQAP_PGL_GetContents,
|
|
kQAP_PGL_GetInfo,
|
|
kQAP_PGL_GetItemRect,
|
|
kQAP_PGL_GetItemText,
|
|
kQAP_PGL_IsSelected,
|
|
|
|
kQAP_SCL_GetLayout,
|
|
kQAP_SCL_GetValues,
|
|
|
|
kQAP_TV_GetContents,
|
|
kQAP_TV_GetAtPoint,
|
|
kQAP_TV_GetAttr,
|
|
kQAP_TV_GetInfo,
|
|
kQAP_TV_GetItemInfo,
|
|
kQAP_TV_GetItemText,
|
|
kQAP_TV_IsSelected,
|
|
|
|
kQAP_UD_GetLayout,
|
|
kQAP_UD_GetValues
|
|
};
|
|
|
|
enum
|
|
{
|
|
// Window type codes for the WCINFO 'type' field
|
|
WT_COMPLETE = 0, // marker for end of window item list (QAP will not add other items)
|
|
WT_INCOMPLETE, // marker for end of assist item list (QAP will add other items too)
|
|
WT_CONTROL, // Apple Control Manager control
|
|
WT_TEXT_FIELD, // Apple TextEdit Manager Text Field
|
|
WT_LIST_BOX, // Apple List Manager List Box
|
|
WT_ASSIST_ITEM, // Custom control (type indicated in 'cls' field)
|
|
WT_IGNORE, // Internal use
|
|
|
|
// Window class codes for the WCINFO 'cls' field (only used for WT_ASSIST_ITEM items)
|
|
|
|
WC_STATIC_TEXT = 256,
|
|
WC_TEXT_FIELD,
|
|
WC_LIST_BOX,
|
|
WC_POPUP_LIST,
|
|
WC_OWNER_DRAW,
|
|
WC_ICON,
|
|
WC_PICTURE,
|
|
WC_CUSTOM,
|
|
WC_PUSH_BUTTON,
|
|
WC_CHECK_BOX,
|
|
WC_RADIO_BUTTON,
|
|
WC_COMBO_BOX,
|
|
WC_LIST_VIEW,
|
|
WC_NULL,
|
|
WC_PAGE_LIST,
|
|
WC_TRACK_BAR,
|
|
WC_TREE_VIEW,
|
|
WC_UP_DOWN,
|
|
WC_SCROLL_BAR,
|
|
WC_WINDOW // Internal use
|
|
};
|
|
|
|
// Values for the 'flags' field of wcinfo
|
|
#define WCF_DISABLED 0x01
|
|
#define WCF_NOCONTROL 0x02
|
|
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
# pragma options align = power
|
|
#endif
|
|
|
|
// The structure to be filled in for each control when the assist hook
|
|
// is called with the kQAPGetWindowContents selector
|
|
|
|
#define MAC_NAME_SIZE 32
|
|
|
|
typedef struct wcinfo
|
|
{
|
|
Handle handle;
|
|
Rect rect;
|
|
short type;
|
|
short cls;
|
|
short flags;
|
|
short pad;
|
|
char str[MAC_NAME_SIZE];
|
|
} WCINFO, *PWCINFO, **PPWCINFO;
|
|
|
|
// The structure to be filled for the given item when the assist hook
|
|
// is called with the kQAPGetTextInfo selector
|
|
|
|
typedef struct textinfo
|
|
{
|
|
Handle handle; // handle to the text if you want me to unlock it
|
|
TEHandle hTE; // handle to the TE associated with the text (for dialog items)
|
|
Ptr ptr; // pointer to the actual text (locked if a handle, please)
|
|
short len; // length of the actual text
|
|
Boolean hasFocus; // TRUE if typing right now would go to the text field
|
|
char state; // value for HSetState if <handle> is not NULL
|
|
char buf[256]; // buffer to copy text into if you need a fixed place
|
|
} TEXTINFO, *PTEXTINFO, **PPTEXTINFO;
|
|
|
|
// The structure to be filled for the given item when the assist hook
|
|
// is called with the kQAPGetListInfo selector
|
|
|
|
typedef struct listinfo
|
|
{
|
|
short itemCount; // total number of items in the listbox
|
|
short topIndex; // 1-based index of top visible item in list
|
|
short itemHeight; // height of each list item, in pixels
|
|
short visibleCount; // count of visible list items
|
|
ControlHandle vScroll; // ListBox's vertical scrollbar, or NULL
|
|
Boolean isMultiSel; // TRUE if cmd-click selects multiple items
|
|
Boolean isExtendSel; // TRUE if shift-click extends the selection range
|
|
Boolean hasText; // TRUE if the list items are textual
|
|
Boolean reserved;
|
|
} QAPLISTINFO, *PQAPLISTINFO, **PPQAPLISTINFO;
|
|
|
|
typedef struct scrollbarinfo
|
|
{
|
|
long lPos;
|
|
long lMin;
|
|
long lMax;
|
|
long lPageSize;
|
|
long lIncrement;
|
|
long lVertical;
|
|
long lHasThumb;
|
|
Point ptIncrArrow;
|
|
Point ptDecrArrow;
|
|
Point ptIncrPage;
|
|
Point ptDecrPage;
|
|
Point ptMinThumb;
|
|
Point ptMaxThumb;
|
|
} QAPSCROLLBARINFO, *PQAPSCROLLBARINFO, **PPQAPSCROLLBARINFO;
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
# pragma options align = reset
|
|
#endif
|
|
|
|
//¥NETSCAPE --- begin
|
|
class CQAPartnerTableMixin
|
|
{
|
|
public:
|
|
CQAPartnerTableMixin(LTableView *);
|
|
virtual ~CQAPartnerTableMixin();
|
|
|
|
virtual void QapGetListInfo (PQAPLISTINFO pInfo) = 0;
|
|
virtual Ptr QapAddCellToBuf(Ptr pBuf, Ptr pLimit, const STableCell& sTblCell) = 0;
|
|
virtual short QapGetListContents(Ptr pBuf, short index);
|
|
|
|
protected:
|
|
LTableView * mTableView;
|
|
};
|
|
//¥NETSCAPE --- end
|
|
|
|
#endif // __QAP_ASSIST_H__
|