コード例 #1
0
ファイル: OFFLINE.C プロジェクト: daemqn/Atari_ST_Sources
void read_all_groups(void)
{
	int rc,c;
	char the_path[FMSIZE],directory[15];
/*	char status[50]; */

	if (ncn<0) { return; }
	strcpy( the_path, article_path );		/* save article_path */
	for (c=0;c<maximum_group+1;c++) {
		if (group[c].first_msg<=group[c].last_msg) {	/* any articles? */
			use_status( 2 );	/* use window info line */
			newsgroup_to_directory( group[c].name, directory );
			mkdir( article_path, S_IWRITE|S_IREAD ); 
			show_status( group[c].name );
			evnt_timer( 1200, 0 );		/* wait 1.2 seconds */
			if (ncn>=0) {
				rc = news_group( group[c].name );
				read_all_articles( c, article_path );
				group[c].viewed = VIEWED;
			}
			hide_status();
		}
	}
	unload_group( current_newsgroup );
	strcpy( article_path, the_path );		/* restore article_path */
}
コード例 #2
0
ファイル: MACPX.C プロジェクト: daemqn/Atari_ST_Sources
/*
 * Delay for slider auto-repeat.
 */
void
sl_delay( void )
{
    evnt_timer( sl_time, 0 );
    if( sl_time > SL_MIN_DELAY )
	sl_time -= SL_INC;
}
コード例 #3
0
ファイル: slider.c プロジェクト: daemqn/Atari_ST_Sources
/*----------------------------------------------------------------------------------------*/
void	sld_arrow( SLD *slider, int16 scroll, int16 val )
{
	EVNTDATA	ev;
	GRECT		rect;
	int16		pos;

	switch( scroll )
	{
	case  SCROLL_LINE:
		wdset_state( slider->wd, ( val < 0 ? slider->up : slider->down ), SELECTED, TRUE );
		break;
	case	SCROLL_PAGE:
		graf_mkstate( &ev );
		objc_rect( slider->wd->tree, slider->white, &rect );
		if( !val ) /* new */
			val = ev.y < rect.g_y ? -1 : 1;
		break;
	}

	do
	{
		pos = slider->scroll( slider->wd, scroll, val );
		sld_setpos( slider, pos );
		sld_redraw( slider );
		graf_mkstate( &ev );
		evnt_timer(20);
	} while ( ev.bstate & 0x01 );

	wdset_state( slider->wd, ( val < 0 ? slider->up : slider->down ), SELECTED, FALSE );
}
コード例 #4
0
ファイル: MAIN.C プロジェクト: daemqn/Atari_ST_Sources
int arrow_form_do
(
	XDINFO *treeinfo, 	/* dialog tree info */
	int *oldbutton		/* previously pressed button, 0 if none */
)
{
	OBJECT *tree;
	int button;

	tree = treeinfo->tree;

	if ( *oldbutton > 0 )
	{
		evnt_timer(150, 0);
		if ( (xe_button_state() & 1) == 0 )
		{
			tree[*oldbutton].ob_state &= ~SELECTED; 
			xd_draw ( treeinfo, *oldbutton, 1 ); 
			*oldbutton = 0;
		}	
	}
	button = xd_form_do(treeinfo, ROOT) & 0x7FFF;

	if ( button != *oldbutton )
	{
		tree[button].ob_state |= SELECTED;
		xd_draw ( treeinfo, button, 1 );
		*oldbutton = button;
	}
	return button;
}
コード例 #5
0
ファイル: LOGCTRL.C プロジェクト: daemqn/Atari_ST_Sources
void  gem_prgm()

