build: add the SIBO SDK

This commit is contained in:
2026-07-06 18:01:36 +01:00
parent d76326729c
commit 64e484448c
757 changed files with 97167 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
gbar.pic
gbar.rsc
+59
View File
@@ -0,0 +1,59 @@
IMAGE gbar
EXTERNAL olib
EXTERNAL hwim
INCLUDE lprinter.g
INCLUDE help.g
INCLUDE dlgbox.g
CLASS hprinter lprinter
{
REPLACE lpr_read
REPLACE lpr_sense_text
PROPERTY
{
INT (*sense)(WDR_PRINT *);
}
}
CLASS hhelpdlg helpdlg
{
REPLACE destroy
}
CLASS data_dl dlgbox
{
REPLACE dl_dyn_init
REPLACE dl_key
TYPES
{
typedef struct
{
UWORD exit_code;
UWORD totloops;
UWORD update;
UWORD esc;
UWORD loopsleft;
UWORD toupdate;
} RB_GBAR;
}
}
CLASS gbar_dl dlgbox
{
REPLACE wn_sense_help
REPLACE dl_dyn_init
REPLACE dl_key
ADD gbar_update
}
CLASS bar_ao active
{
REPLACE ao_init
REPLACE ao_run
PROPERTY
{
RB_GBAR *prb;
}
}
Binary file not shown.
+21
View File
@@ -0,0 +1,21 @@
#system epoc img
#set epocinit=iplib
#model small jpi
#compile gbar.cat
#if %remake #or (gbar.rsg #older gbar.rss) #or (gbar.rsc #older gbar.rss) #then
#run "rs gbar" no_window no_abort
#file delete gbar.img
#endif
#compile growbar.c
#pragma link(hwifo.lib)
#pragma link(hwim.lib)
#if (gbar.img #older gbar.afl) #or (gbar.img #older gbar.pic) #then
#file delete gbar.img
#endif
#link gbar.img
+60
View File
@@ -0,0 +1,60 @@
#include <hwim.rg>
#include <hwim.rh>
#include <s_.h>
RESOURCE DIALOG dl_data
{
title="Specify grow-bar data";
flags=DLGBOX_NOTIFY_ENTER;
controls=
{
CONTROL
{
class=C_NCEDIT;
prompt="Total number of loops";
info=NCEDIT
{
high=100;
low=1;
};
},
CONTROL
{
class=C_NCEDIT;
prompt="Update display every";
info=NCEDIT
{
high=100;
low=1;
};
},
CONTROL
{
class=C_CHLIST;
prompt="Allow escape";
info=CHLIST { rid=-SYS_NO_YES; };
}
};
}
RESOURCE CONTROL item_abandon
{
class=C_ACLIST;
info=ACLIST { rid=-SYS_AC_ABANDON; };
}
RESOURCE DIALOG dl_gbar
{
title="Example grow bar";
flags=DLGBOX_NOTIFY_ESCAPE|DLGBOX_NOTIFY_ENTER;
controls=
{
CONTROL
{
class=C_DONEWN;
}
};
}
RESOURCE STRING str_cancelled { str="Cancelled by user"; }
RESOURCE STRING str_finished { str="Looping finished"; }
+164
View File
@@ -0,0 +1,164 @@
/*
GROWBAR.C
Written by DavidW
Started on 19/8/94
*/
#include <p_std.h>
#include <p_object.h>
#include <hwif.h>
#include <hwim.h>
#include <gbar.g>
#include <donewn.g>
#include "gbar.rsg"
GLREF_D VOID *w_am;
GLREF_D PR_WSERV *w_ws;
GLREF_D VOID *DatDialogPtr;
LOCAL_C VOID doDial(INT classno,INT resid,VOID *rbuf)
{
hOODialog(p_getlibh(CAT_GBAR_GBAR),classno,resid,rbuf);
}
LOCAL_C VOID InitGbarData(RB_GBAR *pgb)
{
pgb->totloops=10;
pgb->update=1;
pgb->esc=TRUE;
}
LOCAL_C VOID DisallowDialling(VOID)
{
w_ws->wserv.flags|=PR_WSERV_FREEFORM_DIALLING;
}
LOCAL_C VOID MainLoop(VOID)
{
VOID *ao;
RB_GBAR gb_data;
InitGbarData(&gb_data);
DisallowDialling();
ao=f_newsend(CAT_GBAR_GBAR,C_BAR_AO,O_AO_INIT,&gb_data);
FOREVER
{
doDial(C_DATA_DL,DL_DATA,&gb_data);
if (gb_data.exit_code==W_KEY_ESCAPE)
continue;
p_send2(ao,O_AO_QUEUE);
doDial(C_GBAR_DL,DL_GBAR,&gb_data);
p_send2(ao,O_AO_CANCEL);
hInfoPrint(gb_data.exit_code==W_KEY_ESCAPE?
STR_CANCELLED: STR_FINISHED);
}
}
LOCAL_C VOID SpecificInit(VOID)
{
hInitAppRcb();
hCrackCommandLine();
}
GLDEF_C VOID main(VOID)
{
uCommonInit();
SpecificInit();
MainLoop();
}
#pragma METHOD_CALL
#define DL_DATA_TOT 1
#define DL_DATA_UPD 2
#define DL_DATA_ESC 3
METHOD VOID data_dl_dl_dyn_init(PR_DLGBOX *self)
{
RB_GBAR *prbuf;
prbuf=self->dlgbox.rbuf;
hDlgSetNcedit(DL_DATA_TOT,prbuf->totloops);
hDlgSetNcedit(DL_DATA_UPD,prbuf->update);
hDlgSetChlist(DL_DATA_ESC,prbuf->esc);
}
METHOD INT data_dl_dl_key(PR_DLGBOX *self)
{
RB_GBAR *prbuf;
prbuf=self->dlgbox.rbuf;
prbuf->totloops=hDlgSenseNcedit(DL_DATA_TOT);
prbuf->update=hDlgSenseNcedit(DL_DATA_UPD);
prbuf->esc=hDlgSenseChlist(DL_DATA_ESC);
return(WN_KEY_CHANGED);
}
METHOD VOID gbar_dl_dl_dyn_init(PR_DLGBOX *self)
{
RB_GBAR *prbuf;
SE_DONEWN set;
prbuf=self->dlgbox.rbuf;
if (prbuf->esc)
p_send3(self,O_DL_ITEM_APPEND,ITEM_ABANDON);
set.flags=SE_DONEWN_RANGE;
set.range=prbuf->totloops;
hDlgSet(1,&set);
prbuf->toupdate=prbuf->update;
prbuf->loopsleft=prbuf->totloops;
}
METHOD VOID gbar_dl_gbar_update(PR_DLGBOX *self)
{
RB_GBAR *prbuf;
SE_DONEWN set;
prbuf=self->dlgbox.rbuf;
set.flags=SE_DONEWN_VALUE;
set.val=prbuf->totloops-prbuf->loopsleft;
hDlgSet(1,&set);
}
METHOD INT gbar_dl_dl_key(PR_DLGBOX *self)
{
RB_GBAR *prbuf;
prbuf=self->dlgbox.rbuf;
return(prbuf->esc? WN_KEY_CHANGED: WN_KEY_NO_CHANGE);
}
METHOD VOID gbar_dl_wn_sense_help(VOID *self)
{
p_leave(RUN_ACTIVE_USED);
}
METHOD VOID bar_ao_ao_init(PR_BAR_AO *self,RB_GBAR *prb)
{
p_send3(w_am,O_AM_ADD_TASK,self);
self->bar_ao.prb=prb;
}
METHOD INT bar_ao_ao_run(PR_BAR_AO *self)
{
RB_GBAR *prb;
p_sleep(5); /* the next stage of computation or drawing etc */
p_send2(self,O_AO_QUEUE);
prb=self->bar_ao.prb;
if (!--(prb->loopsleft))
{
p_send2(DatDialogPtr,O_DESTROY);
prb->exit_code=0;
}
else if (!--(prb->toupdate))
{
p_send2(DatDialogPtr,O_GBAR_UPDATE);
prb->toupdate=prb->update;
}
return(RUN_ACTIVE_USED);
}
+27
View File
@@ -0,0 +1,27 @@
hwifood.prj ! release source files
ts.red ! redirection file
!
oqd.pr ! TS project file (OQuery dyl)
oquery.pr ! TS project file (OQuery app)
makeoq.bat ! makes OQUERY.IMG
!
oquery.c ! source for Oquery
oquery.rss ! resource script
oquery.afl ! add file list
query.ms ! shell data source
query.shd ! shell data file
query.pic ! icon
oquery.dfl ! DYL file list
!
oqd.cat ! dialog DYL definitions
oqdc.c ! dialog DYL methods
gbar.pr ! TS project file (GBAR)
makegbar.bat ! makes GBAR.IMG
!
gbar.cat ! incorporates HWIF.CAT
growbar.c ! main source code
gbar.rss ! resource script
gbar.afl ! add file list
gbar.pic ! icon
+2
View File
@@ -0,0 +1,2 @@
@echo off
tscx /m gbar
+3
View File
@@ -0,0 +1,3 @@
@echo off
tscx /m oqd /%jpivid%
tscx /m oquery /%jpivid%
+12
View File
@@ -0,0 +1,12 @@
LIBRARY oqd
EXTERNAL olib
EXTERNAL hwim
INCLUDE dlgbox.g
CLASS oqd_combins dlgbox
{
REPLACE dl_dyn_init
REPLACE dl_key
}
+14
View File
@@ -0,0 +1,14 @@
#system epoc dyl
#set epocinit=iplib
#model small jpi
#compile oqd.cat
#if %remake #or (oquery.rsg #older oquery.rss) #or (oquery.rsc #older oquery.rss) #then
#run "rs oquery" no_window no_abort
#file delete oquery.img
#endif
#compile oqdc.c
#pragma link(hwim.lib)
#link oqd.dyl
+88
View File
@@ -0,0 +1,88 @@
/*
OQDC.C
Methods of OO dialogs of OQUERY.C
Written by DavidW
Started on 5/9/93
*/
#include <oqd.g>
#include <p_date.h>
#include <hwim.h>
#include "oquery.rsg"
#define COMBINS_DIW 1
#define COMBINS_DIM 2
#define COMBINS_FOUND 3
LOCAL_C VOID SetControls(P_DAYSEC *pds)
{
P_DATE dt;
hDlgSetChlist(COMBINS_DIW,p_wkday(pds->day));
p_dstodt(pds,&dt);
hDlgSetNcedit(COMBINS_DIM,dt.day+1);
hDlgSetDtedit(COMBINS_FOUND,pds->day);
}
#pragma METHOD_CALL
METHOD VOID oqd_combins_dl_dyn_init(PR_DLGBOX *self)
{
ULONG sdate;
P_DAYSEC ds;
sdate=p_date();
p_sttods(&sdate,&ds);
SetControls(&ds);
}
METHOD INT oqd_combins_dl_key(PR_DLGBOX *self,INT index,INT key)
{
P_DAYSEC ds;
P_DATE dt;
INT diw;
INT dim;
INT diff;
ULONG reset;
INT inc;
if (key==W_KEY_ESCAPE)
return(WN_KEY_CHANGED);
diw=hDlgSenseChlist(COMBINS_DIW);
dim=hDlgSenseNcedit(COMBINS_DIM)-1;
ds.day=hDlgSenseDtedit(COMBINS_FOUND);
ds.sec=0;
reset=ds.day;
diff=diw-p_wkday(ds.day);
if (key==W_KEY_RETURN)
{
if (diff<=0)
diff+=7;
inc=7;
}
else
{
if (diff>=0)
diff-=7;
inc=(-7);
}
ds.day+=diff;
FOREVER
{
if (ds.day>93501l)
{
hInfoPrint(OQS_NO_FURTHER_MATCHES);
ds.day=reset;
break;
}
p_dstodt(&ds,&dt);
if (dt.day==dim)
break;
ds.day+=inc;
}
SetControls(&ds);
return(WN_KEY_NO_CHANGE);
}
+3
View File
@@ -0,0 +1,3 @@
query.pic
oquery.rsc
query.shd
+781
View File
@@ -0,0 +1,781 @@
/*
OQUERY.C
Written by DavidW
Started on 28/11/91
OO aspects started 1/9/93
*/
#include <p_std.h>
#include <p_math.h>
#include <p_date.h>
#include <p_object.h>
#include <p_crypt.h>
#include <p_file.h>
#include <wlib.h>
#include <hwif.h>
#include <oqd.g>
#include "oquery.rsg"
LOCAL_D INT DylHandle;
LOCAL_D TEXT *cmds[]=
{
"iInches/Centimetres",
"mMiles/Kilometres",
"lPounds/Kilogrammes",
"pPints/Litres",
"fFahrenheit/Centigrade",
"dDay of week",
"cCombinations",
"tTime difference",
"hHoroscope",
"nNow",
"wPassword",
"eEncrypt",
"uDecrypt",
"sSignificance",
"zFile size",
"xExit",
NULL
};
#define CONVERT_ITEMS 5
#define CALENDAR_ITEMS 5
#define SECRET_ITEMS 3
#define SPECIAL_ITEMS 3
#define ITEMS_BEFORE_CONVERT 0
#define ITEMS_BEFORE_CALENDAR CONVERT_ITEMS
#define ITEMS_BEFORE_SECRET (ITEMS_BEFORE_CALENDAR+CALENDAR_ITEMS)
#define ITEMS_BEFORE_SPECIAL (ITEMS_BEFORE_SECRET+SECRET_ITEMS)
LOCAL_D H_MENU_DATA mdata[]=
{
"Conversions",CONVERT_ITEMS,
"Calendar",CALENDAR_ITEMS,
"Secret",SECRET_ITEMS,
"Special",SPECIAL_ITEMS,
NULL
};
GLDEF_D TEXT ** _cmds=(&cmds[0]);
GLDEF_D H_MENU_DATA * _mdata=(&mdata[0]);
LOCAL_D UINT MainWid;
LOCAL_D WORD ndp=2;
LOCAL_D DOUBLE small;
LOCAL_D DOUBLE vsmall;
LOCAL_D TEXT pass[10];
LOCAL_D VOID *ttH;
LOCAL_D UWORD ttMonth=1;
LOCAL_D UWORD ttSuffix=1;
LOCAL_D UWORD ttDay=1;
LOCAL_D UWORD ttCentury=2;
LOCAL_D UWORD ttSeconds=2;
LOCAL_C VOID ZeroDouble(DOUBLE *pdbl)
{
p_bfil(pdbl,sizeof(DOUBLE),0);
}
LOCAL_C VOID MakeDouble(DOUBLE *pdbl,WORD val)
{
p_itof(pdbl,&val);
}
LOCAL_C VOID CalcSmall(VOID)
{
DOUBLE dndp;
DOUBLE temp;
MakeDouble(&dndp,ndp);
p_fneg(&dndp);
MakeDouble(&temp,10);
p_pow(&small,&temp,&dndp);
MakeDouble(&temp,2);
p_fld(&vsmall,&small);
p_fdiv(&vsmall,&temp);
}
LOCAL_C VOID Clip(DOUBLE *pval)
{
DOUBLE remain;
DOUBLE temp;
MakeDouble(&temp,0);
if (p_fcmp(pval,&temp)>=0)
p_fadd(pval,&vsmall);
else
p_fsub(pval,&vsmall);
p_mod(&remain,pval,&small);
p_fsub(pval,&remain);
}
LOCAL_C VOID FahrToCent(DOUBLE *pcent,DOUBLE *pfahr)
{
DOUBLE temp;
p_fld(pcent,pfahr);
MakeDouble(&temp,32);
p_fsub(pcent,&temp);
MakeDouble(&temp,5);
p_fmul(pcent,&temp);
MakeDouble(&temp,9);
p_fdiv(pcent,&temp);
}
LOCAL_C VOID CentToFahr(DOUBLE *pfahr,DOUBLE *pcent)
{
DOUBLE temp;
p_fld(pfahr,pcent);
MakeDouble(&temp,9);
p_fmul(pfahr,&temp);
MakeDouble(&temp,5);
p_fdiv(pfahr,&temp);
MakeDouble(&temp,32);
p_fadd(pfahr,&temp);
}
LOCAL_C VOID Temperatures(VOID)
{
DOUBLE fahr;
DOUBLE cent;
H_DI_FLOAT ffahr;
H_DI_FLOAT fcent;
INT index;
MakeDouble(&fahr,32);
MakeDouble(&cent,0);
ffahr.value=(&fahr);
MakeDouble(&ffahr.low,-17968);
MakeDouble(&ffahr.high,18032);
fcent.value=(&cent);
MakeDouble(&fcent.low,-10000);
MakeDouble(&fcent.high,10000);
FOREVER
{
if (uOpenDialog("Convert temperature"))
return;
if (uAddDialogItem(H_DIALOG_FLOAT,"Fahrenheit",&ffahr))
return;
if (uAddDialogItem(H_DIALOG_FLOAT,"Centigrade",&fcent))
return;
index=uRunDialog();
if (index<=0)
break;
if (index==2)
{
FahrToCent(&cent,&fahr);
Clip(&cent);
}
else
{
CentToFahr(&fahr,&cent);
Clip(&fahr);
}
}
}
LOCAL_C VOID Convert(TEXT *pmt1,TEXT *pmt2,INT high1,INT high2)
{
DOUBLE val1;
DOUBLE val2;
H_DI_FLOAT fled1;
H_DI_FLOAT fled2;
INT index;
DOUBLE ratio;
ZeroDouble(&val1);
ZeroDouble(&val2);
fled1.value=(&val1);
ZeroDouble(&fled1.low);
MakeDouble(&fled1.high,high1);
fled2.value=(&val2);
ZeroDouble(&fled2.low);
MakeDouble(&fled2.high,high2);
p_fld(&ratio,&fled2.high);
p_fdiv(&ratio,&fled1.high);
FOREVER
{
if (uOpenDialog("Convert"))
return;
if (uAddDialogItem(H_DIALOG_FLOAT,pmt1,&fled1))
return;
if (uAddDialogItem(H_DIALOG_FLOAT,pmt2,&fled2))
return;
index=uRunDialog();
if (index<=0)
break;
if (index==2)
{
p_fld(&val2,&val1);
p_fmul(&val2,&ratio);
Clip(&val2);
}
else
{
p_fld(&val1,&val2);
p_fdiv(&val1,&ratio);
Clip(&val1);
}
}
}
LOCAL_C VOID InchAndCm(VOID)
{
Convert("Inches","Centimetres",10000,25400);
}
LOCAL_C VOID MileAndKm(VOID)
{
Convert("Miles","Kilometres",20000,32187);
}
LOCAL_C VOID PoundAndKg(VOID)
{
Convert("Pounds","Kilograms",31938,14500);
}
LOCAL_C VOID PintAndL(VOID)
{
Convert("Pints","Litres",28156,16000);
}
LOCAL_C VOID ChangeNdp(VOID)
{
LONG lndp;
H_DI_NUMBER num;
if (uOpenDialog("Level of significance"))
return;
lndp=ndp;
num.value=(&lndp);
num.low=0;
num.high=4;
if (uAddDialogItem(H_DIALOG_NUMBER,"Decimal places",&num))
return;
if (uRunDialog()<=0)
return;
ndp=(WORD)lndp;
CalcSmall();
}
LOCAL_C VOID SetUpDiDate(H_DI_DATE *pdate,P_DAYSEC *pds)
{
ULONG sdate;
sdate=p_date();
p_sttods(&sdate,pds);
pdate->value=(&pds->day);
pdate->low=0;
pdate->high=H_LAST_DAY;
}
LOCAL_C VOID DayOfWeek(VOID)
{
P_DAYSEC ds;
H_DI_DATE date;
TEXT buf[40];
H_DI_TEXT txt;
SetUpDiDate(&date,&ds);
do
{
p_nmday(&buf[1],p_wkday(ds.day));
buf[0]=p_slen(&buf[1]);
txt.str=(&buf[0]);
txt.type=H_DTEXT_ALIGN_LEFT;
if (uOpenDialog("Find day of week"))
return;
if (uAddDialogItem(H_DIALOG_DATE,"Date",&date))
return;
if (uAddDialogItem(H_DIALOG_TEXT,"Day of week",&txt))
return;
} while (uRunDialog()>0);
}
LOCAL_D TEXT *orient[]=
{
"Rat","Cow","Tiger","Rabbit","Dragon","Snake",
"Horse","Sheep","Monkey","Rooster","Dog","Pig"
};
LOCAL_D TEXT *western[]=
{
"Capricorn","Aquarius","Pisces","Aries","Taurus","Gemini",
"Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius"
};
LOCAL_C INT Zodiac(P_DATE *pdt)
{
INT ret;
LOCAL_D changeover[12]={19,18,19,19,20,20,22,22,22,22,21,20};
ret=pdt->month;
if (pdt->day>changeover[ret])
{
if (ret++==11)
ret=0;
}
return(ret);
}
LOCAL_C VOID Horoscope(VOID)
{
P_DAYSEC ds;
H_DI_DATE date;
P_DATE dt;
INT key;
TEXT buf[40];
SetUpDiDate(&date,&ds);
FOREVER
{
if (uOpenDialog("Horoscope"))
return;
if (uAddDialogItem(H_DIALOG_DATE,"Date of birth",&date))
return;
if (uAddButtonList("Stop",W_KEY_ESCAPE,
"Western",'w',"Oriental",'o',NULL))
return;
key=uRunDialog();
if (key<=0)
return;
p_dstodt(&ds,&dt);
if (key=='o')
p_atos(&buf[0],"Oriental horoscope is %s",orient[dt.year%12]);
else
p_atos(&buf[0],"Western horoscope is %s",western[Zodiac(&dt)]);
wInfoMsg(&buf[0]);
}
}
LOCAL_C INT AddListOfDays(UWORD *pdiw)
{
H_DI_CHOICE ch;
TEXT nam[32];
INT i;
if (uBeginDCL(&ch))
return(-1);
for (i=0; i<7; i++)
{
p_nmday(&nam[0],i);
if (uGrowDCL(&ch,&nam[0]))
return(-1);
}
return(uAddDCL("Day in week",pdiw,&ch));
}
LOCAL_C VOID SetUpTime(H_DI_TIME *ptime,P_DAYSEC *pds)
{
ptime->value=(&pds->sec);
ptime->low=0;
ptime->high=P_NSECDAY-1;
ptime->type=H_DTIME_SHOW_SECONDS;
}
LOCAL_C VOID TimeDifference(VOID)
{
P_DAYSEC ds1;
H_DI_DATE date1;
H_DI_TIME time1;
P_DAYSEC ds2;
H_DI_DATE date2;
H_DI_TIME time2;
LONG diff;
TEXT buf[40];
SetUpDiDate(&date1,&ds1);
SetUpDiDate(&date2,&ds2);
SetUpTime(&time1,&ds1);
SetUpTime(&time2,&ds2);
FOREVER
{
if (uOpenDialog("Time difference"))
return;
if (uAddDialogItem(H_DIALOG_DATE,"From",&date1))
return;
if (uAddDialogItem(H_DIALOG_TIME,"",&time1))
return;
if (uAddDialogItem(H_DIALOG_DATE,"To",&date2))
return;
if (uAddDialogItem(H_DIALOG_TIME,"",&time2))
return;
if (uRunDialog()<=0)
return;
diff=ds2.day-ds1.day;
if (diff<0 || !diff && ds2.sec<ds1.sec)
{
wInfoMsg("`To' date is before `From' date!");
continue;
}
if (diff>0x7fffffffl/P_NSECDAY)
{
wInfoMsg("Dates are too far apart");
continue;
}
p_atos(&buf[0],"Dates are %ld seconds apart",
diff*P_NSECDAY+ds2.sec-ds1.sec);
wInfoMsg(&buf[0]);
}
}
LOCAL_C INT AddNoYesChoiceList(TEXT *pmt,UWORD *pval)
{
return(uAddChoiceList(pmt,pval,"No","Yes",NULL));
}
LOCAL_C VOID TimeNow(VOID)
{
INT values;
H_DI_TEXT txt;
TEXT buf[48];
txt.str=(&buf[0]);
do
{
if (uOpenDialog(NULL))
return;
uZTStoBCS(&buf[0],"Time is now");
txt.type=H_DTEXT_ALIGN_CENTRE;
if (uAddDialogItem(H_DIALOG_TEXT,NULL,&txt))
return;
values=0;
if (ttMonth==2)
values=H_TIME_FORMAT_MONTH_NAME;
if (ttDay==2)
values|=H_TIME_FORMAT_DAY_NAME;
if (ttSuffix==2)
values|=H_TIME_FORMAT_SUFFIX;
if (ttCentury==1)
values|=H_TIME_FORMAT_NO_CENTURY;
if (ttSeconds==1)
values|=H_TIME_FORMAT_NO_SECONDS;
hTTSetFormat(ttH,values);
hTTSetTime(ttH,H_TIME_SET_NOW,NULL);
buf[0]=hTTSenseString(ttH,H_TIME_SENSE_BOTH,&buf[1]);
txt.type=H_DTEXT_ALIGN_CENTRE|H_DTEXT_UNDERLINE;
if (uAddDialogItem(H_DIALOG_TEXT,NULL,&txt))
return;
if (AddNoYesChoiceList("Give month name",&ttMonth))
return;
if (AddNoYesChoiceList("Give day name",&ttDay))
return;
if (AddNoYesChoiceList("Use date suffix",&ttSuffix))
return;
if (AddNoYesChoiceList("Show century",&ttCentury))
return;
if (AddNoYesChoiceList("Show seconds",&ttSeconds))
return;
} while (uRunDialog()>0);
}
LOCAL_C VOID EnterPassword(VOID)
{
TEXT pass1[10];
TEXT pass2[10];
H_DI_XINPUT x1;
H_DI_XINPUT x2;
x1.str=(&pass1[0]);
x2.str=(&pass2[0]);
FOREVER
{
if (uOpenDialog(NULL))
return;
if (uAddDialogItem(H_DIALOG_XINPUT,"Define password",&x1))
return;
if (uAddDialogItem(H_DIALOG_XINPUT,"Confirm password",&x2))
return;
if (uRunDialog()<=0)
return;
if (p_bcmpi(&pass1[1],pass1[0],&pass2[1],pass2[0]))
{
wInfoMsg("Password not confirmed");
continue;
}
if (pass1[0])
break;
wInfoMsg("Please supply password");
}
p_bfil(&pass[0],10,0);
p_bcpy(&pass[0],&pass1[0],pass1[0]+1);
}
LOCAL_C VOID MakeReadable(TEXT *out,TEXT *in)
{
INT len;
INT i;
INT val;
i=32;
len=(*in++);
*out++=len*2;
while (len--)
{
val=(*in++);
*out++=i+(val&0xf);
i+=16;
*out++=i+(val>>4);
if (i==112)
i=32;
else
i+=16;
}
}
LOCAL_C VOID MakeUnreadable(TEXT *out,TEXT *in)
{
INT len;
INT i;
INT val;
i=32;
len=(*in++)/2;
*out++=len;
while (len--)
{
val=(*in++)-i;
i+=16;
val+=((*in++)-i)<<4;
*out++=val;
if (i==112)
i=32;
else
i+=16;
}
}
LOCAL_C VOID Report(TEXT *title,TEXT *mess)
{
H_DI_TEXT txt;
if (uOpenDialog(title))
return;
txt.str=mess;
txt.type=H_DTEXT_ALIGN_CENTRE;
if (uAddDialogItem(H_DIALOG_TEXT,NULL,&txt))
return;
uRunDialog();
}
LOCAL_C VOID EncryptMessage(VOID)
{
P_MASK mask;
H_DI_EDIT ed;
TEXT in[20];
TEXT out[38];
if (!pass[0])
{
wInfoMsg("Can't encrypt with no password set");
return;
}
p_setmask((VOID **)&mask,&pass[1]);
if (uOpenDialog("Encrypt message"))
return;
ed.str=(&in[0]);
ed.len=18;
in[0]=0;
if (uAddDialogItem(H_DIALOG_EDIT,"Message",&ed))
return;
if (uRunDialog()<=0)
return;
p_encrypt(&mask,&in[1],in[0]);
MakeReadable(&out[0],&in[0]);
Report("Encrypted message",&out[0]);
}
LOCAL_C VOID DecryptMessage(VOID)
{
P_MASK mask;
H_DI_SEDIT sed;
TEXT in[38];
TEXT out[20];
if (!pass[0])
{
wInfoMsg("Can't decrypt with no password set");
return;
}
p_setmask((VOID **)&mask,&pass[1]);
if (uOpenDialog("Decrypt message"))
return;
sed.str=(&in[0]);
sed.len=36;
sed.width=16;
in[0]=0;
if (uAddDialogItem(H_DIALOG_SEDIT,"Message",&sed))
return;
if (uRunDialog()<=0)
return;
MakeUnreadable(&out[0],&in[0]);
p_decrypt(&mask,&out[1],out[0]);
Report("Decrypted message",&out[0]);
}
LOCAL_C VOID FileSize(VOID)
{
TEXT fname[P_FNAMESIZE+2];
H_DI_FSEL fsel;
P_INFO info;
TEXT buf[30];
fname[0]=0;
fsel.fname=(&fname[0]);
fsel.flags=H_FILE_PICK_SELECTOR;
FOREVER
{
if (uOpenDialog("Find file size"))
return;
if (uAddDialogItem(H_DIALOG_FSEL,"File:",&fsel))
return;
if (uRunDialog()<=0)
return;
fname[1+fname[0]]=0;
if (!uErrorValue(p_finfo(&fname[1],&info)))
{
p_atos(&buf[0],"File size is %lu bytes",info.size);
wInfoMsg(&buf[0]);
}
}
}
LOCAL_C VOID ManageCommand(INT index)
{
switch (index)
{
case ITEMS_BEFORE_CONVERT:
InchAndCm();
break;
case ITEMS_BEFORE_CONVERT+1:
MileAndKm();
break;
case ITEMS_BEFORE_CONVERT+2:
PoundAndKg();
break;
case ITEMS_BEFORE_CONVERT+3:
PintAndL();
break;
case ITEMS_BEFORE_CONVERT+4:
Temperatures();
break;
case ITEMS_BEFORE_CALENDAR:
DayOfWeek();
break;
case ITEMS_BEFORE_CALENDAR+1:
hOODialog(DylHandle,C_OQD_COMBINS,OQD_DATE_COMBINS,NULL);
break;
case ITEMS_BEFORE_CALENDAR+2:
TimeDifference();
break;
case ITEMS_BEFORE_CALENDAR+3:
Horoscope();
break;
case ITEMS_BEFORE_CALENDAR+4:
TimeNow();
break;
case ITEMS_BEFORE_SECRET:
EnterPassword();
break;
case ITEMS_BEFORE_SECRET+1:
EncryptMessage();
break;
case ITEMS_BEFORE_SECRET+2:
DecryptMessage();
break;
case ITEMS_BEFORE_SPECIAL:
ChangeNdp();
break;
case ITEMS_BEFORE_SPECIAL+1:
FileSize();
break;
case ITEMS_BEFORE_SPECIAL+2:
p_exit(0);
}
}
LOCAL_C VOID TryExecuteCommand(INT keycode)
{
keycode=uLocateCommand(keycode);
if (keycode>=0)
ManageCommand(keycode);
}
LOCAL_C VOID MainLoop(VOID)
{
INT ret;
WMSG_KEY key;
FOREVER
{
uGetKey(&key);
if (key.keycode&W_EVENT_KEY)
{
if (key.keycode==CONS_EVENT_COMMAND)
p_exit(0);
}
else if (key.keycode&W_SPECIAL_KEY)
TryExecuteCommand(key.keycode&(~W_SPECIAL_KEY));
else if (key.keycode==W_KEY_MENU && !(key.modifiers&W_CTRL_MODIFIER))
{
ret=uPresentMenus();
if (ret>0)
TryExecuteCommand(ret);
}
}
}
LOCAL_C VOID ReduceScreenSize(VOID)
{
W_WINDATA wd;
wd.extent.tl.x=wd.extent.tl.y=0;
wd.extent.width=189;
wd.extent.height=80;
wSetWindow(MainWid,W_WIN_EXTENT,&wd);
if (uErrorValue(wCheckPoint()))
p_exit(0);
}
LOCAL_C VOID CreateGC(VOID)
{
INT hgc;
hgc=gCreateGC0(MainWid);
if (hgc<0)
p_exit(hgc);
}
LOCAL_C VOID SpecificInit(VOID)
{
hInitAppRcb();
DylHandle=hLoadOwnDyl(0);
hCrackCommandLine();
MainWid=uFindMainWid();
ReduceScreenSize();
CreateGC();
gBorder(W_BORD_CORNER_4);
wsEnable();
CalcSmall();
ttH=hTTOpen();
}
GLDEF_C VOID main(VOID)
{
uCommonInit();
SpecificInit();
MainLoop();
}
+1
View File
@@ -0,0 +1 @@
oqd.dyl
+17
View File
@@ -0,0 +1,17 @@
#system epoc img
#set epocinit=iplib
#model small jpi
#compile oquery.c
#if %remake #or (oqd.dyl #older oquery.img) #or (oquery.dfl #older oquery.img) #then
#file delete oquery.img
#endif
#pragma link(hwif.lib)
#if (oquery.img #older oquery.afl) #or (oquery.img #older oquery.pic) #then
#file delete oquery.img
#endif
#link oquery.img
+80
View File
@@ -0,0 +1,80 @@
#include <hwim.rg>
#include <hwim.rh>
RESOURCE MENU oqm_daynames
{
items =
{
CHOICE_ITEM { str="Monday";},
CHOICE_ITEM { str="Tuesday";},
CHOICE_ITEM { str="Wednesday";},
CHOICE_ITEM { str="Thursday";},
CHOICE_ITEM { str="Friday";},
CHOICE_ITEM { str="Saturday";},
CHOICE_ITEM { str="Sunday";}
};
}
RESOURCE ACLIST_ARRAY oqa_date_combins
{
button =
{
PUSH_BUT
{
keycode=W_KEY_ESCAPE;
str="Stop";
},
PUSH_BUT
{
keycode=W_KEY_MENU;
str="Backwards";
},
PUSH_BUT
{
keycode=W_KEY_RETURN;
str="Forwards";
}
};
}
RESOURCE DIALOG oqd_date_combins
{
title="Find date combinations";
controls=
{
CONTROL
{
class=C_CHLIST;
prompt="Day in week";
info=CHLIST { rid=oqm_daynames; };
},
CONTROL
{
class=C_NCEDIT;
prompt="Day in month";
info=NCEDIT
{
low=1;
high=31;
};
},
CONTROL
{
class=C_DTEDIT;
prompt="Found date";
info=DTEDIT
{
flags=IN_DTEDIT_DDMMYYYY|IN_DTEDIT_INIT;
low=0;
high=93501l;
};
},
CONTROL
{
class=C_ACLIST;
info=ACLIST { rid=oqa_date_combins; };
}
};
}
RESOURCE STRING oqs_no_further_matches { str="No further matches"; }
+1
View File
@@ -0,0 +1 @@
Query
Binary file not shown.
Binary file not shown.