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
+3
View File
@@ -0,0 +1,3 @@
@echo off
tscx /m notes
tscx /m notes
+631
View File
@@ -0,0 +1,631 @@
/* NOCOMMAN.C */
#include <notes.g>
#include <notes.rsg>
#include <hwim.h>
#include <scrimg.g>
#include <s_.rsg>
#include "nolayout.h"
#include "notes.def"
GLREF_D PR_HWIMMAN *w_am;
GLREF_D PR_WSERV *w_ws;
GLREF_D WSERV_SPEC *wserv_channel;
GLREF_D PR_VAFLAT *DatApp1;
GLREF_D PR_NOCOMMAN *DatApp2;
GLREF_D PR_EDWIN *DatApp3;
GLREF_D NOTE *DatApp4;
GLDEF_D LAYOUT_DATA ld;
LOCAL_C VOID RotateStatusWindow(VOID)
{
P_EXTENT ext;
if (ld.Version4)
{
if (!ld.StatusWindow--)
ld.StatusWindow=W_STATUS_WINDOW_BIG;
wStatusWindow(ld.StatusWindow);
wInquireStatusWindow(-1,&ext);
ld.StatusWindowWidth=ext.width;
}
else
{
if (ld.StatusWindow^=TRUE)
{
wsEnable();
ld.StatusWindowWidth=WS_WIDTH;
}
else
{
wsDisable();
ld.StatusWindowWidth=0;
}
}
}
LOCAL_C VOID InitStatusWindow(VOID)
{
if (ld.Version4)
wsSetList(W_STATUS_WINDOW_ICON,NULL,0);
RotateStatusWindow();
}
LOCAL_C VOID GetFontHeightData(VOID)
{
G_FONT_INFO font;
gFontInfo(WS_FONT_SYSTEM,0,&font);
ld.FontHeight=font.height;
ld.FontAscent=font.ascent;
}
LOCAL_C VOID CreateTextWindows(PR_NOCOMMAN *self)
{
self->nocomman.tagwin=f_new(CAT_NOTES_NOTES,C_NOTAGWIN);
self->nocomman.cntwin=f_new(CAT_NOTES_NOTES,C_NOCNTWIN);
}
LOCAL_C VOID InitTextWindow(VOID *win,INT x,INT y,INT width)
{
W_WINDATA wd;
wd.background=W_WIN_BACK_NONE;
wd.extent.tl.x=x;
wd.extent.tl.y=y+EDGE_TLY;
wd.extent.width=width;
wd.extent.height=ld.FontHeight+2;
p_send5(win,O_WN_CONNECT,NULL,W_WIN_BACKGROUND|W_WIN_EXTENT,&wd);
hInitVis(win);
}
LOCAL_C VOID MoveWindowLeft(INT wid,INT change)
{
W_WINDATA wd;
wInquireWindow(wid,&wd);
wd.extent.tl.x+=change;
wSetWindow(wid,W_WIN_EXTENT,&wd);
}
LOCAL_C UINT CalculateYValues(UWORD *py1,UWORD *py2)
{
UWORD NumLines;
UWORD LineHeight;
UWORD spare;
LineHeight=ld.FontHeight+2;
NumLines=(ld.ScreenHeight-REQD_EDGE_PIXELS)/LineHeight;
spare=ld.ScreenHeight-REQD_EDGE_PIXELS-LineHeight*NumLines;
spare>>=1; /* excess goes to second "spare" region */
*py1=EDGE_HEIGHT+LineHeight+BASIC_GAP_BETWEEN_WINDOWS+spare;
*py2=ld.ScreenHeight-(EDGE_HEIGHT+LineHeight);
return(NumLines-2);
}
LOCAL_C VOID SetupInEdwin(IN_EDWIN *pInit,INT delx,INT flags,INT maxlen)
{
pInit->vulen=ld.ScreenWidth-ld.StatusWindowWidth-delx;
pInit->flags=flags;
pInit->maxlen=maxlen;
pInit->contents[0]=0;
}
LOCAL_C PR_NOWIN *CreateNowin(INT class,IN_EDWIN *pIned,IN_EDWIN_X *pIX)
{
PR_NOWIN *nowin;
nowin=f_newsend(CAT_NOTES_NOTES,class,O_WN_INIT,pIned,pIX);
hInitVis(nowin);
return(nowin);
}
#define EDWIN_FLGS (IN_EDWIN_VULEN_PIXELS|IN_EDWIN_POSITION_SUPPLIED)
LOCAL_C VOID InitialiseWindows(PR_NOCOMMAN *self)
{
UWORD x1,x2;
UWORD y1,y2;
UWORD NumNotesLines;
IN_EDWIN ined;
IN_EDWIN_X inedx;
CreateTextWindows(self);
x1=p_send2(self->nocomman.tagwin,O_WN_SENSE);
x2=p_send2(self->nocomman.cntwin,O_WN_SENSE);
NumNotesLines=CalculateYValues(&y1,&y2);
SetupInEdwin(&ined,x1,EDWIN_FLGS|IN_EDWIN_FONT_SUPPLIED,40);
inedx.pos.x=x1;
inedx.pos.y=0;
if (ld.Version4)
{
inedx.font=WS_FONT_SYSTEM;
inedx.style=G_STY_BOLD;
}
else
{
inedx.font=WS_FONT_BASE+1;
inedx.style=G_STY_NORMAL;
}
self->nocomman.edit[0]=CreateNowin(C_NOTITWIN,&ined,&inedx);
SetupInEdwin(&ined,0,EDWIN_FLGS|IN_EDWIN_VISLINES_SUPPLIED|
IN_EDWIN_LEFT_CURSOR|IN_EDWIN_CLIPBOARD,512);
inedx.pos.x=0;
inedx.pos.y=y1;
inedx.vislines=NumNotesLines;
inedx.clip=NULL;
self->nocomman.edit[1]=CreateNowin(C_NOWIN,&ined,&inedx);
SetupInEdwin(&ined,x2,EDWIN_FLGS,20);
inedx.pos.x=0;
inedx.pos.y=y2;
self->nocomman.edit[2]=CreateNowin(C_NOFNDWIN,&ined,&inedx);
InitTextWindow(self->nocomman.tagwin,0,0,x1);
InitTextWindow(self->nocomman.cntwin,
ld.ScreenWidth-ld.StatusWindowWidth-x2,y2,x2);
}
LOCAL_C VOID InitialiseLayout(PR_NOCOMMAN *self)
{
ld.Version4=
((wserv_channel->conn.info.version_id&WS_VERSION_MASK) >= WS_VERSION_4);
InitStatusWindow();
ld.ScreenWidth=wserv_channel->conn.info.pixels.x;
ld.ScreenHeight=wserv_channel->conn.info.pixels.y;
GetFontHeightData();
InitialiseWindows(self);
DatApp3=self->nocomman.edit[NOTES_WINDOW]->nowin.edwin;
}
LOCAL_C VOID FocusTo(PR_NOCOMMAN *self,INT which)
{
if (w_ws->wserv.cli)
p_send3(w_ws->wserv.cli,O_WN_EMPHASISE,FALSE);
self->nocomman.which=which;
w_ws->wserv.cli=(PR_WIN *)self->nocomman.edit[which];
p_send3(w_ws->wserv.cli,O_WN_EMPHASISE,TRUE);
}
LOCAL_C VOID FocusToWithCheck(PR_NOCOMMAN *self,INT which)
{
if (which==self->nocomman.which)
return;
FocusTo(self,which);
}
LOCAL_C VOID RecordChange(PR_NOWIN *win,LENBUF *lb)
{
PR_EDWIN *edwin;
SE_EDWIN sense;
edwin=win->nowin.edwin;
if (!(edwin->edwin.change))
return;
p_send3(edwin,O_WN_SENSE,&sense);
lb->buf=f_realloc(lb->buf,sense.len);
lb->len=sense.len;
p_bcpy(lb->buf,sense.buf,sense.len);
edwin->edwin.change=FALSE;
}
LOCAL_C VOID RecordAnyChanges(PR_NOCOMMAN *self)
{
RecordChange(self->nocomman.edit[TITLE_WINDOW],&DatApp4->title);
RecordChange(self->nocomman.edit[NOTES_WINDOW],&DatApp4->note);
}
LOCAL_C VOID SetCurrentNote(PR_NOCOMMAN *self)
{
DatApp4=ePointToNote(self->nocomman.where);
}
LOCAL_C VOID LoadEditor(PR_NOWIN *win,LENBUF *lb)
{
PR_EDWIN *edwin;
SE_EDWIN set;
edwin=win->nowin.edwin;
set.buf=lb->buf;
set.len=lb->len;
p_send3(edwin,O_WN_SET,&set);
edwin->edwin.change=FALSE;
}
LOCAL_C VOID LoadTagStatus(PR_NOCOMMAN *self)
{
p_send3(self->nocomman.tagwin,O_WN_SET,DatApp4->tagged);
}
LOCAL_C VOID LoadWhereAndCount(PR_NOCOMMAN *self)
{
p_send4(self->nocomman.cntwin,
O_WN_SET,self->nocomman.where+1,DatApp1->varoot.nrec);
}
LOCAL_C VOID LoadWindows(PR_NOCOMMAN *self)
{
LoadEditor(self->nocomman.edit[TITLE_WINDOW],&DatApp4->title);
LoadEditor(self->nocomman.edit[NOTES_WINDOW],&DatApp4->note);
LoadWhereAndCount(self);
LoadTagStatus(self);
}
LOCAL_C VOID CheckEditing(PR_NOCOMMAN *self)
{
if (self->nocomman.which==NOTES_WINDOW)
return;
hInfoPrint(NOSTR_ONLY_IN_NOTES);
p_leave(RUN_ACTIVE_USED);
}
LOCAL_C VOID GiveTagCount(VOID)
{
hInfoPrint(NOSTR_TAG_COUNT,eCountTaggedNotes());
}
LOCAL_C INT RunDialog(INT class,INT resid,VOID *rbuf)
{
DL_DATA dd;
dd.id=resid;
dd.rbuf=rbuf;
dd.pdlg=NULL;
return(hLaunchDial(CAT_NOTES_NOTES,class,&dd));
}
LOCAL_C VOID TagCurrentNote(INT clear)
{
DatApp4->tagged=(!clear);
}
LOCAL_C VOID SetTo(PR_NOCOMMAN *self,INT where)
{
self->nocomman.where=where;
SetCurrentNote(self);
LoadWindows(self);
}
LOCAL_C VOID WinEmphasise(PR_NOCOMMAN *self,INT which,INT state)
{
p_send3(self->nocomman.edit[which]->nowin.edwin,O_WN_EMPHASISE,state);
}
LOCAL_C VOID SetCursorWidth(PR_NOCOMMAN *self,INT which,INT width)
{
PR_EDWIN *edwin;
SCRIMG_WIN win;
edwin=self->nocomman.edit[which]->nowin.edwin;
p_send3(edwin->edwin.scrimg,O_SI_SENSE,&win);
win.cwidth=width;
p_send4(edwin->edwin.scrimg,O_SI_SET,&win,NULL);
}
LOCAL_C VOID SetEdwinSelect(PR_NOCOMMAN *self,INT which,INT aoff,INT coff)
{
SET_EDWIN set;
set.flags=SET_EDWIN_CURSOR|SET_EDWIN_ANCHOR;
set.anchor=aoff;
set.cursor=coff;
p_send3(self->nocomman.edit[which]->nowin.edwin,O_EW_SET,&set);
}
LOCAL_C VOID DrawImmediately(PR_WIN *win)
{
p_send2(win,O_WN_DODRAW);
}
LOCAL_C VOID Search(PR_NOCOMMAN *self,LENBUF *lb,INT here,INT which)
{
INT ind;
if (self->nocomman.casesens)
ind=p_bsub(lb->buf,lb->len,
self->nocomman.pattern.buf,self->nocomman.pattern.len);
else
ind=p_bsubi(lb->buf,lb->len,
self->nocomman.pattern.buf,self->nocomman.pattern.len);
if (ind<0)
return;
if (here!=self->nocomman.where)
SetTo(self,here);
if (self->nocomman.pattern.len)
{
if (which!=self->nocomman.which)
{
WinEmphasise(self,self->nocomman.which,FALSE);
SetCursorWidth(self,which,0);
WinEmphasise(self,which,TRUE);
}
SetEdwinSelect(self,which,ind,ind+self->nocomman.pattern.len);
if (which!=self->nocomman.which)
{
DrawImmediately((PR_WIN *)self->nocomman.cntwin);
DrawImmediately((PR_WIN *)self->nocomman.tagwin);
wFlush();
p_sleep(5L);
WinEmphasise(self,which,FALSE);
SetCursorWidth(self,which,2);
WinEmphasise(self,self->nocomman.which,TRUE);
}
}
p_leave(RUN_ACTIVE_USED);
}
LOCAL_C VOID DoSearch(PR_NOCOMMAN *self,INT here,INT direction)
{
PR_EDWIN *edwin;
INT k;
INT count;
NOTE *pn;
RecordAnyChanges(self);
edwin=self->nocomman.edit[FIND_WINDOW]->nowin.edwin;
p_send3(edwin,O_WN_SENSE,&self->nocomman.pattern);
edwin->edwin.change=FALSE;
k=DatApp1->varoot.nrec;
count=k-1;
while (k--)
{
here+=direction;
if (here<0)
here=count;
else if (here>count)
here=0;
pn=ePointToNote(here);
if (self->nocomman.findtype!=FIND_NOTES_ONLY)
Search(self,&pn->title,here,TITLE_WINDOW);
if (self->nocomman.findtype!=FIND_TITLE_ONLY)
Search(self,&pn->note,here,NOTES_WINDOW);
}
hInfoPrint(NOSTR_NOT_FOUND);
}
LOCAL_C INT EdwinChanged(PR_NOCOMMAN *self,INT which)
{
return(self->nocomman.edit[which]->nowin.edwin->edwin.change);
}
LOCAL_C VOID CheckIfChanged(PR_NOCOMMAN *self)
{
if (EdwinChanged(self,TITLE_WINDOW))
return;
if (EdwinChanged(self,NOTES_WINDOW))
return;
hInfoPrint(NOSTR_NOT_CHANGED);
p_leave(RUN_ACTIVE_USED);
}
LOCAL_C WORD GetLinkableData(ULONG *pFmt)
{
return(p_send3(w_am->appman.system,O_SY_LINK_PASTE,pFmt));
}
#pragma METHOD_CALL
METHOD VOID nocomman_com_init(PR_NOCOMMAN *self)
{
DatApp2=self;
eInitialiseEngine();
SetCurrentNote(self);
InitialiseLayout(self);
LoadWhereAndCount(self);
FocusTo(self,TITLE_WINDOW);
InitLinkServer();
}
METHOD VOID nocomman_com_statwin(PR_NOCOMMAN *self)
{
INT change;
INT i;
change=ld.StatusWindowWidth;
RotateStatusWindow();
change-=ld.StatusWindowWidth;
for (i=0; i<3; i++)
p_send3(self->nocomman.edit[i],O_NW_INCREASE_WIDTH,change);
MoveWindowLeft(self->nocomman.cntwin->win.id,change);
}
METHOD VOID nocomman_com_exit(VOID)
{
p_exit(0);
}
METHOD VOID nocomman_ncon_new(PR_NOCOMMAN *self)
{
RecordAnyChanges(self);
self->nocomman.where=eAppendNullEntry();
SetCurrentNote(self);
LoadWindows(self);
FocusToWithCheck(self,TITLE_WINDOW);
}
METHOD VOID nocomman_ncon_insert(PR_NOCOMMAN *self)
{
RecordAnyChanges(self);
if (!self->nocomman.clip.title.len && !self->nocomman.clip.note.len)
{
hInfoPrint(NOSTR_NO_NOTE_INSERTED);
return;
}
self->nocomman.where=eAppendNullEntry();
SetCurrentNote(self);
eTakeCopy(DatApp4,&self->nocomman.clip);
LoadWindows(self);
}
METHOD VOID nocomman_ncon_copy(PR_NOCOMMAN *self)
{
NOTE new;
RecordAnyChanges(self);
if (!DatApp4->title.len && !DatApp4->note.len)
{
hInfoPrint(NOSTR_NO_NOTE_COPIED);
return;
}
eTakeCopy(&new,DatApp4);
eZeroNote(&self->nocomman.clip);
self->nocomman.clip=new;
hInfoPrint(NOSTR_NOTE_COPIED);
}
METHOD VOID nocomman_ncon_delete(PR_NOCOMMAN *self)
{
if (!hConfirm(NOSTR_DELETE_NOTE))
return;
self->nocomman.where=eDeleteNote(self->nocomman.where);
SetCurrentNote(self);
LoadWindows(self);
}
METHOD VOID nocomman_ncon_record(PR_NOCOMMAN *self)
{
CheckIfChanged(self);
RecordAnyChanges(self);
hInfoPrint(NOSTR_NOTE_RECORDED);
}
METHOD VOID nocomman_ncon_undo(PR_NOCOMMAN *self)
{
CheckIfChanged(self);
if (hConfirm(NOSTR_UNDO_EDITING))
LoadWindows(self);
}
METHOD VOID nocomman_ncoe_insert(PR_NOCOMMAN *self)
{
CheckEditing(self);
if (!(p_send2(DatApp3,O_EW_PASTE_CLIP)))
hInfoPrint(NOSTR_NO_TEXT_INSERTED);
}
METHOD VOID nocomman_ncoe_copy(PR_NOCOMMAN *self)
{
CheckEditing(self);
if (!(p_send2(DatApp3,O_EW_REPLACE_CLIP)))
hInfoPrint(NOSTR_NO_TEXT_COPIED);
else
hInfoPrint(NOSTR_TEXT_COPIED);
}
METHOD VOID nocomman_ncoe_bring(PR_NOCOMMAN *self)
{
INT lkpid;
ULONG lkfmt;
CheckEditing(self);
lkpid=p_send3(w_am->appman.system,O_SY_LINK_PASTE,&lkfmt);
if (!lkpid || !(lkfmt & (1<<DF_LINK_TEXT)))
{
hInfoPrint(-SYS_NOTHING_TO_BRING);
return;
}
p_send4(DatApp3,O_EW_BRING_IN,lkpid,1<<DF_LINK_TEXT);
}
METHOD VOID nocomman_ncoe_evaluate(PR_NOCOMMAN *self)
{
CheckEditing(self);
p_send2(DatApp3,O_EW_EVALUATE);
}
METHOD VOID nocomman_ncow_title(PR_NOCOMMAN *self,INT commid)
{
commid-=O_NCOW_TITLE;
FocusToWithCheck(self,commid);
}
METHOD VOID nocomman_ncox_psetup(VOID)
{
p_send2(w_ws,O_WS_EDIT_PRINT_CONTEXT);
}
METHOD VOID nocomman_nco_switch_focus(PR_NOCOMMAN *self,INT mods)
{
INT which;
which=self->nocomman.which;
if (mods&W_SHIFT_MODIFIER)
{
if (!which--)
which=FIND_WINDOW;
}
else if (which++==FIND_WINDOW)
which=TITLE_WINDOW;
FocusTo(self,which);
}
METHOD VOID nocomman_ncot_set(PR_NOCOMMAN *self,INT commid)
{
if (commid>=O_NCOT_SET_ALL)
eTagAllNotes(commid-O_NCOT_SET_ALL);
else
TagCurrentNote(commid-O_NCOT_SET);
LoadTagStatus(self);
GiveTagCount();
}
METHOD VOID nocomman_ncox_goto(PR_NOCOMMAN *self)
{
UWORD where;
where=self->nocomman.where;
if (!RunDialog(C_NODL_GOTO,NODL_GOTO,&where))
return;
if (where==self->nocomman.where)
return;
RecordAnyChanges(self);
SetTo(self,where);
}
METHOD VOID nocomman_ncox_moveto(PR_NOCOMMAN *self)
{
UWORD where;
where=0;
if (!RunDialog(C_NODL_GOTO,NODL_MOVETO,&where))
return;
if (where==self->nocomman.where)
return;
RecordAnyChanges(self);
eMoveNoteTo(where,self->nocomman.where);
SetTo(self,where);
}
METHOD VOID nocomman_ncos_options(PR_NOCOMMAN *self)
{
RunDialog(C_NODL_OPTIONS,NODL_OPTIONS,NULL);
}
METHOD VOID nocomman_nco_quick_find(PR_NOCOMMAN *self,INT dir)
{
INT here;
here=EdwinChanged(self,FIND_WINDOW)?
DatApp1->varoot.nrec: self->nocomman.where;
DoSearch(self,here,dir);
}
METHOD VOID nocomman_ncos_forwards(PR_NOCOMMAN *self)
{
DoSearch(self,self->nocomman.where,+1);
}
METHOD VOID nocomman_ncos_backwards(PR_NOCOMMAN *self)
{
DoSearch(self,self->nocomman.where,-1);
}
METHOD VOID nocomman_ncos_first(PR_NOCOMMAN *self)
{
DoSearch(self,DatApp1->varoot.nrec,+1);
}
METHOD VOID nocomman_ncos_last(PR_NOCOMMAN *self)
{
DoSearch(self,DatApp1->varoot.nrec,-1);
}
+42
View File
@@ -0,0 +1,42 @@
/* NODLGS.C */
#include <notes.g>
#include <ncedit.g>
#include <hwim.h>
GLREF_D PR_VAFLAT *DatApp1;
GLREF_D PR_NOCOMMAN *DatApp2;
#pragma METHOD_CALL
METHOD VOID nodl_goto_dl_dyn_init(PR_DLGBOX *self)
{
SE_NCEDIT set;
set.high=DatApp1->varoot.nrec;
set.value=(*(UWORD *)self->dlgbox.rbuf)+1;
set.flags=SE_NCEDIT_VALUE|SE_NCEDIT_HIGH;
hDlgSet(1,&set);
}
METHOD INT nodl_goto_dl_key(PR_DLGBOX *self)
{
*(UWORD *)self->dlgbox.rbuf=hDlgSenseNcedit(1)-1;
return(WN_KEY_CHANGED);
}
#define NODL_OPTIONS_CASESENS 1
#define NODL_OPTIONS_FINDTYPE 2
METHOD VOID nodl_options_dl_dyn_init(PR_DLGBOX *self)
{
hDlgSetChlist(NODL_OPTIONS_CASESENS,DatApp2->nocomman.casesens);
hDlgSetChlist(NODL_OPTIONS_FINDTYPE,DatApp2->nocomman.findtype);
}
METHOD INT nodl_options_dl_key(PR_DLGBOX *self)
{
DatApp2->nocomman.casesens=hDlgSenseChlist(NODL_OPTIONS_CASESENS);
DatApp2->nocomman.findtype=hDlgSenseChlist(NODL_OPTIONS_FINDTYPE);
return(WN_KEY_CHANGED);
}
+130
View File
@@ -0,0 +1,130 @@
/* NOENGINE.C */
#include <notes.g>
#include <notes.rsg>
#include <hwim.h>
GLREF_D PR_VAFLAT *DatApp1;
GLDEF_C NOTE *ePointToNote(INT pos)
{
return((NOTE *)p_send3(DatApp1,O_VA_PREC,pos));
}
GLDEF_C INT eAppendNullEntry(VOID)
{
NOTE note;
if (DatApp1->varoot.nrec==MAX_NUMBER_NOTES)
{
hInfoPrint(NOSTR_MAX_NUMBER_NOTES);
p_leave(RUN_ACTIVE_CLEANUP_NONOTIFY);
}
p_bfil(&note,sizeof(NOTE),0);
p_send3(DatApp1,O_VA_APPEND,&note);
return(DatApp1->varoot.nrec-1);
}
LOCAL_C VOID ZeroLenBuf(LENBUF *lb)
{
p_free(lb->buf);
lb->buf=NULL;
lb->len=0;
}
GLDEF_C VOID eZeroNote(NOTE *pn)
{
ZeroLenBuf(&pn->title);
ZeroLenBuf(&pn->note);
pn->tagged=FALSE;
}
GLDEF_C INT eDeleteNote(INT pos)
{
if (DatApp1->varoot.nrec==1)
{
eZeroNote(ePointToNote(0));
return(0);
}
p_send3(DatApp1,O_VA_DELETE,pos);
p_send(DatApp1,O_VA_COMPRESS);
if (pos==DatApp1->varoot.nrec)
pos--;
return(pos);
}
GLDEF_C VOID eInitialiseEngine(VOID)
{
DatApp1=f_newsend(CAT_NOTES_OLIB,C_VAFLAT,O_VA_INIT,sizeof(NOTE),4);
eAppendNullEntry();
}
GLDEF_C INT eCountTaggedNotes(VOID)
{
INT ret;
INT i;
NOTE *pn;
ret=0;
pn=ePointToNote(0);
i=DatApp1->varoot.nrec;
while (i--)
{
if (pn->tagged)
ret++;
pn++;
}
return(ret);
}
GLDEF_C VOID eTagAllNotes(INT clear)
{
INT set;
INT i;
NOTE *pn;
set=(!clear);
pn=ePointToNote(0);
i=DatApp1->varoot.nrec;
while (i--)
{
pn->tagged=set;
pn++;
}
}
#pragma save,ENTER_CALL
LOCAL_C INT TakeCopyLenBuf(LENBUF *targ,LENBUF *src)
{
targ->buf=f_alloc(src->len);
p_bcpy(targ->buf,src->buf,src->len);
targ->len=src->len;
return(0);
}
#pragma restore
GLDEF_C VOID eTakeCopy(NOTE *targ,NOTE *src)
{
INT ret;
TakeCopyLenBuf(&targ->title,&src->title);
ret=p_enter3(TakeCopyLenBuf,&targ->note,&src->note);
if (ret)
{
p_free(targ->title.buf);
targ->title.buf=0;
p_leave(ret);
}
targ->tagged=src->tagged;
}
GLDEF_C VOID eMoveNoteTo(INT newpos,INT pos)
{
NOTE moving;
moving=*ePointToNote(pos);
p_send3(DatApp1,O_VA_DELETE,pos);
p_send4(DatApp1,O_VA_INSERT,newpos,&moving);
}
+26
View File
@@ -0,0 +1,26 @@
/* NOLAYOUT.H */
typedef struct
{
UBYTE Version4;
UBYTE StatusWindow;
UWORD StatusWindowWidth;
UWORD ScreenWidth;
UWORD ScreenHeight;
UWORD FontHeight;
UWORD FontAscent;
} LAYOUT_DATA;
#define DOUBLE_SHADOW_WIDTH 2
#define EDGE_TLX 5
#define EDGE_TLY 2
#define EDGE_BRX (EDGE_TLX+DOUBLE_SHADOW_WIDTH)
#define EDGE_BRY (EDGE_TLY+DOUBLE_SHADOW_WIDTH)
#define EDGE_WIDTH (EDGE_TLX+EDGE_BRX)
#define EDGE_HEIGHT (EDGE_TLY+EDGE_BRY)
#define BASIC_GAP_BETWEEN_WINDOWS 1
#define REQD_EDGE_PIXELS (3*EDGE_HEIGHT+2*BASIC_GAP_BETWEEN_WINDOWS)
#define TEXT_WINDOW_EDGE_WIDTH 3
+38
View File
@@ -0,0 +1,38 @@
/* NOLINKSV.C */
#include <notes.g>
#include <hwim.h>
GLREF_D PR_EDWIN *DatApp3;
GLDEF_C VOID InitLinkServer(VOID)
{
f_newsend(CAT_NOTES_NOTES,C_NOLINKSV,O_SV_INIT);
}
LOCAL_C VOID DestroyLinker(PR_NOLINKSV *self)
{
hDestroy(self->nolinksv.ewls);
self->nolinksv.ewls=NULL;
}
#pragma METHOD_CALL
METHOD VOID nolinksv_ls_set_format(PR_NOLINKSV *self,INT type)
{
DestroyLinker(self);
self->nolinksv.ewls=f_newsend(CAT_NOTES_HWIM,C_EWLINKSV,
O_EWLS_INIT,DatApp3,type);
}
METHOD INT nolinksv_ls_get_data(PR_NOLINKSV *self,INT len)
{
if (len>0)
{
if (((INT)(self->linksv.len=p_send4(self->nolinksv.ewls,
O_EWLS_EXTRACT,&self->linksv.buf,len)))>=0)
return(TRUE);
}
DestroyLinker(self);
return(FALSE);
}
+20
View File
@@ -0,0 +1,20 @@
/* NOMAIN.C */
#include <notes.g>
#define APPMAN_FLGS (FLG_APPMAN_RSCFILE|FLG_APPMAN_SRSCFILE|FLG_APPMAN_CLEAN)
GLDEF_C VOID main(VOID)
{
IN_HWIMMAN app;
IN_WSERV wserv;
p_linklib(0);
app.flags=APPMAN_FLGS|FLG_APPMAN_LINKING|FLG_APPMAN_IPCS|
FLG_APPMAN_FULLSCREEN;
wserv.com_cat=app.wserv_cat=p_getlibh(CAT_NOTES_NOTES);
app.wserv_class=C_NOWSERV;
wserv.com_class=C_NOCOMMAN;
p_send4(p_new(CAT_NOTES_HWIM,C_HWIMMAN),O_AM_INIT,&app,&wserv);
}
+3
View File
@@ -0,0 +1,3 @@
notes.pic
notes.rsc
notes.shd
+165
View File
@@ -0,0 +1,165 @@
IMAGE notes
EXTERNAL olib
EXTERNAL hwim
INCLUDE hwimman.g
INCLUDE edwin.g
INCLUDE ipc.g
CLASS nowin bwin
{
REPLACE wn_key
REPLACE wn_emphasise
REPLACE wn_draw
REPLACE wn_init
ADD nw_increase_width
ADD nw_init=p_dummy
PROPERTY 1
{
PR_EDWIN *edwin;
}
}
CLASS notitwin nowin
{
REPLACE wn_key
}
CLASS nofndwin nowin
{
REPLACE destroy
REPLACE wn_draw
REPLACE wn_key
REPLACE nw_init
PROPERTY
{
TEXT *prompt;
UWORD len;
UWORD x;
UWORD y;
}
}
CLASS notagwin win
{
REPLACE wn_set
REPLACE wn_sense
REPLACE wn_draw
PROPERTY
{
UWORD on;
}
}
CLASS nocntwin win
{
REPLACE wn_set
REPLACE wn_sense
REPLACE wn_draw
PROPERTY
{
UWORD val;
UWORD max;
}
}
CLASS nocomman comman
{
REPLACE com_init
REPLACE com_statwin
REPLACE com_exit
ADD ncon_new
ADD ncon_insert
ADD ncon_copy
ADD ncon_delete
ADD ncon_record
ADD ncon_undo
ADD ncoe_insert
ADD ncoe_copy
ADD ncoe_bring
ADD ncoe_evaluate
ADD ncoe_sum=p_dummy
ADD ncow_title
ADD ncow_notes=nocomman_ncow_title
ADD ncow_find=nocomman_ncow_title
ADD ncos_options
ADD ncos_forwards
ADD ncos_backwards
ADD ncos_first
ADD ncos_last
ADD ncot_set
ADD ncot_clear=nocomman_ncot_set
ADD ncot_set_all=nocomman_ncot_set
ADD ncot_clear_all=nocomman_ncot_set
ADD ncox_goto
ADD ncox_moveto
ADD ncox_symbols=p_dummy
ADD ncox_psetup
ADD ncox_print=p_dummy
ADD nco_switch_focus
ADD nco_quick_find
TYPES
{
typedef struct
{
UBYTE len;
TEXT *buf;
} LENBUF;
typedef struct
{
LENBUF title;
LENBUF note;
UWORD tagged;
} NOTE;
}
CONSTANTS
{
TITLE_WINDOW 0
NOTES_WINDOW 1
FIND_WINDOW 2
MAX_NUMBER_NOTES 99
FIND_NOTES_ONLY 0
FIND_TITLE_ONLY 1
FIND_EITHER_WIN 2
}
PROPERTY
{
PR_NOWIN *edit[3];
UWORD which;
PR_NOTAGWIN *tagwin;
PR_NOCNTWIN *cntwin;
WORD where;
UBYTE casesens;
UBYTE findtype;
NOTE clip;
SE_EDWIN pattern;
}
}
CLASS nowserv wserv
{
REPLACE ws_background
}
CLASS nolinksv linksv
{
REPLACE ls_set_format
REPLACE ls_get_data
PROPERTY
{
PR_EWLINKSV *ewls;
}
}
CLASS nodl_goto dlgbox
{
REPLACE dl_dyn_init
REPLACE dl_key
}
CLASS nodl_options dlgbox
{
REPLACE dl_dyn_init
REPLACE dl_key
}
+12
View File
@@ -0,0 +1,12 @@
GLREF_C NOTE *ePointToNote(INT pos);
GLREF_C INT eAppendNullEntry(VOID);
GLREF_C VOID eZeroNote(NOTE *pn);
GLREF_C INT eDeleteNote(INT pos);
GLREF_C VOID eInitialiseEngine(VOID);
GLREF_C INT eCountTaggedNotes(VOID);
GLREF_C VOID eTagAllNotes(INT clear);
GLREF_C VOID eTagCurrentNote(INT clear);
GLREF_C VOID eTakeCopy(NOTE *targ,NOTE *src);
GLREF_C VOID eMoveNoteTo(INT newpos,INT pos);
GLREF_C VOID InitLinkServer(VOID);
+3
View File
@@ -0,0 +1,3 @@
Notes
5000
+2
View File
@@ -0,0 +1,2 @@
notes1.pic
notes2.pic
+45
View File
@@ -0,0 +1,45 @@
#system epoc img
#set epocinit=iplib
#model small jpi
#compile notes.cat
#if %remake #or (notes.rg #older notes.re) #or (notes.rg #older notes.g) #then
#run "re notes" no_window no_abort
#endif
#if (notes.rsg #older notes.rss) #or (notes.rsg #older notes.rg) #then
#file delete notes.rsg
#run "rs notes" no_window no_abort
#endif
#if notes.rzc #older notes.rsg #then
#run "rch notes" no_window no_abort
#file delete notes.img
#endif
#compile nocomman.c
#compile nodlgs.c
#compile noengine.c
#compile nolinksv.c
#compile nomain.c
#compile nowin.c
#compile nowserv.c
#if (notes.pic #older notes1.pic) #or (notes.pic #older notes2.pic) #then
#run "wspcx -l notes" no_window no_abort
#file delete notes.img
#endif
#if notes.shd #older notes.ms #then
#run "makeshd notes" no_window no_abort
#file delete notes.img
#endif
#if (notes.img #older notes.afl) #or (notes.img #older notes.pic) #then
#file delete notes.img
#endif
#pragma link(hwim.lib)
#link notes.img
+31
View File
@@ -0,0 +1,31 @@
#include <notes.g>
_O_COM_EXIT
_O_NCON_NEW
_O_NCON_INSERT
_O_NCON_COPY
_O_NCON_DELETE
_O_NCON_RECORD
_O_NCON_UNDO
_O_NCOE_INSERT
_O_NCOE_COPY
_O_NCOE_BRING
_O_NCOE_EVALUATE
_O_NCOE_SUM
_O_NCOW_TITLE
_O_NCOW_NOTES
_O_NCOW_FIND
_O_NCOS_OPTIONS
_O_NCOS_FORWARDS
_O_NCOS_BACKWARDS
_O_NCOS_FIRST
_O_NCOS_LAST
_O_NCOT_SET
_O_NCOT_CLEAR
_O_NCOT_SET_ALL
_O_NCOT_CLEAR_ALL
_O_NCOX_GOTO
_O_NCOX_MOVETO
_O_NCOX_SYMBOLS
_O_NCOX_PSETUP
_O_NCOX_PRINT
+330
View File
@@ -0,0 +1,330 @@
/* NOTES.RSS */
#include <hwim.rh>
#include <hwim.rg>
#include <notes.rg>
#include <s_.h>
RESOURCE WSERV_INFO notes_accs
{
menbar_id=notes_menubar;
first_com=O_COM_EXIT;
accel={'x',
'a','j','k','d','r','u',
'i','c','b','e','z',
't','n','f',
'o','s','w','q','l',
'+','-','*','/',
'g','m','h','y','p'};
}
RESOURCE MENU_BAR notes_menubar
{
items =
{
MENU_BAR_ITEM
{
menu_id=notes_menu;
mb_item="Notes";
},
MENU_BAR_ITEM
{
menu_id=edit_menu;
mb_item="Edit";
},
MENU_BAR_ITEM
{
menu_id=windows_menu;
mb_item="Windows";
},
MENU_BAR_ITEM
{
menu_id=search_menu;
mb_item="Search";
},
MENU_BAR_ITEM
{
menu_id=tag_menu;
mb_item="Tag";
},
MENU_BAR_ITEM
{
menu_id=special_menu;
mb_item="Special";
}
};
}
RESOURCE MENU notes_menu
{
items =
{
MENU_ITEM
{
com_id=O_NCON_NEW;
mn_item="New note";
},
MENU_ITEM
{
com_id=O_NCON_INSERT;
mn_item="Insert note";
},
MENU_ITEM
{
com_id=O_NCON_COPY;
mn_item="Copy note";
},
MENU_ITEM
{
com_id=O_NCON_DELETE;
mn_item="Delete note";
},
MENU_ITEM
{
com_id=O_NCON_RECORD;
mn_item="Record";
},
MENU_ITEM
{
com_id=O_NCON_UNDO;
mn_item="Undo";
}
};
}
RESOURCE MENU edit_menu
{
items =
{
MENU_ITEM
{
com_id=O_NCOE_INSERT;
mn_item="Insert text";
},
MENU_ITEM
{
com_id=O_NCOE_COPY;
mn_item="Copy text";
},
MENU_ITEM
{
com_id=O_NCOE_BRING;
mn_item="Bring";
},
MENU_ITEM
{
com_id=O_NCOE_EVALUATE;
mn_item="Evaluate";
},
MENU_ITEM
{
com_id=O_NCOE_SUM;
mn_item="Sum";
}
};
}
RESOURCE MENU windows_menu
{
items =
{
MENU_ITEM
{
com_id=O_NCOW_TITLE;
mn_item="Title window";
},
MENU_ITEM
{
com_id=O_NCOW_NOTES;
mn_item="Notes window";
},
MENU_ITEM
{
com_id=O_NCOW_FIND;
mn_item="Find window";
}
};
}
RESOURCE MENU search_menu
{
items =
{
MENU_ITEM
{
com_id=O_NCOS_OPTIONS;
mn_item="Options";
},
MENU_ITEM
{
com_id=O_NCOS_FORWARDS;
mn_item="Search forwards";
},
MENU_ITEM
{
com_id=O_NCOS_BACKWARDS;
mn_item="Search backwards";
},
MENU_ITEM
{
com_id=O_NCOS_FIRST;
mn_item="Search first";
},
MENU_ITEM
{
com_id=O_NCOS_LAST;
mn_item="Search last";
}
};
}
RESOURCE MENU tag_menu
{
items =
{
MENU_ITEM
{
com_id=O_NCOT_SET;
mn_item="Set";
},
MENU_ITEM
{
com_id=O_NCOT_CLEAR;
mn_item="Clear";
},
MENU_ITEM
{
com_id=O_NCOT_SET_ALL;
mn_item="Tag all";
},
MENU_ITEM
{
com_id=O_NCOT_CLEAR_ALL;
mn_item="Clear all";
}
};
}
RESOURCE MENU special_menu
{
items =
{
MENU_ITEM
{
com_id=O_NCOX_GOTO;
mn_item="Go to";
},
MENU_ITEM
{
com_id=O_NCOX_MOVETO;
mn_item="Move to";
},
MENU_ITEM
{
com_id=O_NCOX_SYMBOLS;
mn_item="Show symbols";
},
MENU_ITEM
{
com_id=O_NCOX_PSETUP;
mn_item="Print setup";
},
MENU_ITEM
{
com_id=O_NCOX_PRINT;
mn_item="Print";
},
MENU_ITEM
{
com_id=O_COM_EXIT;
mn_item="Exit";
}
};
}
RESOURCE STRING nostr_find_prompt { str="Find: "; } /* includes space */
RESOURCE STRING nostr_max_number_notes { str="Maximum number of notes already reached"; }
RESOURCE STRING nostr_no_note_inserted { str="No note to insert"; }
RESOURCE STRING nostr_note_copied { str="Note copied"; }
RESOURCE STRING nostr_no_note_copied { str="No note to copy"; }
RESOURCE STRING nostr_note_recorded { str="Note recorded"; }
RESOURCE STRING nostr_no_text_inserted { str="No text to insert"; }
RESOURCE STRING nostr_no_text_copied { str="No text to copy"; }
RESOURCE STRING nostr_text_copied { str="Text copied"; }
RESOURCE STRING nostr_only_in_notes { str="Only available in notes window"; }
RESOURCE STRING nostr_tag_count { str="Number of notes currently tagged: %d"; }
RESOURCE STRING nostr_delete_note { str="Delete this note"; }
RESOURCE STRING nostr_undo_editing { str="Undo editing"; }
RESOURCE STRING nostr_not_found { str="Not found"; }
RESOURCE STRING nostr_not_changed { str="Not changed"; }
RESOURCE DIALOG nodl_goto
{
flags=DLGBOX_NOTIFY_ENTER|DLGBOX_RBUF_FILLED;
title="Go to";
controls=
{
CONTROL
{
class=C_NCEDIT;
prompt="Note number";
info=NCEDIT
{
low=1;
high=99;
};
}
};
}
RESOURCE DIALOG nodl_moveto
{
flags=DLGBOX_NOTIFY_ENTER|DLGBOX_RBUF_FILLED;
title="Move note";
controls=
{
CONTROL
{
class=C_NCEDIT;
prompt="New note number";
info=NCEDIT
{
low=1;
high=99;
};
}
};
}
RESOURCE MENU nom_find_types
{
items =
{
CHOICE_ITEM { str="Just notes";},
CHOICE_ITEM { str="Just title";},
CHOICE_ITEM { str="Title and notes";}
};
}
RESOURCE DIALOG nodl_options
{
title="Options for search";
flags=DLGBOX_NOTIFY_ENTER;
controls=
{
CONTROL
{
class=C_CHLIST;
prompt="Case sensitive";
info=CHLIST { rid=-SYS_NO_YES; };
},
CONTROL
{
class=C_CHLIST;
prompt="Search";
info=CHLIST { rid=nom_find_types; };
}
};
}
Binary file not shown.
Binary file not shown.
+23
View File
@@ -0,0 +1,23 @@
notesrel.prj ! release files list
notes.pr ! TS project file
make.bat ! makes NOTES.APP
!
nolayout.h ! layout constants
notes.def ! function prototypes
notes.cat ! category file
notes.re ! resource externals
notes.rss ! resource script
!
nocomman.c ! command manager
nodlgs.c ! dialogs
noengine.c ! engine
nolinksv.c ! link server
nomain.c ! main
nowin.c ! note window
nowserv.c ! window server
!
notes.afl ! add file list
notes1.pic ! s3 icon
notes2.pic ! s3a icon
notes.plk ! icon link file
notes.ms ! shell data source file
+164
View File
@@ -0,0 +1,164 @@
/* NOWIN.C */
#include <notes.g>
#include <notes.rsg>
#include <hwim.h>
#include "nolayout.h"
GLREF_D PR_NOCOMMAN *DatApp2;
GLREF_D LAYOUT_DATA ld;
LOCAL_C VOID DrawTextInWindow(INT wid,TEXT *pstr)
{
W_WINDATA wd;
wInquireWindow(wid,&wd);
wd.extent.tl.x=wd.extent.tl.y=0;
gPrintBoxText((P_RECT *)(&wd.extent),ld.FontAscent+1,
G_TEXT_ALIGN_CENTRE,0,pstr,p_slen(pstr));
}
#pragma METHOD_CALL
METHOD VOID nowin_wn_key(PR_NOWIN *self,INT keycode,INT mods)
{
if (keycode==W_KEY_TAB)
p_send3(DatApp2,O_NCO_SWITCH_FOCUS,mods);
else
p_send4(self->nowin.edwin,O_WN_KEY,keycode,mods);
}
METHOD VOID nowin_wn_emphasise(PR_NOWIN *self,INT emphasise)
{
p_supersend3(self,O_WN_EMPHASISE,emphasise);
p_send3(self->nowin.edwin,O_WN_EMPHASISE,emphasise);
}
METHOD VOID nowin_wn_draw(PR_NOWIN *self)
{
p_supersend2(self,O_WN_DRAW);
p_send2(self->nowin.edwin,O_WN_DRAW);
}
METHOD VOID nowin_wn_init(PR_NOWIN *self,IN_EDWIN *pined,IN_EDWIN_X *pinx)
{
W_WINDATA wd;
wd.extent.tl=pinx->pos;
wd.extent.width=pined->vulen;
wd.extent.height=ld.FontHeight+2;
if (pined->flags&IN_EDWIN_VISLINES_SUPPLIED)
wd.extent.height*=pinx->vislines;
wd.extent.height+=EDGE_HEIGHT;
p_send5(self,O_WN_CONNECT,NULL,W_WIN_EXTENT,&wd);
self->win.flags=PR_BWIN_CORNER_4|PR_BWIN_SHADOW_2;
pinx->pos.x=EDGE_TLX;
pinx->pos.y=EDGE_TLY;
pined->vulen-=EDGE_WIDTH;
p_send4(self,O_NW_INIT,pined,pinx);
self->nowin.edwin=f_newsend(CAT_NOTES_HWIM,C_EDWIN,
O_WN_INIT,pined,self,pinx);
}
METHOD VOID nowin_nw_increase_width(PR_NOWIN *self,INT increase)
{
W_WINDATA wd;
PR_EDWIN *edwin;
wInvalidateWin(self->win.id);
wInquireWindow(self->win.id,&wd);
wd.extent.width+=increase;
wSetWindow(self->win.id,W_WIN_EXTENT,&wd);
edwin=self->nowin.edwin;
p_send3(edwin,O_EW_SENSE_SIZE,&wd.extent);
edwin->edwin.margins.right+=increase;
wd.extent.width+=increase;
p_send4(edwin,O_EW_SET_SIZE,&wd.extent,NULL);
}
METHOD VOID notitwin_wn_key(PR_NOWIN *self,INT keycode,INT mods)
{
if (keycode==W_KEY_RETURN)
p_send3(DatApp2,O_NCO_SWITCH_FOCUS,mods);
else
p_supersend4(self,O_WN_KEY,keycode,mods);
}
METHOD VOID nofndwin_wn_key(PR_NOWIN *self,INT keycode,INT mods)
{
if (keycode==W_KEY_RETURN)
p_send3(DatApp2,O_NCO_QUICK_FIND,mods&W_SHIFT_MODIFIER? -1: +1);
else
p_supersend4(self,O_WN_KEY,keycode,mods);
}
METHOD VOID nofndwin_destroy(PR_NOFNDWIN *self)
{
p_free(self->nofndwin.prompt);
p_supersend2(self,O_DESTROY);
}
METHOD VOID nofndwin_nw_init(PR_NOFNDWIN *self,IN_EDWIN *pined,IN_EDWIN_X *pinx)
{
UWORD width;
self->nofndwin.x=EDGE_TLX;
self->nofndwin.y=EDGE_TLY+(1+ld.FontAscent);
self->nofndwin.len=
hLoadResource(NOSTR_FIND_PROMPT,&self->nofndwin.prompt)-1;
width=gTextWidth(WS_FONT_SYSTEM,G_STY_ITALIC,
self->nofndwin.prompt,self->nofndwin.len);
pinx->pos.x=EDGE_TLX+width;
pined->vulen-=width;
}
METHOD VOID nofndwin_wn_draw(PR_NOFNDWIN *self)
{
p_supersend2(self,O_WN_DRAW);
hSetGStyle(G_STY_ITALIC);
gPrintText(self->nofndwin.x,self->nofndwin.y,
self->nofndwin.prompt,self->nofndwin.len);
hSetGStyle(G_STY_NORMAL);
}
METHOD VOID notagwin_wn_set(PR_NOTAGWIN *self,INT on)
{
if (on==self->notagwin.on)
return;
wInvalidateWin(self->win.id);
self->notagwin.on=on;
}
#define TICK_SYM_AS_STRING "\014"
METHOD VOID notagwin_wn_draw(PR_NOTAGWIN *self)
{
DrawTextInWindow(self->win.id,self->notagwin.on? TICK_SYM_AS_STRING: "");
}
METHOD INT notagwin_wn_sense(PR_NOTAGWIN *self)
{
return(hGetSWid(TICK_SYM_AS_STRING)+TEXT_WINDOW_EDGE_WIDTH);
}
METHOD VOID nocntwin_wn_set(PR_NOCNTWIN *self,INT val,INT max)
{
if (val==self->nocntwin.val && max==self->nocntwin.max)
return;
wInvalidateWin(self->win.id);
self->nocntwin.val=val;
self->nocntwin.max=max;
}
METHOD VOID nocntwin_wn_draw(PR_NOCNTWIN *self)
{
TEXT buf[10];
p_atos(&buf[0],"%d/%d",self->nocntwin.val,self->nocntwin.max);
DrawTextInWindow(self->win.id,&buf[0]);
}
METHOD INT nocntwin_wn_sense(PR_NOCNTWIN *self)
{
return(hGetSWid("99/99")+TEXT_WINDOW_EDGE_WIDTH);
}
+21
View File
@@ -0,0 +1,21 @@
/* NOWSERV.C */
#include <notes.g>
GLREF_D PR_HWIMMAN *w_am;
GLREF_D PR_NOCOMMAN *DatApp2;
GLREF_D PR_EDWIN *DatApp3;
#pragma METHOD_CALL
METHOD VOID nowserv_ws_background(PR_NOWSERV *self)
{
INT fmt;
if (!(self->wserv.flags&PR_WSERV_RECEIVED_KEY))
return;
fmt=0;
if (DatApp2->nocomman.which==NOTES_WINDOW && DatApp3->edwin.select)
fmt=(1<<DF_LINK_TEXT);
p_send4(w_am->appman.system,O_SY_LINK_SERVER,fmt,0);
}