{
   OBJECT  *tree;
   int     box_x, box_y, box_w, box_h, button, end = FALSE;
   int     work_in[11], work_out[57], count, dummy;

   for (count = 0; count < 10; count++)   work_in[count] = 1;
   work_in[10] = 2;
   vdi_handle = graf_handle (& dummy, & dummy, & dummy, & dummy);
   v_opnvwk (work_in, & vdi_handle, work_out);
   vq_extnd (vdi_handle, 1, work_out);
   planes = work_out[4];

   rsrc_gaddr (R_TREE, LOGCTRL, & tree);
   form_center (tree, & box_x, & box_y, & box_w, & box_h);
   form_dial (FMD_START, 0,0,0,0, box_x, box_y, box_w, box_h);
   objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h);

   do {
        button = form_do (tree, 0) & 0x7fffu;
        evnt_timer (60, 0);
        tree[button].ob_state &= ~SELECTED;
        objc_draw (tree, button, 1, box_x, box_y, box_w, box_h);

        switch (button) {
           case FILENAM :
             modify_fname();
             objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h);
             break;
           case CLIENT :
           case MODULE :
             form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h);
             do_dialog ((button == CLIENT) ? CLI_API : MOD_API);
             form_dial (FMD_START, 0,0,0,0, box_x, box_y, box_w, box_h);
             objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h);
             break;
           case TERM :
             if (form_alert (1, "[2][ |  Remove LogSTinG and   |   leave LogCTRL ?][ Yes | No ]") == 1) {
                  if ((long) (*sting_drivers->get_dftab) ("LOGSTING : REMOVE") == 'OkOk')
                       end = TRUE;
                    else
                       form_alert (1, "[1][ |  Could not remove LogSTinG !  ][ Hmmm ]");
                }
             break;
           case FIX :
             if (form_alert (1, "[2][ |  Activate new settings ?   ][ Yes | No ]") == 1)
                  do_settings();
             break;
           case CANCEL :
             if (form_alert (1, "[2][ |  Leave LogCTRL ?   ][ Yes | No ]") == 1)
                  end = TRUE;
             break;
           }
     } while (! end);

   form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h);
   v_clsvwk (vdi_handle);
 }
