build: add the SIBO SDK
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
tscx /m notes
|
||||
tscx /m notes
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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(¬e,sizeof(NOTE),0);
|
||||
p_send3(DatApp1,O_VA_APPEND,¬e);
|
||||
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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
notes.pic
|
||||
notes.rsc
|
||||
notes.shd
|
||||
@@ -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
|
||||
}
|
||||
@@ -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);
|
||||
@@ -0,0 +1,3 @@
|
||||
Notes
|
||||
|
||||
5000
|
||||
@@ -0,0 +1,2 @@
|
||||
notes1.pic
|
||||
notes2.pic
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user