mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-03-16 03:53:01 -05:00
My First CDEF: A terribly trivial static text control for System 7.
Needs work. [originally from svn r2955]
This commit is contained in:
parent
8978c74c45
commit
893ca6173a
@ -1,4 +1,4 @@
|
|||||||
/* $Id: mac_res.r,v 1.32 2003/03/17 21:40:37 ben Exp $ */
|
/* $Id: mac_res.r,v 1.33 2003/03/18 00:35:40 ben Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2002, 2003 Ben Harris
|
* Copyright (c) 1999, 2002, 2003 Ben Harris
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -1119,3 +1119,9 @@ resource 'TEXT' (wLicence, "licence", purgeable) {
|
|||||||
"CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE "
|
"CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE "
|
||||||
"SOFTWARE."
|
"SOFTWARE."
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Custom xDEFs */
|
||||||
|
|
||||||
|
data 'CDEF' (CDEF_Text) {
|
||||||
|
$"4EF9 00000000"
|
||||||
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: macctrls.c,v 1.1 2003/03/17 21:40:37 ben Exp $ */
|
/* $Id: macctrls.c,v 1.2 2003/03/18 00:35:40 ben Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2003 Ben Harris
|
* Copyright (c) 2003 Ben Harris
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -29,6 +29,7 @@
|
|||||||
#include <Appearance.h>
|
#include <Appearance.h>
|
||||||
#include <Controls.h>
|
#include <Controls.h>
|
||||||
#include <ControlDefinitions.h>
|
#include <ControlDefinitions.h>
|
||||||
|
#include <Resources.h>
|
||||||
#include <Sound.h>
|
#include <Sound.h>
|
||||||
#include <TextUtils.h>
|
#include <TextUtils.h>
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
@ -89,6 +90,39 @@ static void macctrl_checkbox(struct macctrls *, WindowPtr,
|
|||||||
struct mac_layoutstate *, union control *);
|
struct mac_layoutstate *, union control *);
|
||||||
static void macctrl_button(struct macctrls *, WindowPtr,
|
static void macctrl_button(struct macctrls *, WindowPtr,
|
||||||
struct mac_layoutstate *, union control *);
|
struct mac_layoutstate *, union control *);
|
||||||
|
#if !TARGET_API_MAC_CARBON
|
||||||
|
static pascal SInt32 macctrl_sys7_text_cdef(SInt16, ControlRef,
|
||||||
|
ControlDefProcMessage, SInt32);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !TARGET_API_MAC_CARBON
|
||||||
|
/*
|
||||||
|
* This trick enables us to keep all the CDEF code in the main
|
||||||
|
* application, which makes life easier. For details, see
|
||||||
|
* <http://developer.apple.com/technotes/tn/tn2003.html#custom_code_base>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma options align=mac68k
|
||||||
|
typedef struct {
|
||||||
|
short jmpabs; /* 4EF9 */
|
||||||
|
ControlDefUPP theUPP;
|
||||||
|
} **PatchCDEF;
|
||||||
|
#pragma options align=reset
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void macctrl_init()
|
||||||
|
{
|
||||||
|
#if !TARGET_API_MAC_CARBON
|
||||||
|
static int inited = 0;
|
||||||
|
PatchCDEF cdef;
|
||||||
|
|
||||||
|
if (inited) return;
|
||||||
|
cdef = (PatchCDEF)GetResource(kControlDefProcResourceType, CDEF_Text);
|
||||||
|
(*cdef)->theUPP = NewControlDefProc(macctrl_sys7_text_cdef);
|
||||||
|
inited = 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int macctrl_cmp_byctrl(void *av, void *bv)
|
static int macctrl_cmp_byctrl(void *av, void *bv)
|
||||||
{
|
{
|
||||||
@ -110,7 +144,8 @@ void macctrl_layoutbox(struct controlbox *cb, WindowPtr window,
|
|||||||
struct mac_layoutstate curstate;
|
struct mac_layoutstate curstate;
|
||||||
ControlRef root;
|
ControlRef root;
|
||||||
Rect rect;
|
Rect rect;
|
||||||
|
|
||||||
|
macctrl_init();
|
||||||
#if TARGET_API_MAC_CARBON
|
#if TARGET_API_MAC_CARBON
|
||||||
GetPortBounds(GetWindowPort(window), &rect);
|
GetPortBounds(GetWindowPort(window), &rect);
|
||||||
#else
|
#else
|
||||||
@ -205,11 +240,48 @@ static void macctrl_text(struct macctrls *mcs, WindowPtr window,
|
|||||||
SizeControl(mc->text.tbctrl, curstate->width, height);
|
SizeControl(mc->text.tbctrl, curstate->width, height);
|
||||||
curstate->pos.v += height + 6;
|
curstate->pos.v += height + 6;
|
||||||
} else {
|
} else {
|
||||||
/* Do something useful */
|
Str255 title;
|
||||||
|
|
||||||
|
c2pstrcpy(title, ctrl->text.label);
|
||||||
|
mc->text.tbctrl = NewControl(window, &bounds, title, TRUE, 0, 0, 0,
|
||||||
|
SYS7_TEXT_PROC, (long)mc);
|
||||||
}
|
}
|
||||||
add234(mcs->byctrl, mc);
|
add234(mcs->byctrl, mc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !TARGET_API_MAC_CARBON
|
||||||
|
static pascal SInt32 macctrl_sys7_text_cdef(SInt16 variant, ControlRef control,
|
||||||
|
ControlDefProcMessage msg, SInt32 param)
|
||||||
|
{
|
||||||
|
RgnHandle rgn;
|
||||||
|
|
||||||
|
switch (msg) {
|
||||||
|
case drawCntl:
|
||||||
|
if ((*control)->contrlVis)
|
||||||
|
TETextBox((*control)->contrlTitle + 1, (*control)->contrlTitle[0],
|
||||||
|
&(*control)->contrlRect, teFlushDefault);
|
||||||
|
return 0;
|
||||||
|
case calcCRgns:
|
||||||
|
if (param & (1 << 31)) {
|
||||||
|
param &= ~(1 << 31);
|
||||||
|
goto calcthumbrgn;
|
||||||
|
}
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
case calcCntlRgn:
|
||||||
|
rgn = (RgnHandle)param;
|
||||||
|
RectRgn(rgn, &(*control)->contrlRect);
|
||||||
|
return 0;
|
||||||
|
case calcThumbRgn:
|
||||||
|
calcthumbrgn:
|
||||||
|
rgn = (RgnHandle)param;
|
||||||
|
SetEmptyRgn(rgn);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void macctrl_radio(struct macctrls *mcs, WindowPtr window,
|
static void macctrl_radio(struct macctrls *mcs, WindowPtr window,
|
||||||
struct mac_layoutstate *curstate,
|
struct mac_layoutstate *curstate,
|
||||||
union control *ctrl)
|
union control *ctrl)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: macresid.h,v 1.10 2003/03/06 23:46:06 ben Exp $ */
|
/* $Id: macresid.h,v 1.11 2003/03/18 00:35:40 ben Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* macresid.h -- Mac resource IDs
|
* macresid.h -- Mac resource IDs
|
||||||
@ -58,3 +58,7 @@
|
|||||||
|
|
||||||
/* Controls */
|
/* Controls */
|
||||||
#define cVScroll 128
|
#define cVScroll 128
|
||||||
|
|
||||||
|
/* xDEFs */
|
||||||
|
#define CDEF_Text 128
|
||||||
|
#define SYS7_TEXT_PROC (CDEF_Text << 4)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user