Example #1
0
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
}
Example #2
0
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);
		}
	}
}
Example #3
0
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);
	}
}
Example #4
0
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();
}
Example #5
0
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;
	}
}
Example #6
0
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);
}
Example #7
0
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);
}
Example #8
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);
}
Example #9
0
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]));
}
Example #10
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 );
}
Example #11
0
/** 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);
}
Example #12
0
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;
	}
}
Example #13
0
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]));
	}
}
Example #14
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;
}
Example #15
0
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);
}
Example #16
0
/* ------------------------ */
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);
}
Example #17
0
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);
}
Example #18
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;
  }
Example #19
0
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;
	}
}
Example #20
0
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);
}
Example #21
0
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);
}