void xw_send_redraw(WINDOW *w, RECT *area) { int message[8]; #ifdef __PUREC__ extern int ap_id; /* Defined in application. */ #endif message[0] = WM_REDRAW; #ifdef __PUREC__ message[1] = ap_id; #else message[1] = gl_apid; #endif message[2] = 0; message[3] = w->xw_handle; message[4] = area->x; message[5] = area->y; message[6] = area->w; message[7] = area->h; #ifdef __PUREC__ appl_write(ap_id, 16, message); #else appl_write(gl_apid, 16, message); #endif }
void broadcast_olenew(void) { int answ[8]; answ[0] = OLE_NEW; answ[1] = ap_id; answ[2] = 0; answ[3] = OLGAFLAGS; answ[4] = OLGAPROTOCOL; answ[5] = 0; answ[6] = 0; answ[7] = OLGAVERSION; if (broadcast) { shel_write(7,0,0,(char *)answ,NULL); } else if (search) { char fname[9]; int type, apid, moreapps = appl_search(0,fname,&type,&apid); while (moreapps) { if ((type != 1) && (apid != ap_id)) appl_write(apid,16,answ); moreapps = appl_search(1,fname,&type,&apid); } } }
void olga_idle(int *pipe) { #ifdef DEBUG printf("OLGA: OLGA_IDLE App %i (",pipe[1]); if (!pipe[3]) printf("reply)\n"); else printf("request) -> reply\n"); #endif if (pipe[3]) { int answ[8]; answ[0] = OLGA_IDLE; answ[1] = ap_id; answ[2] = 0; answ[3] = 0; answ[4] = pipe[4]; answ[5] = pipe[5]; answ[6] = pipe[6]; answ[7] = pipe[7]; appl_write(pipe[1],16,answ); } }
void exit_manager(void) { int answ[8]; App *pad = apps; #ifdef DEBUG printf(DEBUG_DEACTIVATED); #endif answ[0] = OLE_EXIT; answ[1] = ap_id; answ[2] = 0; answ[3] = 0; answ[4] = 0; answ[5] = 0; answ[6] = 0; answ[7] = 0; while (pad) { appl_write(pad->apID,16,answ); pad = pad->Next; } appl_exit(); }
void client_terminated(int clID) { int answ[8]; Client *pc; answ[0] = OLGA_CLIENTTERMINATED; answ[1] = ap_id; answ[2] = 0; answ[3] = clID; answ[5] = 0; answ[6] = 0; _again: pc = clients; while (pc) { if (pc->clID == clID) { Client *pcd = clients; answ[4] = 0; while (pcd) { if (pcd != pc) { if (pcd->srvID == pc->srvID) answ[4]++; } pcd = pcd->Next; } answ[7] = pc->runFlag; appl_write(pc->srvID,16,answ); goto _free; } else if (pc->srvID == clID) { _free: if ((!pc->Prev) && (!pc->Next)) clients = NULL; else { if (!pc->Prev) clients = pc->Next; else pc->Prev->Next = pc->Next; if (pc->Next) pc->Next->Prev = pc->Prev; } free(pc); goto _again; } pc = pc->Next; } }
void initiateredraw(int hand,short x,short y,short w,short h){ int msg[8]; msg[0]=WM_REDRAW;msg[1]=GemParBlk.global[2]; msg[2]=0;msg[3]=wn[hand].hand; msg[4]=x;msg[5]=y; msg[6]=w;msg[7]=h; appl_write(msg[1],sizeof(msg),msg); }
bool send_msg(int id) { int ret; msgbuff[1] = gl_apid; msgbuff[2] = 0; ret = appl_write(id, (int) sizeof(msgbuff), msgbuff); return (ret > 0); }
short ddmessage(short apid, short fd, short winid, short mx, short my, short kstate, short pipeid) { char c; short i, msg[8]; long fd_mask; /* AES-Message define and post */ msg[0] = AP_DRAGDROP; msg[1] = _AESapid; msg[2] = 0; msg[3] = winid; msg[4] = mx; msg[5] = my; msg[6] = kstate; msg[7] = pipeid; i = appl_write(apid, 16, msg); if (i == 0) { ddclose(fd); return(-3); } /* receiver reaction */ fd_mask = (1L << fd); i = Fselect(DD_TIMEOUT, &fd_mask, 0L, 0L); if (!i || !fd_mask) { /* Timeout eingetreten */ ddclose(fd); return(-2); } /* le recepteur refuse (lecture du pipe) */ if (Fread(fd, 1L, &c) != 1L) { ddclose(fd); return(-1); } if (c != DD_OK) { ddclose(fd); return(-1); } return(1); }
VOID spol_ansr(WORD towhom) { WORD ap_msg[8]; ap_msg[0] = 101; ap_msg[1] = gl_apid; ap_msg[2] = 0; ap_msg[3] = 0; ap_msg[4] = 0; ap_msg[5] = 0; ap_msg[6] = 0; ap_msg[7] = 0; appl_write(towhom, 16, ADDR(&ap_msg[0])); }
/* Send_Redraw() *========================================================================== * Force the sending of a redraw message. * IN: GRECT *rect: The GRECT of the dirty area * OUT: void */ void Send_Redraw( GRECT *rect ) { int msg_buff[8]; msg_buff[0] = WM_REDRAW; msg_buff[1] = gl_apid; msg_buff[2] = 0; msg_buff[3] = (int)w.id; msg_buff[4] = rect->g_x; msg_buff[5] = rect->g_y; msg_buff[6] = rect->g_w; msg_buff[7] = rect->g_h; appl_write( gl_apid, 16, msg_buff ); }
/** Send an Message to a GUIWIN using AES message pipe * \param win the GUIWIN which shall receive the message * \param msg_type the WM_ message definition * \param a the 4th parameter to appl_write * \param b the 5th parameter to appl_write * \param c the 6th parameter to appl_write * \param d the 7th parameter to appl_write */ void gemtk_send_msg(short msg_type, short data2, short data3, short data4, short data5, short data6, short data7) { short msg[8]; msg[0] = msg_type; msg[1] = gl_apid; msg[2] = data2; msg[3] = data3; msg[4] = data4; msg[5] = data5; msg[6] = data6; msg[7] = data7; appl_write(gl_apid, 16, &msg); }
void server_terminated(int srvID, int retCode) { int answ[8]; Server *ps; answ[0] = OLGA_SERVERTERMINATED; answ[1] = ap_id; answ[2] = 0; answ[3] = srvID; answ[6] = retCode; answ[7] = 0; _again: ps = server; while (ps) { if (ps->srvID == srvID) { answ[4] = ps->ext4; answ[5] = ps->ext5; appl_write(ps->clID,16,answ); goto _free; } else if (ps->clID == srvID) { _free: if ((!ps->Prev) && (!ps->Next)) server = NULL; else { if (!ps->Prev) server = ps->Next; else ps->Prev->Next = ps->Next; if (ps->Next) ps->Next->Prev = ps->Prev; } free(ps); goto _again; } ps = ps->Next; } }
VOID spol_draw(WORD obj) { WORD ap_msg[8]; spol_setup(); if (wh_spol) { ap_msg[0] = WM_REDRAW; ap_msg[1] = gl_apid; ap_msg[2] = 0; ap_msg[3] = wh_spol; objc_offset((OBJECT FAR *)ad_spol, obj, &ap_msg[4], &ap_msg[5]); ap_msg[6] = the_spol[obj].ob_width; ap_msg[7] = the_spol[obj].ob_height; appl_write(gl_apid, 16, ADDR(&ap_msg[0])); } }
int GEM_IconifyWindow(_THIS) { if ((GEM_wfeatures & (1<<WF_ICONIFY))==0) return 0; GEM_message[0] = WM_ICONIFY; GEM_message[1] = gl_apid; GEM_message[2] = 0; GEM_message[3] = GEM_handle; GEM_message[4] = 0; GEM_message[5] = GEM_desk_h-ICONHEIGHT; GEM_message[6] = ICONWIDTH; GEM_message[7] = ICONHEIGHT; appl_write(gl_apid, sizeof(GEM_message), GEM_message); return 1; }
int playsound(char *ps) { BYTE *playbuf; long val; short mcto=0; WORD msg[8],i; if(conf.playsounds){ if((getcookie(MiNT_COOKIE,&val) == TRUE)) { MiNT = TRUE; if(GemParBlk.global[1] > 1 || GemParBlk.global[1]==-1) MultiTOS = TRUE; } if(getcookie(MagX_COOKIE,&val)==TRUE) MagiC=TRUE; if(MagiC == TRUE || MiNT==TRUE) playbuf=(BYTE *)Mxalloc (150,0|MGLOBAL); else playbuf=(BYTE *)Malloc(150); strcpy(playbuf,"-q ");strcat(playbuf,path.sound);strcat(playbuf,ps); checkgemjingpresent(); i=-1; while(mcto<10 && i<0){ if((i=appl_find("GEMJING ")) >= 0) { msg[0]=VA_START; msg[1]=appl_id; msg[2]=0; msg[3]=(WORD)(((LONG)playbuf>>16)&0x0000ffff); msg[4]=(WORD)((LONG)playbuf & 0x0000ffff); msg[5]=0; msg[6]=0; msg[7]=0; appl_write(i,16,msg); } mcto++; } Mfree(playbuf); }
/* ------------------------ */ void look_control(int key) { register int mp; int w_msg[8]; mp = cntrl_tab[key >> 8]; if (mp & 0x8000 ) { if (!(menu_adr[mp & 0x7FFF].ob_state & DISABLED) ) { w_msg[0] = MN_SELECTED; w_msg[1] = ap_id; w_msg[2] = 0; w_msg[3] = 3; /* ! */ w_msg[4] = mp & 0x7FFF; appl_write(ap_id, 16, w_msg); } } else edit(key); }
bool gemtk_av_send (short message, const char * data1, const char * data2) { short msg[8]; short to_ap_id = av_shell_id; /* - 100 to ap id would be no AV server */ if (to_ap_id == -100){ return false; } msg[0] = message; msg[1] = gl_apid; msg[7] = msg[6] = msg[5] = msg[4] = msg[3] = msg[2] = 0; switch (message) { case AV_EXIT: msg[3] = gl_apid; break; case AV_PROTOKOLL: msg[3] = VV_START | VV_ACC_QUOTING; *(char **)(msg+6) = strcpy (va_helpbuf, av_clientname); break; case AV_STARTPROG: DEBUG_PRINT(("AV_STARTPROG: %s (%s)\n", data1, data2)); *(char **)(msg+3) = strcpy(va_helpbuf, data1); *(char **)(msg+5) = strcpy(va_helpbuf, data2); break; case AV_VIEW: DEBUG_PRINT(("AV_VIEW: %s (%d)\n", data1, (short)data2)); *(char **)(msg+3) = strcpy(va_helpbuf, data1); msg[5] = (short)data2; break; default: return false; /* not supported */ } return (appl_write (to_ap_id, 16, msg) > 0); }
int handle_menu(RESULT svar) { if(svar.data[SVAR_OBJECT_MENU_ROW]!=FAIL) objc_change(menu_tree,svar.data[SVAR_OBJECT_MENU_ROW],0,0,0,0,0,0,O_REDRAW); switch(svar.data[SVAR_OBJECT]) { case MENU_INFO: menu_icheck(menu_tree,MENU_INFO,TRUE); menu_ienable(menu_tree,MENU_INFO,FALSE); open_dialog(&info_win,NULL); break; case MENU_FILE_DISABL: deinit_port(); break; case MENU_FILE_ENABLE: config->disabled=FALSE; init_port(); break; case MENU_LIST_OWIND: open_listwin(); break; case MENU_LIST_SAVE: if(!tempvar.accessory) { save_list(); tempvar.list_change=FALSE; } break; case MENU_LIST_EXPORT: menu_icheck(menu_tree,MENU_LIST_EXPORT,TRUE); menu_ienable(menu_tree,MENU_LIST_EXPORT,FALSE); open_exportwin(TRUE); case MENU_SAVE_SETUP: save_datafile(TRUE,CONFIGFILE,(char *)config,sizeof(CONFIG)); tempvar.conf_change=FALSE; break; case MENU_SETUP: menu_icheck(menu_tree,MENU_SETUP,TRUE); menu_ienable(menu_tree,MENU_SETUP,FALSE); set_timer(FAIL); open_setupwin(); break; case MENU_LOG_VIEW: open_logwin(); break; case MENU_QUIT: if(config->save_exit) { save_datafile(TRUE,CONFIGFILE,(char *)config,sizeof(CONFIG)); if(!tempvar.accessory) { save_list(); tempvar.list_change=FALSE; } tempvar.conf_change=FALSE; } if(tempvar.conf_change) if(alertbox(1,alerts[Q_SAVE_CONF_EXIT])==1) save_datafile(TRUE,CONFIGFILE,(char *)config,sizeof(CONFIG)); if((tempvar.list_change)&&(!tempvar.accessory)) if(alertbox(1,alerts[Q_SAVE_LIST_EXIT])==1) save_list(); return(FALSE); break; case MENU_HELP_INDEX: { long stguide_id; char temprow[MAXSTRING]; stguide_id=appl_find("ST-GUIDE"); strcpy(temprow,"*:\\firecall.hyp"); if(stguide_id!=FAIL) { svar.data[0]=(short)0x4711; svar.data[1]=(short)ap_id; svar.data[2]=(short)0; svar.data[3]=(short)temprow >> 16; svar.data[4]=(short)temprow & 0xffff; svar.data[5]=(short)0; svar.data[6]=(short)0; svar.data[7]=(short)0; appl_write(stguide_id,16,svar.data); } break; } default: break; }
void fnt_hndlbutton(XDINFO *dialog, int button) { FNT_DIALOG *fnt_dial = (FNT_DIALOG *) dialog; int msg[8], curobj, newfont; button &= 0x7FFF; if (sl_handle_button(button, wdfont, &fnt_dial->sl_info.slider, dialog)) return; switch (button) { case WDFONT1: case WDFONT2: case WDFONT3: case WDFONT4: case WDFONT5: case WDFONT6: curobj = fnt_dial->font - fnt_dial->sl_info.slider.line + WDFONT1; if (((newfont = fnt_dial->sl_info.slider.line + button - WDFONT1) < fnt_dial->nf) && (curobj != button)) { if ((curobj >= WDFONT1) && (curobj <= WDFONT6)) xd_change(dialog, curobj, NORMAL, 1); xd_change(dialog, button, SELECTED, 1); fnt_dial->font = newfont; fnt_dial->cursize = get_size(fnt_dial->font, fnt_dial->fd, fnt_dial->fsizes, &fnt_dial->nfsizes, fnt_dial->fsize); fnt_dial->fsize = fnt_dial->fsizes[fnt_dial->cursize]; xd_draw(dialog, WDFTEXT, 1); xd_draw(dialog, WDFSIZE, 1); } break; case WDFSUP: if (fnt_dial->cursize < fnt_dial->nfsizes - 1) { fnt_dial->cursize++; goto cont; } xd_change(dialog, button, NORMAL, 1); break; case WDFSDOWN: if (fnt_dial->cursize > 0) { fnt_dial->cursize--; cont:fnt_dial->fsize = fnt_dial->fsizes[fnt_dial->cursize]; itoa(fnt_dial->fsize, wdfont[WDFSIZE].ob_spec.free_string, 10); xd_draw(dialog, WDFTEXT, 1); xd_draw(dialog, WDFSIZE, 1); } xd_change(dialog, button, NORMAL, 1); break; case WDFOK: msg[0] = FONT_CHANGED; msg[1] = fnt_dial->ap_id; msg[2] = 0; msg[3] = fnt_dial->win; msg[4] = fnt_dial->fd[fnt_dial->font].id; msg[5] = fnt_dial->fsize; msg[6] = fnt_dial->color; msg[7] = fnt_dial->effect; appl_write(fnt_dial->ap_id, 16, msg); default: xd_change(dialog, button, NORMAL, 0); fnt_close(dialog); break; } }
void main_loop(void) { EVENT ev; bool menu_chg; long as_timer = 0, t; /* Message-Handler f�r Fenster-Dialoge und -Alerts */ set_mdial_wincb(handle_msg); update_menu(); menu_chg = FALSE; onblink_edit(); do { quick_close = FALSE; /* Sichern der Texte ohne Nachfrage */ next_action (&ev); /* get_realtop(); */ if (ev.which == MU_TIMER) /* Zeit (nur wenn nichts anderes anliegt) */ { timer_se(); if (blinking_cursor) blink_edit(); if (clip_on_disk) save_clip(); if (as_text || as_prj) { /* * Weil der do_all_icon() recht viel Rechenzeit verheizt, und * AutoSave min. 1 min wartet, wird er nur jede Minute aufgerufen. */ t = Tgettime(); if ((t - as_timer) >= 32) { do_all_icon(ALL_TYPES, DO_AUTOSAVE); as_timer = t; } } } if (ev.which & MU_KEYBD) /* Taste */ { offblink_edit(); handle_keybd(ev.kstate, ev.kreturn); menu_chg = TRUE; onblink_edit(); while (idle()) /* Auch f�r Makro-Play-Abbruch */ ; } if (ev.which & MU_BUTTON) /* Mausknopf */ { offblink_edit(); handle_button(ev.m_x, ev.m_y, ev.bstate, ev.kstate, ev.breturn); menu_chg = TRUE; onblink_edit(); } if (ev.which & MU_MESAG) /* Meldung */ { if (ev.msg[0] == MN_SELECTED) menu_ctrl = (ev.kstate & K_CTRL); offblink_edit(); handle_msg(ev.msg); menu_chg = TRUE; onblink_edit(); } if (ev.which & MU_M1) /* Maus bewegt */ wake_mouse(); if (menu_chg && !is_event()) /* Wenn Zeit */ { update_menu(); /* Eine Aktion kann Men�s ver�ndern */ menu_chg = FALSE; } end_undo_seq(); if (abort_prog) { int msg[] = {0,0,0,0,0,0,0,0}; msg[0] = AP_TERM; msg[1] = gl_apid; appl_write(gl_apid, 16, msg); } } while (! done); }
void ole_init(int *pipe) { App *pa = NULL, *pad = apps; int answ[8]; #ifdef DEBUG printf("OLGA: OLE_INIT App %i ",pipe[1]); if (pipe[3] & OL_SERVER) printf("Server "); if (pipe[3] & OL_CLIENT) printf("Client "); if (pipe[3] & OL_PIPES) printf("Pipes "); printf(STRING_LEVEL,pipe[4],pipe[5],pipe[6]); printf("%c%c\n",((pipe[7] >> 8) & 0x00ff),(pipe[7] & 0x00ff)); #endif if (!(pipe[3] & OL_PEER)) { answ[7] = 0; goto _nooep; } while (pad) { if (pad->apID == pipe[1]) { pa = pad; break; } pad = pad->Next; } if (!pa) { pa = (App *)malloc(sizeof(App)); if (pa) { int i; pa->apID = pipe[1]; pa->cmdCount = -1; pa->enumOLE = NULL; pa->ipaProtocol = 0; pa->Prev = NULL; pa->Next = NULL; for(i=0; i<=CMDMAX; i++) pa->startCmd[i] = NULL; if (!apps) apps = pa; else { pad = apps; while (pad->Next) pad = pad->Next; pad->Next = pa; pa->Prev = pad; } appCount++; } } if (pa) { pa->Flags = pipe[3]; pa->Protocol = pipe[4]; pa->XAccType = pipe[7]; find_name(pa->apID,pa->apName); answ[7] = 1; } else { answ[7] = 0; } _nooep: answ[0] = OLGA_INIT; answ[1] = ap_id; answ[2] = 0; answ[3] = OLGAFLAGS; answ[4] = OLGAPROTOCOL; answ[5] = 0; answ[6] = 0; appl_write(pipe[1],16,answ); }