build: add the SIBO SDK
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
/* DECOMMAN.C */
|
||||
|
||||
#include <demo.g>
|
||||
#include <demo.rsg>
|
||||
#include <printer.g>
|
||||
#include <hwim.h>
|
||||
|
||||
GLREF_D PR_WSERV *w_ws;
|
||||
GLREF_D PR_DECOMMAN *DatApp2;
|
||||
|
||||
#define SAVED_FILE_NAME "LOC::M:\\WDRPRINT.CFG"
|
||||
|
||||
LOCAL_C VOID TryLoadPrintContext(VOID)
|
||||
{
|
||||
P_INFO junk;
|
||||
VOID *fcb;
|
||||
VOID *printer;
|
||||
UBYTE buf[512];
|
||||
INT blen;
|
||||
INT ind;
|
||||
UBYTE *p1,*p2,*p3,*p4;
|
||||
|
||||
if (p_finfo(SAVED_FILE_NAME,&junk))
|
||||
return; /* eg file does not exist */
|
||||
f_open(&fcb,SAVED_FILE_NAME,P_FOPEN|P_FSTREAM|P_FSHARE);
|
||||
blen=f_read(fcb,&buf[0],512);
|
||||
p_close(fcb);
|
||||
if (blen<=sizeof(PRINTER_PARAMS)+2)
|
||||
goto file_corrupt;
|
||||
p1=(&buf[0]);
|
||||
blen-=sizeof(PRINTER_PARAMS);
|
||||
p2=p1+sizeof(PRINTER_PARAMS);
|
||||
ind=p_bloc(p2+1,blen-1,0);
|
||||
if (ind<0)
|
||||
goto file_corrupt;
|
||||
p3=p2+1+ind+1;
|
||||
blen-=1+ind+1;
|
||||
if (blen<=0)
|
||||
goto file_corrupt;
|
||||
ind=p_bloc(p3,blen,0);
|
||||
if (ind<0)
|
||||
goto file_corrupt;
|
||||
p4=p3+ind+1;
|
||||
blen-=ind+1;
|
||||
if (blen<=0)
|
||||
goto file_corrupt;
|
||||
ind=p_bloc(p4,blen,0);
|
||||
if (ind!=blen-1)
|
||||
{
|
||||
file_corrupt:
|
||||
hInfoPrint(DELETING_CORRUPT_FILE);
|
||||
p_delete(SAVED_FILE_NAME);
|
||||
return;
|
||||
}
|
||||
p_send2(w_ws,O_WS_ENS_PRINT_CONTEXT);
|
||||
printer=w_ws->wserv.printer;
|
||||
p_bcpy((VOID *)p_send2(printer,O_PR_GET_PARAMS),p1,sizeof(PRINTER_PARAMS));
|
||||
p_send5(printer,O_PR_SET_MODEL,FALSE,p2+1,*p2);
|
||||
p_send4(printer,O_PR_SET_HD,PRINTER_HDR_TOP,p3);
|
||||
p_send4(printer,O_PR_SET_HD,PRINTER_HDR_BOT,p4);
|
||||
}
|
||||
|
||||
#pragma save,ENTER_CALL
|
||||
|
||||
LOCAL_C INT SavePrintContext(VOID)
|
||||
{
|
||||
VOID *fcb;
|
||||
VOID *printer;
|
||||
TEXT *p;
|
||||
struct
|
||||
{
|
||||
UBYTE model;
|
||||
TEXT name[P_FNAMESIZE+1];
|
||||
} m;
|
||||
|
||||
printer=w_ws->wserv.printer;
|
||||
if (!printer)
|
||||
return(0);
|
||||
f_open(&fcb,SAVED_FILE_NAME,P_FREPLACE|P_FSTREAM|P_FUPDATE);
|
||||
p=(TEXT *)p_send2(printer,O_PR_GET_PARAMS);
|
||||
f_write(fcb,p,sizeof(PRINTER_PARAMS));
|
||||
m.model=p_send3(printer,O_PR_SENSE_MODEL,&m.name[0]);
|
||||
f_write(fcb,&m.model,1+p_slen(&m.name[0])+1);
|
||||
p=(TEXT *)p_send3(printer,O_PR_GET_HD,PRINTER_HDR_TOP);
|
||||
f_write(fcb,p,p_slen(p)+1);
|
||||
p=(TEXT *)p_send3(printer,O_PR_GET_HD,PRINTER_HDR_BOT);
|
||||
f_write(fcb,p,p_slen(p)+1);
|
||||
p_close(fcb);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#pragma restore
|
||||
|
||||
LOCAL_C INT LaunchDialog(INT class,INT resid,VOID *rbuf)
|
||||
{
|
||||
DL_DATA dld;
|
||||
|
||||
dld.id=resid;
|
||||
dld.rbuf=rbuf;
|
||||
dld.pdlg=NULL;
|
||||
return hLaunchDial(CAT_DEMO_DEMO,class,&dld);
|
||||
}
|
||||
|
||||
LOCAL_C VOID PrintOrPreview(INT commid)
|
||||
{
|
||||
commid=(commid==O_DEC_PREVIEW? O_DEC_PRINT_DIRECT: 0);
|
||||
hDestroy(f_newsend(CAT_DEMO_DEMO,C_DELP,O_LPR_INIT,commid));
|
||||
}
|
||||
|
||||
#pragma METHOD_CALL
|
||||
|
||||
METHOD VOID decomman_com_init(PR_DECOMMAN *self)
|
||||
{
|
||||
DatApp2=self;
|
||||
TryLoadPrintContext();
|
||||
}
|
||||
|
||||
METHOD VOID decomman_com_exit(PR_DECOMMAN *self)
|
||||
{
|
||||
if (p_enter1(SavePrintContext))
|
||||
p_delete(SAVED_FILE_NAME);
|
||||
p_exit(0);
|
||||
}
|
||||
|
||||
METHOD VOID decomman_dec_psetup(VOID)
|
||||
{
|
||||
p_send2(w_ws,O_WS_EDIT_PRINT_CONTEXT);
|
||||
}
|
||||
|
||||
METHOD VOID decomman_dec_preview(PR_DECOMMAN *self,INT commid)
|
||||
{
|
||||
if (LaunchDialog(C_DEDLG,DELP_DLG,&commid))
|
||||
PrintOrPreview(commid);
|
||||
}
|
||||
|
||||
METHOD VOID decomman_dec_print_direct(VOID)
|
||||
{
|
||||
PrintOrPreview(O_DEC_PRINT);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/* DEDLG.C */
|
||||
|
||||
#include <demo.g>
|
||||
#include <demo.rsg>
|
||||
#include <hwim.h>
|
||||
|
||||
GLREF_D PR_DECOMMAN *DatApp2;
|
||||
|
||||
#pragma METHOD_CALL
|
||||
|
||||
METHOD VOID dedlg_dl_dyn_init(PR_DLGBOX *self)
|
||||
{
|
||||
INT commid;
|
||||
|
||||
commid=(*(INT *)self->dlgbox.rbuf);
|
||||
if (commid==O_DEC_PREVIEW)
|
||||
hDlgSetTitleByRid(DELP_PREVIEW_TITLE);
|
||||
if (!DatApp2->decomman.dets.dayno)
|
||||
return;
|
||||
hDlgSetDtedit(1,DatApp2->decomman.dets.dayno);
|
||||
hDlgSetNcedit(2,DatApp2->decomman.dets.ndays);
|
||||
hDlgSetChlist(3,DatApp2->decomman.dets.gap);
|
||||
}
|
||||
|
||||
METHOD INT dedlg_dl_key(PR_DLGBOX *self)
|
||||
{
|
||||
DatApp2->decomman.dets.dayno=hDlgSenseDtedit(1);
|
||||
DatApp2->decomman.dets.ndays=hDlgSenseNcedit(2);
|
||||
DatApp2->decomman.dets.gap=hDlgSenseChlist(3);
|
||||
return(WN_KEY_CHANGED);
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
/* DELP.C */
|
||||
|
||||
#include <demo.g>
|
||||
#include <demo.rsg>
|
||||
#include <hwim.h>
|
||||
|
||||
GLREF_D PR_DECOMMAN *DatApp2;
|
||||
|
||||
#define TIME_FMT_FLAGS (PR_TIME_MONTH_NAME|PR_TIME_SUFFIX_NAME)
|
||||
|
||||
LOCAL_C VOID InitTimeObject(PR_DELP *self)
|
||||
{
|
||||
P_DAYSEC ds;
|
||||
SE_TIME_FORMAT fmt;
|
||||
|
||||
ds.day=DatApp2->decomman.dets.dayno;
|
||||
ds.sec=0;
|
||||
self->delp.time=f_new(CAT_DEMO_OLIB,C_TIME);
|
||||
p_send4(self->delp.time,O_TO_SET,SET_TIME_DAYSEC,&ds);
|
||||
fmt.flags=TIME_FMT_FLAGS;
|
||||
p_send4(self->delp.time,O_TO_SET_FORMAT,&fmt,TIME_FMT_FLAGS);
|
||||
}
|
||||
|
||||
LOCAL_C UINT SenseBufWidth(PR_DELP *self,TEXT *pb)
|
||||
{
|
||||
return(p_send5(self->lprinter.wdr,O_WDR_SENSE_WIDTH,
|
||||
self->delp.wtab,pb,p_slen(pb)));
|
||||
}
|
||||
|
||||
LOCAL_C VOID FindWidthFirstColumn(PR_DELP *self)
|
||||
{
|
||||
INT i;
|
||||
TEXT buf[E_MAX_DAY_NAME];
|
||||
UWORD wid;
|
||||
|
||||
for (i=0; i<7; i++)
|
||||
{
|
||||
p_nmday(&buf[0],i);
|
||||
wid=SenseBufWidth(self,&buf[0]);
|
||||
if (wid>self->delp.colwid)
|
||||
self->delp.colwid=wid;
|
||||
}
|
||||
self->delp.colwid+=SenseBufWidth(self," "); /* two spaces */
|
||||
if (self->delp.colwid>(3*self->lprinter.width/4))
|
||||
{
|
||||
hInfoPrint(DELP_PAPER_NARROW);
|
||||
p_leave(RUN_ACTIVE_CLEANUP_NONOTIFY);
|
||||
}
|
||||
self->lprinter.subsqind=self->delp.colwid;
|
||||
}
|
||||
|
||||
LOCAL_C VOID InitWidthTable(PR_DELP *self)
|
||||
{
|
||||
self->delp.wtab=(VOID *)p_send5(self->lprinter.wdr,O_WDR_GET_WIDTH_TABLE,
|
||||
self->lprinter.f.fid,self->lprinter.f.height,
|
||||
self->lprinter.f.style|WDR_STYLE_BOLD);
|
||||
}
|
||||
|
||||
#pragma METHOD_CALL
|
||||
|
||||
METHOD INT delp_lpr_sense_text(PR_DELP *self,WDR_PRINT *pr)
|
||||
{
|
||||
P_DATE dt;
|
||||
P_DAYSEC ds;
|
||||
|
||||
if (!self->delp.time)
|
||||
{
|
||||
self->delp.ndays=DatApp2->decomman.dets.ndays;
|
||||
InitTimeObject(self);
|
||||
InitWidthTable(self);
|
||||
FindWidthFirstColumn(self);
|
||||
}
|
||||
else if (!self->delp.ndays)
|
||||
return(FALSE);
|
||||
switch (self->delp.state++)
|
||||
{
|
||||
case DELP_STATE_COL1:
|
||||
if (DatApp2->decomman.dets.gap)
|
||||
{
|
||||
p_send4(self->delp.time,O_TO_SENSE,SENSE_TIME_DATE,&dt);
|
||||
if (!dt.day)
|
||||
{
|
||||
pr->down=pr->height;
|
||||
if (DatApp2->decomman.dets.gap==1)
|
||||
pr->down>>=1;
|
||||
}
|
||||
}
|
||||
p_send4(self->delp.time,O_TO_SENSE,SENSE_TIME_DAYSEC,&ds);
|
||||
p_nmday(&self->delp.dname[0],P_WEEK(ds.day));
|
||||
self->delp.right=self->delp.colwid
|
||||
-SenseBufWidth(self,&self->delp.dname[0]);
|
||||
pr->buf=(&self->delp.dname[0]);
|
||||
pr->style|=WDR_STYLE_BOLD;
|
||||
break;
|
||||
case DELP_STATE_COL2:
|
||||
pr->flags&=(~(WDR_PRINT_LINE|WDR_PRINT_TEXT));
|
||||
pr->flags|=WDR_PRINT_RIGHT;
|
||||
pr->right=self->delp.right;
|
||||
return(TRUE);
|
||||
case DELP_STATE_COL3:
|
||||
p_send4(self->delp.time,O_TO_SENSE,SENSE_TIME_DATESTR,&self->delp.buf[0]);
|
||||
pr->buf=(&self->delp.buf[0]);
|
||||
pr->flags&=(~WDR_PRINT_LINE);
|
||||
pr->indent=self->delp.colwid;
|
||||
self->delp.ndays--;
|
||||
p_send4(self->delp.time,O_TO_ADD_DAYS,1,0);
|
||||
self->delp.state=DELP_STATE_COL1;
|
||||
}
|
||||
pr->blen=p_slen(pr->buf);
|
||||
return(TRUE);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
/* DEMAIN.C */
|
||||
|
||||
#include <demo.g>
|
||||
|
||||
GLDEF_C VOID main(VOID)
|
||||
{
|
||||
IN_HWIMMAN app;
|
||||
IN_WSERV wserv;
|
||||
|
||||
p_linklib(0);
|
||||
app.flags=FLG_APPMAN_RSCFILE|FLG_APPMAN_SRSCFILE|
|
||||
FLG_APPMAN_CLEAN|FLG_APPMAN_FULLSCREEN;
|
||||
wserv.com_cat=app.wserv_cat=p_getlibh(CAT_DEMO_DEMO);
|
||||
app.wserv_class=C_DEWSERV;
|
||||
wserv.com_class=C_DECOMMAN;
|
||||
p_send4(p_new(CAT_DEMO_HWIM,C_HWIMMAN),O_AM_INIT,&app,&wserv);
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
IMAGE demo
|
||||
|
||||
EXTERNAL olib
|
||||
EXTERNAL hwim
|
||||
EXTERNAL xadd
|
||||
|
||||
INCLUDE hwimman.g
|
||||
INCLUDE dlgbox.g
|
||||
INCLUDE xprinter.g
|
||||
INCLUDE time.g
|
||||
INCLUDE epoc.h
|
||||
|
||||
CLASS dewserv wserv
|
||||
{
|
||||
REPLACE ws_dyn_init
|
||||
}
|
||||
|
||||
CLASS decomman comman
|
||||
{
|
||||
REPLACE com_init
|
||||
REPLACE com_exit
|
||||
ADD dec_psetup
|
||||
ADD dec_preview
|
||||
ADD dec_print=decomman_dec_preview
|
||||
ADD dec_print_direct
|
||||
TYPES
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
UWORD dayno;
|
||||
UWORD ndays;
|
||||
UWORD gap;
|
||||
} DE_PRINT_DETAILS;
|
||||
}
|
||||
PROPERTY
|
||||
{
|
||||
DE_PRINT_DETAILS dets;
|
||||
}
|
||||
}
|
||||
|
||||
CLASS dedlg dlgbox
|
||||
{
|
||||
REPLACE dl_dyn_init
|
||||
REPLACE dl_key
|
||||
}
|
||||
|
||||
CLASS delp xprinter
|
||||
{
|
||||
REPLACE lpr_sense_text
|
||||
CONSTANTS
|
||||
{
|
||||
DELP_STATE_COL1 0
|
||||
DELP_STATE_COL2 1
|
||||
DELP_STATE_COL3 2
|
||||
}
|
||||
PROPERTY 1
|
||||
{
|
||||
VOID *time;
|
||||
VOID *wtab;
|
||||
UWORD colwid;
|
||||
UWORD right;
|
||||
UWORD state;
|
||||
UWORD ndays;
|
||||
TEXT dname[E_MAX_DAY_NAME];
|
||||
TEXT buf[LN_TIME_DATE_STR];
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
#include <demo.g>
|
||||
|
||||
_O_COM_EXIT
|
||||
_O_DEC_PSETUP
|
||||
_O_DEC_PREVIEW
|
||||
_O_DEC_PRINT
|
||||
@@ -0,0 +1,98 @@
|
||||
/* DEMO.RSS */
|
||||
|
||||
#include <hwim.rh>
|
||||
#include <hwim.rg>
|
||||
#include <demo.rg>
|
||||
|
||||
RESOURCE WSERV_INFO demo_accs
|
||||
{
|
||||
menbar_id=demo_menubar;
|
||||
first_com=O_COM_EXIT;
|
||||
accel={'x',
|
||||
'y','*','p'};
|
||||
}
|
||||
|
||||
RESOURCE MENU_BAR demo_menubar
|
||||
{
|
||||
items =
|
||||
{
|
||||
MENU_BAR_ITEM
|
||||
{
|
||||
menu_id=special_menu;
|
||||
mb_item="Demo";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
RESOURCE MENU special_menu
|
||||
{
|
||||
items =
|
||||
{
|
||||
MENU_ITEM
|
||||
{
|
||||
com_id=O_DEC_PSETUP;
|
||||
mn_item="Print setup";
|
||||
},
|
||||
MENU_ITEM
|
||||
{
|
||||
com_id=O_DEC_PREVIEW;
|
||||
mn_item="Preview";
|
||||
},
|
||||
MENU_ITEM
|
||||
{
|
||||
com_id=O_DEC_PRINT|BREAK_LINE_FOLLOWS;
|
||||
mn_item="Print";
|
||||
},
|
||||
MENU_ITEM
|
||||
{
|
||||
com_id=O_COM_EXIT;
|
||||
mn_item="Exit";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
RESOURCE MENU delp_gap_chlist
|
||||
{
|
||||
items =
|
||||
{
|
||||
CHOICE_ITEM { str="No gap";},
|
||||
CHOICE_ITEM { str="Half a line";},
|
||||
CHOICE_ITEM { str="Complete line";}
|
||||
};
|
||||
}
|
||||
|
||||
RESOURCE DIALOG delp_dlg
|
||||
{
|
||||
title="Print list of days";
|
||||
flags=DLGBOX_NOTIFY_ENTER|DLGBOX_RBUF_FILLED;
|
||||
controls=
|
||||
{
|
||||
CONTROL
|
||||
{
|
||||
class=C_DTEDIT;
|
||||
prompt="Start date";
|
||||
info=DTEDIT { flags=IN_DTEDIT_DDMMYYYY;};
|
||||
},
|
||||
CONTROL
|
||||
{
|
||||
class=C_NCEDIT;
|
||||
prompt="Number of days to print";
|
||||
info=NCEDIT
|
||||
{
|
||||
low=10;
|
||||
current=20;
|
||||
high=200;
|
||||
};
|
||||
},
|
||||
CONTROL
|
||||
{
|
||||
class=C_CHLIST;
|
||||
prompt="Space between months";
|
||||
info=CHLIST { rid=delp_gap_chlist; };
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
RESOURCE STRING delp_paper_narrow { str="Paper size too narrow"; }
|
||||
RESOURCE STRING delp_preview_title { str="Preview list of days"; }
|
||||
RESOURCE STRING deleting_corrupt_file { str="Deleting corrupt file"; }
|
||||
@@ -0,0 +1,38 @@
|
||||
/* DEWSERV.C */
|
||||
|
||||
#include <demo.g>
|
||||
#include <hwim.h>
|
||||
|
||||
GLREF_D WSERV_SPEC *wserv_channel;
|
||||
|
||||
LOCAL_C INT StatusWindowWidth(VOID)
|
||||
{
|
||||
P_EXTENT ext;
|
||||
|
||||
wInquireStatusWindow(-1,&ext);
|
||||
return(ext.width);
|
||||
}
|
||||
|
||||
LOCAL_C VOID InitClientWindow(PR_DEWSERV *self)
|
||||
{
|
||||
W_WINDATA wd;
|
||||
PR_WIN *cliwin;
|
||||
|
||||
wd.extent.tl.x=wd.extent.tl.y=0;
|
||||
wd.extent.height=wserv_channel->conn.info.pixels.y;
|
||||
wd.extent.width=wserv_channel->conn.info.pixels.x-StatusWindowWidth();
|
||||
cliwin=f_newsend(CAT_DEMO_HWIM,C_BWIN,O_WN_CONNECT,NULL,W_WIN_EXTENT,&wd);
|
||||
self->wserv.cli=cliwin;
|
||||
cliwin->win.flags=PR_BWIN_CORNER_4|PR_BWIN_SHADOW_1;
|
||||
p_send3(cliwin,O_WN_EMPHASISE,TRUE);
|
||||
hInitVis(cliwin);
|
||||
}
|
||||
|
||||
#pragma METHOD_CALL
|
||||
|
||||
METHOD VOID dewserv_ws_dyn_init(PR_DEWSERV *self)
|
||||
{
|
||||
wsSetList(W_STATUS_WINDOW_ICON,NULL,0);
|
||||
wStatusWindow(W_STATUS_WINDOW_BIG);
|
||||
InitClientWindow(self);
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
tscx /m wdrprint
|
||||
tscx /m wdrprint
|
||||
@@ -0,0 +1,2 @@
|
||||
demo.pic
|
||||
demo.rzc
|
||||
@@ -0,0 +1,34 @@
|
||||
#system epoc img
|
||||
#set epocinit=iplib
|
||||
#model small jpi
|
||||
|
||||
#compile demo.cat
|
||||
|
||||
#if %remake #or (demo.rg #older demo.re) #or (demo.rg #older demo.g) #then
|
||||
#run "re demo" no_window no_abort
|
||||
#endif
|
||||
|
||||
#if (demo.rsg #older demo.rss) #or (demo.rsg #older demo.rg) #then
|
||||
#file delete demo.rsg
|
||||
#run "rs demo" no_window no_abort
|
||||
#endif
|
||||
|
||||
#if demo.rzc #older demo.rsg #then
|
||||
#run "rch demo" no_window no_abort
|
||||
#file delete wdrprint.img
|
||||
#endif
|
||||
|
||||
#compile decomman.c
|
||||
#compile delp.c
|
||||
#compile dedlg.c
|
||||
#compile demain.c
|
||||
#compile dewserv.c
|
||||
|
||||
#if (wdrprint.img #older wdrprint.afl) #or (wdrprint.img #older demo.pic) #then
|
||||
#file delete wdrprint.img
|
||||
#endif
|
||||
|
||||
#pragma link(olib.lib)
|
||||
#pragma link(hwim.lib)
|
||||
|
||||
#link wdrprint.img
|
||||
@@ -0,0 +1,16 @@
|
||||
wdrprrel.prj ! releases source files
|
||||
wdrprint.pr ! TS project file
|
||||
make.bat ! makes WDRPRINT.IMG
|
||||
!
|
||||
demo.cat ! category file
|
||||
demo.re ! resource externals
|
||||
demo.rss ! resource script
|
||||
!
|
||||
decomman.c ! command manager
|
||||
delp.c ! line printer subclass
|
||||
dedlg.c ! dialog
|
||||
demain.c ! main
|
||||
dewserv.c ! window server subclass
|
||||
!
|
||||
wdrprint.afl ! add file list
|
||||
demo.pic ! icon
|
||||
Reference in New Issue
Block a user