コード例 #6
0
ファイル: BIG2DEMO.C プロジェクト: DrCoolzic/BIG2
/*! desk events */
void event_desk(void) {
	int old_x, old_y, new_x, new_y, dummy;

	evnt_timer(70, 0);		/* timer delay */
	graf_mkstate(&dummy, &dummy, &mk, &dummy);

	if((object == BU_ICN) &&(mk == 1)) {													/* icon still cliked -> move */
		old_x = adr_desk[object].ob_x;
		old_y = adr_desk[object].ob_y;
		graf_dragbox(adr_desk[object].ob_width, adr_desk[object].ob_height,
			adr_desk[object].ob_x + bureau.xd, adr_desk[object].ob_y + bureau.yd,
			bureau.xd, bureau.yd, bureau.wd, bureau.hd, &new_x, &new_y);
		adr_desk[object].ob_x = new_x - bureau.xd;
		adr_desk[object].ob_y = new_y - bureau.yd;
		form_dial(FMD_FINISH, 0, 0, 0, 0, old_x + bureau.xd, old_y + bureau.yd,
			adr_desk[object].ob_width, adr_desk[object].ob_height);
		form_dial(FMD_FINISH, 0, 0, 0, 0,
			adr_desk[object].ob_x + bureau.xd, adr_desk[object].ob_y + bureau.yd,
			adr_desk[object].ob_width, adr_desk[object].ob_height);
	}
	
	else if(((object == BU_BOXTXT) ||(object == BU_TXT1) 
			||(object == BU_TXT2)) &&(mk == 1)) {		
		/* text stiil cliked -> move */
		old_x = adr_desk[BU_BOXTXT].ob_x;
		old_y = adr_desk[BU_BOXTXT].ob_y;
		graf_dragbox(adr_desk[BU_BOXTXT].ob_width, adr_desk[BU_BOXTXT].ob_height,
			adr_desk[BU_BOXTXT].ob_x + bureau.xd, adr_desk[BU_BOXTXT].ob_y + bureau.yd,
			bureau.xd, bureau.yd, bureau.wd, bureau.hd, &new_x, &new_y);
		adr_desk[BU_BOXTXT].ob_x = new_x - bureau.xd;
		adr_desk[BU_BOXTXT].ob_y = new_y - bureau.yd;
		form_dial(FMD_FINISH, 0, 0, 0, 0, old_x + bureau.xd - 3, old_y + bureau.yd - 3,
			adr_desk[BU_BOXTXT].ob_width + 6, adr_desk[BU_BOXTXT].ob_height + 6);
		form_dial(FMD_FINISH, 0, 0, 0, 0,
			adr_desk[BU_BOXTXT].ob_x + bureau.xd - 3, 
			adr_desk[BU_BOXTXT].ob_y + bureau.yd - 3,
			adr_desk[BU_BOXTXT].ob_width + 6, adr_desk[BU_BOXTXT].ob_height + 6);
	}
	
	else if(((object == ZERO) ||(object == BU_IMG)) &&
		(adr_desk[BU_ICN].ob_state & SELECTED) &&(mk == 0)) {		
		/* desk clicked -> deselect */
		adr_desk[BU_ICN].ob_state &= ~SELECTED;
		form_dial(FMD_FINISH, 0, 0, 0, 0,
			adr_desk[BU_ICN].ob_x + bureau.xd, adr_desk[BU_ICN].ob_y + bureau.yd,
			adr_desk[BU_ICN].ob_width, adr_desk[BU_ICN].ob_height);
	}
	
	else if((object == BU_ICN) && NOT(adr_desk[BU_ICN].ob_state & SELECTED) 
			&& (mk == 0)) {		
		/* simple click icon -> select */
		adr_desk[BU_ICN].ob_state |= SELECTED;
		form_dial(FMD_FINISH, 0, 0, 0, 0,
			adr_desk[BU_ICN].ob_x + bureau.xd, adr_desk[BU_ICN].ob_y + bureau.yd,
			adr_desk[BU_ICN].ob_width, adr_desk[BU_ICN].ob_height);
	}

}	/* end of event_desk() */ 
コード例 #7
0
ファイル: MT_MAIN.C プロジェクト: daemqn/Atari_ST_Sources
/* ----------------------------- */
void funk_blink(int ind)
{
back[F1_BUT + (ind << 2)].ob_state ^= SELECTED;
redraw_w0(F1_BUT + (ind << 2));

evnt_timer(150, 0);

back[F1 + (ind << 2)].ob_state &= ~SHADOWED;
back[F1_BUT + (ind << 2)].ob_state ^= SELECTED;
redraw_w0(F1 + (ind << 2));
back[F1 + (ind << 2)].ob_state &= ~SHADOWED;
}
コード例 #8
0
ファイル: MACCEL3.C プロジェクト: daemqn/Atari_ST_Sources
void
sl_arrow( int base, int obj, int inc, int min, int max, int *numvar )
{
    OBJECT *tree = rs_object;
    int slider = ObHead(base);
    MRETS mk;
    int newvalue, oldvalue, delay = SL_MAX_DELAY;
    GRECT slidrect;

    slidrect = ObRect( slider );
    objc_offset( tree, slider, &slidrect.g_x, &slidrect.g_y );
/* account for outlines */
    slidrect.g_x--;
    slidrect.g_y--;
    slidrect.g_w += 2;
    slidrect.g_h += 2;

    if( obj > 0 )
	select( tree, obj );

    oldvalue = *numvar;
    do {
	newvalue = *numvar + inc;
	if( newvalue < min ) newvalue = min;
	else if( newvalue > max ) newvalue = max;
	/* if in bounds, change the slider thumb */
	if( newvalue != oldvalue ) {
	    oldvalue = newvalue;
	    *numvar = newvalue;
	    sl_x( base, newvalue, min, max );
	/* undraw old */
	    Objc_draw( tree, base, 0, &slidrect );
	/* draw new */
	    objc_offset( tree, slider, &slidrect.g_x, &slidrect.g_y );
	    slidrect.g_x--;
	    slidrect.g_y--;
	    Objc_draw( tree, base, MAX_DEPTH, &slidrect );
	    evnt_timer( delay, 0 );
	    if( delay > SL_MIN_DELAY )
		delay -= SL_INC;
        }
	Graf_mkstate( &mk );
    } while( mk.buttons != 0 );

    if( obj > 0 )
	deselect( tree, obj );
    Objc_draw( tree, base, MAX_DEPTH, &slidrect );
}
コード例 #9
0
ファイル: SLIDER.C プロジェクト: daemqn/Atari_ST_Sources
static void do_arrows(int button, OBJECT *tree, SLIDER *sl, XDINFO *info)
{
	boolean redraw, first = TRUE;
	int mstate;

	xd_change(info, button, SELECTED, 1);

	do
	{
		redraw = FALSE;

		if (button == sl->up_arrow)
		{
			if (sl->line > 0)
			{
				sl->line--;
				redraw = TRUE;
				sl_set_slider(tree, sl, info);
			}
		}
		else
		{
			if (sl->line < (sl->n - sl->lines))
			{
				sl->line++;
				redraw = TRUE;
				sl_set_slider(tree, sl, info);
			}
		}

		if (redraw == TRUE)
			sl->set_selector(sl, TRUE, info);

		mstate = xe_button_state() & 1;

		if ((first == TRUE) && mstate)
		{
			evnt_timer(250, 0);
			first = FALSE;
		}
	}
	while (mstate);

	xd_change(info, button, NORMAL, 1);
}
コード例 #10
0
ファイル: deskmain.c プロジェクト: kelihlodversson/emutos
static WORD do_deskmenu(WORD item)
{
    WORD done, touchob;
    OBJECT *tree, *obj;

    done = FALSE;
    switch(item)
    {
    case ABOUITEM:
        display_free_stack();
        tree = G.a_trees[ADDINFO];
        /* draw the form        */
        show_hide(FMD_START, tree);
        while(!done)
        {
            touchob = form_do(tree, 0);
            touchob &= 0x7fff;
            if (touchob == DEICON)
            {
#if CONF_WITH_EASTER_EGG
                int i;
                for (i = 0; i < 23; i++)
                {
                    sound(TRUE, freq[i], dura[i]);
                    evnt_timer(dura[i]*64, 0);
                }
#endif
            }
            else
                done = TRUE;
        }
        obj = tree + DEOK;
        obj->ob_state = NORMAL;
        show_hide(FMD_FINISH, tree);
        done = FALSE;
        break;
    }

    return done;
}
コード例 #11
0
ファイル: MP2EVENT.C プロジェクト: ysei/Atari_ST_Sources
void main_event_loop()
{
	fgbg=(_app?FG:BG);
	
	while(!quit)
	{
		if(closed_acc)
		{
			evnt_timer(1000,0);
#ifdef DEBUG
			form_alert(1,"[1][ACC reopened][Ok]");
#endif
			fg_init(&windforms[WIND_CTRL]);
			if(file_was_open)
				fd=reopen_file();
			closed_acc=0;
		}
		if(fgbg==FG)
			fg_event_loop();
		else if(fgbg==BG)
			bg_event_loop();
	}

}
コード例 #12
0
ファイル: INITMAN.C プロジェクト: daemqn/Atari_ST_Sources
void init_manager(void)
{
	#ifdef DEBUG
	printf(DEBUG_ACTIVATED);
	#endif

	_GemParBlk.global[0]=0;
	ap_id = appl_init();
	if (!_GemParBlk.global[0]) exit(0);
	if (ap_id < 0) exit(0);

	if (!_app) wind_update(BEG_UPDATE);

	Pdomain(1);
	check_cookies();
	
	if (_GemParBlk.global[1] != 1) multitask = 1;
	if ((_GemParBlk.global[0] >= 0x0400) && (multitask)) multitos = 1;
	
	allocmode = GLOBAL;
	if (_app) allocmode |= 3;
	
	read_name();
	check_info();
	
	if ((!_app) || ((multitos) && (!magix)))
	{
		menu_id = menu_register(ap_id,STRING_MENUENTRY);
		
		if (menu_id < 0)
		{
			if (!_app) wind_update(END_UPDATE);
			
			if (multitos)
			{
				appl_exit();
				exit(0);
			}
			else
			{
				while (1) evnt_timer(0,1);
			}
		}
	}
	
	find_inf();

	if (!_app) wind_update(END_UPDATE);

	Psignal(SIGTERM,sig_handler);
	Psignal(SIGQUIT,sig_handler);
	
	if (!multitask)
	{
		char s[256];
		
		strcpy(s,"[0][OLGA v");
		strcat(s,OLGAVERSIONSTR);
		strcat(s,"  Rev ");
		strcat(s,OLGAREVISION);
		strcat(s," (");
		strcat(s,OLGADATE);
		strcat(s,") | |");
		strcat(s,MESSAGE_MULTITASKING);
		
		form_alert(1,s);
		
		if (_app)
		{
			#ifdef DEBUG
			printf(DEBUG_DEACTIVATED);
			#endif
			
			appl_exit();
			exit(0);
		}
	}
	
	if (shutdown) shel_write(9,1,0,NULL,NULL);
	
	broadcast_olenew();
}
コード例 #13
0
ファイル: TRANSFER.C プロジェクト: daemqn/Atari_ST_Sources
do_batch(void)
{
int hd,sec,hd2;
char line[80],*l;
long timer;

    if (fsel("*.TTB",tbuf,"Batch starten") == 1){
        if ((hd=Fopen(tbuf,0)) > 0) {
            while (readline(hd,line)){
                l=line;
                while (*l++ > 32);
                *(l-1)=0;
                strupr(line);
                if (!strcmp(line,"DIAL")) {
                    if (call_modem(-1,l)) break;
                    else continue;
                }
                if (!strcmp(line,"WAIT")) {
                    sec=atoi(l);
                    timer=get_timer();
                    while ((get_timer()-timer) < (sec*200))
                        evnt_timer(0,0);
                    continue;
                }
                if (!strcmp(line,"RWAIT")) {
                    if (rwait(l) == 0) continue;
                    else break;
                }
                if (!strcmp(line,"SEND")) {
                    while(*l) send(*l++);
                    send(13);
                    continue;
                }
                if (!strcmp(line,"END")) {
                    break;
                }
                if (!strcmp(line,"BAUDRATE")) {
                    continue;
                }
                if (!strcmp(line,"UPLOAD")) {
                    if (*l == 'X') {
                        para.blklen=128;
                        para.chk=CHKSUM;
                    }
                    if (*l == 'Y') {
                        para.blklen=1024;
                        para.chk=CRC;
                    }
                    while (*l++ > 32);
                    *(l-1)=0;
                    open_dial(1);
                    if ((hd2=Fopen(l,0)) > 0) {
                        send_xmodem(hd2);
                        Fclose(hd2);
                    }
                    open_dial(0);
                }   
                if (!strcmp(line,"DOWNLOAD")) {
                    if (*l == 'X') {
                        para.blklen=128;
                        para.chk=CHKSUM;
                    }
                    if (*l == 'Y') {
                        para.blklen=1024;
                        para.chk=CRC;
                    }
                    while (*l++ > 32);
                    *(l-1)=0;
                    open_dial(1);
                    if ((hd2=Fcreate(l,0)) > 0) {
                        receive_xmodem(hd2);
                        Fclose(hd2);
                    }
                    open_dial(0);
                }   
            }
            Fclose(hd);
        }
    }
}
コード例 #14
0
ファイル: MAIN.C プロジェクト: daemqn/Atari_ST_Sources
int main(void)
{
	int error;

#if _MINT_				/* HR 151102 */
	have_ssystem = Ssystem(-1, 0, 0) == 0;		/* HR 151102: use Ssystem where possible */

	mint   = (find_cookie('MiNT') == -1) ? FALSE : TRUE;
	magx   = (find_cookie('MagX') == -1) ? FALSE : TRUE;	/* HR 151102 */
	geneva = (find_cookie('Gnva') == -1) ? FALSE : TRUE;    /* DjV 035 080203 */
	mint  |= magx;			/* Quick & dirty */

	if (mint)
	{
		Psigsetmask(0x7FFFE14EL);
		Pdomain(1);
	}
#endif

	x_init();

	if ((ap_id = appl_init()) < 0)
		return -1;

	if  (_GemParBlk.glob.version >= 0x400)
	{
		shel_write(9, 1, 0, NULL, NULL);
		menu_register(ap_id, "  Tera Desktop");
	}

	if (rsrc_load(RSRCNAME) == 0)
		form_alert(1, msg_resnfnd);
	else
	{
		if ((error = init_xdialog(&vdi_handle, malloc, free,
								  "Tera Desktop", 1, &nfonts)) < 0)
			xform_error(error);
		else
		{
			init_vdi();
			rsc_init();

			if (((max_w / screen_info.fnt_w) < 40) || ((max_h / screen_info.fnt_h) < 25))
				alert_printf(1, MRESTLOW);
			else
			{
				if ((error = alloc_global_memory()) == 0)
				{
					if (exec_deskbat() == FALSE)
					{
						if (load_icons() == FALSE)
						{
							if (init() == FALSE)
							{
								graf_mouse(ARROW, NULL);
								evntloop();

								wd_del_all();
								menu_bar(menu, 0);
								xw_close_desk();
							}

							free_icons();		/* HR 151102 */

							wind_set(0, WF_NEWDESK, NULL, 0);
							dsk_draw();
						}
					}

					Mfree(global_memory);
				}
				else
					xform_error(error);
			}

			if (vq_gdos() != 0)
				vst_unload_fonts(vdi_handle, 0);
			exit_xdialog();
		}

		rsrc_free();
	}

	/* DjV 013 030103 100203 ---vvv--- */
	/*
	 * The following section handles system shutdown and resolution change
	 * If a resolution change is required, shutdown is performed first
	 * If only shutdown s required, system will reset at the end.
	 */ 

	/* appl_exit(); */

	if ( chrez || shutdown ) /* If change resolution or shutdown ... */
	{

		/* Tell all applications which would understand it to end */

		quit = shel_write ( 4, 2, 0, NULL, NULL ); 	/* complete shutdown */
		evnt_timer( 3000, 0 );						/* Wait a bit? */

		/*

		/* 
		 * In Mint, must tell all proceseses to terminate nicely ?
		 * but this is only in this group ? What to do?
		 */

		Pkill(0, SIGTERM); 
		evnt_timer(3000, 0); /* Wait a bit? */
		*/

		/* 
		 * After all applications have hopefully been closed,
		 * change the screen resolution if needed;
		 * else- reset the computer
		 */
		if ( chrez )
			get_set_video(2);

#if 1
		else
	#if _MINT_
		if (!mint)			/* HR 230203: Dont reset under MiNT or MagiC !!!!! */
	#endif
		{
			/* Perform a reset here */

	#if 0		/* with warnings */
			long *m;					/* to memory locations */
			long rv;					/* reset vector */

			Super ( 0L );				/* Supervisor; old stack won't be needed again */
			*(m = 0x420L) = 0L;			/* memctrl  */
			*(m = 0x43aL) = 0L;			/* memval2  */
			*(m = 0x426L) = 0L;			/* resvalid */	
			m = *( m = 0x4f2 );			/* to start of OS */
			rv = *(m + 4);				/* to routine that  handles the reset */
			Supexec(rv);				/* execute it */
	#else			/* HR: without warnings */
			long (*rv)();					/* reset vector */

			Super ( 0L );				/* Supervisor; old stack won't be needed again */
			memctrl = 0L;
			memval2 = 0L;
			resvalid = 0L;
			(long)rv = *((long *)os_start + 4);	/* routine that handles the reset */
			Supexec(rv);				/* execute it */
	#endif
		}
#endif
	}
コード例 #15
0
ファイル: certview.c プロジェクト: kyllikki/netsurf
static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
	struct core_window *tv=NULL;
	GRECT tb_area;
	GUIWIN * gemtk_win;
	struct atari_sslcert_viewer_s *cvwin = NULL;
	short retval = 0;
	OBJECT *toolbar;

	NSLOG(netsurf, INFO, "win %p", win);

	if(ev_out->emo_events & MU_MESAG){
		switch (msg[0]) {

		case WM_TOOLBAR:
			toolbar = gemtk_obj_get_tree(TOOLBAR_SSL_CERT);
			NSLOG(netsurf, INFO, "CERTVIEWER WM_TOOLBAR");
			tv = (struct core_window*) gemtk_wm_get_user_data(win);
			assert(tv);
			cvwin = (struct atari_sslcert_viewer_s *)
				atari_treeview_get_user_data(tv);
			switch	(msg[4]) {

			case TOOLBAR_SSL_CERT_TRUSTED:

				if (toolbar[msg[4]].ob_state & OS_SELECTED) {

				} else {

				}
				break;
			}


			gemtk_win = atari_treeview_get_gemtk_window(tv);
			assert(gemtk_win);
			//gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
			atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
			evnt_timer(150);
			gemtk_wm_exec_redraw(gemtk_win, &tb_area);
			retval = 1;
			break;

		case WM_CLOSED:
			// TODO set perrmissions
			toolbar = gemtk_obj_get_tree(TOOLBAR_SSL_CERT);
			tv = (struct core_window*) gemtk_wm_get_user_data(win);
			assert(tv);
			cvwin = (struct atari_sslcert_viewer_s *)
				atari_treeview_get_user_data(tv);
			if (toolbar[TOOLBAR_SSL_CERT_TRUSTED].ob_state & OS_SELECTED) {
				sslcert_viewer_accept(cvwin->ssl_session_data);
			} else {
				sslcert_viewer_reject(cvwin->ssl_session_data);
			}
			atari_sslcert_viewer_destroy(cvwin);
			retval = 1;
			break;

		default: break;
		}
	}

	return(retval);
}
コード例 #16
0
ファイル: FAKE.C プロジェクト: daemqn/Atari_ST_Sources
void  do_some_work()

