build: add the SIBO SDK
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
DIYHWIF.C
|
||||
|
||||
Started by DavidW, 6/11/92
|
||||
|
||||
Routines to access some dialog item classes
|
||||
|
||||
*/
|
||||
|
||||
#include <dtedit.g>
|
||||
#include <chlist.g>
|
||||
#include <hwif.h>
|
||||
#include <hwif.g>
|
||||
|
||||
GLREF_D PR_DLGBOX *DatDialogPtr;
|
||||
|
||||
GLDEF_C VOID hDTClose(VOID *dte)
|
||||
{
|
||||
p_send2(dte,O_DESTROY);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hDTSet(VOID *dte,H_SE_DTEDIT *sdte)
|
||||
{
|
||||
p_send3(dte,O_WN_SET,sdte);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hDTSense(VOID *dte,H_SE_DTEDIT *sdte)
|
||||
{
|
||||
p_send3(dte,O_WN_SENSE,sdte);
|
||||
}
|
||||
|
||||
GLDEF_C INT hDTSelfCheck(VOID *dte)
|
||||
{
|
||||
INT ret;
|
||||
|
||||
ret=p_send2(dte,O_LG_SELF_CHECK);
|
||||
return(ret!=LG_CHECK_OK && ret!=LG_CHECK_OK_CHANGED);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hDTEmphasise(VOID *dte,INT flag)
|
||||
{
|
||||
p_send3(dte,O_WN_EMPHASISE,flag);
|
||||
}
|
||||
|
||||
GLDEF_C INT hDTHandleKey(VOID *dte,INT keycode,INT modifier)
|
||||
{
|
||||
return(p_send4(dte,O_WN_KEY,keycode,modifier));
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hDTOpen(H_DTEDIT *dte)
|
||||
{
|
||||
VOID *self;
|
||||
PR_WIN win;
|
||||
|
||||
self=uCheckHandle(p_new(CAT_HWIF_HWIM,C_DTEDIT));
|
||||
if (self)
|
||||
{
|
||||
win.win.id=dte->win;
|
||||
p_send4(self,O_WN_INIT,dte,&win);
|
||||
p_send5(self,O_LG_SET_ID_POS,dte->win,&dte->pos,dte->width);
|
||||
hDTEmphasise(self,dte->emph);
|
||||
}
|
||||
return(self);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hSetVarrayInChlist(INT index,INT nsel,VOID *varray)
|
||||
{
|
||||
SE_CHLIST set;
|
||||
|
||||
set.nsel=nsel;
|
||||
set.data=varray;
|
||||
set.set_flags=SE_CHLIST_DATA|SE_CHLIST_NSEL|SE_CHLIST_RETAIN;
|
||||
p_send4(DatDialogPtr,O_WN_SET,index,&set);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uSetDialogUline(INT pos,INT on)
|
||||
{
|
||||
DLGBOX_ITEM *pitm;
|
||||
|
||||
pitm=(DatDialogPtr->dlgbox.count>7)?
|
||||
DatDialogPtr->dlgbox.u.pitm+pos:
|
||||
&DatDialogPtr->dlgbox.u.item[pos];
|
||||
if (on)
|
||||
pitm->flags|=DLGBOX_ITEM_UNDERLINED;
|
||||
else
|
||||
pitm->flags&=(~DLGBOX_ITEM_UNDERLINED);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,276 @@
|
||||
/*
|
||||
EHWIF.C
|
||||
|
||||
Started by DavidW, 5/12/91
|
||||
|
||||
Edit box extension to h layer of hwif
|
||||
|
||||
*/
|
||||
|
||||
#include <edit.g>
|
||||
#include <edwin.g>
|
||||
#include <scrimg.g>
|
||||
#include <hwif.g>
|
||||
#include <hwif.h>
|
||||
|
||||
GLDEF_D UWORD _ebControlFormat=FALSE;
|
||||
|
||||
#define EebH ((PR_EDWIN *)ebH)
|
||||
|
||||
|
||||
#pragma save,ENTER_CALL
|
||||
|
||||
LOCAL_C INT DoEntersend(VOID *ebH,INT method,VOID *p1,VOID *p2,VOID *p3)
|
||||
{
|
||||
p_send5(ebH,method,p1,p2,p3);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#pragma restore
|
||||
|
||||
LOCAL_C INT Entersend(VOID *ebH,INT method,VOID *p1,VOID *p2,VOID *p3)
|
||||
{
|
||||
INT ret;
|
||||
|
||||
ret=p_enter6(DoEntersend,ebH,method,p1,p2,p3);
|
||||
if (ret<-1)
|
||||
uErrorValue(ret);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
#define V (VOID*)
|
||||
|
||||
GLDEF_C INT hEBCompleteFormat(VOID *ebH)
|
||||
{
|
||||
PR_SCRIMG *scrimg;
|
||||
INT ret;
|
||||
|
||||
scrimg=EebH->edwin.scrimg;
|
||||
if (!scrimg->scrimg.formatting)
|
||||
return(0);
|
||||
ret=Entersend(scrimg,O_SI_SET,0,0,0);
|
||||
p_send2(scrimg->scrimg.wrap,O_AO_CANCEL);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBHandleKey(VOID *ebH,INT keycode,INT modifier)
|
||||
{
|
||||
INT ret;
|
||||
|
||||
if (keycode==W_KEY_RETURN)
|
||||
modifier|=W_SHIFT_MODIFIER;
|
||||
ret=Entersend(ebH,O_WN_KEY,V keycode,V modifier,NULL);
|
||||
if (!ret && !_ebControlFormat)
|
||||
ret=hEBCompleteFormat(ebH);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hEBClose(VOID *ebH)
|
||||
{
|
||||
p_send2(ebH,O_DESTROY);
|
||||
}
|
||||
|
||||
GLDEF_C TEXT *hEBSenseText(VOID *ebH)
|
||||
{
|
||||
SE_EDWIN sense;
|
||||
|
||||
p_send3(ebH,O_WN_SENSE,&sense);
|
||||
return(sense.buf);
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBSetText(VOID *ebH,TEXT *pb,INT blen)
|
||||
{
|
||||
SE_EDWIN set;
|
||||
|
||||
set.buf=pb;
|
||||
set.len=blen;
|
||||
return(Entersend(ebH,O_WN_SET,&set,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C VOID hEBEmphasise(VOID *ebH,INT flag)
|
||||
{
|
||||
p_send3(ebH,O_WN_EMPHASISE,flag);
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBSetSelect(VOID *ebH,INT aoff,INT coff)
|
||||
{
|
||||
SET_EDWIN set;
|
||||
|
||||
set.flags=SET_EDWIN_CURSOR|SET_EDWIN_ANCHOR;
|
||||
set.anchor=aoff;
|
||||
set.cursor=coff;
|
||||
return(Entersend(ebH,O_EW_SET,&set,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBSenseSelect(VOID *ebH,UWORD *top)
|
||||
{
|
||||
return(p_send3(EebH->edwin.scrimg,O_SI_GET_SELECT,top));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBSetClipText(VOID *ebH,TEXT *pb,INT blen)
|
||||
{
|
||||
return(Entersend(EebH->edwin.clip,O_EP_SET_TEXT,pb,V blen,0));
|
||||
}
|
||||
|
||||
GLDEF_C TEXT *hEBSenseClipText(VOID *ebH)
|
||||
{
|
||||
TEXT *pb;
|
||||
|
||||
p_send3(EebH->edwin.clip,O_EF_SENSE_BUF,&pb);
|
||||
return(pb);
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBEvaluate(VOID *ebH)
|
||||
{
|
||||
return(Entersend(ebH,O_EW_EVALUATE,NULL,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBChangeWidth(VOID *ebH,INT width)
|
||||
{
|
||||
P_EXTENT ext;
|
||||
|
||||
p_send3(ebH,O_EW_SENSE_SIZE,&ext);
|
||||
EebH->edwin.margins.right+=width-ext.width;
|
||||
ext.width=width;
|
||||
return(Entersend(ebH,O_EW_SET_SIZE,&ext,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBSetMargin(VOID *ebH,UINT right)
|
||||
{
|
||||
INT ret;
|
||||
UINT oright;
|
||||
|
||||
oright=EebH->edwin.margins.right;
|
||||
EebH->edwin.margins.right=right;
|
||||
ret=Entersend(EebH->edwin.scrimg,
|
||||
O_SI_STYLE_CHANGED,SCRIMG_STCHNG_DOC,NULL,NULL);
|
||||
if (ret<0)
|
||||
EebH->edwin.margins.right=oright;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C UINT hEBSenseMargin(VOID *ebH)
|
||||
{
|
||||
return(EebH->edwin.margins.right);
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBInsert(VOID *ebH,TEXT *pb,INT blen)
|
||||
{
|
||||
return(Entersend(ebH,O_EW_INSERT,pb,V blen,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBReplace(VOID *ebH,TEXT *replace,INT backwards)
|
||||
{
|
||||
return(Entersend(ebH,O_EW_REPLACE,replace,V backwards,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBCopy(VOID *ebH)
|
||||
{
|
||||
if (!(EebH->edwin.select))
|
||||
return(1);
|
||||
return(Entersend(ebH,O_EW_REPLACE_CLIP,NULL,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBPaste(VOID *ebH)
|
||||
{
|
||||
if (!(p_send2(EebH->edwin.clip,O_EP_SENSE_LEN)))
|
||||
return(1);
|
||||
return(Entersend(ebH,O_EW_PASTE_CLIP,NULL,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBFind(VOID *ebH,TEXT *str,INT flags)
|
||||
{
|
||||
return(p_send4(ebH,O_EW_FIND,str,flags));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBSenseChanged(VOID *ebH)
|
||||
{
|
||||
return(EebH->edwin.change);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hEBClearChanged(VOID *ebH)
|
||||
{
|
||||
EebH->edwin.change=FALSE;
|
||||
}
|
||||
|
||||
GLDEF_C VOID hEBSetCWidth(VOID *ebH,INT cwidth)
|
||||
{
|
||||
SCRIMG_WIN win;
|
||||
|
||||
p_send3(EebH->edwin.scrimg,O_SI_SENSE,&win);
|
||||
win.cwidth=cwidth;
|
||||
Entersend(EebH->edwin.scrimg,O_SI_SET,&win,NULL,NULL);
|
||||
}
|
||||
|
||||
|
||||
GLDEF_C INT hEBShowSymbols(VOID *ebH,INT flag)
|
||||
{
|
||||
SCRLAY_STYLE style;
|
||||
|
||||
p_send3(EebH->edwin.scrlay,O_SL_SENSE,&style);
|
||||
style.options=FALSE;
|
||||
if (flag)
|
||||
style.options=SCRLAY_SHOW_SPACES|SCRLAY_SHOW_LFS;
|
||||
p_send3(EebH->edwin.scrlay,O_SL_SET,&style);
|
||||
return(Entersend(EebH->edwin.scrimg,O_SI_STYLE_CHANGED,0,0,0));
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hEBOpen(INT flags,H_EDIT_BOX *heb)
|
||||
{
|
||||
VOID *ebH;
|
||||
IN_EDWIN in;
|
||||
IN_EDWIN_X inx;
|
||||
PR_WIN win;
|
||||
|
||||
ebH=uCheckHandle(p_new(CAT_HWIF_HWIM,C_EDWIN));
|
||||
if (!ebH)
|
||||
return(NULL);
|
||||
win.win.id=heb->win;
|
||||
in.vulen=heb->vulen;
|
||||
in.flags=flags|IN_EDWIN_VULEN_PIXELS
|
||||
|IN_EDWIN_NO_AUTOSELECT|IN_EDWIN_POSITION_SUPPLIED;
|
||||
in.maxlen=heb->maxchars;
|
||||
in.contents[0]=0;
|
||||
inx.vislines=heb->vislines;
|
||||
inx.pos=heb->pos;
|
||||
inx.font=heb->font;
|
||||
inx.style=heb->style;
|
||||
inx.leading.total=heb->lead_tot;
|
||||
inx.leading.top=heb->lead_top;
|
||||
inx.clip=NULL;
|
||||
if (Entersend(ebH,O_WN_INIT,&in,&win,&inx))
|
||||
{
|
||||
hEBClose(ebH);
|
||||
return(NULL);
|
||||
}
|
||||
return(ebH);
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hEBSenseDoc(VOID *ebH)
|
||||
{
|
||||
return(EebH->edwin.doc);
|
||||
}
|
||||
|
||||
GLDEF_C INT hEDCapacity(VOID *doc,UINT maxlen)
|
||||
{
|
||||
return(Entersend(doc,O_EP_CAPACITY,V (maxlen+1),NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEDInsert(VOID *doc,UINT pos,VOID *buf,UINT len)
|
||||
{
|
||||
return(Entersend(doc,O_EP_INSERT,V pos,buf,V len));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBDocChanged(VOID *ebH)
|
||||
{
|
||||
UINT doclen;
|
||||
|
||||
doclen=p_send2(EebH->edwin.doc,O_EP_SENSE_LEN);
|
||||
EebH->edwin.clen=doclen+1;
|
||||
return(Entersend(EebH->edwin.scrimg,O_SI_DOC_CHANGED,V doclen,NULL,NULL));
|
||||
}
|
||||
|
||||
GLDEF_C INT hEBPosToXL(void *ebH,H_SCRLAY_PLX *plx)
|
||||
{
|
||||
return(p_send3(EebH->edwin.scrlay,O_SL_POS_TO_XL,plx));
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
/*
|
||||
HHWIF.C
|
||||
|
||||
Started by Huw 11/3/91
|
||||
|
||||
Routines for supplying menus and dialogs for non OOP users
|
||||
such as OPL/W
|
||||
*/
|
||||
|
||||
#include <hwif.g>
|
||||
#include <hwif.h>
|
||||
#include <gate.g>
|
||||
#include <p_gen.h>
|
||||
#include <epoc.h>
|
||||
|
||||
GLREF_D PR_GATE *DatGate;
|
||||
GLDEF_D UWORD _UseFullScreen;
|
||||
GLDEF_D UWORD *_GreyLines;
|
||||
GLDEF_D UWORD *_MenuPositions;
|
||||
GLDEF_D UWORD _SmallFontDialog;
|
||||
|
||||
GLDEF_C INT hIFInit(VOID *console)
|
||||
/*
|
||||
Initialise HWIM interface
|
||||
*/
|
||||
{
|
||||
if (!(DatGate=p_new(CAT_HWIF_HWIM,C_GATE)))
|
||||
return(E_GEN_NOMEMORY);
|
||||
if (_UseFullScreen)
|
||||
p_send2(DatGate,O_GT_XW_ENABLE);
|
||||
return(p_send3(DatGate,O_GT_INIT,console));
|
||||
}
|
||||
|
||||
GLDEF_C INT hMenuOpen()
|
||||
/*
|
||||
Create a new menu bar
|
||||
*/
|
||||
{
|
||||
return(p_send2(DatGate,O_GT_MENU_OPEN));
|
||||
}
|
||||
|
||||
GLDEF_C INT hMenuAdd(TEXT *title,VOID *menu)
|
||||
/*
|
||||
Add another menu to the menu bar
|
||||
*/
|
||||
{
|
||||
return(p_send4(DatGate,O_GT_MENU_ADD,title,menu));
|
||||
}
|
||||
|
||||
GLDEF_C INT hMenuRun()
|
||||
/*
|
||||
Display and use the menu bar
|
||||
|
||||
Note that due to the addition of 'gate.g.dx' in os 356 and above, the
|
||||
property 'gate.g.ulines' is in different places on different models.
|
||||
|
||||
Older models will be expecting the greyline data to be where later
|
||||
models look for 'gate.g.dx', so a test is required to determine where
|
||||
to copy the greyline data to.
|
||||
*/
|
||||
{
|
||||
if (_GreyLines)
|
||||
{
|
||||
p_bcpy((BYTE *)&DatGate->gate.g.ulines[0]-((p_version()>0x355f)?0:
|
||||
sizeof(DLG_X_CONSTANTS)),_GreyLines,16*sizeof(UWORD));
|
||||
}
|
||||
return(p_send3(DatGate,O_GT_MENU_RUN,_MenuPositions));
|
||||
}
|
||||
|
||||
GLDEF_C VOID hMenuClose()
|
||||
/*
|
||||
Close an incomplete menu bar down
|
||||
*/
|
||||
{
|
||||
p_send2(DatGate,O_GT_MENU_CLOSE);
|
||||
}
|
||||
|
||||
GLDEF_C INT hDlgOpen(TEXT *title)
|
||||
/*
|
||||
Create a new dialog
|
||||
*/
|
||||
{
|
||||
INT method;
|
||||
|
||||
method=O_GT_DIAL_OPEN;
|
||||
if (_SmallFontDialog)
|
||||
{
|
||||
method=O_GT_DIAL_SOPEN;
|
||||
_SmallFontDialog=FALSE;
|
||||
}
|
||||
return(p_send3(DatGate,method,title));
|
||||
}
|
||||
|
||||
GLDEF_C INT hDlgAdd(UWORD type,TEXT *prompt,VOID *data)
|
||||
/*
|
||||
Add an item to the dialog
|
||||
*/
|
||||
{
|
||||
return(p_send5(DatGate,O_GT_DIAL_ADD,type,prompt,data));
|
||||
}
|
||||
|
||||
GLDEF_C INT hDlgRun()
|
||||
/*
|
||||
Display and use the dialog
|
||||
*/
|
||||
{
|
||||
return(p_send2(DatGate,O_GT_DIAL_RUN));
|
||||
}
|
||||
|
||||
GLDEF_C VOID hDlgClose()
|
||||
/*
|
||||
Close an incomplete dialog down
|
||||
*/
|
||||
{
|
||||
p_send2(DatGate,O_GT_DIAL_CLOSE);
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hCardOpen()
|
||||
/*
|
||||
Open a menu card for building
|
||||
*/
|
||||
{
|
||||
return((VOID *)p_send2(DatGate,O_GT_CARD_OPEN));
|
||||
}
|
||||
|
||||
GLDEF_C INT hCardAdd(VOID *hand,INT index,INT accel,TEXT *str)
|
||||
/*
|
||||
Add an item to a menu card
|
||||
*/
|
||||
{
|
||||
H_CARD card;
|
||||
|
||||
card.accel=accel;
|
||||
card.str=str;
|
||||
return(p_send5(DatGate,O_GT_CARD_ADD,hand,index,&card));
|
||||
}
|
||||
|
||||
GLDEF_C VOID hCardClose(VOID *hand)
|
||||
/*
|
||||
Discard a menu card
|
||||
*/
|
||||
{
|
||||
p_send3(DatGate,O_GT_CARD_CLOSE,hand);
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hChoiceOpen()
|
||||
/*
|
||||
Open a choice list for building
|
||||
*/
|
||||
{
|
||||
return((VOID *)p_send2(DatGate,O_GT_CHOICE_OPEN));
|
||||
}
|
||||
|
||||
GLDEF_C INT hChoiceAdd(VOID *hand,INT index,TEXT *str)
|
||||
/*
|
||||
Add an item to a choice list
|
||||
*/
|
||||
{
|
||||
H_CHOICE choice;
|
||||
|
||||
choice.str=str;
|
||||
return(p_send5(DatGate,O_GT_CHOICE_ADD,hand,index,&choice));
|
||||
}
|
||||
|
||||
GLDEF_C VOID hChoiceClose(VOID *hand)
|
||||
/*
|
||||
Discard a choice list
|
||||
*/
|
||||
{
|
||||
p_send3(DatGate,O_GT_CHOICE_CLOSE,hand);
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hButtonOpen()
|
||||
/*
|
||||
Open a action list for building
|
||||
*/
|
||||
{
|
||||
return((VOID *)p_send2(DatGate,O_GT_BUTTON_OPEN));
|
||||
}
|
||||
|
||||
GLDEF_C INT hButtonAdd(VOID *hand,INT index,INT key,TEXT *str)
|
||||
/*
|
||||
Add a button to an action list
|
||||
*/
|
||||
{
|
||||
H_BUTTON but;
|
||||
|
||||
but.keycode=key;
|
||||
but.str=str;
|
||||
return(p_send5(DatGate,O_GT_BUTTON_ADD,hand,index,&but));
|
||||
}
|
||||
|
||||
GLDEF_C VOID hButtonClose(VOID *hand)
|
||||
/*
|
||||
Discard an action list
|
||||
*/
|
||||
{
|
||||
p_send3(DatGate,O_GT_BUTTON_CLOSE,hand);
|
||||
}
|
||||
|
||||
GLDEF_C INT hDlgPosition(INT x,INT y)
|
||||
{
|
||||
return(p_send4(DatGate,O_GT_DIAL_POSITION,x,y));
|
||||
}
|
||||
|
||||
GLDEF_C UINT hLastSystemKey(UINT *pmodifiers)
|
||||
{
|
||||
return(p_send3(DatGate,O_GT_LAST_KEY,pmodifiers));
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
IMAGE hwif
|
||||
|
||||
EXTERNAL olib
|
||||
EXTERNAL hwim
|
||||
|
||||
INCLUDE lprinter.g
|
||||
INCLUDE help.g
|
||||
|
||||
CLASS hprinter lprinter
|
||||
{
|
||||
REPLACE lpr_read
|
||||
REPLACE lpr_sense_text
|
||||
PROPERTY
|
||||
{
|
||||
INT (*sense)(WDR_PRINT *);
|
||||
}
|
||||
}
|
||||
|
||||
CLASS hhelpdlg helpdlg
|
||||
{
|
||||
REPLACE destroy
|
||||
}
|
||||
|
||||
@@ -0,0 +1,339 @@
|
||||
/* HEADER - HWIF.H
|
||||
Copyright (C) Psion PLC 1992
|
||||
VER DATE BY DESCRIPTION
|
||||
===== ======== === ===========
|
||||
1.20F 08/11/92 DWW New version for Developers Conference
|
||||
2.00F 01/12/93 DWW Version 2 C SDK
|
||||
*/
|
||||
#ifndef HWIF_H
|
||||
#define HWIF_H
|
||||
|
||||
#include <p_graf.h>
|
||||
#include <wlib.h>
|
||||
|
||||
#ifdef STDEPOC_H
|
||||
# include <p_cons.h>
|
||||
#else
|
||||
# ifndef EPOCCONS_H
|
||||
# include <epoccons.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *title;
|
||||
unsigned short int nlines;
|
||||
} H_MENU_DATA;
|
||||
#define H_DIALOG_TEXT 0
|
||||
#define H_DIALOG_CHOICE 1
|
||||
#define H_DIALOG_NUMBER 2
|
||||
#define H_DIALOG_FLOAT 3
|
||||
#define H_DIALOG_TIME 4
|
||||
#define H_DIALOG_DATE 5
|
||||
#define H_DIALOG_EDIT 6
|
||||
#define H_DIALOG_SEDIT 7
|
||||
#define H_DIALOG_XINPUT 8
|
||||
#define H_DIALOG_FSEL 9
|
||||
#define H_DIALOG_BUTTONS 10
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
unsigned short int type;
|
||||
} H_DI_TEXT;
|
||||
#define H_DTEXT_ALIGN_LEFT 0
|
||||
#define H_DTEXT_ALIGN_RIGHT 1
|
||||
#define H_DTEXT_ALIGN_CENTRE 2
|
||||
#define H_DTEXT_BOLD 0x100
|
||||
#define H_DTEXT_UNDERLINE 0x200
|
||||
#define H_DTEXT_SELECTABLE 0x400
|
||||
typedef struct
|
||||
{
|
||||
union
|
||||
{
|
||||
unsigned short int *sel;
|
||||
unsigned short int count;
|
||||
} u;
|
||||
void *menu;
|
||||
} H_DI_CHOICE;
|
||||
typedef struct
|
||||
{
|
||||
long int *value;
|
||||
long int low;
|
||||
long int high;
|
||||
} H_DI_NUMBER;
|
||||
typedef struct
|
||||
{
|
||||
double *value;
|
||||
double low;
|
||||
double high;
|
||||
} H_DI_FLOAT;
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int *value;
|
||||
unsigned long int low;
|
||||
unsigned long int high;
|
||||
unsigned short int type;
|
||||
} H_DI_TIME;
|
||||
#define H_DTIME_SHOW_SECONDS 1
|
||||
#define H_DTIME_DURATION 2
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int *value;
|
||||
unsigned long int low;
|
||||
unsigned long int high;
|
||||
} H_DI_DATE;
|
||||
#define H_LAST_DAY 93501l
|
||||
#define H_FIRST_SYS_DAY 25567l
|
||||
#define H_LAST_SYS_DAY 75276l
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
unsigned short int len;
|
||||
} H_DI_EDIT;
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
unsigned short int len;
|
||||
unsigned short int width;
|
||||
} H_DI_SEDIT;
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
} H_DI_XINPUT;
|
||||
typedef struct
|
||||
{
|
||||
char *fname;
|
||||
unsigned short int flags;
|
||||
} H_DI_FSEL;
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
short int accel;
|
||||
} H_CARD;
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
} H_CHOICE;
|
||||
typedef struct
|
||||
{
|
||||
char *str;
|
||||
unsigned short int keycode;
|
||||
} H_BUTTON;
|
||||
#define W_EVENT_KEY (CONS_SPECIAL_EVENT*256)
|
||||
#define H_FILE_ALLOW_DIRS 0x02
|
||||
#define H_FILE_JUST_DIRS 0x04
|
||||
#define H_FILE_FORCE_NXIST 0x08
|
||||
#define H_FILE_NO_AUTOQUERY 0x10
|
||||
#define H_FILE_ACCEPT_NULL 0x20
|
||||
#define H_FILE_SET_DEFEXT 0x40
|
||||
#define H_FILE_CAN_WILDCARD 0x80
|
||||
#define H_FILE_RESTRICT_LIST H_FILE_FORCE_NXIST
|
||||
#define H_FILE_PICK_SELECTOR 0
|
||||
#define H_FILE_NEW_EDITOR 0x01
|
||||
#define H_PRINT_PAGE 0x01
|
||||
#define H_PRINT_LINE 0x02
|
||||
#define H_PRINT_RIGHT 0x04
|
||||
#define H_PRINT_TEXT 0x10
|
||||
#define H_PRINT_KEEP 0x8000
|
||||
#define H_PRINT_STY_UNDERLINE 0x01
|
||||
#define H_PRINT_STY_BOLD 0x02
|
||||
#define H_PRINT_STY_ITALIC 0x04
|
||||
#define H_PRINT_STY_SUPER 0x08
|
||||
#define H_PRINT_STY_SUB 0x10
|
||||
typedef struct
|
||||
{
|
||||
short int flags;
|
||||
short int typf;
|
||||
short int fheight;
|
||||
short int style;
|
||||
short int down;
|
||||
short int indent;
|
||||
short int height;
|
||||
short int right;
|
||||
char *buf;
|
||||
unsigned short int blen;
|
||||
} H_PRINT;
|
||||
#define H_TIME_SET_SDATE 0
|
||||
#define H_TIME_SET_DATE 1
|
||||
#define H_TIME_SET_DAYSEC 2
|
||||
#define H_TIME_SET_NOW 3
|
||||
#define H_TIME_SENSE_BOTH 3
|
||||
#define H_TIME_SENSE_DATE 4
|
||||
#define H_TIME_SENSE_TIME 5
|
||||
#define H_TIME_FORMAT_NO_DAY 0x0004
|
||||
#define H_TIME_FORMAT_NO_MONTH 0x0008
|
||||
#define H_TIME_FORMAT_NO_YEAR 0x0010
|
||||
#define H_TIME_FORMAT_MONTH_NAME 0x0020
|
||||
#define H_TIME_FORMAT_SUFFIX 0x0040
|
||||
#define H_TIME_FORMAT_DAY_NAME 0x0080
|
||||
#define H_TIME_FORMAT_NO_CENTURY 0x0100
|
||||
#define H_TIME_FORMAT_NO_SECONDS 0x0200
|
||||
#define H_ALARM_TIMED 2
|
||||
#define H_ALARM_UNTIMED 1
|
||||
typedef struct
|
||||
{
|
||||
unsigned short int maxchars;
|
||||
unsigned short int vulen;
|
||||
unsigned short int vislines;
|
||||
P_POINT pos;
|
||||
unsigned short int win;
|
||||
unsigned short int font;
|
||||
unsigned short int style;
|
||||
unsigned short int lead_tot;
|
||||
unsigned short int lead_top;
|
||||
} H_EDIT_BOX;
|
||||
typedef struct
|
||||
{
|
||||
unsigned short int pos;
|
||||
short int line;
|
||||
short int x;
|
||||
} H_SCRLAY_PLX;
|
||||
#define H_EDIT_BOX_CLIPBOARD 0x0040
|
||||
#define H_EDIT_BOX_LEFT_CURSOR 0x0200
|
||||
#define H_EDIT_BOX_FONT 0x1000
|
||||
#define H_EDIT_BOX_LEADING 0x2000
|
||||
#define H_EDIT_BOX_VISLINES 0x4000
|
||||
#define HEB_FIND_BACKWARDS 0x01
|
||||
#define HEB_FIND_CASESENS 0x02
|
||||
#define H_DTEDIT_DDMMYYYY 0x0000
|
||||
#define H_DTEDIT_HHMMSS 0x1100
|
||||
#define H_DTEDIT_HHMM 0x0100
|
||||
#define H_DTEDIT_HHMMSS_D 0x1300
|
||||
#define H_DTEDIT_HHMM_D 0x0300
|
||||
#define H_DTEDIT_SET_VALUE 0x0001
|
||||
#define H_DTEDIT_SET_LOW 0x0002
|
||||
#define H_DTEDIT_SET_HIGH 0x0004
|
||||
typedef struct
|
||||
{
|
||||
unsigned short int flags;
|
||||
long int value;
|
||||
long int low;
|
||||
long int high;
|
||||
P_POINT pos;
|
||||
unsigned short int win;
|
||||
unsigned short int width;
|
||||
unsigned short int emph;
|
||||
} H_DTEDIT;
|
||||
typedef struct
|
||||
{
|
||||
unsigned short int flags;
|
||||
long int value;
|
||||
long int low;
|
||||
long int high;
|
||||
} H_SE_DTEDIT;
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
extern int hIFInit(void *);
|
||||
extern int hMenuOpen(void);
|
||||
extern int hMenuAdd(char *,void *);
|
||||
extern int hMenuRun(void);
|
||||
extern void hMenuClose(void);
|
||||
extern int hDlgOpen(char *);
|
||||
extern int hDlgAdd(unsigned short int,char *,void *);
|
||||
extern int hDlgRun(void);
|
||||
extern void hDlgClose(void);
|
||||
extern int hDlgPosition(int x,int y);
|
||||
extern void *hCardOpen(void);
|
||||
extern int hCardAdd(void *,int,int,char *);
|
||||
extern void hCardClose(void *);
|
||||
extern void *hChoiceOpen(void);
|
||||
extern int hChoiceAdd(void *,int,char *);
|
||||
extern void hChoiceClose(void *);
|
||||
extern void *hButtonOpen(void);
|
||||
extern int hButtonAdd(void *,int,int,char *);
|
||||
extern void hButtonClose(void *);
|
||||
extern void hEnsurePath(char *fname);
|
||||
extern void hSetUpStatusNames(char *pb);
|
||||
extern int hCrackCommandLine(void);
|
||||
extern int hIsDbfCompressible(void *dH);
|
||||
extern int hDTMFString(char *zts);
|
||||
extern unsigned int hLastSystemKey(unsigned int *pmodifiers);
|
||||
extern void uCommonInit(void);
|
||||
extern void uEnableGrey(void);
|
||||
extern void uGetKey(WMSG_KEY *pkey);
|
||||
extern void uGetKeyA(short int *pstat,WMSG_KEY *pkey);
|
||||
extern void uCancelGetKeyA(void);
|
||||
extern int uKeyPressOutstanding(void);
|
||||
extern void uEscape(unsigned short int flag);
|
||||
extern unsigned int uFindMainWid(void);
|
||||
extern void uForceToFront(void);
|
||||
extern void uErrorString(char *message);
|
||||
extern int uErrorValue(int ret);
|
||||
extern void *uCheckHandle(void *handle);
|
||||
extern void uZTStoBCS(char *bcs,char *zts);
|
||||
extern int uOpenDialog(char *title);
|
||||
extern int uAddDialogItem(int type,char *prompt,void *data);
|
||||
extern int uRunDialog(void);
|
||||
extern int cdecl uAddButtonList(char *but,int code,...);
|
||||
extern int uBeginDCL(H_DI_CHOICE *pch);
|
||||
extern int uGrowDCL(H_DI_CHOICE *pch,char *choice);
|
||||
extern int uAddDCL(char *prompt,unsigned short int *nsel,H_DI_CHOICE *pch);
|
||||
extern int cdecl uAddChoiceList(char *prompt,unsigned short int *nsel,char *choice,...);
|
||||
extern int cdecl uDialogMenu(char *title,char *pb,...);
|
||||
extern void cdecl uDisplayText(char *pb,...);
|
||||
extern int uPresentMenus(void);
|
||||
extern void uAddGreyUline(unsigned char,unsigned short int *plines);
|
||||
extern void uSetDialogUline(int pos,int on);
|
||||
extern int uLocateCommand(int accel);
|
||||
extern void hPrintSetupDialog(void);
|
||||
extern void hPrint(int printline(H_PRINT *));
|
||||
extern void hPrinterSetupDialog(void);
|
||||
extern void hPrintSetSI(unsigned int subsqind);
|
||||
extern int hPrintSensePageWidth(void);
|
||||
extern int hPrintSenseBufWidth(char *buf,int blen);
|
||||
extern void hHelpSubSystem(int startid,int indexid);
|
||||
extern void *hTTOpen(void);
|
||||
extern int hTTSetTime(void *handle,int type,void *data);
|
||||
extern int hTTSenseString(void *handle,int type,char *buf);
|
||||
extern void hTTSetFormat(void *handle,int values);
|
||||
extern void hTTSetAbbreviations(void *handle,int dayabb,int monabb);
|
||||
extern void hTTClose(void *handle);
|
||||
extern int hEBHandleKey(void *ebH,int keycode,int modifier);
|
||||
extern int hEBCompleteFormat(void *ebH);
|
||||
extern char *hEBSenseText(void *ebH);
|
||||
extern int hEBSetText(void *ebH,char *pb,int blen);
|
||||
extern void hEBEmphasise(void *ebH,int flag);
|
||||
extern int hEBSetSelect(void *ebH,int aoff,int coff);
|
||||
extern int hEBSenseSelect(void *ebH,unsigned short int *top);
|
||||
extern int hEBSetClipText(void *ebH,char *pb,int blen);
|
||||
extern char *hEBSenseClipText(void *ebH);
|
||||
extern int hEBEvaluate(void *ebH);
|
||||
extern int hEBSetMargin(void *ebH,unsigned int right);
|
||||
extern unsigned int hEBSenseMargin(void *ebH);
|
||||
extern int hEBChangeWidth(void *ebH,int width);
|
||||
extern void hEBSetCWidth(void *ebH,int cwidth);
|
||||
extern int hEBInsert(void *ebH,char *pb,int blen);
|
||||
extern int hEBReplace(void *ebH,char *replace,int backwards);
|
||||
extern int hEBCopy(void *ebH);
|
||||
extern int hEBPaste(void *ebH);
|
||||
extern int hEBFind(void *ebH,char *str,int flags);
|
||||
extern int hEBSenseChanged(void *ebH);
|
||||
extern void hEBClearChanged(void *ebH);
|
||||
extern int hEBShowSymbols(void *ebH,int flag);
|
||||
extern void *hEBOpen(int flags,H_EDIT_BOX *heb);
|
||||
extern void hEBClose(void *ebH);
|
||||
extern void *hEBSenseDoc(void *ebH);
|
||||
extern int hEDCapacity(void *doc,unsigned int maxlen);
|
||||
extern int hEDInsert(void *doc,unsigned int pos,void *buf,unsigned int len);
|
||||
extern int hEBDocChanged(void *ebH);
|
||||
extern int hEBPosToXL(void *ebH,H_SCRLAY_PLX *plx);
|
||||
extern void hDeclareAppRcb(void *rcb);
|
||||
extern void *hInitAppRcb(void);
|
||||
extern int hSetSystemResLang(int lang);
|
||||
extern void hRequestReplacePack(void *rcb,char *fname);
|
||||
extern void *hDTOpen(H_DTEDIT *dte);
|
||||
extern void hDTClose(void *dte);
|
||||
extern void hDTSet(void *dte,H_SE_DTEDIT *sdte);
|
||||
extern void hDTSense(void *dte,H_SE_DTEDIT *sdte);
|
||||
extern int hDTSelfCheck(void *dte);
|
||||
extern int hDTHandleKey(void *dte,int keycode,int modifier);
|
||||
extern void hDTEmphasise(void *dte,int flag);
|
||||
extern void hSetVarrayInChlist(int index,int nsel,void *varray);
|
||||
extern void hOODialog(int catHandle,int classno,int resid,void *rbuf);
|
||||
extern int hLoadOwnDyl(int index);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // HWIF_H
|
||||
@@ -0,0 +1,17 @@
|
||||
#system epoc img
|
||||
#model small jpi
|
||||
|
||||
#message "HWIF library project file"
|
||||
|
||||
#compile hwif.cat
|
||||
|
||||
#compile hhwif.c
|
||||
#compile xhwif.c
|
||||
#compile uhwif.c
|
||||
#compile phwif.c
|
||||
#compile thwif.c
|
||||
#compile ehwif.c
|
||||
#compile rhwif.c
|
||||
#compile diyhwif.c
|
||||
|
||||
#dolink hwif.lib
|
||||
@@ -0,0 +1,18 @@
|
||||
#system epoc img
|
||||
#model small jpi
|
||||
|
||||
#message "HWIFO library project file"
|
||||
|
||||
#compile hwif.cat
|
||||
#dolink dummy.lib
|
||||
|
||||
#compile hhwif.c
|
||||
#compile xhwif.c
|
||||
#compile uhwif.c
|
||||
#compile phwif.c
|
||||
#compile thwif.c
|
||||
#compile ehwif.c
|
||||
#compile rhwif.c
|
||||
#compile diyhwif.c
|
||||
|
||||
#dolink hwifo.lib
|
||||
@@ -0,0 +1,20 @@
|
||||
hwifsrc.prj ! releases source files
|
||||
read.me ! read me for distribution
|
||||
release.txt ! list of changes between releases
|
||||
!
|
||||
hwif.pr ! TS project file
|
||||
hwifo.pr ! Alternative project file
|
||||
make.bat ! Makes HWIF.LIB & HWIFO.LIB
|
||||
ts.red ! Redirector (for completeness)
|
||||
!
|
||||
hwif.cat ! printing subclass definition
|
||||
hhwif.c ! original h layer of hwif
|
||||
xhwif.c ! later additions to h layer of hwif
|
||||
uhwif.c ! u layer of hwif
|
||||
phwif.c ! printing routines
|
||||
thwif.c ! time manipulation routines
|
||||
ehwif.c ! edit box routines
|
||||
rhwif.c ! resource file routines
|
||||
diyhwif.c ! DIY dialog item routines
|
||||
!
|
||||
hwif.h ! header file (releasable)
|
||||
@@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
tscx /m hwif /v0
|
||||
tscx /m hwif /v0
|
||||
tscx /m hwifo /v0
|
||||
@@ -0,0 +1,216 @@
|
||||
/*
|
||||
PHWIF.C
|
||||
|
||||
Started by DavidW, 5/12/91
|
||||
|
||||
Printing extension to h layer of hwif
|
||||
|
||||
Help subsystem extension added 3/8/92
|
||||
|
||||
*/
|
||||
|
||||
#include <hwimman.g>
|
||||
#include <hactive.g>
|
||||
#include <p_gen.h>
|
||||
#include <hwif.h>
|
||||
#include <hwif.g>
|
||||
#include <gate.g>
|
||||
|
||||
GLREF_D PR_WSERV *w_ws;
|
||||
GLREF_D PR_HWIMMAN *w_am;
|
||||
GLREF_D PR_GATE *DatGate;
|
||||
GLREF_D UWORD DatLocked;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT (*f)(WDR_PRINT *);
|
||||
} GATE_PRINTER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE catHand;
|
||||
INT class;
|
||||
DL_DATA d;
|
||||
} GATE_OOD;
|
||||
|
||||
#define GATE_FORCE_WSERV_LEAVE FALSE
|
||||
|
||||
|
||||
#pragma save,ENTER_CALL
|
||||
|
||||
LOCAL_C INT EditPrintContext(VOID *junk)
|
||||
{
|
||||
p_send2(w_ws,O_WS_EDIT_PRINT_CONTEXT);
|
||||
return(0);
|
||||
}
|
||||
|
||||
LOCAL_C INT EditPrinterSetup(VOID *junk)
|
||||
{
|
||||
p_send2(w_ws,O_WS_EDIT_PDEV_SETUP);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#define _phand ((PR_HPRINTER *)(w_ws->wserv.filelist))
|
||||
|
||||
LOCAL_C INT DoPrint(VOID *par)
|
||||
{
|
||||
_phand=p_new(CAT_HWIF_HWIF,C_HPRINTER);
|
||||
if (!_phand)
|
||||
return(E_GEN_NOMEMORY);
|
||||
_phand->hprinter.sense=((GATE_PRINTER *)par)->f;
|
||||
p_send2(_phand,O_LPR_INIT);
|
||||
return(0);
|
||||
}
|
||||
|
||||
LOCAL_C INT HelpSubSystem(VOID *par)
|
||||
{
|
||||
p_send3(w_ws,O_WS_DO_HELP,(INT)par);
|
||||
p_reclass(CAT_HWIF_HWIF,C_HHELPDLG,w_ws->wserv.dial);
|
||||
p_send2(w_am,O_AM_START);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#define _dld ((GATE_OOD *)par)
|
||||
|
||||
LOCAL_C INT LaunchDialog(VOID *par)
|
||||
{
|
||||
p_send5(w_ws,O_WS_DO_DIAL,_dld->catHand,_dld->class,&_dld->d);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#pragma restore
|
||||
|
||||
LOCAL_C UINT ConsoleOff(UWORD state,UINT leavestate)
|
||||
/*
|
||||
Set the console read off or on dependent on state
|
||||
Also enable or disable leaves from the Window Server.
|
||||
Return the old value of the disable leaves status.
|
||||
*/
|
||||
{
|
||||
UINT func;
|
||||
|
||||
func=P_SCR_DISABLE_READS;
|
||||
p_iow4(DatGate->gate.concb,P_FSET,&func,&state);
|
||||
return(wDisableLeaves(leavestate));
|
||||
}
|
||||
|
||||
LOCAL_C VOID ViaGate(
|
||||
#pragma save,ENTER_CALL
|
||||
INT func(VOID *),VOID *par)
|
||||
#pragma restore
|
||||
{
|
||||
INT leavestate;
|
||||
INT ret;
|
||||
PR_WAOTSTAT *waotstat;
|
||||
|
||||
leavestate=ConsoleOff(TRUE,GATE_FORCE_WSERV_LEAVE);
|
||||
w_ws->wserv.flags&=(~PR_WSERV_FROM_HWIF);
|
||||
DatLocked++;
|
||||
ret=p_enter2(func,par);
|
||||
DatLocked--;
|
||||
w_ws->wserv.flags|=PR_WSERV_FROM_HWIF;
|
||||
ConsoleOff(FALSE,leavestate);
|
||||
if (ret)
|
||||
uErrorValue(ret);
|
||||
waotstat=DatGate->gate.waotstat;
|
||||
while (waotstat->waotstat.count)
|
||||
{
|
||||
p_iosignal();
|
||||
(waotstat->waotstat.count)--;
|
||||
}
|
||||
}
|
||||
|
||||
LOCAL_C VOID ViaClearGate(
|
||||
#pragma save,ENTER_CALL
|
||||
INT func(VOID *),VOID *par)
|
||||
#pragma restore
|
||||
/* new function for 2.04, avoid trouble when HELP pressed */
|
||||
{
|
||||
INT old;
|
||||
|
||||
old=w_ws->wserv.help_index_id;
|
||||
w_ws->wserv.help_index_id=0;
|
||||
ViaGate(func,par);
|
||||
w_ws->wserv.help_index_id=old;
|
||||
}
|
||||
|
||||
GLDEF_C VOID hPrintSetupDialog(VOID)
|
||||
{
|
||||
ViaClearGate(EditPrintContext,NULL);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hPrint(INT sense(H_PRINT *))
|
||||
{
|
||||
GATE_PRINTER g;
|
||||
|
||||
g.f=(INT (*)(WDR_PRINT *))sense;
|
||||
ViaClearGate(DoPrint,&g);
|
||||
if (_phand)
|
||||
{
|
||||
p_send2(_phand,O_DESTROY);
|
||||
_phand=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
GLDEF_C VOID hPrinterSetupDialog(VOID)
|
||||
{
|
||||
ViaClearGate(EditPrinterSetup,NULL);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hHelpSubSystem(INT startid,INT indexid)
|
||||
{
|
||||
INT old;
|
||||
|
||||
old=w_ws->wserv.help_index_id;
|
||||
w_ws->wserv.help_index_id=indexid;
|
||||
ViaGate(HelpSubSystem,(VOID *)startid);
|
||||
w_ws->wserv.help_index_id=old;
|
||||
}
|
||||
|
||||
GLDEF_C VOID hOODialog(INT catHandle,INT class,INT resid,VOID *rbuf)
|
||||
{
|
||||
GATE_OOD dld;
|
||||
|
||||
dld.catHand=catHandle;
|
||||
dld.class=class;
|
||||
dld.d.id=resid;
|
||||
dld.d.rbuf=rbuf;
|
||||
dld.d.pdlg=NULL;
|
||||
ViaClearGate(LaunchDialog,&dld);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hPrintSetSI(UINT subsqind)
|
||||
{
|
||||
_phand->lprinter.subsqind=subsqind;
|
||||
}
|
||||
|
||||
GLDEF_C INT hPrintSensePageWidth(VOID)
|
||||
{
|
||||
return(_phand->lprinter.width);
|
||||
}
|
||||
|
||||
GLDEF_C INT hPrintSenseBufWidth(TEXT *buf,INT blen)
|
||||
{
|
||||
return(p_send4(_phand,O_LPR_SENSE_BUF_WIDTH,buf,blen));
|
||||
}
|
||||
|
||||
#define S_METHOD_CALL call(reg_param =>(bx,dx,si,di),reg_saved =>(ds))
|
||||
|
||||
#pragma S_METHOD_CALL
|
||||
|
||||
METHOD INT hprinter_lpr_sense_text(PR_HPRINTER *self,WDR_PRINT *pr)
|
||||
{
|
||||
return((self->hprinter.sense)(pr));
|
||||
}
|
||||
|
||||
METHOD VOID hprinter_lpr_read(PR_HPRINTER *self,INT x,WDR_PRINT *pr)
|
||||
{ /* added for Hwif 2.02 as workaround for lprinter bug */
|
||||
self->lprinter.defer.flags&=(~WDR_PRINT_PAGE);
|
||||
p_supersend4(self,O_LPR_READ,x,pr);
|
||||
}
|
||||
|
||||
METHOD VOID hhelpdlg_destroy(PR_HHELPDLG *self)
|
||||
{
|
||||
p_supersend2(self,O_DESTROY);
|
||||
p_send2(w_am,O_AM_STOP);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
To build your own copy of HWIF.LIB
|
||||
----------------------------------
|
||||
|
||||
Make sure that the OOP component of the SDK has been installed,
|
||||
as well as the CORE and HWIFSRC components.
|
||||
|
||||
In the HWIFSRC directory, type "MAKE".
|
||||
|
||||
The HWIF.LIB created should differ in only four bytes - a date stamp in
|
||||
the library header - from that installed into \SIBOSDK\LIB from the HWIF
|
||||
component of the SDK.
|
||||
@@ -0,0 +1,48 @@
|
||||
Version 2.05 - 7th Dec 94
|
||||
-------------------------
|
||||
Made by DavidW:
|
||||
1. Re-wrote uCommonInit to support W_CTBY_S3_SCR mode (if the new
|
||||
static _S3UseFullScreen is set), to remove all hard-wired sizes
|
||||
(these are now calculated dynamically at run-time), to resize the
|
||||
default graphics window to use every pixel on the screen, and to
|
||||
simplify the overall logic of the routine.
|
||||
2. Now test in hDlgOpen for whether a new static _SmallFontDialog is
|
||||
set, and if so create the dialog using O_GT_DIAL_SOPEN instead of
|
||||
O_GT_DIAL_OPEN (and clear the flag so that it won't affect any
|
||||
subsequent dialogs).
|
||||
|
||||
Version 2.04 - 1st Aug 94
|
||||
-------------------------
|
||||
Made by DavidW:
|
||||
1. Introduced new function ViaClearGate as a layer around ViaGate
|
||||
that clears w_ws->wserv.help_index_id before entry, and restores
|
||||
the original value on completion. This is to avoid problems if
|
||||
the user presses HELP when inside (a) an OO dialog (b) a
|
||||
sub-dialog of the Print Setup or Printer Setup suites (c) the
|
||||
Printing dialog. (These problems would only show up if another
|
||||
menu item has been highlighted last, apart from the first item in
|
||||
the first menu.)
|
||||
|
||||
|
||||
Version 2.03 - 31st July 94
|
||||
---------------------------
|
||||
Made by DavidW:
|
||||
1. Now creates HWIFO.LIB as well as HWIF.LIB, to ease the task of
|
||||
HWIF programmers who want to add OO features to their apps.
|
||||
HWIF.CAT is now a separate releasable.
|
||||
|
||||
Version 2.02 - 23rd Mar 94
|
||||
--------------------------
|
||||
Made by DavidW:
|
||||
1. Added new replacement method lpr_read to hprinter class, to clear
|
||||
PRINT_PAGE bit in defer.flags, to workaround bug in lprinter class
|
||||
in which a line printed with PRINT_PAGE which needed to be
|
||||
word-wrapped would throw a new page for each extra line generated.
|
||||
|
||||
Version 2.01 - 7th Feb 94
|
||||
-------------------------
|
||||
Made by DavidW:
|
||||
1. Added function hEBPosToXL and struct definition H_SCRLAY_PLX
|
||||
allowing access to the scrlay method O_SL_POS_TO_XL.
|
||||
2. Changed "class" to "classno" in one function definition, to be
|
||||
more C++ friendly.
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
RHWIF.C
|
||||
|
||||
Started by DavidW, 1/11/92
|
||||
|
||||
Resource file extension to Hwif
|
||||
|
||||
*/
|
||||
|
||||
#include <appman.g>
|
||||
#include <wlib.h>
|
||||
#include <hwif.h>
|
||||
#include <hwif.g>
|
||||
#include <epoc.h>
|
||||
#include <p_gen.h>
|
||||
#include <s_.rsg>
|
||||
|
||||
GLREF_D PR_APPMAN *w_am;
|
||||
GLREF_D WORD DatLocked;
|
||||
GLREF_D VOID *DatCommandPtr;
|
||||
|
||||
|
||||
GLDEF_C VOID hDeclareAppRcb(VOID *rcb)
|
||||
{
|
||||
w_am->appman.rcb=rcb;
|
||||
}
|
||||
|
||||
GLDEF_C VOID *hInitAppRcb(VOID)
|
||||
{ /* create and initialise resource file object */
|
||||
INT ret;
|
||||
VOID *rcb; /* resource file object handle */
|
||||
|
||||
rcb=p_new(1,C_RSCFILE);
|
||||
ret=p_entersend3(rcb,O_RS_INIT,DatCommandPtr); /* pass file name */
|
||||
if (ret<0) /* no resource file found */
|
||||
p_exit(ret); /* fatal (programmer) error */
|
||||
hDeclareAppRcb(rcb);
|
||||
return(rcb);
|
||||
}
|
||||
|
||||
GLDEF_C INT hSetSystemResLang(INT lang)
|
||||
{
|
||||
TEXT name[12]; /* eg "ROM::s_.~04" */
|
||||
P_INFO junk;
|
||||
VOID *srcb;
|
||||
INT ret;
|
||||
|
||||
p_atos(&name[0],"ROM::S_.~%02d",lang);
|
||||
if (p_finfo(&name[0],&junk))
|
||||
return(E_FILE_NXIST);
|
||||
srcb=p_new(CAT_HWIF_OLIB,C_RSCFILE);
|
||||
if (!srcb)
|
||||
return(E_GEN_NOMEMORY);
|
||||
ret=p_entersend3(srcb,O_RS_INIT,&name[0]);
|
||||
if (!ret)
|
||||
{
|
||||
p_send2(w_am->appman.srcb,O_DESTROY);
|
||||
w_am->appman.srcb=srcb;
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C VOID hRequestReplacePack(VOID *rcb,TEXT *fname)
|
||||
{
|
||||
TEXT buf[50];
|
||||
|
||||
p_send4(w_am,O_AM_LOAD_RES_BUF,-SYS_REPLACE_DISK,&buf[0]);
|
||||
do
|
||||
{
|
||||
DatLocked++;
|
||||
wsAlertW(WS_ALERT_CLIENT,0,&buf[0],0);
|
||||
DatLocked--;
|
||||
} while (p_entersend3(rcb,O_RS_INIT,fname)<0);
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
THWIF.C
|
||||
|
||||
Started by DavidW, 6/12/91
|
||||
|
||||
Time text extension to h layer of hwif
|
||||
|
||||
*/
|
||||
|
||||
#include <hwif.g>
|
||||
#include <htime.g>
|
||||
#include <hwif.h>
|
||||
|
||||
|
||||
GLDEF_C VOID *hTTOpen(VOID)
|
||||
{
|
||||
return(uCheckHandle(p_new(CAT_HWIF_HWIM,C_HTIME)));
|
||||
}
|
||||
|
||||
GLDEF_C INT hTTSetTime(VOID *handle,INT type,VOID *data)
|
||||
{
|
||||
return(p_send4(handle,O_TO_SET,type,data));
|
||||
}
|
||||
|
||||
GLDEF_C INT hTTSenseString(VOID *handle,INT type,TEXT *buf)
|
||||
{
|
||||
return(p_send4(handle,O_TO_SENSE,type,buf));
|
||||
}
|
||||
|
||||
#define TIME_DEFAULTS (PR_TIME_NO_SECS|PR_TIME_DAY_NAME|PR_TIME_SUFFIX_NAME|PR_TIME_MONTH_NAME|PR_TIME_FORCE_UPDATE_FORMAT)
|
||||
|
||||
GLDEF_C VOID hTTSetFormat(VOID *handle,INT values)
|
||||
{
|
||||
p_send3(handle,O_TO_SET_FORMAT,NULL);
|
||||
((PR_TIME *)handle)->time.f.flags&=(~TIME_DEFAULTS);
|
||||
((PR_TIME *)handle)->time.f.flags|=values;
|
||||
}
|
||||
|
||||
GLDEF_C VOID hTTSetAbbreviations(VOID *handle,INT dayabb,INT monabb)
|
||||
{
|
||||
p_send4(handle,O_TO_SET_ABBREVIATIONS,dayabb,monabb);
|
||||
((PR_TIME *)handle)->time.f.flags|=PR_TIME_ABBREVIATE;
|
||||
}
|
||||
|
||||
GLDEF_C VOID hTTClose(VOID *handle)
|
||||
{
|
||||
p_send2(handle,O_DESTROY);
|
||||
}
|
||||
@@ -0,0 +1,385 @@
|
||||
/*
|
||||
UHWIF.C
|
||||
|
||||
Started by DavidW, 8/11/91
|
||||
|
||||
Utility layer of hwif
|
||||
|
||||
*/
|
||||
|
||||
#include <p_std.h>
|
||||
#include <p_gen.h>
|
||||
#include <p_file.h>
|
||||
#include <p_cons.h>
|
||||
#include <wlib.h>
|
||||
#include <hwif.h>
|
||||
|
||||
GLREF_D UWORD DatLocked;
|
||||
|
||||
GLREF_D WSERV_SPEC *wserv_channel;
|
||||
GLREF_D VOID *winHandle;
|
||||
GLREF_D UWORD _UseFullScreen;
|
||||
GLDEF_D UWORD _S3UseFullScreen;
|
||||
|
||||
GLREF_D TEXT ** _cmds;
|
||||
GLREF_D H_MENU_DATA * _mdata;
|
||||
|
||||
LOCAL_C VOID Check(INT val)
|
||||
{
|
||||
if (val)
|
||||
p_exit(val);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uCommonInit(VOID)
|
||||
{
|
||||
INT val;
|
||||
UINT func;
|
||||
CONSOLE_INFO cinfo;
|
||||
W_WINDATA wd;
|
||||
|
||||
p_linklib(0);
|
||||
if (winHandle)
|
||||
{
|
||||
val=FALSE;
|
||||
func=P_SCR_CURSOR;
|
||||
Check(p_iow4(winHandle,P_FSET,&func,&val));
|
||||
goto exit;
|
||||
}
|
||||
Check(p_open(&winHandle,"CON:",0));
|
||||
if (_UseFullScreen || _S3UseFullScreen)
|
||||
{
|
||||
if ((wserv_channel->conn.info.version_id&WS_VERSION_MASK)
|
||||
<WS_VERSION_4)
|
||||
_UseFullScreen=FALSE;
|
||||
else
|
||||
{
|
||||
val=0;
|
||||
if (_S3UseFullScreen)
|
||||
val=W_CTBY_S3_SCR;
|
||||
func=P_SCR_COMPATIBILITY;
|
||||
Check(p_iow4(winHandle,P_FSET,&func,&val));
|
||||
}
|
||||
}
|
||||
p_iow3(winHandle,P_FINQ,&cinfo);
|
||||
wd.extent.tl.x=wd.extent.tl.y=0;
|
||||
wd.extent.width=(wserv_channel->conn.info.pixels.x+1)/cinfo.char_width;
|
||||
wd.extent.height=(wserv_channel->conn.info.pixels.y+1)/cinfo.line_height;
|
||||
func=P_SCR_WSET;
|
||||
Check(p_iow4(winHandle,P_FSET,&func,&wd.extent));
|
||||
wd.extent.width=wserv_channel->conn.info.pixels.x;
|
||||
wd.extent.height=wserv_channel->conn.info.pixels.y;
|
||||
wSetWindow(cinfo.window_handle,W_WIN_EXTENT,&wd);
|
||||
Check(wCheckPoint());
|
||||
exit:
|
||||
hIFInit(winHandle);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uEnableGrey(VOID)
|
||||
{
|
||||
UINT func;
|
||||
UINT flags;
|
||||
|
||||
func=P_SCR_GREY;
|
||||
flags=TRUE;
|
||||
Check(p_iow4(winHandle,P_FSET,&func,&flags));
|
||||
}
|
||||
|
||||
GLDEF_C VOID uGetKey(WMSG_KEY *pkey)
|
||||
{
|
||||
p_iow3(winHandle,P_EVENT_READ,pkey);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uGetKeyA(WORD *pstat,WMSG_KEY *pkey)
|
||||
{
|
||||
p_ioc4(winHandle,P_EVENT_READ,pstat,pkey);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uCancelGetKeyA(VOID)
|
||||
{
|
||||
p_iow2(winHandle,P_FCANCEL);
|
||||
}
|
||||
|
||||
GLDEF_C INT uKeyPressOutstanding(VOID)
|
||||
{
|
||||
UWORD flag;
|
||||
|
||||
p_iow3(winHandle,P_FTEST,&flag);
|
||||
return(flag);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uEscape(UWORD flag)
|
||||
{
|
||||
UINT func;
|
||||
|
||||
func=P_SCR_ESCAPE;
|
||||
p_iow4(winHandle,P_FSET,&func,&flag);
|
||||
}
|
||||
|
||||
GLDEF_C UINT uFindMainWid(VOID)
|
||||
{
|
||||
CONSOLE_INFO info;
|
||||
|
||||
p_iow3(winHandle,P_FINQ,&info);
|
||||
return(info.window_handle);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uForceToFront(VOID)
|
||||
{
|
||||
wClientPosition(0,0);
|
||||
wFlush();
|
||||
}
|
||||
|
||||
GLDEF_C VOID uErrorString(TEXT *message)
|
||||
{
|
||||
uForceToFront();
|
||||
DatLocked++;
|
||||
wsAlertW(WS_ALERT_CLIENT,0,message,0);
|
||||
DatLocked--;
|
||||
}
|
||||
|
||||
GLDEF_C INT uErrorValue(INT ret)
|
||||
{
|
||||
TEXT buf[64];
|
||||
|
||||
if (ret)
|
||||
{
|
||||
p_errs(&buf[0],ret);
|
||||
uErrorString(&buf[0]);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C VOID *uCheckHandle(VOID *hand)
|
||||
{
|
||||
if (!hand)
|
||||
uErrorValue(E_GEN_NOMEMORY);
|
||||
return(hand);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uZTStoBCS(TEXT *bcs,TEXT *zts)
|
||||
{
|
||||
p_bcpy(bcs+1,zts,*bcs=p_slen(zts));
|
||||
}
|
||||
|
||||
GLDEF_C INT uOpenDialog(TEXT *title)
|
||||
{
|
||||
TEXT buf[64];
|
||||
|
||||
if (title)
|
||||
{
|
||||
uZTStoBCS(&buf[0],title);
|
||||
title=(&buf[0]);
|
||||
}
|
||||
return(uErrorValue(hDlgOpen(title)));
|
||||
}
|
||||
|
||||
GLDEF_C INT uAddDialogItem(INT type,TEXT *prompt,VOID *data)
|
||||
{
|
||||
TEXT buf[64];
|
||||
|
||||
if (prompt)
|
||||
{
|
||||
uZTStoBCS(&buf[0],prompt);
|
||||
prompt=(&buf[0]);
|
||||
}
|
||||
return(uErrorValue(hDlgAdd(type,prompt,data)));
|
||||
}
|
||||
|
||||
GLDEF_C INT uRunDialog(VOID)
|
||||
{
|
||||
INT ret;
|
||||
|
||||
DatLocked++;
|
||||
ret=hDlgRun();
|
||||
DatLocked--;
|
||||
if (ret<0)
|
||||
uErrorValue(ret);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C INT CDECL uAddButtonList(TEXT *but,INT code,...)
|
||||
{
|
||||
TEXT buf[40];
|
||||
INT count;
|
||||
TEXT **pbut;
|
||||
INT *pcode;
|
||||
VOID *buts;
|
||||
|
||||
buts=uCheckHandle(hButtonOpen());
|
||||
if (!buts)
|
||||
return(-1);
|
||||
count=1;
|
||||
pbut=(&but);
|
||||
pcode=(&code);
|
||||
while (*pbut)
|
||||
{
|
||||
uZTStoBCS(&buf[0],*pbut);
|
||||
if (uErrorValue(hButtonAdd(buts,count++,*pcode,&buf[0])))
|
||||
goto CleanUp;
|
||||
pcode+=2;
|
||||
pbut+=2;
|
||||
}
|
||||
if (!uAddDialogItem(H_DIALOG_BUTTONS,0,(VOID *)buts))
|
||||
return(0);
|
||||
CleanUp:
|
||||
hButtonClose(buts);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
GLDEF_C INT uBeginDCL(H_DI_CHOICE *pch)
|
||||
{
|
||||
pch->u.count=1;
|
||||
pch->menu=uCheckHandle(hChoiceOpen());
|
||||
return(!(INT)pch->menu);
|
||||
}
|
||||
|
||||
GLDEF_C INT uGrowDCL(H_DI_CHOICE *pch,TEXT *choice)
|
||||
{
|
||||
TEXT buf[64];
|
||||
|
||||
uZTStoBCS(&buf[0],choice);
|
||||
if (!uErrorValue(hChoiceAdd(pch->menu,pch->u.count++,&buf[0])))
|
||||
return(0);
|
||||
hChoiceClose(pch->menu);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
GLDEF_C INT uAddDCL(TEXT *prompt,UWORD *nsel,H_DI_CHOICE *pch)
|
||||
{
|
||||
pch->u.sel=nsel;
|
||||
if (!uAddDialogItem(H_DIALOG_CHOICE,prompt,pch))
|
||||
return(0);
|
||||
hChoiceClose(pch->menu);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
GLDEF_C INT CDECL uAddChoiceList(TEXT *prompt,UWORD *nsel,TEXT *choice,...)
|
||||
{
|
||||
TEXT **pchoice;
|
||||
H_DI_CHOICE ch;
|
||||
|
||||
if (uBeginDCL(&ch))
|
||||
return(-1);
|
||||
pchoice=(&choice);
|
||||
while (*pchoice)
|
||||
{
|
||||
if (uGrowDCL(&ch,*pchoice++))
|
||||
return(-1);
|
||||
}
|
||||
return(uAddDCL(prompt,nsel,&ch));
|
||||
}
|
||||
|
||||
GLDEF_C INT uLocateCommand(INT accel)
|
||||
{
|
||||
INT i;
|
||||
TEXT **pcmd;
|
||||
TEXT *cmd;
|
||||
|
||||
i=0;
|
||||
pcmd=_cmds;
|
||||
while ((cmd=*pcmd++)!=0)
|
||||
{
|
||||
if (*cmd==accel)
|
||||
return(i);
|
||||
i++;
|
||||
}
|
||||
return(-1);
|
||||
}
|
||||
|
||||
GLDEF_C INT uPresentMenus(VOID)
|
||||
{
|
||||
INT ret;
|
||||
VOID *card[16];
|
||||
VOID *loc;
|
||||
INT cardindex;
|
||||
TEXT **pcmd;
|
||||
TEXT *cmd;
|
||||
H_MENU_DATA *mdata;
|
||||
INT pos;
|
||||
INT nitems;
|
||||
TEXT buf[64];
|
||||
|
||||
if (uErrorValue(hMenuOpen()))
|
||||
return(0);
|
||||
mdata=_mdata;
|
||||
pcmd=_cmds;
|
||||
cardindex=0;
|
||||
while (mdata->title)
|
||||
{
|
||||
loc=uCheckHandle(hCardOpen());
|
||||
if (!loc)
|
||||
goto TidyUp;
|
||||
card[cardindex++]=loc;
|
||||
nitems=mdata->nlines;
|
||||
pos=1;
|
||||
while (nitems--)
|
||||
{
|
||||
cmd=(*pcmd++);
|
||||
uZTStoBCS(&buf[0],cmd+1);
|
||||
if (uErrorValue(hCardAdd(loc,pos++,*cmd,&buf[0])))
|
||||
goto TidyUp;
|
||||
}
|
||||
uZTStoBCS(&buf[0],mdata->title);
|
||||
if (uErrorValue(hMenuAdd(&buf[0],loc)))
|
||||
goto TidyUp;
|
||||
mdata++;
|
||||
}
|
||||
DatLocked++;
|
||||
ret=hMenuRun();
|
||||
DatLocked--;
|
||||
if (ret>=0)
|
||||
goto CleanUp;
|
||||
uErrorValue(ret);
|
||||
TidyUp:
|
||||
hMenuClose();
|
||||
ret=0;
|
||||
CleanUp:
|
||||
while (cardindex)
|
||||
hCardClose(card[--cardindex]);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C VOID uAddGreyUline(UBYTE accel,UWORD *plines)
|
||||
{
|
||||
*(plines+(accel/16))|=(1<<(accel%16));
|
||||
}
|
||||
|
||||
GLDEF_C INT CDECL uDialogMenu(TEXT *title,TEXT *pb,...)
|
||||
{
|
||||
TEXT **ppb;
|
||||
H_DI_TEXT txt;
|
||||
TEXT buf[64];
|
||||
|
||||
if (uOpenDialog(title))
|
||||
return(0);
|
||||
txt.type=H_DTEXT_ALIGN_LEFT|H_DTEXT_SELECTABLE;
|
||||
txt.str=(&buf[0]);
|
||||
ppb=(&pb);
|
||||
while (*ppb)
|
||||
{
|
||||
uZTStoBCS(&buf[0],*ppb++);
|
||||
if (uAddDialogItem(H_DIALOG_TEXT," ",&txt))
|
||||
return(0);
|
||||
}
|
||||
return(uRunDialog());
|
||||
}
|
||||
|
||||
GLDEF_C VOID CDECL uDisplayText(TEXT *pb,...)
|
||||
{
|
||||
TEXT **ppb;
|
||||
H_DI_TEXT txt;
|
||||
TEXT buf[64];
|
||||
|
||||
if (uOpenDialog(NULL))
|
||||
return;
|
||||
txt.type=H_DTEXT_ALIGN_LEFT;
|
||||
txt.str=(&buf[0]);
|
||||
ppb=(&pb);
|
||||
while (*ppb)
|
||||
{
|
||||
uZTStoBCS(&buf[0],*ppb++);
|
||||
if (uAddDialogItem(H_DIALOG_TEXT,NULL,&txt))
|
||||
return;
|
||||
}
|
||||
uRunDialog();
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
XHWIF.C
|
||||
|
||||
Started by DavidW, 8/11/91
|
||||
|
||||
Later additions to h layer of hwif
|
||||
|
||||
*/
|
||||
|
||||
#include <p_std.h>
|
||||
#include <p_file.h>
|
||||
#include <p_sys.h>
|
||||
#include <p_object.h>
|
||||
#include <epoc.h>
|
||||
|
||||
GLREF_D TEXT *DatUsedPathNamePtr;
|
||||
GLREF_D TEXT *DatCommandPtr;
|
||||
GLREF_D TEXT *DatProcessNamePtr;
|
||||
GLREF_D TEXT *DatStatusNamePtr;
|
||||
|
||||
|
||||
GLDEF_C VOID hEnsurePath(TEXT *fname)
|
||||
/*
|
||||
Ensure that the path of the specified path exists.
|
||||
All errors are ignored.
|
||||
*/
|
||||
{
|
||||
P_FPARSE crk;
|
||||
TEXT buf[P_FNAMESIZE];
|
||||
|
||||
if (!p_fparse(fname,NULL,&buf[0],&crk))
|
||||
{
|
||||
buf[crk.system+crk.device+crk.path]=0;
|
||||
p_mkdir(&buf[0]);
|
||||
}
|
||||
}
|
||||
|
||||
GLDEF_C VOID hSetUpStatusNames(TEXT *pb)
|
||||
{
|
||||
TEXT buf[P_FNAMESIZE];
|
||||
P_FPARSE crk;
|
||||
|
||||
DatUsedPathNamePtr=pb;
|
||||
p_fparse(pb,0,&buf[0],&crk);
|
||||
DatStatusNamePtr=pb+P_FSYSNAMESIZE+crk.device+crk.path;
|
||||
}
|
||||
|
||||
GLDEF_C INT hCrackCommandLine(VOID)
|
||||
{
|
||||
INT ret;
|
||||
TEXT *pb;
|
||||
|
||||
pb=DatCommandPtr;
|
||||
pb+=p_slen(pb)+1;
|
||||
if (!*pb++)
|
||||
ret=0;
|
||||
else
|
||||
{
|
||||
ret=(*pb++);
|
||||
DatProcessNamePtr=pb;
|
||||
pb+=p_slen(pb)+1;
|
||||
pb+=p_slen(pb)+1;
|
||||
if (*pb)
|
||||
hSetUpStatusNames(pb);
|
||||
else
|
||||
DatStatusNamePtr=DatProcessNamePtr;
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C INT hIsDbfCompressible(VOID *dH)
|
||||
{
|
||||
return(*((UWORD *)dH+19)&P_FMEDIA_COMPRESSIBLE);
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UWORD toneLengthTicks;
|
||||
UWORD delayLengthTicks;
|
||||
UWORD pauseLengthTicks;
|
||||
UBYTE dialOutCode[6];
|
||||
} DTMF_ENVAR;
|
||||
|
||||
LOCAL_C VOID ReadDTMFEnvar(DTMF_ENVAR *penv)
|
||||
{
|
||||
INT len;
|
||||
UBYTE buf[P_ENVMAX];
|
||||
|
||||
len=p_getenviron("D$X",3,&buf[0]);
|
||||
if (len==sizeof(DTMF_ENVAR))
|
||||
p_bcpy(penv,&buf[0],sizeof(DTMF_ENVAR));
|
||||
else
|
||||
{
|
||||
penv->toneLengthTicks=8;
|
||||
penv->delayLengthTicks=8;
|
||||
penv->pauseLengthTicks=48;
|
||||
}
|
||||
}
|
||||
|
||||
GLDEF_C INT hDTMFString(TEXT *zts)
|
||||
{
|
||||
E_DIAL c;
|
||||
DTMF_ENVAR env;
|
||||
INT oldsnd_state;
|
||||
INT ret;
|
||||
VOID *snd;
|
||||
INT i;
|
||||
|
||||
ReadDTMFEnvar(&env);
|
||||
c.toneLengthTicks=env.toneLengthTicks;
|
||||
c.delayLengthTicks=env.delayLengthTicks;
|
||||
c.pauseLengthTicks=env.pauseLengthTicks;
|
||||
oldsnd_state=p_getsnd();
|
||||
p_setsnd((oldsnd_state&~E_SOUND_DISABLE)|E_SOUND_DEVICE);
|
||||
for (i=3;i;i--)
|
||||
{
|
||||
if (!(ret=p_open(&snd,"SND:",0)))
|
||||
break;
|
||||
p_sleep(1);
|
||||
}
|
||||
if (!ret)
|
||||
{
|
||||
p_iow4(snd,E_FDIAL,zts,&c);
|
||||
p_close(snd);
|
||||
}
|
||||
p_setsnd(oldsnd_state);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
GLDEF_C INT hLoadOwnDyl(INT index)
|
||||
{
|
||||
INT DylHandle;
|
||||
VOID *fcb;
|
||||
INT ret;
|
||||
|
||||
DylHandle=0;
|
||||
ret=p_openlib(&fcb,DatCommandPtr);
|
||||
if (!ret)
|
||||
{
|
||||
p_loadfilelib(fcb,index,&DylHandle,TRUE);
|
||||
p_close(fcb);
|
||||
}
|
||||
return(DylHandle);
|
||||
}
|
||||
Reference in New Issue
Block a user