/* prf_docommand.c */ /* V1.1 9-3-92 */ #include "prf.h" struct EasyStruct AboutReq = { 0L,0L,(UBYTE *)ABOUT_LINE1, (UBYTE *)ABOUT_LINE2, (UBYTE *)ABOUT_LINE3, }; struct EasyStruct QuitReq = { 0L,0L,(UBYTE *)QUIT_LINE1, (UBYTE *)QUIT_LINE2, (UBYTE *)QUIT_LINE3 }; struct EasyStruct StopReq = { 0L,0L,(UBYTE *)STOP_LINE1, (UBYTE *)STOP_LINE2, (UBYTE *)STOP_LINE3, }; struct EasyStruct FinalReq = { 0L,0L,(UBYTE *)FINAL_LINE1, (UBYTE *)FINAL_LINE2, (UBYTE *)FINAL_LINE3, }; long DoCommand(struct prf_info *info, long cmd) { struct StringInfo *s; struct Node *n; BOOL rc1; long ins = CMD_INSERTTAIL; long rc = CMD_NEUTRAL; switch(cmd) { case CMD_RESETALL : Prf_Reset(info); break; case CMD_CLEARLIST : DetachList(info); while(n = (struct Node *)RemHead(&info->FileList))free((struct FileNameNode *)n); AttachList(info); break; case CMD_SAVEPREFS : SavePreferences(info,NULL); break; case CMD_PRINT : PrintQueue(info); break; case CMD_OPENWD : if(!(info->Swd)) ChangeApp(info); break; case CMD_CLOSEWD : if(info->Swd)ChangeApp(info); break; case CMD_LMARGIN : s = (struct StringInfo *)info->PGadgets[GD_Lmargin - PGD]->SpecialInfo; if(s->LongInt < info->Rmargin ) { info->Lmargin = (ULONG)s->LongInt; info->Columns = info->Rmargin - info->Lmargin; } if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Lmargin - PGD],info->Pwd,NULL,GTIN_Number,info->Lmargin,TAG_DONE); break; case CMD_RMARGIN : s = (struct StringInfo *)info->PGadgets[GD_Rmargin- PGD]->SpecialInfo; if(s->LongInt > info->Lmargin ) { info->Rmargin = (ULONG)s->LongInt; info->Columns = info->Rmargin - info->Lmargin; } if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Rmargin- PGD],info->Pwd,NULL,GTIN_Number,info->Rmargin,TAG_DONE); break; case CMD_LINES : s = (struct StringInfo *)info->PGadgets[GD_Linesperpage- PGD]->SpecialInfo; info->Lines = (ULONG)s->LongInt; case CMD_OPENPWD : OpenPwd(info); break; case CMD_CLOSEPWD : ClosePwd(info); break; case CMD_STR_INSERT: s = (struct StringInfo *)info->SGadgets[GD_Gadget11]->SpecialInfo; info->Special1 = (APTR)s->Buffer; info->Special2 = (APTR)&ins; InsertName(info); info->Special1 = NULL; info->Special2 = NULL; break; case CMD_REMOVE : s = (struct StringInfo *)info->SGadgets[GD_Gadget11]->SpecialInfo; info->Special1 = (APTR)s->Buffer; info->Special2 = (APTR)&ins; RemoveName(info); info->Special1 = NULL; info->Special2 = NULL; break; break; case CMD_CHANGEAPP : ChangeApp(info); break; case CMD_FILEREQ : Prf_FileReq(info); break; case CMD_RXQUIT : rc = CMD_QUIT; break; case CMD_QUIT : if(info->flags & FLAG_PRINT) { rc1 = EasyRequestArgs(info->Swd,&StopReq,NULL,NULL); if(rc1 == 1) rc = CMD_QUIT; } else { rc1 = EasyRequestArgs(info->Swd,&QuitReq,NULL,NULL); switch(rc1) { case 1 : rc1 = EasyRequestArgs(info->Swd,&FinalReq,NULL,NULL); if(rc1 == 0)rc = CMD_QUIT; break; case 2 : ChangeApp(info); break; default : break; } } break; case CMD_ABOUT : (void)EasyRequestArgs(info->Swd,&AboutReq,NULL,NULL); break; case CMD_HEAD : if(info->Swd)ActivateGadget(info->SGadgets[GD_Headline],info->Swd,NULL); break; case CMD_FOOT : if(info->Swd)ActivateGadget(info->SGadgets[GD_Footline],info->Swd,NULL); break; case CMD_HEADL : s = (struct StringInfo *)info->SGadgets[GD_Headline]->SpecialInfo; strcpy(info->Headline,s->Buffer); break; case CMD_FOOTL : s = (struct StringInfo *)info->SGadgets[GD_Footline]->SpecialInfo; strcpy(info->Footline,s->Buffer); break; case CMD_DATE_ON : info->flags |= FLAG_DATE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Date],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_DATE_OFF : info->flags ^= FLAG_DATE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Date],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_TIME_ON : info->flags |= FLAG_TIME; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Time],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_TIME_OFF : info->flags ^= FLAG_TIME; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Time],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_NAME_ON : info->flags |= FLAG_FILE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Filename],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_NAME_OFF : info->flags ^= FLAG_FILE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Filename],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_FF_ON : info->flags |= FLAG_FF; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_FF],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_FF_OFF : info->flags ^= FLAG_FF; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_FF],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_CRLF_ON : info->flags |= FLAG_CRLF; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_CRLF],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_CRLF_OFF : info->flags ^= FLAG_CRLF; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_CRLF],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_PAGE_ON : info->flags |= FLAG_PAGE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Pagenumber],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_PAGE_OFF : info->flags ^= FLAG_PAGE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Pagenumber],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_LINE_ON : info->flags |= FLAG_LINE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Linenumber],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE); break; case CMD_LINE_OFF : info->flags ^= FLAG_LINE; if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Linenumber],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE); break; case CMD_PITCH6 : info->flags |= FLAG_PITCH6; if(info->flags & FLAG_PITCH8)info->flags ^= FLAG_PITCH8; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Pitch - PGD],info->Pwd,NULL,GTMX_Active,0,TAG_DONE); break; case CMD_PITCH8 : info->flags |= FLAG_PITCH8; if(info->flags & FLAG_PITCH6)info->flags ^= FLAG_PITCH6; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Pitch - PGD],info->Pwd,NULL,GTMX_Active,1,TAG_DONE); break; case CMD_DRAFT : info->flags |= FLAG_DRAFT; if(info->flags & FLAG_LQ)info->flags ^= FLAG_LQ; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Quality - PGD],info->Pwd,NULL,GTMX_Active,0,TAG_DONE); break; case CMD_LQ : info->flags |= FLAG_LQ; if(info->flags & FLAG_DRAFT)info->flags ^= FLAG_DRAFT; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Quality - PGD],info->Pwd,NULL,GTMX_Active,1,TAG_DONE); break; case CMD_10CPI : info->flags |= FLAG_10CPI; if(info->flags & FLAG_12CPI)info->flags ^= FLAG_12CPI; if(info->flags & FLAG_15CPI)info->flags ^= FLAG_15CPI; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_cpi - PGD],info->Pwd,NULL,GTMX_Active,0,TAG_DONE); break; case CMD_12CPI : if(info->flags & FLAG_10CPI)info->flags ^= FLAG_10CPI; info->flags |= FLAG_12CPI; if(info->flags & FLAG_15CPI)info->flags ^= FLAG_15CPI; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_cpi - PGD],info->Pwd,NULL,GTMX_Active,1,TAG_DONE); break; case CMD_15CPI : if(info->flags & FLAG_10CPI)info->flags ^= FLAG_10CPI; if(info->flags & FLAG_12CPI)info->flags ^= FLAG_12CPI; info->flags |= FLAG_15CPI; if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_cpi - PGD],info->Pwd,NULL,GTMX_Active,2,TAG_DONE); break; default : break; } return (rc); } void SavePreferences(struct prf_info *info,UBYTE *name) { FILE *prefs; UBYTE filename[STR_SIZE]; struct FileNameNode *n; if(name) strcpy(filename,name); else Prf_SavePrefs(info,filename); if(info->Swd) { SwdTags[0].ti_Data = (ULONG)info->Swd->LeftEdge; SwdTags[1].ti_Data = (ULONG)info->Swd->TopEdge; } if(*filename) { if(prefs = fopen(filename,"w")) { fprintf(prefs,T_PREFSHEADER); fprintf(prefs,T_PREFSHEADER1); fprintf(prefs,T_PREFSHEADER2); fprintf(prefs,T_RX_RESET RT_RX_RESET"\n"); if(info->flags & FLAG_10CPI)fprintf(prefs,T_RX_10CPI RT_RX_10CPI "\n"); if(info->flags & FLAG_12CPI)fprintf(prefs,T_RX_12CPI RT_RX_12CPI "\n"); if(info->flags & FLAG_15CPI)fprintf(prefs,T_RX_15CPI RT_RX_15CPI "\n"); if(info->flags & FLAG_DRAFT)fprintf(prefs,T_RX_DRAFT RT_RX_DRAFT "\n"); if(info->flags & FLAG_LQ)fprintf(prefs,T_RX_LQ RT_RX_LQ "\n"); if(info->flags & FLAG_PAGE)fprintf(prefs,T_RX_PAGE RT_RX_PAGE "\n"); if(info->flags & FLAG_TIME)fprintf(prefs,T_RX_TIME RT_RX_TIME "\n"); if(info->flags & FLAG_FILE)fprintf(prefs,T_RX_FILE RT_RX_FILE "\n"); if(info->flags & FLAG_LINE)fprintf(prefs,T_RX_LINE RT_RX_LINE "\n"); if(info->flags & FLAG_DATE)fprintf(prefs,T_RX_DATE RT_RX_DATE "\n"); if(info->flags & FLAG_PITCH6)fprintf(prefs,T_RX_PITCH6 RT_RX_PITCH6 "\n"); if(info->flags & FLAG_PITCH8)fprintf(prefs,T_RX_PITCH8 RT_RX_PITCH8 "\n"); if(info->flags & FLAG_FF)fprintf(prefs,T_RX_FF RT_RX_FF "\n"); if(info->flags & FLAG_CRLF)fprintf(prefs,T_RX_CRLF RT_RX_CRLF "\n"); if(*(info->Headline))fprintf(prefs,"%s '%s'" RT_RX_HEAD "\n", T_RX_HEAD,info->Headline); if(*(info->Footline))fprintf(prefs,"%s '%s'" RT_RX_FOOT "\n", T_RX_FOOT,info->Footline); fprintf(prefs,"%s %ld" RT_RX_LMARGIN "\n",T_RX_LMARGIN,info->Lmargin); fprintf(prefs,"%s %ld" RT_RX_RMARGIN "\n",T_RX_RMARGIN,info->Rmargin); fprintf(prefs,"%s %ld" RT_RX_LINES "\n",T_RX_LINES,info->Lines); n = (struct FileNameNode *)info->FileList.lh_Head; while(n && (n != (struct FileNameNode *)info->FileList.lh_Tail)) { if(*(n->fnn_Name)) { fprintf(prefs, "%s '%s'" RT_RX_INSFILE "\n", T_RX_INSFILE,n->fnn_Name); } n = (struct FileNameNode *)n->fnn_Node.ln_Succ; } fprintf(prefs,T_RX_OPENWINDOW " " T_RX_CONTROL " %ld %ld " RT_RX_OPENWINDOW "\n",SwdTags[0].ti_Data,SwdTags[1].ti_Data); fclose(prefs); } } }