{
   NDB     *ndb;
   time_t  timeout;
   int     handle, message[2], response, ready;

   if ((handle = UDP_open (0, IP_DIALER_PORT)) < 0) {
        form_alert (1, no_udp);
        return;
      }

   for (;;) {

        timeout = time (NULL) + TIMEOUT;

        do {
             evnt_timer (200, 0);

             if ((ndb = CNget_NDB (handle)) != NULL) {
                  switch (* (int16 *) ndb->ndata) {
                     case IP_DIAL_REQUEST :
                       sprintf (alert, query, ndb->ndata + 4, * (int16 *) (ndb->ndata + 2));
                       if (form_alert (1, alert) == 1)
                            message[0] = IP_DIAL_DONE,  message[1] = 0;
                         else {
                            message[0] = IP_DIAL_ERROR;
                            response = 0;
                            do {
                                 sprintf (alert, number, response);
                                 ready = 0;
                                 switch (form_alert (1, alert)) {
                                    case 1 :   response --;   break;
                                    case 2 :   ready = 1;     break;
                                    case 3 :   response ++;   break;
                                    }
                              } while (! ready);
                            message[1] = response;
                          }
                       break;
                     case IP_DIAL_HANGUP :
                       form_alert (1, hangup);
                       message[0] = IP_DIAL_DONE;
                       message[1] = 0;
                       break;
                     }
                  KRfree (ndb->ptr);
                  KRfree (ndb);
                  UDP_send (handle, (char *) message, 4);
                  UDP_close (handle);

                  if ((handle = UDP_open (0, IP_DIALER_PORT)) < 0) {
                       form_alert (1, no_udp);
                       return;
                     }
                }
          } while (time (NULL) < timeout);

        if (form_alert (1, proceed) != 1)   break;
      }

   UDP_close (handle);
 }
コード例 #17
0
ファイル: slider.c プロジェクト: daemqn/Atari_ST_Sources
/*----------------------------------------------------------------------------------------*/
void	sld_lscroll( SLD *sld )
{
	OBJECT	*tree = sld->wd->tree;
	EVNTDATA	ev;
	GRECT 	rect1;
	GRECT 	rect2;
	GRECT		rect3;
	int16		newy = 0;
	int16		oldy = 0;
	int16		mmin, mmax;

	graf_mkstate( &ev );

	newy = oldy = ev.y;

	objc_rect( tree, sld->white, &rect1 );
	objc_rect( tree, sld->back, &rect2 );

	mmin = oldy - tree[sld->white].ob_y;
	mmax = oldy + (tree[sld->back].ob_height - tree[sld->white].ob_y - tree[sld->white].ob_height);

	graf_mouse( FLAT_HAND, NULL );

	do
	{
		objc_rect( tree, sld->white, &rect2 );
		tree[sld->white].ob_y += ( newy-oldy );
		objc_rect( tree, sld->white, &rect1 );
		
		rect3.g_x = rect1.g_x;
		rect3.g_y = min( rect1.g_y, rect2.g_y );
		rect3.g_w = rect1.g_w;
		rect3.g_h = (( (newy-oldy) < 0 ) ? -(newy-oldy) : (newy-oldy) ) + rect1.g_h;
		
		if(newy-oldy != 0)
		{
			hide_mouse();
			if( gl_naes )
			{
				rect3.g_x-=2;
				rect3.g_y-=2;
				rect3.g_w+=4;
				rect3.g_h+=4;
			}
			
			objc_draw( tree, sld->back, MAX_DEPTH, &rect3 );
			sld->pos_old = sld->pos_new = sld_getpos(sld);
			
     		if( sld->scroll )
            sld->scroll( sld->wd, SCROLL_LIVE, sld->pos_new );
			
			show_mouse();
		}

		graf_mkstate( &ev );
		oldy = newy;
		newy = min( mmax, ev.y );
		newy = max( mmin, newy );
		evnt_timer(20);
	} while ( ev.bstate & 0x01 );
	
	graf_mouse( ARROW, NULL );
}
コード例 #18
0
ファイル: MAIN.C プロジェクト: daemqn/Atari_ST_Sources
void  main()

{
   int   message[8], flag;
   char  string[6];

   gl_apid = appl_init();

   if (! _app) {
        menu_register (gl_apid, "  Super Server");
        evnt_timer (1000, 0);
      }

   if (! rsrc_load ("IND.RSC")) {
        form_alert (1, "[1][ |   Cannot find IND.RSC !   ][ Cancel ]");
        terminate();   return;
      }

   get_path();

   if (initialise_windows (4, ICONIFY) == 0) {
        leave_windows();   rsrc_free();   terminate();
        return;
      }

   if (get_version (string) > 0) {
        form_alert (1, 
                "[1][ |   STiK is not loaded,    | |      or corrupted !][ Cancel ]");
        leave_windows();   rsrc_free();   terminate();
        return;
      }
   change_freestring (START, ST_VERS,  -1, string, 5);
   change_freestring (START, SS_VERS,  -1, version, 5);

   set_api_struct();

   if (init_modules() == 0) {
        leave_windows();   rsrc_free();   terminate();
        return;
      }
   set_callbacks (CB_EVENT, (FUNC) check_modules, (FUNC) 0L);

   init_configs();

   graf_mouse (ARROW, NULL);

   if (_app) {
        do_some_work();
        while (! exit_inetd) {
             evnt_mesag (message);
             message_handler (message);
             while ((flag = operate_events()) >= 0);
             if (flag == -4)
                  exit_inetd = TRUE;
           }
      }
     else {
        FOREVER {
             evnt_mesag (message);
             message_handler (message);
           }
      }

   if (strings)   Mfree (strings);

   terminate_modules();

   leave_windows();

   rsrc_free();

   appl_exit();
 }