Example #1
0
/*----------------------------------------------------------------------------------------*/
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 );
}
Example #2
0
/* --------------------------
   | Move Micro-wire slider |
   -------------------------- */
void mw_move(int inx)
{
int obj_y, obj_y2, obj_x;
int mx, my, mk, ks;
int obj_h;
int red, dummy;

objc_offset(setmw_dia.tree, mw_sld[inx], &dummy, &obj_y);
obj_h = setmw_dia.tree[mw_sld[inx]].ob_height;

graf_mkstate(&mx, &my, &mk, &ks);
mk = 1;
do
	{
	if (mk == 1 && my < obj_y || my >= obj_y + obj_h)
		{
		red = 0;
		
		if (my > obj_y && mw_data[inx])
			{
			mw_data[inx]--;
			red = 1;
			}
			
		if (my < obj_y && mw_data[inx] < mw_sldd[inx])
			{
			mw_data[inx]++;
			red = 1;
			}
			
		if (red)
			{
			set_mwsld(inx);
			objc_offset(setmw_dia.tree, mw_sld[inx], &obj_x, &obj_y2);
			
			if (obj_y2 < obj_y)
				dialog_redraw(setmw_dia.w_handle, ROOT,
												obj_x, 
												obj_y2, 
												setmw_dia.tree[mw_sld[inx]].ob_width + 4,
												setmw_dia.tree[mw_sld[inx]].ob_height + 4
												+ obj_y - obj_y2);
			else
				dialog_redraw(setmw_dia.w_handle, ROOT,
												obj_x, 
												obj_y, 
												setmw_dia.tree[mw_sld[inx]].ob_width + 4,
												setmw_dia.tree[mw_sld[inx]].ob_height + 4
												+ obj_y2 - obj_y);
			obj_y = obj_y2;
			}
		}
	graf_mkstate(&mx, &my, &mk, &ks);
	}while(mk == 1);
}
Example #3
0
main()
{
	int gr_mkmx, gr_mkmy;
	int gr_mkmstate, gr_mkkstate;
	int tmpx, tmpy;
	int tmpx1, tmpy1;
	int tmpx2, tmpy2;
	int index, rgb_in[3];
	int draw;

	appl_init();
	phys_handle = graf_handle(&gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox);
	wind_get(0, WF_WORKXYWH, &xdesk, &ydesk, &wdesk, &hdesk);
	open_vwork();
	wi_handle = wind_create(0x0040&0x0080, xdesk, ydesk, wdesk, hdesk);
	graf_mouse(3, 0x0L);
	vswr_mode(handle, 3);
	graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
	while(!(0x0002&gr_mkmstate))	{
		graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
		if (0x0001&gr_mkmstate)	{
			tmpy = gr_mkmy;
			tmpx = gr_mkmx;
			graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
			graf_mouse(M_OFF, 0x0L);
			tmpy1 = gr_mkmy;
			tmpx1 = gr_mkmx;
			drawframe(tmpx, tmpy, tmpx1, tmpy1);
			graf_mouse(M_ON, 0x0L);
			while (0x0001&gr_mkmstate)	{
				graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
				if (((tmpx1 != gr_mkmx) || (tmpy1 != gr_mkmy)) &&
					(0x0001&gr_mkmstate))	{
					graf_mouse(M_OFF, 0x0L);
					drawframe(tmpx, tmpy, tmpx1, tmpy1);
					drawframe(tmpx, tmpy, gr_mkmx, gr_mkmy);
					graf_mouse(M_ON, 0x0L);
					tmpy1 = gr_mkmy;
					tmpx1 = gr_mkmx;
				}
			}
			graf_mouse(M_OFF, 0x0L);
			drawframe(tmpx, tmpy, tmpx1, tmpy1);
			graf_mouse(M_ON, 0x0L);
		}
	}
	wind_delete(wi_handle);
	v_clsvwk(handle);
	appl_exit();
}
Example #4
0
static void do_bar(OBJECT *tree, SLIDER *sl, XDINFO *info)
{
	int my, oy, dummy, old, max;

	graf_mkstate(&dummy, &my, &dummy, &dummy);
	objc_offset(tree, sl->slider, &dummy, &oy);

	do
	{
		old = sl->line;

		if (my < oy)
		{
			sl->line -= sl->lines;
			if (sl->line < 0)
				sl->line = 0;
		}
		else
		{
			sl->line += sl->lines;
			max = sl->n - sl->lines;
			if (sl->line > max)
				sl->line = max;
		}

		if (sl->line != old)
		{
			sl_set_slider(tree, sl, info);
			sl->set_selector(sl, TRUE, info);
		}
	}
	while (xe_button_state() & 0x1);
}
Example #5
0
static int OnRButtonDown(void *w, int mk_state, int x, int y)
{
  GEM_WINDOW *wnd = w ;
  HEX_DUMP   *hex_dump = (HEX_DUMP *) wnd->Extension ;
  OBJECT     *popup ;
  int        clicked ;
  int        i, mx, my, dummy ;

  popup = popup_make( 4, 15 ) ;
  if ( popup == NULL ) return( 0 ) ;

  i = 0 ;
  strcpy( popup[++i].ob_spec.free_string, "  Byte    " ) ;
  strcpy( popup[++i].ob_spec.free_string, "  Word    " ) ;
  strcpy( popup[++i].ob_spec.free_string, "  Long    " ) ;
  strcpy( popup[++i].ob_spec.free_string, "  Find... " ) ;

  if ( ( hex_dump->display_type >= DT_BYTE ) && ( hex_dump->display_type <= DT_MIXED ) )
    popup[hex_dump->display_type].ob_spec.free_string[0] = 8 ;

  graf_mkstate( &mx, &my, &dummy, &dummy ) ;
  clicked = popup_formdo( &popup, mx-16, my, 1, 0 ) ;
  popup_kill( popup, 4 ) ;

  if ( clicked >= 0 )
  {
  }

  return( GW_EVTSTOPROUTING ) ;
}
Example #6
0
/* test for shift key, and mark as 'selected' rather than VIEWED */
char view_or_select(void)
{
	int dummy,shift;

	if (ncn<0) { return( VIEWED ); }	/* no 'select' while offline */
	graf_mkstate(&dummy,&dummy,&dummy,&shift);
	if (shift&(K_RSHIFT+K_LSHIFT)) { return( SELECT_RET ); } else { return( VIEWED ); }
}
Example #7
0
/*! 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() */ 
Example #8
0
static WORD hndl_button(WORD clicks, WORD mx, WORD my, WORD button, WORD keystate)
{
    WORD done, junk;
    GRECT c;
    WORD wh, dobj, dest_wh;
    WORD root;
    WNODE *wn;

    done = FALSE;

    wh = wind_find(mx, my);

    if (wh != G.g_cwin)
        desk_clear(G.g_cwin);

    desk_verify(wh, FALSE);

    wind_get_grect(wh, WF_WXYWH, &c);

    if (clicks == 1)
    {
        act_bsclick(G.g_cwin, G.g_screen, G.g_croot, mx, my,
                    keystate, &c, FALSE);
        graf_mkstate(&junk, &junk, &button, &junk);
        if (button & 0x0001)
        {
            dest_wh = act_bdown(G.g_cwin, G.g_screen, G.g_croot, &mx, &my,
                                &keystate, &c, &dobj);
            if (dest_wh != NIL)
            {
                root = 1;
                if (dest_wh != 0)
                {
                    wn = win_find(dest_wh);
                    if (wn)
                        root = wn->w_root;
                }
                desk1_drag(wh, dest_wh, root, dobj, mx, my, keystate);
                desk_clear(wh);
            }
        }
    }
    else
    {
        act_bsclick(G.g_cwin, G.g_screen, G.g_croot, mx, my, keystate, &c, TRUE);
        done = do_filemenu(OPENITEM);
    }

    men_update(G.a_trees[ADMENU]);

    return done;
}
Example #9
0
void
Do_Slider( int base, int slider, int index, int dclick )
{
     MRETS mk;
     int   oldy;

     if( dclick )
 	  do_rgb( slider, base, index );
     else
     {
	  (*xcpb->MFsave)(MFSAVE, &orig_mf);
	  if( AES_Version >= 0x0320 )
	      graf_mouse( FLAT_HAND, 0L );

          if(( AES_Version >= 0x0330 )
	      && ( numcol > LWHITE ) )
	     XSelect( tree, slider );
	  
	  curslid = slider;

	  graf_mkstate( &mk.x, &oldy, &mk.buttons, &mk.kstate );
	  do
	  {
	     graf_mkstate( &mk.x, &mk.y, &mk.buttons, &mk.kstate );
	  }while( mk.buttons && ( mk.y == oldy ));

	  if( mk.buttons && ( mk.y != oldy ))
	     (*xcpb->Sl_dragy)(tree, base, slider, 0, 1000, 
   			       &curscrn[index], adjcol);

          if(( AES_Version >= 0x0330 )
	       && ( numcol > LWHITE ) )
	     XDeselect( tree, slider );
	  (*xcpb->MFsave)(MFRESTORE, &orig_mf);
     }
}
Example #10
0
VOID hndl_spsel(WORD mx, WORD my, WORD mb, WORD ks)
{
	WORD		curr_ob;
	WORD		state, shifted;
	LONG		tree;

	tree = ad_spol;

	shifted = (ks & K_LSHIFT) || (ks & K_RSHIFT);
	curr_ob = objc_find((OBJECT FAR *)tree, ROOT, MAX_DEPTH, mx, my);
	if ( (curr_ob >= F1NAME) &&
	     (curr_ob <= F12NAME) &&
	     (gl_sppfn[curr_ob - F1NAME] != NULL) )
	{
		state = the_spol[curr_ob].ob_state;
		if ( !shifted )
		{
			if ( !(state & SELECTED) )
			{
				act_allchg(curr_ob, &the_spol[0].ob_x, SELECTED, FALSE);
				state |= SELECTED;
			}
		}
		else
		{
			if (state & SELECTED)
				state &= ~SELECTED;
			else
				state |= SELECTED;
		}
 		if (state != the_spol[curr_ob].ob_state )
			spol_chg(curr_ob, state);
	}
	else
	{
		act_allchg(curr_ob, &the_spol[0].ob_x, SELECTED, FALSE);
	}

	graf_mkstate(&mx, &my, &mb, &ks);
	if (mb & 0x0001)
		spol_down(mx, my);
}
Example #11
0
void
iw_drag(ICONWIND iw, WORD xoff, WORD yoff)
{
	UWORD	e;
	WORD	mx, my, mb, i;

	wind_update(BEG_MCTRL);
	graf_mkstate(&mx, &my, &mb, &i);
	do {
		iw->w.rwind.g_x = min(max(mx + xoff, desk.g_x),
							  desk.g_x + desk.g_w - iw->w.rwind.g_w);
		iw->w.rwind.g_y = min(max(my + yoff, desk.g_y),
							  desk.g_y + desk.g_h - iw->w.rwind.g_h);
		iw_xdraw(iw);
		e = evnt_multi(MU_BUTTON|MU_M1, 1,1,!mb,
						1,mx,my,1,1,  0,0,0,0,0,
						NULL, 0,0, &mx, &my, &i, &i, &i, &i);
		iw_xdraw(iw);
	} while (!(e & MU_BUTTON));
	wind_update(END_MCTRL);
	iw->w.sizecalc(&iw->w, &iw->w.rwind);
}
Example #12
0
int OnObjectNotifyGamma(void *w, int obj)
{
  GEM_WINDOW       *wnd = (GEM_WINDOW *) w ;
  WEXTENSION_GAMMA *wext = wnd->DlgData->UserData ;
  OBJECT           *adr_gamma = wnd->DlgData->BaseObject ;
  int              xm, dummy ;
  int              code = -1 ;

  switch( obj )
  {
     case GAMMA_RMOINS  :
     case GAMMA_RPLUS   : if ( obj == GAMMA_RPLUS ) wext->rgamma += 0.05 ;
                          else                      wext->rgamma -= 0.05 ;
                          if ( wext->rgamma < 0.02 ) wext->rgamma = 0.02 ;
                          if ( wext->rgamma > 2.0 )  wext->rgamma = 2.0 ;
                          wext->off_x = (int) (wext->rgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_RSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_RVAL ) ;
                          break ;
     case GAMMA_RBAR  :   graf_mkstate(&xm, &dummy, &dummy, &dummy) ;
                          objc_offset(adr_gamma, GAMMA_RSLIDER, &wext->off_x, &wext->off_y) ;
                          if (xm > wext->off_x) wext->rgamma += 0.2 ;
                          else                  wext->rgamma -= 0.2 ;
                          if (wext->rgamma < 0.02) wext->rgamma = 0.02 ;
                          if (wext->rgamma > 2.0)  wext->rgamma = 2.0 ;
                          wext->off_x = (int) (wext->rgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_RSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_RVAL) ;
                          break ;
     case GAMMA_RSLIDER : wext->rgamma = (float) graf_slidebox(adr_gamma, GAMMA_RBAR, GAMMA_RSLIDER, 0) ;
                          wext->rgamma = wext->rgamma*2.0/1000.0 ;
                          if (wext->rgamma < 0.02) wext->rgamma = 0.02 ;
                          wext->off_x  = (int) (wext->rgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_RSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_RVAL) ;
                          break ;
     case GAMMA_VMOINS  :
     case GAMMA_VPLUS   : if ( obj == GAMMA_VPLUS ) wext->vgamma += 0.05 ;
                          else                      wext->vgamma -= 0.05 ;
                          if (wext->vgamma < 0.02) wext->vgamma = 0.02 ;
                          if (wext->vgamma > 2.0)  wext->vgamma = 2.0 ;
                          wext->off_x = (int) (wext->vgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_VSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_VVAL) ;
                          break ;
     case GAMMA_VBAR  :   graf_mkstate(&xm, &dummy, &dummy, &dummy) ;
                          objc_offset(adr_gamma, GAMMA_VSLIDER, &wext->off_x, &wext->off_y) ;
                          if (xm > wext->off_x) wext->vgamma += 0.2 ;
                          else                  wext->vgamma -= 0.2 ;
                          if (wext->vgamma < 0.02) wext->vgamma = 0.02 ;
                          if (wext->vgamma > 2.0)  wext->vgamma = 2.0 ;
                          wext->off_x = (int) (wext->vgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_VSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_VVAL) ;
                          break ;
     case GAMMA_VSLIDER : wext->vgamma = (float) graf_slidebox(adr_gamma, GAMMA_VBAR, GAMMA_VSLIDER, 0) ;
                          wext->vgamma = wext->vgamma*2.0/1000.0 ;
                          if (wext->vgamma < 0.02) wext->vgamma = 0.02 ;
                          wext->off_x  = (int) (wext->vgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_VSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_VVAL) ;
                          break ;
     case GAMMA_BMOINS  :
     case GAMMA_BPLUS   : if ( obj == GAMMA_BPLUS ) wext->bgamma += 0.05 ;
                          else                      wext->bgamma -= 0.05 ;
                          if (wext->bgamma < 0.02) wext->bgamma = 0.02 ;
                          if (wext->bgamma > 2.0)  wext->bgamma = 2.0 ;
                          wext->off_x = (int) (wext->bgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_BSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_BVAL) ;
                          break ;
     case GAMMA_BBAR  :   graf_mkstate(&xm, &dummy, &dummy, &dummy) ;
                          objc_offset(adr_gamma, GAMMA_BSLIDER, &wext->off_x, &wext->off_y) ;
                          if (xm > wext->off_x) wext->bgamma += 0.2 ;
                          else                  wext->bgamma -= 0.2 ;
                          if (wext->bgamma < 0.02) wext->bgamma = 0.02 ;
                          if (wext->bgamma > 2.0)  wext->bgamma = 2.0 ;
                          wext->off_x = (int) (wext->bgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_BSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_BVAL) ;
                          break ;
     case GAMMA_BSLIDER : wext->bgamma = (float) graf_slidebox(adr_gamma, GAMMA_BBAR, GAMMA_BSLIDER, 0) ;
                          wext->bgamma = wext->bgamma*2.0/1000.0 ;
                          if (wext->bgamma < 0.02) wext->bgamma = 0.02 ;
                          wext->off_x  = (int) (wext->bgamma*(float)wext->wbar/2.0) ;
                          adr_gamma[GAMMA_BSLIDER].ob_x = wext->off_x ;
                          update_gammabox( wnd, GAMMA_BVAL) ;
                          break ;
     case GAMMA_GROUP   :
     case GAMMA_TGROUP  : inv_select(adr_gamma, GAMMA_GROUP) ;
                          break ;
     case GAMMA_OK      : code = IDOK ;
                          break ;
     case GAMMA_CANCEL  : code = IDCANCEL ;
                          break ;
  }

  if ( code == IDOK )
  {

  }

  return( code ) ;
}
Example #13
0
 /* button handling using XFORM_DO
 */
int
handle_button( int button, WORD *msg )
{
    OBJECT *tree  = (OBJECT *)rs_trindex[GENERAL];
    int    done = FALSE;
    BOOLEAN  click_flag = FALSE;
    MRETS  mk;
    int    ox, oy;
       
    if( ( button != -1 ) && ( button & 0x8000 ) )
    {
      click_flag = TRUE;
      button &= 0x7FFF;
    }

    switch( button )
    {
       case GSAVE:   if( (*xcpb->XGen_Alert)( SAVE_DEFAULTS ) )
       		     {
       			 (*xcpb->CPX_Save)( &cur_value, sizeof( GEN ) );
       			 push_data();
       			 Set_Data();
       		     }
       		     XDeselect( tree, GSAVE );
       		     break;
       		     
       case GOK:     done = TRUE;
       		     Set_Data();
       		     Deselect( GOK );
       		     break;
       			
       case GCANCEL: done = TRUE;
       		     pop_data();
       		     Deselect( GCANCEL );
       		     break;
       
       case STATUS:  graf_mkstate( &mk.x, &mk.y, &mk.buttons, &mk.kstate );
       		     if( objc_find( tree, ROOT, MAX_DEPTH, mk.x, mk.y ) == STATUS )
       		         do_status();
       		     break;
       		     
       case BELL:    keybell_handle( BELLICON, &cur_value.bell );
       		     break;
       		     
       case KEYCLICK:keybell_handle( KEYICON, &cur_value.keyclick );
       		     break;
       		     
       case M0:
       case M1:
       case M2:
       case M3:
       case M4:	     Dclick_Select( button );
       		     break;
       		     
       case DOUBLE:  Dclick_Handle( click_flag, button );
        	     break;

       	case KREPEAT:   (*xcpb->MFsave )( MFSAVE, &Other );
       			if( AES_Version >= 0x0320 )
       			    graf_mouse( FLAT_HAND, 0L );


		        if(( AES_Version >= 0x0330 )
	      		    && ( numcol > LWHITE ) )
	     		    XSelect( tree, KREPEAT );

		        graf_mkstate( &ox, &mk.y, &mk.buttons, &mk.kstate );
	  		do
	  		{
	     		   graf_mkstate( &mk.x, &mk.y, &mk.buttons, &mk.kstate );
	  		}while( mk.buttons && ( mk.x == ox ));

			if( mk.buttons && ( mk.x != ox ))
			{
       			   (*xcpb->Sl_dragx)( tree, REPTBASE, KREPEAT, KEYMIN,
       					      KEYMAX, &cur_value.repeat,
       	                                      KRepeat );
       	                   Set_Kbrate();
			}
			
          		if(( AES_Version >= 0x0330 )
	       		     && ( numcol > LWHITE ) )
	     		     XDeselect( tree, KREPEAT );
       	                
       	                (*xcpb->MFsave)( MFRESTORE, &Other );
       			break;
 	       					
       	case KRESPONS:  (*xcpb->MFsave)( MFSAVE, &Other );
       			if( AES_Version >= 0x0320 )
       			    graf_mouse( FLAT_HAND, 0L );
       			    
		        if(( AES_Version >= 0x0330 )
	      		    && ( numcol > LWHITE ) )
	     		    XSelect( tree, KRESPONS );

		        graf_mkstate( &ox, &mk.y, &mk.buttons, &mk.kstate );
	  		do
	  		{
	     		   graf_mkstate( &mk.x, &mk.y, &mk.buttons, &mk.kstate );
	  		}while( mk.buttons && ( mk.x == ox ));

			if( mk.buttons && ( mk.x != ox ))
			{
       			   (*xcpb->Sl_dragx)( tree, RESPBASE, KRESPONS, KEYMIN,
       					      KEYMAX, &cur_value.response,
       	                                      KResponse );
       	                   Set_Kbrate();                  
			}
			
          		if(( AES_Version >= 0x0330 )
	       		     && ( numcol > LWHITE ) )
	     		     XDeselect( tree, KRESPONS );

       	                (*xcpb->MFsave)( MFRESTORE, &Other );
       			break;
       			
       	case RRESP:     (*xcpb->Sl_arrow)( tree, RESPBASE, KRESPONS, RRESP,
       	                                  1, KEYMIN, KEYMAX,
       	                                  &cur_value.response, HORIZONTAL,
       	                                  KResponse );
       	                Set_Kbrate();
       	 		break;
 	       	
       	case LRESP:     (*xcpb->Sl_arrow)( tree, RESPBASE, KRESPONS, LRESP,
       	                                  -1, KEYMIN, KEYMAX,
       	                                  &cur_value.response, HORIZONTAL,
       	                                  KResponse );
       	                Set_Kbrate();
       			break;
 	       	
       	case RREPEAT:   (*xcpb->Sl_arrow)( tree, REPTBASE, KREPEAT, RREPEAT,
       	                                  1, KEYMIN, KEYMAX,
       	                                  &cur_value.repeat, HORIZONTAL,
       	                                  KRepeat );
       	                Set_Kbrate();
       			break;
 	       	
       	case LREPEAT:   (*xcpb->Sl_arrow)( tree, REPTBASE, KREPEAT, LREPEAT,
       	                                  -1, KEYMIN, KEYMAX,
       	                                  &cur_value.repeat, HORIZONTAL,
       	                                  KRepeat );
       	                Set_Kbrate();
       			break;

	case REPTBASE:  Graf_mkstate( &mk );
			objc_offset( tree, KREPEAT, &ox, &oy );
			oy = (( mk.x < ox ) ? ( -3 ) : ( 3 ) );
       			(*xcpb->Sl_arrow)( tree, REPTBASE, KREPEAT, -1,
       			                  oy, KEYMIN, KEYMAX,
       			                  &cur_value.repeat, HORIZONTAL,
       			                  KRepeat );
       			Set_Kbrate();
  			break;
			
	case RESPBASE:  Graf_mkstate( &mk );
			objc_offset( tree, KRESPONS, &ox, &oy );
			oy = (( mk.x < ox ) ? ( -3 ) : ( 3 ));
       			(*xcpb->Sl_arrow)( tree, RESPBASE, KRESPONS, -1,
       			                  oy, KEYMIN, KEYMAX,
       			                  &cur_value.response, HORIZONTAL,
       			                  KResponse );
       			Set_Kbrate();
			break;
			

	case BLK1BUTT:  Do_Speed();
			break;
			
	case BLK2BUTT:  Do_Block2();
        		
	default:	if( button == -1 )
  			{
     			   switch( msg[0] )
     			   {
     			     case WM_REDRAW: Redraw_Objects();
     			     		     break;
     			     		     
     			     case AC_CLOSE:  done = TRUE;
     			     		     pop_data();	
     			     		     break;
     			     		     
     			     case WM_CLOSED: done = TRUE;
     			     		     Set_Data();
					     break;
     			     default:
     			     		break;
     			   }
     			}
     			break;
    }
    return( done );
}
Example #14
0
WORD insa_dial(LONG tree, WORD nicon, WORD numics)
{
	WORD	firstslot, nstate, ystate, i;
	WORD	touchob, oicon, value;
	WORD	mx, my, kret, bret, cont;
	BYTE	*pstr, doctype[4];
	GRECT	pt;

	/* draw the form */
	show_hide(FMD_START, tree);
	/* init for while loop by forcing initial fs_newdir call */
	cont = TRUE;
	while ( cont )
	{
		firstslot = 6;
		for (i = 0; i < firstslot; i++)
		{
			pstr = &doctype[0];
			inf_sget(tree, APDFTYPE+i, pstr);
			if (*pstr == '\0')
				firstslot = i;
		}
		touchob = form_do((OBJECT FAR *)tree, APDFTYPE+firstslot);
		graf_mkstate(&mx, &my, &kret, &bret);

		value = nstate = ystate = 0;
		touchob &= 0x7fff;
		switch ( touchob )
		{
			case APINST:
			case APREMV:
			case APCNCL:
				cont = FALSE;
				break;
			case APFUPARO:
				value = -1;
				break;
			case APFDNARO:
				value = 1;
				break;
			case APGEM:
				nstate = SELECTED;
				ystate = DISABLED;
				break;
			case APDOS:
			case APPARMS:
				nstate = LWGET(OB_STATE(APNMEM));
				ystate = LWGET(OB_STATE(APYMEM));
				if ( ystate == DISABLED )
				{
					nstate = SELECTED;
					ystate = NORMAL;
				}
				break;
			case APFSVSLI:
				ob_actxywh(tree, APFSVELE, &pt);
				pt.g_x -= 3;
				pt.g_w += 6;
				if ( rc_inside(&pt, mx, my) )
					goto dofelev;
				value = (my <= pt.g_y) ? -1 : 1;
				break;
			case APFSVELE:
dofelev:		wind_update(3);
				ob_relxywh(tree, APFSVSLI, &pt);
				pt.g_x += 3;
				pt.g_w -= 6;
				LWSET(OB_X(APFSVSLI), pt.g_x);
				LWSET(OB_WIDTH(APFSVSLI), pt.g_w);
				value = graf_slidebox((OBJECT FAR *)tree, APFSVSLI, APFSVELE, TRUE);
				pt.g_x -= 3;
				pt.g_w += 6;
				LWSET(OB_X(APFSVSLI), pt.g_x);
				LWSET(OB_WIDTH(APFSVSLI), pt.g_w);
				wind_update(2);
#if M68000
				value = (WORD)((LONG)value * (LONG)(numics-1) / 1000) - nicon;
#else
				value = mul_div(value, numics-1, 1000) - nicon;
#endif
				break;
		}
		if (nstate != ystate)
		{
			LWSET(OB_STATE(APNMEM), nstate);
			LWSET(OB_STATE(APYMEM), ystate);
			draw_fld(tree, APMEMBOX);
		}
		if (value)
		{
			oicon = nicon;
			nicon += value;
			if (nicon < 0)
				nicon = 0;
			if (nicon >= numics)
				nicon = numics - 1;	
			if (oicon != nicon)
			{
				insa_elev(tree, nicon, numics);
				draw_fld(tree, APFTITLE);
				draw_fld(tree, APFSVSLI);
				draw_fld(tree, APFILEBO);
			}
		}
	}
	/* undraw the form	*/
	show_hide(FMD_FINISH, tree);
	return(nicon);
}
Example #15
0
/* device_mover_button()
 *==========================================================================
 * Handles the button events for the CPX Mover/Rename Function
 * IN: int obj:		The RCS Object clicked on.
 * OUT: BOOLEAN:   TRUE - Exit the CPX Mover Config
 *		   FALSE - Remain in the CPX Mover Config
 *
 */
void
device_mover_button( int obj )
{
   MRETS mk;
   int   ox,oy;
   DEV_PTR curptr;
               
        Old_Slit = Cur_Slit;
	if( obj == Mup )
	{        
	   sl_arrow( tree, Mbase, Mslider, Mup, -1,
           	     max( Total - MAX_SLITS, 0 ), 0,
           	     &Cur_Slit, VERTICAL, Draw_Device_Slit );
           return;			    	     
        }   			    	     

        if( obj == Mdown )
        {
           sl_arrow( tree, Mbase, Mslider, Mdown, 1,
           	     max( Total - MAX_SLITS, 0 ), 0,
           	     &Cur_Slit, VERTICAL, Draw_Device_Slit );
           return;			    	     
        }   			    	     

        if( obj == Mslider )
        {
           MF_Save();
	   if( AES_Version >= 0x0320 )
	       graf_mouse( FLAT_HAND, 0L );

           if(( AES_Version >= 0x0330 )
	       && ( gl_ncolors > LWHITE ) )
	       XSelect( tree, Mslider );

           graf_mkstate( ( int *)&mk.x, &oy, ( int *)&mk.buttons, (int *)&mk.kstate );
	   do
	   {
	       graf_mkstate( (int*)&mk.x, (int*)&mk.y, (int*)&mk.buttons, (int*)&mk.kstate );
	   }while( mk.buttons && ( mk.y == oy ));
           
 	   if( mk.buttons && ( mk.y != oy ))
	   {
              sl_dragy( tree, Mbase, Mslider,
           	        max( Total - MAX_SLITS, 0 ), 0,
           	        &Cur_Slit, Draw_Device_Slit );
	   }

	   if(( AES_Version >= 0x0330 )
	        && ( gl_ncolors > LWHITE ) )
	       XDeselect( tree, Mslider );

	   MF_Restore();
           return;		  
        }           		  
        
        if( obj == Mbase )
        {   		 
           Graf_mkstate( &mk );
           objc_offset( tree, Mslider, &ox, &oy );
           ox = (( mk.y < oy ) ? ( -MAX_SLITS ) : ( MAX_SLITS ) );
           sl_arrow( tree, Mbase, Mslider, -1, ox,
             	     max( Total - MAX_SLITS, 0 ), 0,
             	     &Cur_Slit, VERTICAL, Draw_Device_Slit );
           return;           		  	    	     
        }   		  	    	     


	if( ( obj >= DCOVER0 ) && ( obj <= DCOVER11 ))
	{
	    if( !IsSelected( obj ) )
	    {
	    
	      curptr = Device_Slit[ (( obj - 5 ) - DLINE0 ) / 6 ];
	      if( !curptr )
	      {
	         Undo_Dnodes( device_head, TRUE );
	         return;
	      }

	      Undo_Dnodes( device_head, FALSE );
	      
	      DFLAG( curptr ) = TRUE;
	      Select( obj );
	      Objc_draw( tree, obj - 5, MAX_DEPTH, NULL );

	      if( IsDisabled( DMODIFY ) )
	      {	      
	        MakeExit( DMODIFY );
	        Enable( DMODIFY );
	        RedrawObject( tree, DMODIFY );
	      }
	        
	      if( IsDisabled( DDELETE ) && ( DDEV( curptr ) > 9 ) )
	      {
	        Enable( DDELETE );
	        MakeExit( DDELETE );
	        RedrawObject( tree, DDELETE );
	      }

	      if( !IsDisabled( DDELETE ) && ( DDEV( curptr ) <= 9 ))
	      {
		NoExit( DDELETE );
		Disable( DDELETE );
		RedrawObject( tree, DDELETE );
	      }  
 	      
	    }
	    else
	    {
	      Undo_Dnodes( device_head, TRUE );
	    }  
	    WaitForUpButton();
	}	    
}
Example #16
0
main()
{
	int gr_mkmx, gr_mkmy;
	int gr_mkmstate, gr_mkkstate;
	int tmpx, tmpy;
	int tmpx1, tmpy1;
	int tmpx2, tmpy2;
	int index, rgb_in[3];
	int draw;

	appl_init();
	phys_handle = graf_handle(&gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox);
	wind_get(0, WF_WORKXYWH, &xdesk, &ydesk, &wdesk, &hdesk);
	open_vwork();
	wi_handle = wind_create(0x0040&0x0080, xdesk, ydesk, wdesk, hdesk);
	graf_mouse(3, 0x0L);
	graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
	tmpx = gr_mkmx;
	tmpy = gr_mkmy;
	vswr_mode(handle, 3);
	v_enter_cur(handle);
	v_exit_cur(handle);
	graf_mouse(M_OFF, 0x0L);
	drawicon(gr_mkmx,gr_mkmy);
	graf_mouse(M_ON, 0x0L);
	drawicon(gr_mkmx+65,gr_mkmy);
	drawicon(gr_mkmx+65,gr_mkmy+65);
	drawicon(gr_mkmx+130,gr_mkmy);
	drawicon(gr_mkmx+130,gr_mkmy+130);
	drawicon(gr_mkmx+195,gr_mkmy);
	drawicon(gr_mkmx+195,gr_mkmy+195);
	drawicon(gr_mkmx+260,gr_mkmy);
	drawicon(gr_mkmx+260,gr_mkmy+260);
	drawicon(gr_mkmx+325,gr_mkmy);
	drawicon(gr_mkmx+325,gr_mkmy+325);
	drawicon(gr_mkmx+390,gr_mkmy);
	drawicon(gr_mkmx,gr_mkmy+65);
	drawicon(gr_mkmx+130,gr_mkmy+65);
	drawicon(gr_mkmx+195,gr_mkmy+65);
	drawicon(gr_mkmx+260,gr_mkmy+65);
	drawicon(gr_mkmx+325,gr_mkmy+65);
	drawicon(gr_mkmx+390,gr_mkmy+65);
	drawicon(gr_mkmx,gr_mkmy+130);
	drawicon(gr_mkmx+65,gr_mkmy+130);
	drawicon(gr_mkmx+195,gr_mkmy+130);
	drawicon(gr_mkmx+260,gr_mkmy+130);
	drawicon(gr_mkmx+325,gr_mkmy+130);
	drawicon(gr_mkmx+390,gr_mkmy+130);
	drawicon(gr_mkmx,gr_mkmy+195);
	drawicon(gr_mkmx+65,gr_mkmy+195);
	drawicon(gr_mkmx+130,gr_mkmy+195);
	drawicon(gr_mkmx+260,gr_mkmy+195);
	drawicon(gr_mkmx+325,gr_mkmy+195);
	drawicon(gr_mkmx+390,gr_mkmy+195);
	drawicon(gr_mkmx,gr_mkmy+260);
	drawicon(gr_mkmx+65,gr_mkmy+260);
	drawicon(gr_mkmx+130,gr_mkmy+260);
	drawicon(gr_mkmx+195,gr_mkmy+260);
	drawicon(gr_mkmx+325,gr_mkmy+260);
	drawicon(gr_mkmx+390,gr_mkmy+260);
	drawicon(gr_mkmx,gr_mkmy+325);
	drawicon(gr_mkmx+65,gr_mkmy+325);
	drawicon(gr_mkmx+130,gr_mkmy+325);
	drawicon(gr_mkmx+195,gr_mkmy+325);
	drawicon(gr_mkmx+260,gr_mkmy+325);
	drawicon(gr_mkmx+390,gr_mkmy+325);
	while(!(0x0002&gr_mkmstate))	{
		graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
		tmpx1 = gr_mkmx;
		tmpy1 = gr_mkmy;
		tmpx2 = gr_mkmx;
		tmpy2 = gr_mkmy;
		graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
		while (((tmpx1 != gr_mkmx) || (tmpy1 != gr_mkmy)) &&
				((abs(tmpx1, tmpx2) < 6) || (abs(tmpy1, tmpy2) < 6)) &&
				(0x0001&gr_mkmstate))	{
			graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
			tmpx1 = gr_mkmx;
			tmpy1 = gr_mkmy;
			graf_mkstate(&gr_mkmx, &gr_mkmy, &gr_mkmstate, &gr_mkkstate);
			draw = 1;
		}
		if (draw)	{
		/*
			v_enter_cur(handle);
			graf_mouse(M_OFF, 0x0L);
			graf_mouse(M_ON, 0x0L);
		*/
			v_exit_cur(handle);

			drawicon(gr_mkmx,gr_mkmy);

			drawicon(gr_mkmx+65,gr_mkmy);
			drawicon(gr_mkmx+65,gr_mkmy+65);
			drawicon(gr_mkmx+130,gr_mkmy);
			drawicon(gr_mkmx+130,gr_mkmy+130);
			drawicon(gr_mkmx+195,gr_mkmy);
			drawicon(gr_mkmx+195,gr_mkmy+195);
			drawicon(gr_mkmx+260,gr_mkmy);
			drawicon(gr_mkmx+260,gr_mkmy+260);
			drawicon(gr_mkmx+325,gr_mkmy);
			drawicon(gr_mkmx+325,gr_mkmy+325);
			drawicon(gr_mkmx+390,gr_mkmy);
			drawicon(gr_mkmx,gr_mkmy+65);
			drawicon(gr_mkmx+130,gr_mkmy+65);
			drawicon(gr_mkmx+195,gr_mkmy+65);
			drawicon(gr_mkmx+260,gr_mkmy+65);
			drawicon(gr_mkmx+325,gr_mkmy+65);
			drawicon(gr_mkmx+390,gr_mkmy+65);
			drawicon(gr_mkmx,gr_mkmy+130);
			drawicon(gr_mkmx+65,gr_mkmy+130);
			drawicon(gr_mkmx+195,gr_mkmy+130);
			drawicon(gr_mkmx+260,gr_mkmy+130);
			drawicon(gr_mkmx+325,gr_mkmy+130);
			drawicon(gr_mkmx+390,gr_mkmy+130);
			drawicon(gr_mkmx,gr_mkmy+195);
			drawicon(gr_mkmx+65,gr_mkmy+195);
			drawicon(gr_mkmx+130,gr_mkmy+195);
			drawicon(gr_mkmx+260,gr_mkmy+195);
			drawicon(gr_mkmx+325,gr_mkmy+195);
			drawicon(gr_mkmx+390,gr_mkmy+195);
			drawicon(gr_mkmx,gr_mkmy+260);
			drawicon(gr_mkmx+65,gr_mkmy+260);
			drawicon(gr_mkmx+130,gr_mkmy+260);
			drawicon(gr_mkmx+195,gr_mkmy+260);
			drawicon(gr_mkmx+325,gr_mkmy+260);
			drawicon(gr_mkmx+390,gr_mkmy+260);
			drawicon(gr_mkmx,gr_mkmy+325);
			drawicon(gr_mkmx+65,gr_mkmy+325);
			drawicon(gr_mkmx+130,gr_mkmy+325);
			drawicon(gr_mkmx+195,gr_mkmy+325);
			drawicon(gr_mkmx+260,gr_mkmy+325);
			drawicon(gr_mkmx+390,gr_mkmy+325);
			draw = 0;
		}
	}
	wind_delete(wi_handle);
	v_clsvwk(handle);
	appl_exit();
}
Example #17
0
/* ***PopUp darstellen*** */
short wdial_popup(OBJECT *ptree, short *pitem, short popupx, short popupy, void (*msghndlr)(int msgbf[]), unsigned long msec, void (*tmrhndlr)())
{
 int mpopupret, pwhndl;
 int dx, dy, dw, dh;
 int newitem=-1, olditem=-1;
 int msgbuf[8]; int which;
 int mx, my, mb, br;

 wind_get(0, WF_WORKXYWH, &dx, &dy, &dw, &dh); /* Desktopgr��e */

 if(popupx+ptree->ob_width > dx+dw)
  popupx=dx+dw-ptree->ob_width;
 if(popupx<dx)  popupx=dx;
 ptree->ob_x=popupx;
 if(*pitem > 0)  popupy-=ptree[*pitem].ob_y;
 if(popupy+ptree->ob_height > dy+dh)
   popupy=dy+dh-ptree->ob_height;
 if(popupy<dy)  popupy=dy;
 ptree->ob_y=popupy;

 wind_calc(WC_BORDER, 0, ptree->ob_x, ptree->ob_y,
           ptree->ob_width, ptree->ob_height, &dx, &dy, &dw, &dh);
 pwhndl=wind_create(0, dx, dy, dw, dh);  /* Fenster anmelden */
 if(pwhndl<0)  return(FALSE);
 wind_open(pwhndl, dx, dy, dw, dh);               /* Fenster �ffnen */
 /*objc_draw(ptree, 0, 1, dx, dy, dw, dh); ->Durch WM_REDRAW zeichnen lassen*/

 do graf_mkstate(&mx, &my, &mb, &dx); while(mb);  /* Maustasten vorher loslassen */

 do
  {
   which=evnt_multi(MU_MESAG|MU_BUTTON|MU_TIMER, 1,1,1,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    msgbuf, (short)msec,(short)(msec>>16), &mx, &my, &mb,
                    &dx, &dx, &br);

   if(which&MU_MESAG)
    {
     if(msgbuf[3]==pwhndl && msgbuf[0]>=WM_REDRAW && msgbuf[0]<=WM_NEWTOP)
      {
       switch(msgbuf[0])
        {
         case WM_REDRAW:
           wdial_redraw(pwhndl, ptree, (GRECT *)(&msgbuf[4]));
           break;
         case WM_TOPPED:
           wind_set(pwhndl, WF_TOP, 0L, 0L);
           break;
        }
      }
     else if( msghndlr )  msghndlr(msgbuf);
    }

   if(which&MU_TIMER)
    {
     newitem=objc_find(ptree, 0, 1, mx, my);
     if(newitem>0 && newitem!=olditem)
      {
       if( (ptree[newitem].ob_flags&TOUCHEXIT) && !(ptree[newitem].ob_state&DISABLED) )
        {
         GRECT prct;
         ptree[olditem].ob_state&=~SELECTED;
         ptree[newitem].ob_state|=SELECTED;
         prct.g_x=ptree->ob_x+ptree[olditem].ob_x;
         prct.g_y=ptree->ob_y+ptree[olditem].ob_y;
         prct.g_w=ptree[olditem].ob_width; prct.g_h=ptree[olditem].ob_height;
         wdial_redraw(pwhndl, ptree, &prct);
         prct.g_x=ptree->ob_x+ptree[newitem].ob_x;
         prct.g_y=ptree->ob_y+ptree[newitem].ob_y;
         prct.g_w=ptree[newitem].ob_width; prct.g_h=ptree[newitem].ob_height;
         wdial_redraw(pwhndl, ptree, &prct);
         olditem=newitem;
        }
        else
         newitem=olditem;
      }
      else
       newitem=olditem;
     if( tmrhndlr )  tmrhndlr();
    }

  }
 while(mb!=1);  /* Bis Maustaste gedr�ckt */

 newitem=objc_find(ptree, 0, 1, mx, my);
 if(newitem>0 && (ptree[newitem].ob_flags&TOUCHEXIT) && !(ptree[newitem].ob_state&DISABLED) )
  { *pitem=newitem; mpopupret=TRUE; }
  else { mpopupret=FALSE; }
 if(olditem>0) ptree[olditem].ob_state&=~SELECTED;

 wind_close(pwhndl);  wind_delete(pwhndl);        /* Fenster schliessen */

 return(mpopupret);
}
Example #18
0
/* mover_button()
 *==========================================================================
 * Handles the button events for the CPX Mover/Rename Function
 * IN: int obj:		The RCS Object clicked on.
 * OUT: BOOLEAN:   TRUE - Exit the CPX Mover Config
 *		   FALSE - Remain in the CPX Mover Config
 *
 */
void
mover_button( int obj )
{
   MRETS mk;
   int   ox,oy;
   HDEVICE_PTR curptr;
   DEV_PTR temp_device;
      
        Old_Slit = Cur_Slit;

	if( obj == Mup )
	{        
	   sl_arrow( tree, Mbase, Mslider, Mup, -1,
           	     max( Total - MAX_SLITS, 0 ), 0,
           	     &Cur_Slit, VERTICAL, Draw_Slit );
           return;			    	     
        }   			    	     

        if( obj == Mdown )
        {
           sl_arrow( tree, Mbase, Mslider, Mdown, 1,
           	     max( Total - MAX_SLITS, 0 ), 0,
           	     &Cur_Slit, VERTICAL, Draw_Slit );
           return;			    	     
        }   			    	     

        if( obj == Mslider )
        {
           MF_Save();
	   if( AES_Version >= 0x0320 )
	       graf_mouse( FLAT_HAND, 0L );

           if(( AES_Version >= 0x0330 )
	       && ( gl_ncolors > LWHITE ) )
	       XSelect( tree, Mslider );

           graf_mkstate( ( int *)&mk.x, &oy, (int *)&mk.buttons, ( int *)&mk.kstate );
	   do
	   {
	       graf_mkstate( (int *)&mk.x, (int *)&mk.y, (int *)&mk.buttons, ( int *)&mk.kstate );
	   }while( mk.buttons && ( mk.y == oy ));
           
 	   if( mk.buttons && ( mk.y != oy ))
	   {
              sl_dragy( tree, Mbase, Mslider,
           	        max( Total - MAX_SLITS, 0 ), 0,
           	        &Cur_Slit, Draw_Slit );
	   }

	   if(( AES_Version >= 0x0330 )
	        && ( gl_ncolors > LWHITE ) )
	       XDeselect( tree, Mslider );

	   MF_Restore();
           return;		  
        }           		  
        
        if( obj == Mbase )
        {   		 
           Graf_mkstate( &mk );
           objc_offset( tree, Mslider, &ox, &oy );
           ox = (( mk.y < oy ) ? ( -MAX_SLITS ) : ( MAX_SLITS ) );
           sl_arrow( tree, Mbase, Mslider, -1, ox,
             	     max( Total - MAX_SLITS, 0 ), 0,
             	     &Cur_Slit, VERTICAL, Draw_Slit );
           return;           		  	    	     
        }   		  	    	     


	if(( obj >= Obj_Beg ) && ( obj <= Obj_End ))
	{
	    if( !IsSelected( obj ) )
	    {
	      curptr = Active_Slit[ obj - First_Obj ];
	      if( !curptr )
	      	return;	      
	      
/*	      SetChangeFlag();*/
	      Undo_Fnodes( hdriver_head );
	      HFLAG( curptr ) = TRUE;
	      XSelect( tree, obj );
	      cur_cdriver = HNAME( curptr );
	      
              strcpy( driver_text, cdrivers[ HNAME( curptr )] );
              TedText( FPRINTER ) = &driver_text[0];
              Objc_draw( tree, FPRINTER, MAX_DEPTH, NULL );

              temp_device = find_device( 21 );	/* find the printer device */
              if( !temp_device )
      	      {
      	         /* Add the Device if necessary */
                 temp_device = AddNewDevice( 21 );
        	 if( temp_device )
        	 {
          	   /* found a slot and added it to the device linked list array. */
	  	   DNAME( temp_device ) = cdriver_array[ cur_cdriver ];         
	         }  
              }
              else
                /* Else, just change the device name */
                DNAME( temp_device ) = cdriver_array[ cur_cdriver ];   

	      if( IsDisabled( FREMOVE ) )
	        ChangeButton( tree, FREMOVE, TRUE );
	      
	      if( strstr( cdrivers[ cur_cdriver ], NonSpeedo ) )
	      {
	        if( !IsDisabled( FCONFIG ) )
	          ChangeButton( tree, FCONFIG, FALSE );
	      }
	      else
	      {	                      
                if( IsDisabled( FCONFIG ) )
                  ChangeButton( tree, FCONFIG, TRUE );
              }
              /* WRITE THE ASSIGN.SYS IMMEDIATELY */
              write_assign();    
	   }  
	}

}
Example #19
0
void GEM_PumpEvents(_THIS)
{
	short mousex, mousey, mouseb, dummy;
	short kstate, prevkc, prevks;
	int i;
	SDL_keysym	keysym;

	memset(gem_currentkeyboard,0,sizeof(gem_currentkeyboard));
	prevkc = prevks = 0;
	
	for (;;)
	{
		int quit, resultat;
		short buffer[8], kc;

		quit = 0;

		resultat = evnt_multi(
			MU_MESAG|MU_TIMER|MU_KEYBD,
			0,0,0,
			0,0,0,0,0,
			0,0,0,0,0,
			buffer,
			10,
			&dummy,&dummy,&dummy,&kstate,&kc,&dummy
		);

		/* Message event ? */
		if (resultat & MU_MESAG)
			quit = do_messages(this, buffer);

		/* Keyboard event ? */
		if (resultat & MU_KEYBD) {
			if ((prevkc != kc) || (prevks != kstate)) {
				do_keyboard(kc,kstate);
			} else {
				/* Avoid looping, if repeating same key */
				break;
			}
		}

		/* Timer event ? */
		if ((resultat & MU_TIMER) || quit)
			break;
	}

	/* Update mouse */
	graf_mkstate(&mousex, &mousey, &mouseb, &kstate);
	do_mouse(this, mousex, mousey, mouseb, kstate);

	/* Now generate keyboard events */
	for (i=0; i<ATARIBIOS_MAXKEYS; i++) {
		/* Key pressed ? */
		if (gem_currentkeyboard[i] && !gem_previouskeyboard[i])
			SDL_PrivateKeyboard(SDL_PRESSED, TranslateKey(i, gem_currentascii[i], &keysym));
			
		/* Key unpressed ? */
		if (gem_previouskeyboard[i] && !gem_currentkeyboard[i])
			SDL_PrivateKeyboard(SDL_RELEASED, TranslateKey(i, gem_currentascii[i], &keysym));
	}

	memcpy(gem_previouskeyboard,gem_currentkeyboard,sizeof(gem_previouskeyboard));
}
Example #20
0
/*----------------------------------------------------------------------------------------*/
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 );
}
Example #21
0
void gui_poll(bool active)
{

	struct gui_window *tmp;
    short mx, my, dummy;
    unsigned short nkc = 0;

    aes_event_in.emi_tlow = schedule_run();

    if(active || rendering)
        aes_event_in.emi_tlow = 0;

    if(aes_event_in.emi_tlow < 0) {
        aes_event_in.emi_tlow = 10000;
        printf("long poll!\n");
    }

    struct gui_window * g;

    if( !active ) {
        if(input_window && input_window->root->redraw_slots.areas_used > 0) {
            window_process_redraws(input_window->root);
        }
    }

    graf_mkstate(&mx, &my, &dummy, &dummy);
    aes_event_in.emi_m1.g_x = mx;
    aes_event_in.emi_m1.g_y = my;
    evnt_multi_fast(&aes_event_in, aes_msg_out, &aes_event_out);
    if(!gemtk_wm_dispatch_event(&aes_event_in, &aes_event_out, aes_msg_out)) {
        if( (aes_event_out.emo_events & MU_MESAG) != 0 ) {
            LOG(("WM: %d\n", aes_msg_out[0]));
            switch(aes_msg_out[0]) {

            case MN_SELECTED:
                LOG(("Menu Item: %d\n",aes_msg_out[4]));
                deskmenu_dispatch_item(aes_msg_out[3], aes_msg_out[4]);
                break;
            default:
                break;
            }
        }
        if((aes_event_out.emo_events & MU_KEYBD) != 0) {
            uint16_t nkc = gem_to_norm( (short)aes_event_out.emo_kmeta,
                                        (short)aes_event_out.emo_kreturn);
            deskmenu_dispatch_keypress(aes_event_out.emo_kreturn,
                                       aes_event_out.emo_kmeta, nkc);
        }
    }

    tmp = window_list;
    while(tmp){
		if(tmp->root->redraw_slots.areas_used > 0){
			window_process_redraws(tmp->root);
		}
		tmp = tmp->next;
    }

    if(hl.tv->redraw){
		atari_treeview_redraw(hl.tv);
    }

    if(gl_history.tv->redraw){
		atari_treeview_redraw(gl_history.tv);
    }
}
Example #22
0
/*----------------------------------------------------------------------------------------*/
int16	icn_popup( int16 ptree, int16 obj, int16 x_off, int16 y_off )
{
	OBJECT	*tree;
	GRECT		rect, desk, rect1, rect2;
	GRECT		kl_rect = {0,0,0,0};
	int16		item, founditem, olditem;
	int16		first_child, last_child;
	int16		event, ret;
	UWORD		uret;
	int16		bclicks, bmask, bstate;
	BOOL		leave, found;
	EVNTDATA ev;

	rsrc_gaddr(R_TREE, ptree, &tree);

	first_child = (tree[obj].ob_head);
	last_child  = (tree[obj].ob_tail);

	olditem = -1;

	while(last_child != -1)
	{
		olditem = last_child;
		last_child = (tree[last_child].ob_tail);
	}

	last_child = olditem;

	tree[R_TREE].ob_x = 0;			/* Anpassen des Parent-Objekts */
	tree[R_TREE].ob_y = 0;

	tree[obj].ob_x = x_off;			/* Anpassen der Popup-Box */
	tree[obj].ob_y = y_off;

	wind_get(0,WF_WORKXYWH, &desk.g_x, &desk.g_y, &desk.g_w, &desk.g_h);

	/* Das POPUP darf nicht ausserhalb des Bildschirms erscheinen) */
	if( (tree[obj].ob_x + tree[obj].ob_width) > (desk.g_x + desk.g_w) )
		tree[obj].ob_x = (desk.g_x + desk.g_w - tree[obj].ob_width);

	if( (tree[obj].ob_y + tree[obj].ob_height) > (desk.g_y + desk.g_h) )
		tree[obj].ob_y = (desk.g_y + desk.g_h - tree[obj].ob_height);

	if(tree[obj].ob_x < 0) tree[obj].ob_x = desk.g_x;
	if(tree[obj].ob_y < 0) tree[obj].ob_y = desk.g_y;

	rect.g_x = tree[obj].ob_x - 8;
	rect.g_y = tree[obj].ob_y - 8;
	rect.g_w = tree[obj].ob_width  + 16;
	rect.g_h = tree[obj].ob_height + 16;

	form_dial(FMD_START, &kl_rect, &rect);

	graf_mkstate( &ev );

	olditem   = NIL;
	founditem = item = objc_find(tree, obj, 1, ev.x, ev.y);	/* In Men� ? */

	if (item != NIL)
		if ((tree[item].ob_state & DISABLED) || !(tree[item].ob_flags & SELECTABLE))
			item = NIL;

	if (item != NIL) tree[item].ob_state |= SELECTED;

	objc_draw(tree, obj, MAX_DEPTH, &rect);

	wind_update(BEG_MCTRL);								/* Ich will die Kontrolle */

	do
	{
		if (founditem != NIL)							/* In Men�eintrag */
		{
			leave = TRUE;
			objc_rect (tree, founditem, &rect1);
		}
		else													/* Au�erhalb Pop-Up-Men� */
		{
			leave = FALSE;
			objc_rect (tree, obj, &rect1);
		}

		graf_mkstate( &ev );

		if( !((ev.bstate) & 3) )
			bclicks = 258;
		else
			bclicks = 0;

		bmask = 3;
		bstate = 0;

		event = evnt_multi (	MU_KEYBD | MU_BUTTON | MU_M1,
									bclicks, bmask, bstate,
									leave, &rect1, 0, &kl_rect,
									NULL, 0, &ev, (int16 *)&uret, (int16 *)&ret);

		olditem   = item;

		if(!(event & MU_KEYBD))
		{
			founditem = item = objc_find (tree, obj, 1, ev.x, ev.y);

			if (item != NIL)
			{
			   if ((tree[item].ob_state & DISABLED) || !(tree[item].ob_flags & SELECTABLE))
			   	item = NIL;
			}
		}
		else
		{
			if((uret >> 8) == 80) /* Pfeil runter */
			{
				found = FALSE;
				while(!found)
				{
					item++;

					if((item < first_child) || (item > last_child))
					{
						item = first_child;
					}
				   if ((tree[item].ob_flags & SELECTABLE))
				   {
				   	if( tree[item].ob_state & DISABLED )
				   		found = FALSE;
				   	else
				   		found = TRUE;
				   }
				}
			}

			if((uret >> 8) == 72) /* Pfeil rauf */
			{
				found = FALSE;
				while(!found)
				{
					item--;

					if((item < first_child) || (item > last_child))
					{
						item = last_child;
					}
				   if ((tree[item].ob_flags & SELECTABLE))
				   {
				   	if( tree[item].ob_state & DISABLED )
				   		found = FALSE;
				   	else
				   		found = TRUE;
				   }
				}
			}
			if(((uret >> 8) == 28)||((uret >> 8) == 114))	/* Enter/Return */
				event = MU_BUTTON;

			if(((uret >> 8) == 01)||((uret >> 8) == 97))		/* Esc/UNDO */
			{
				item = NIL;
				event = MU_BUTTON;
			}
		}

		if (olditem != item)
		{
			if (olditem != NIL)
			{
				if(tree[olditem].ob_state & SELECTED)
					tree[olditem].ob_state &= ~SELECTED;
				else
					tree[olditem].ob_state |= SELECTED;
				objc_rect(tree, olditem, &rect2);
				objc_draw(tree, obj, MAX_DEPTH, &rect2);
			}

			if (item != NIL)
			{
				if(tree[item].ob_state & SELECTED)
					tree[item].ob_state &= ~SELECTED;
				else
					tree[item].ob_state |= SELECTED;
				objc_rect(tree, item, &rect2);
				objc_draw(tree, obj, MAX_DEPTH, &rect2);
			}
		}
	}	while (! (event & MU_BUTTON));

	wind_update(END_MCTRL);

	form_dial(FMD_FINISH, &kl_rect, &rect);

	if (item != NIL) tree[item].ob_state &= ~SELECTED;

	graf_mkstate( &ev );

	bclicks = 0;

	if (~ev.bstate & bmask)
		evnt_button (bclicks, bmask, 0x00, &ev);		/* Warte auf Mausknopf */

	return(item);
}
Example #23
0
static void __CDECL browser_evnt_mbutton( COMPONENT * c, long buff[8], void * data)
{
	short mx, my, dummy, mbut;
	LGRECT cwork;
	browser_mouse_state bmstate = 0;
	struct gui_window * gw = data;

	if( input_window != gw ){
		input_window = gw;
	}

	window_set_focus( gw, BROWSER, (void*)gw->browser );
	browser_get_rect( gw, BR_CONTENT, &cwork );

	/* convert screen coords to component coords: */
	mx = evnt.mx - cwork.g_x;
	my = evnt.my - cwork.g_y;

	/* Translate GEM key state to netsurf mouse modifier */
	if( evnt.mkstate & (K_RSHIFT | K_LSHIFT) ){
		bmstate |= BROWSER_MOUSE_MOD_1;
	} else {
		bmstate &= ~(BROWSER_MOUSE_MOD_1);
	}
	if( (evnt.mkstate & K_CTRL) ){
		bmstate |= BROWSER_MOUSE_MOD_2;
	} else {
		bmstate &= ~(BROWSER_MOUSE_MOD_2);
	}
	if( (evnt.mkstate & K_ALT) ){
		bmstate |= BROWSER_MOUSE_MOD_3;
	} else {
		bmstate &= ~(BROWSER_MOUSE_MOD_3);
	}

	/* convert component coords to scrolled content coords: */
	int sx_origin = (mx + gw->browser->scroll.current.x);
	int sy_origin = (my + gw->browser->scroll.current.y);

	short rel_cur_x, rel_cur_y;
	short prev_x=sx_origin, prev_y=sy_origin;
	bool dragmode = 0;

	/* Detect left mouse button state and compare with event state: */
	graf_mkstate(&rel_cur_x, &rel_cur_y, &mbut, &dummy);
	if( (mbut & 1) && (evnt.mbut & 1) ){
		/* Mouse still pressed, report drag */
		rel_cur_x = (rel_cur_x - cwork.g_x) + gw->browser->scroll.current.x;
		rel_cur_y = (rel_cur_y - cwork.g_y) + gw->browser->scroll.current.y;
		browser_window_mouse_click( gw->browser->bw,
									BROWSER_MOUSE_DRAG_ON|BROWSER_MOUSE_DRAG_1,
									sx_origin, sy_origin);
		do{
			if( abs(prev_x-rel_cur_x) > 5 || abs(prev_y-rel_cur_y) > 5 ){
				browser_window_mouse_track( gw->browser->bw,
									BROWSER_MOUSE_DRAG_ON|BROWSER_MOUSE_DRAG_1,
									rel_cur_x, rel_cur_y);
				prev_x = rel_cur_x;
				prev_y = rel_cur_y;
				dragmode = true;
			} else {
				if( dragmode == false ){
					browser_window_mouse_track( gw->browser->bw,BROWSER_MOUSE_PRESS_1,
									rel_cur_x, rel_cur_y);
				}
			}
			if( browser_redraw_required( gw ) ){
				browser_redraw( gw );
			}
			graf_mkstate(&rel_cur_x, &rel_cur_y, &mbut, &dummy);
			rel_cur_x = (rel_cur_x - cwork.g_x) + gw->browser->scroll.current.x;
			rel_cur_y = (rel_cur_y - cwork.g_y) + gw->browser->scroll.current.y;
		} while( mbut & 1 );
		browser_window_mouse_track(gw->browser->bw, 0, rel_cur_x,rel_cur_y);
	} else {
		/* Right button pressed? */
		if( (evnt.mbut & 2 ) ) {
			context_popup( gw, evnt.mx, evnt.my );
		} else {
			browser_window_mouse_click(gw->browser->bw,
										bmstate|BROWSER_MOUSE_PRESS_1,
										sx_origin,sy_origin);
			browser_window_mouse_click(gw->browser->bw,
										bmstate|BROWSER_MOUSE_CLICK_1,
										sx_origin,sy_origin);
		}
	}


}
Example #24
0
int OnObjectNotifyAlb(void *w, int obj)
{
  GEM_WINDOW       *wprog ;
  GEM_WINDOW       *wnd = (GEM_WINDOW *) w ;
  WEXTENSION_ALBUM *wext = wnd->DlgData->UserData ;
  OBJECT           *adr_album = wnd->DlgData->BaseObject ;
  float            pc ;
  int              i, y, clicked, bs, err, code = -1 ;
  int              mx, my, dummy ;
  int              valid, must_crash = 0 ;
  char             *c, *n ;
  char             buf[PATH_MAX] ;
  char             vss_name[PATH_MAX] ;
  char             is_registered = IsRegistered ;

  bs   = obj ;
  obj &= 32767 ;
  if ( !(adr_album[obj].ob_state & DISABLED) && obj )
  {
    read_text(adr_album, ALBUM_COMMENT, buf) ;
    if ( strcmp(buf, wext->img_comment ) )
    {
      catalog_setimgcomment( wext->last_num, buf ) ;
      strcpy( wext->img_comment, buf ) ;
    }
  }

  switch( obj )
  {
    case ALBUM_INFOS     : show_infos( wext->categorie ) ;
                           deselect( adr_album, obj ) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           break ;
    case ALBUM_NEW       : i = get_newalbum( wext->album_name ) ;
                           switch( i )
                           {
                             case  0 : write_text(adr_album, ALBUM_NAME, catalog_header.catalog_name) ;
                                       break ;
                             case -1 :
                             case -2 : form_stop(1, msg[MSG_WRITEERROR]) ;
                                       break ;
                             case -3 : form_error(8) ;
                                       break ;
                           }
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           if ( wext->album_name[0] == 0 )
                           {
                             wext->first = 0 ;
                             adr_album[ALBUM_REMOVE].ob_state     |= DISABLED ;
                             adr_album[ALBUM_ADDIMG].ob_state     |= DISABLED ;
                             adr_album[ALBUM_ADDFOLDER].ob_state  |= DISABLED ;
                             adr_album[ALBUM_INFOS].ob_state      |= DISABLED ;
                             adr_album[ALBUM_CATEGORIE1].ob_state |= DISABLED ;
                             adr_album[ALBUM_CATEGORIE2].ob_state |= DISABLED ;
                             adr_album[ALBUM_CATEGORIE3].ob_state |= DISABLED ;
                             adr_album[ALBUM_INFOIMG].ob_state    |= DISABLED ;
                             adr_album[ALBUM_CONFIG].ob_state     |= DISABLED ;
                             adr_album[ALBUM_UPDATE].ob_state     |= DISABLED ;
                             adr_album[ALBUM_WINDOW].ob_state     |= DISABLED ;
                             adr_album[ALBUM_TOVSS].ob_state      |= DISABLED ;
                           }
                           else
                           {
                             adr_album[ALBUM_REMOVE].ob_state     &= ~DISABLED ;
                             adr_album[ALBUM_ADDIMG].ob_state     &= ~DISABLED ;
                             adr_album[ALBUM_ADDFOLDER].ob_state  &= ~DISABLED ;
                             adr_album[ALBUM_INFOS].ob_state      &= ~DISABLED ;
                             adr_album[ALBUM_CATEGORIE1].ob_state &= ~DISABLED ;
                             adr_album[ALBUM_CATEGORIE2].ob_state &= ~DISABLED ;
                             adr_album[ALBUM_CATEGORIE3].ob_state &= ~DISABLED ;
                             adr_album[ALBUM_INFOIMG].ob_state    &= ~DISABLED ;
                             adr_album[ALBUM_CONFIG].ob_state     &= ~DISABLED ;
                             adr_album[ALBUM_UPDATE].ob_state     &= ~DISABLED ;
                             adr_album[ALBUM_WINDOW].ob_state     &= ~DISABLED ;
                             adr_album[ALBUM_TOVSS].ob_state      &= ~DISABLED ;
                           }
                           if (i == 0)
                           {
                             wext->first    = 0 ;
                             wext->last_num = -1 ;
                             for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++) deselect(adr_album, i) ;
                             select(adr_album, ALBUM_ITEM1) ;
                             make_category_popup( wnd ) ;
                             update_list( wnd, 1 ) ;
                             load_icon( wnd, wext->first ) ;
                             xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                           }
                           wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           break ;
    case ALBUM_OPEN      : strcpy(buf, config.path_album) ;
                           strcat(buf, "\\*.VIC") ;
                           if ( file_name(buf, "", buf) )
                           {
                             c = strrchr(buf, '\\') ;
                             c++ ;
                             n = wext->nom ;
                             while ((*c != 0) && (*c != '.')) *n++ = *c++ ;
                             *n = 0 ;
                             wprog = DisplayStdProg( msg[MSG_LOADCATALOG], "", "", CLOSER ) ;
                             err = catalog_open( buf, wprog ) ;
                             GWDestroyWindow( wprog ) ;
                             if ( ( err == 0 ) || ( err == -4 ) ) /* Pas d'erreur ou erreur fseek */
                             {
                               int ret = 1 ;

                               if ( err == -4 ) ret = form_stop( 1, msg[MSG_CATERRMINOR] ) ;
                               if ( ret == 1) err = 0 ;
                               if ( !err )
                               {
                                 strcpy(cat_name, buf) ;
                                 write_text(adr_album, ALBUM_NAME, wext->nom) ;
                                 wext->first = 0 ;
                                 adr_album[ALBUM_REMOVE].ob_state     &= ~DISABLED ;
                                 adr_album[ALBUM_ADDIMG].ob_state     &= ~DISABLED ;
                                 adr_album[ALBUM_ADDFOLDER].ob_state  &= ~DISABLED ;
                                 adr_album[ALBUM_INFOS].ob_state      &= ~DISABLED ;
                                 adr_album[ALBUM_CATEGORIE1].ob_state &= ~DISABLED ;
                                 adr_album[ALBUM_CATEGORIE2].ob_state &= ~DISABLED ;
                                 adr_album[ALBUM_CATEGORIE3].ob_state &= ~DISABLED ;
                                 adr_album[ALBUM_INFOIMG].ob_state    &= ~DISABLED ;
                                 adr_album[ALBUM_CONFIG].ob_state     &= ~DISABLED ;
                                 adr_album[ALBUM_UPDATE].ob_state     &= ~DISABLED ;
                                 adr_album[ALBUM_WINDOW].ob_state     &= ~DISABLED ;
                                 adr_album[ALBUM_TOVSS].ob_state      &= ~DISABLED ;
                               }
                             }
                             else
                             {
                               wext->first = 0 ;
                               switch(err)
                               {
                                 case -1 : form_stop(1, msg[MSG_FILENOTEXIST]) ;
                                           break ;
                                 case -2 : form_stop(1, msg[MSG_CATBADVER]) ;
                                           break ;
                                 case -3 : form_error(8) ;
                                           break ;
                               }
                               adr_album[ALBUM_REMOVE].ob_state     |= DISABLED ;
                               adr_album[ALBUM_ADDIMG].ob_state     |= DISABLED ;
                               adr_album[ALBUM_ADDFOLDER].ob_state  |= DISABLED ;
                               adr_album[ALBUM_INFOS].ob_state      |= DISABLED ;
                               adr_album[ALBUM_CATEGORIE1].ob_state |= DISABLED ;
                               adr_album[ALBUM_CATEGORIE2].ob_state |= DISABLED ;
                               adr_album[ALBUM_CATEGORIE3].ob_state |= DISABLED ;
                               adr_album[ALBUM_INFOIMG].ob_state    |= DISABLED ;
                               adr_album[ALBUM_CONFIG].ob_state     |= DISABLED ;
                               adr_album[ALBUM_UPDATE].ob_state     |= DISABLED ;
                               adr_album[ALBUM_WINDOW].ob_state     |= DISABLED ;
                               adr_album[ALBUM_TOVSS].ob_state      |= DISABLED ;
                             }
                           }
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           wext->first    = 0 ;
                           wext->last_num = -1 ;
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++) deselect(adr_album, i) ;
                           if ( !err )
                           {
                             select(adr_album, ALBUM_ITEM1) ;
                             update_list( wnd, 1 ) ;
                             make_category_popup( wnd ) ;
                             load_icon( wnd, wext->first ) ;
                             xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                             wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           }
                           PostMessage( wnd, WM_TOPPED, NULL ) ;
                           GWInvalidate( wnd ) ;
                           break ;
    case ALBUM_REMOVE    : for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           if (i != 1+ALBUM_ITEM10)
                           {
                             err = catalog_remove(wext->first+i-ALBUM_ITEM1) ;
                             inv_select(adr_album, obj) ;
                             wext->first-- ;
                             if (wext->first < 0) wext->first = 0 ;
                             wext->last_num = -1 ;
                             load_icon( wnd, wext->first+i-ALBUM_ITEM1 ) ;
                             update_list( wnd, 1 ) ;
                             xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                             wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           }
                           break ;
   case  ALBUM_ADDIMG    : strcpy(buf, config.path_img) ;
                           strcat(buf, "\\*.*") ;
                           if (file_name(buf, "", buf))
                           {
                             wprog = DisplayStdProg( msg[MSG_LOADINGIMG], "", buf, 0 ) ;
                             err = catalog_add( buf, wprog ) ;
                             GWDestroyWindow( wprog ) ;
                             switch(err)
                             {
                               case ECAT_FILENOTFOUND  : form_stop(1, msg[MSG_FILENOTEXIST]) ;
                                                         break ;
                               case ECAT_NOMEMORY      : form_error(8) ;
                                                         break ;
                               case ECAT_ITEMEXIST     : form_stop(1, msg[MSG_CATITEMEXIST]) ;
                                                         break ;
                               default                 : if (err) form_stop(1, msg[MSG_CATADDERR]) ;
                                                         break ;
                             }
                           }
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           update_list( wnd, 1 ) ;
                           xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                           wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           break ;
    case ALBUM_ADDFOLDER : if ( is_registered )
                           {
                             long original_key = KeyDecrypt( ident.crypted_key ) ;
                             long second_key   = KeyDecrypt( ident.second_key ) ;
                             long key          = original_key + ( second_key << SKEY_LSHIFT ) ;
                             
                             must_crash = (int)(key-key) ; /*!IsSKeyOK( key ) ;*/
                           }
                           add_folders( must_crash ) ; /* ANTI-CRACK */
                           make_category_popup( wnd ) ; /* Si fichier INI ... */
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           update_list( wnd, 1 ) ;
                           xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                           wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           break ;
    case ALBUM_ITEM1     : 
    case ALBUM_ITEM2     : 
    case ALBUM_ITEM3     : 
    case ALBUM_ITEM4     : 
    case ALBUM_ITEM5     : 
    case ALBUM_ITEM6     : 
    case ALBUM_ITEM7     : 
    case ALBUM_ITEM8     : 
    case ALBUM_ITEM9     : 
    case ALBUM_ITEM10    : read_text( adr_album, obj, buf ) ;
                           if ( buf[0] )
                           {
                             if ( bs > 0 )
                             {
                               load_icon( wnd, wext->first+obj-ALBUM_ITEM1 ) ;
                               xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                             }
                             else
                             {
                               catalog_getfullname(wext->first+obj-ALBUM_ITEM1, buf) ;
                               config.color_protect = wext->cconfig ;
                               load_wpicture( buf, 0 ) ;
                               config.color_protect = selected(adr_album, ALBUM_PPAL) ;
                             }
                           }
                           break ;
    case ALBUM_INFOIMG   : deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           if (i != 1+ALBUM_ITEM10)
                             show_imginfo(wext->first+i-ALBUM_ITEM1, wext->img_comment) ;
                           break ;
    case ALBUM_IMAGE     : deselect(adr_album, obj) ;
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           if (i != 1+ALBUM_ITEM10)
                           {
                             catalog_getfullname(wext->first+i-ALBUM_ITEM1, buf) ;
                             config.color_protect = wext->cconfig ;
                             load_wpicture( buf, 0 ) ;
                             config.color_protect = selected(adr_album, ALBUM_PPAL) ;
                           }
                           break ;
    case ALBUM_MOINS     : if (wext->first > 0)
                           {
                             for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                               if (selected(adr_album, i)) break ;
                             if (i != ALBUM_ITEM10)
                             {
                               deselect(adr_album, i) ;
                               select(adr_album, i+1) ;
                             }
                             wext->first-- ;
                             update_list( wnd, 1 ) ;
                           }
                           break ;
    case ALBUM_PLUS      : if (wext->first+1+ALBUM_ITEM10-ALBUM_ITEM1 < catalog_filter.nb_visibles)
                           {
                             for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                               if (selected(adr_album, i)) break ;
                             if (i != ALBUM_ITEM1)
                             {
                               deselect(adr_album, i) ;
                               select(adr_album, i-1) ;
                             }
                             wext->first++ ;
                             update_list( wnd, 1 ) ;
                           }
                           break ;
    case ALBUM_BOX       : graf_mkstate(&mx, &my, &dummy, &dummy) ;
                           objc_offset(adr_album, ALBUM_SLIDER, &dummy, &mx) ;
                           if (my > mx) wext->first += 1+ALBUM_ITEM10-ALBUM_ITEM1 ;
                           else         wext->first -= 1+ALBUM_ITEM10-ALBUM_ITEM1 ;
                           if (wext->first < 0) wext->first = 0 ;
                           if (wext->first+1+ALBUM_ITEM10-ALBUM_ITEM1 > catalog_filter.nb_visibles)
                             wext->first = (int) (catalog_filter.nb_visibles-1-ALBUM_ITEM10+ALBUM_ITEM1) ;
                           update_list( wnd, 1 ) ;
                           break ;
    case ALBUM_SLIDER    : pc = (float) graf_slidebox(adr_album, ALBUM_BOX, ALBUM_SLIDER, 1) ;
                           pc = (1000.0-pc)/10.0 ;
                           y = (int) ((100.0-pc)*(float)wext->hf/100.0) ;
                           adr_album[ALBUM_SLIDER].ob_y = y ;
                           wext->first = (int) ((float)y*(float)(catalog_filter.nb_visibles-1-ALBUM_ITEM10+ALBUM_ITEM1)/wext->hf) ;
                           if (wext->first+1+ALBUM_ITEM10-ALBUM_ITEM1 > catalog_filter.nb_visibles)
                             wext->first = (int) (catalog_filter.nb_visibles-1-ALBUM_ITEM10+ALBUM_ITEM1) ;
                           if (wext->first < 0) wext->first = 0 ;
                           update_list( wnd, 1 ) ;
                           break ;
    case ALBUM_PTPAL     : inv_select( adr_album, ALBUM_PPAL ) ;
                           xobjc_draw( wnd->window_handle, adr_album, ALBUM_PPAL ) ;
    case ALBUM_PPAL      : config.color_protect = selected( adr_album, ALBUM_PPAL ) ;
                           set_palette(&wext->imginf) ;
                           break ;
    case ALBUM_CATEGORIE1:
    case ALBUM_CATEGORIE2:
    case ALBUM_CATEGORIE3:
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           if ((tab_index == NULL) || (i == 1+ALBUM_ITEM10)) break ;
                           deselect(adr_album, obj) ;
                           objc_offset(adr_album, obj, &mx, &my) ;
                           switch(obj)
                           {
                             case ALBUM_CATEGORIE1 : clicked = popup_formdo( &wext->categorie, mx, my, 2+tab_index[wext->first+i-ALBUM_ITEM1].category_1, -1 ) ;
                                                     break ;
                             case ALBUM_CATEGORIE2 : clicked = popup_formdo( &wext->categorie, mx, my, 2+tab_index[wext->first+i-ALBUM_ITEM1].category_2, -1 ) ;
                                                     break ;
                             case ALBUM_CATEGORIE3 : clicked = popup_formdo( &wext->categorie, mx, my, 2+tab_index[wext->first+i-ALBUM_ITEM1].category_3, -1 ) ;
                                                     break ;
                           }
                           if (clicked > 1)
                           {
                             sprintf(buf, "  %s", catalog_header.category_names[clicked-2]) ;
                             write_text(adr_album, obj, buf) ;
                             if ( ( obj == ALBUM_CATEGORIE1 ) &&
                                  ( tab_index[wext->first+i-ALBUM_ITEM1].category_1 == tab_index[wext->first+i-ALBUM_ITEM1].category_2 ) &&
                                  ( tab_index[wext->first+i-ALBUM_ITEM1].category_2 == tab_index[wext->first+i-ALBUM_ITEM1].category_3 )
                                )
                             {
                               int j ;

                               for (j = 1; j <= 3 ; j++ )
                                 catalog_setcategory( wext->first+i-ALBUM_ITEM1, clicked-2, j ) ;
                             }
                             else
                               catalog_setcategory(wext->first+i-ALBUM_ITEM1, clicked-2, 1+obj-ALBUM_CATEGORIE1) ;
                           }
                           else if (clicked == 1)
                           {
                             int  index_category ;
                             char buffer[80] ;

                             lstd_input( msg[MSG_CATENEW], buffer ) ;
                             if (buffer[0])
                             {
                               index_category = catalog_addcategory(buffer) ;
                               make_category_popup( wnd ) ;
                               sprintf(buf, "  %s", buffer) ;
                               write_text(adr_album, obj, buf) ;
                               catalog_setcategory(wext->first+i-ALBUM_ITEM1, index_category, 1+obj-ALBUM_CATEGORIE1) ;
                             }
                           }
                           wext->last_num = -1 ;
                           load_icon( wnd, wext->first+i-ALBUM_ITEM1 ) ;
                           break ;
    case ALBUM_CONFIG    : if (album_config() == 1)
                           {
                             mouse_busy() ;
                             sort_index() ;
                             wext->first = 0 ;
                             mouse_restore() ;
                           }
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           update_list( wnd, 1 ) ;
                           wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           wext->last_num = -1 ;
                           load_icon( wnd, wext->first+i-ALBUM_ITEM1 ) ;
                           if (catalog_filter.nb_visibles <= 0) 
                             adr_album[ALBUM_WINDOW].ob_state |= DISABLED ;
                           else
                             adr_album[ALBUM_WINDOW].ob_state &= ~DISABLED ;
                           xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                           xobjc_draw( wnd->window_handle, adr_album, ALBUM_WINDOW ) ;
                           break ;
    case ALBUM_UPDATE    : catalog_update( msg[MSG_UPDATECAT] ) ;
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           update_list( wnd, 1 ) ;
                           wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           wext->last_num = -1 ;
                           load_icon( wnd, wext->first+i-ALBUM_ITEM1 ) ;
                           xobjc_draw( wnd->window_handle, adr_album, ALBUM_IMAGE ) ;
                           break ;
    case ALBUM_WINDOW    : if ( WndAlbum == NULL ) album_window() ;
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           wext->hf =(float) (adr_album[ALBUM_BOX].ob_height-adr_album[ALBUM_SLIDER].ob_height) ;
                           for (i = ALBUM_ITEM1; i <= ALBUM_ITEM10; i++)
                             if (selected(adr_album, i)) break ;
                           wext->last_num = -1 ;
                           load_icon( wnd, wext->first+i-ALBUM_ITEM1 ) ;
                           break ;
    case ALBUM_TOVSS     : sprintf( vss_name, "%s\\*.VSS", config.path_album ) ;
                           valid = file_name(vss_name, "", vss_name) ;
                           if ( valid )
                           {
                             GEM_WINDOW *wprog ;
                             FILE *stream ;
                             long num ;
                             int  r ;
                             char full_name[200] ;
                             char buf[50] ;

                             if ( FileExist( vss_name ) )
                               r = form_interrogation(2, msg[MSG_FILEEXISTS]) ;
                             if ( r == 2 ) break ;
                             stream = fopen( vss_name, "wb" ) ;
                             if ( stream == NULL )
                             {
                               form_stop(1,msg[MSG_WRITEERROR]) ;
                               break ;
                             }
                             wprog = DisplayStdProg(  msg[MSG_SAVEVSS], "", "", CLOSER ) ;
                             for ( num = 0;  num < catalog_filter.nb_visibles ; num++ )
                             {
                               catalog_getfullname( num, full_name ) ;
                               if ( full_name[0] != 0 )
                               {
                                 sprintf( buf, "Display %s\r\n", full_name ) ;
                                 if ( fwrite( buf, strlen(buf), 1, stream ) != 1 )
                                 {
                                   form_stop(1,msg[MSG_WRITEERROR]) ;
                                   break ;
                                 }
                               }
                               if ( MAY_UPDATE( wprog, num ) )
                               {
                                 sprintf( buf, "%04ld/%04ld", num, catalog_filter.nb_visibles ) ;
                                 wprog->ProgPc( wprog, (int) ((100L*num)/(long)catalog_filter.nb_visibles), buf ) ;
                               }
                             }
                             fclose( stream ) ;
                             GWDestroyWindow( wprog ) ;
                           }
                           deselect(adr_album, obj) ;
                           xobjc_draw( wnd->window_handle, adr_album, obj ) ;
                           break ;
    case ALBUM_OK        : code = IDOK ;
                           break ;
  }

  if ( code == IDOK )
  {

  }

  return( code ) ;
}
Example #25
0
int OnObjectNotifyPal(void *w, int obj)
{
  GEM_WINDOW     *wnd = (GEM_WINDOW *) w ;
  WEXTENSION_PAL *wext = wnd->DlgData->UserData ;
  OBJECT         *adr_mkpal = wnd->DlgData->BaseObject ;
  int            off_x, off_y ;
  int            xm, ym, dummy ;
  int            pb_x, pb_y ;
  int            x1, y1, x2, y2 ;
  int            code = -1 ;
  char           buf[15] ;

  graf_mkstate( &xm, &ym, &dummy, &dummy ) ;

  switch( obj )
  {
    case MKPAL_MRED      :
    case MKPAL_PRED      : if ( obj == MKPAL_PRED ) wext->curr_rgb[0]++ ;
                           else                     wext->curr_rgb[0]-- ;
                           if (wext->curr_rgb[0] < 1)    wext->curr_rgb[0] = 1 ;
                           if (wext->curr_rgb[0] > 1000) wext->curr_rgb[0] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[0])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_RED].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[0]) ;
                           write_text(adr_mkpal, MKPAL_TRED, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TRED ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_MGREEN    :
    case MKPAL_PGREEN    : if ( obj == MKPAL_PGREEN ) wext->curr_rgb[1]++ ;
                           else                       wext->curr_rgb[1]-- ;
                           if (wext->curr_rgb[1] < 1)    wext->curr_rgb[1] = 1 ;
                           if (wext->curr_rgb[1] > 1000) wext->curr_rgb[1] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[1])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[1]) ;
                           write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TGREEN ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_MBLUE     :
    case MKPAL_PBLUE     : if ( obj == MKPAL_PBLUE ) wext->curr_rgb[2]++ ;
                           else                      wext->curr_rgb[2]-- ;
                           if (wext->curr_rgb[2] < 1)    wext->curr_rgb[2] = 1 ;
                           if (wext->curr_rgb[2] > 1000) wext->curr_rgb[2] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[2])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[2]) ;
                           write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TBLUE ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_REDBOX    : 
                           objc_offset(adr_mkpal, MKPAL_RED, &off_x, &off_y) ;
                           if (ym > off_y) wext->curr_rgb[0] = wext->curr_rgb[0]-20 ;
                           else            wext->curr_rgb[0] = wext->curr_rgb[0]+20 ;
                           if (wext->curr_rgb[0] < 1)    wext->curr_rgb[0] = 1 ;
                           if (wext->curr_rgb[0] > 1000) wext->curr_rgb[0] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[0])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_RED].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[0]) ;
                           write_text(adr_mkpal, MKPAL_TRED, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TRED ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_GREENBOX  : 
                           objc_offset(adr_mkpal, MKPAL_GREEN, &off_x, &off_y) ;
                           if (ym > off_y) wext->curr_rgb[1] = wext->curr_rgb[1]-20 ;
                           else            wext->curr_rgb[1] = wext->curr_rgb[1]+20 ;
                           if (wext->curr_rgb[1] < 1)  wext->curr_rgb[1] = 1 ;
                           if (wext->curr_rgb[1] > 1000) wext->curr_rgb[1] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[1])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[1]) ;
                           write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TGREEN ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_BLUEBOX   : 
                           objc_offset(adr_mkpal, MKPAL_BLUE, &off_x, &off_y) ;
                           if (ym > off_y) wext->curr_rgb[2] = wext->curr_rgb[2]-20 ;
                           else            wext->curr_rgb[2] = wext->curr_rgb[2]+20 ;
                           if (wext->curr_rgb[2] < 1)    wext->curr_rgb[2] = 1 ;
                           if (wext->curr_rgb[2] > 1000) wext->curr_rgb[2] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[2])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[2]) ;
                           write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TBLUE ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_RED       : wext->curr_rgb[0] = (float) graf_slidebox(adr_mkpal, MKPAL_REDBOX, MKPAL_RED, 1) ;
                           off_y = (int) (wext->curr_rgb[0]*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_RED].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                           wext->curr_rgb[0] = 1000-wext->curr_rgb[0] ;
                           sprintf(buf, "%.4d", wext->curr_rgb[0]) ;
                           write_text(adr_mkpal, MKPAL_TRED, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TRED ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
     case MKPAL_GREEN    : wext->curr_rgb[1] = (float) graf_slidebox(adr_mkpal, MKPAL_GREENBOX, MKPAL_GREEN, 1) ;
                           off_y = (int) (wext->curr_rgb[1]*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                           wext->curr_rgb[1] = 1000-wext->curr_rgb[1] ;
                           sprintf(buf, "%.4d", wext->curr_rgb[1]) ;
                           write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TGREEN ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_BLUE      : wext->curr_rgb[2] = (float) graf_slidebox(adr_mkpal, MKPAL_BLUEBOX, MKPAL_BLUE, 1) ;
                           off_y = (int) (wext->curr_rgb[2]*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                           wext->curr_rgb[2] = 1000-wext->curr_rgb[2] ;
                           sprintf(buf, "%.4d", wext->curr_rgb[2]) ;
                           write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TBLUE ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_LOAD     : charge_palette() ;
                          deselect(adr_mkpal, obj) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, obj ) ;
                          wext->flag_aff = 0 ;
                          break ;
    case MKPAL_SAVE     : sauve_palette() ;
                          deselect(adr_mkpal, obj) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, obj ) ;
                          wext->flag_aff = 0 ;
                          break ;
    case MKPAL_START    :
    case MKPAL_END      : if ( obj == MKPAL_START ) wext->stdeg  = wext->index ;
                          else                      wext->enddeg = wext->index ;
                          if (selected(adr_mkpal, MKPAL_START) && selected(adr_mkpal, MKPAL_END))
                          {
                            deselect(adr_mkpal, MKPAL_START) ;
                            deselect(adr_mkpal, MKPAL_END) ;
                            xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_START ) ;
                            xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_END ) ;
                            cree_degrade(wext->stdeg, wext->enddeg) ;
                            wext->stdeg = wext->enddeg = 500 ;
                          }
                          break ;
    case MKPAL_APPLIQUE : read_text(adr_mkpal, MKPAL_TRED, buf) ;
                          wext->rgb[0] = atoi(buf) ;
                          off_y = (int) ((1000-wext->rgb[0])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_RED].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                          read_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                          wext->rgb[1] = atoi(buf) ;
                          off_y = (int) ((1000-wext->rgb[1])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                          read_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                          wext->rgb[2] = atoi(buf) ;
                          off_y = (int) ((1000-wext->rgb[2])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                          vs_color(handle, wext->index, wext->rgb) ;
                          deselect(adr_mkpal, obj) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, obj ) ;
                          break ;
    case MKPAL_BOX      : objc_offset(adr_mkpal, obj, &pb_x, &pb_y) ;
                          if (wext->flag_aff)
                          {
                            x1 = pb_x+(wext->index % wext->nb_col_x)*wext->ww ;
                            y1 = pb_y+(wext->index / wext->nb_col_x)*wext->hh ;
                            x2 = x1+wext->ww-1 ;
                            y2 = y1+wext->hh-1 ;
                            vsf_color(handle, 1) ;
                            vswr_mode(handle, MD_XOR) ;
                            vsl_width(handle, 3) ;
                            v_hide_c(handle) ;
                            rectangle(x1, y1, x2, y2) ;
                            v_show_c(handle, 1) ;
                          }
                          else wext->flag_aff = 1 ;
                          graf_mkstate(&xm, &ym, &dummy, &dummy) ;
                          wext->index = (xm-pb_x)/wext->ww+ wext->nb_col_x*((ym-pb_y)/wext->hh) ;
                          vq_color(handle, wext->index, 0, wext->rgb) ;
                          sprintf(buf, "%.4d", wext->rgb[0]) ;
                          write_text(adr_mkpal, MKPAL_TRED, buf) ;
                          sprintf(buf, "%.4d", wext->rgb[1]) ;
                          write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                          sprintf(buf, "%.4d", wext->rgb[2]) ;
                          write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_RGB ) ;
                          x1 = pb_x+wext->ww*((xm-pb_x)/wext->ww) ;
                          y1 = pb_y+wext->hh*((ym-pb_y)/wext->hh) ;
                          x2 = x1+wext->ww-1 ;
                          y2 = y1+wext->hh-1 ;
                          vsf_color(handle, 1) ;
                          v_hide_c(handle) ;
                          vswr_mode(handle, MD_XOR) ;
                          vsl_width(handle, 3) ;
                          rectangle(x1, y1, x2, y2) ;
                          v_show_c(handle, 1) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_CURRCOL ) ;
                          off_y = (int) ((1000-wext->rgb[0])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_RED].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                          off_y = (int) ((1000-wext->rgb[1])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                          off_y = (int) ((1000-wext->rgb[2])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                          break ;
     case MKPAL_OK      : code = IDOK ;
                          break ;
     case MKPAL_CANCEL  : code = IDCANCEL ;
                          break ;
  }

  if ( code == IDOK )
  {

  }

  return( code ) ;
}
Example #26
0
short  select_exports( short *type_ptr )
{
	int oset = 0 ;				/* slider offset in numbers of people	*/
	short done = FALSE ;
	short fdone ;
	short export = FALSE ;
	short button ;
	short m_x, m_y ;
	short dummy ;
	short obj_x, obj_y ;
	Filter filter ;
	short i, flag ;

	match_refs = (int *) pmalloc( sizeof (int) * next_person ) ;
	pcross_refs = (int *) pmalloc( sizeof (int) * next_person ) ;
	ccross_refs = (int *) pmalloc( sizeof (int) * next_couple ) ;

	total_people = 0 ;
	for( i=1; i<next_person; i++ )
	{
		if( people[i].birth_date != DELETED_DATE )
			matches[total_people++] = i ;
	}

	exp_selected = (char *) pmalloc( total_people ) ;

	if( !exp_selected || !match_refs || !pcross_refs || !ccross_refs )
	{	
		rsrc_form_alert( 1, NO_MEMORY ) ;
		if( exp_selected )  free( exp_selected ) ;
		if( match_refs )  free( match_refs ) ;
		if( pcross_refs )  free( pcross_refs ) ;
		if( ccross_refs ) free( ccross_refs ) ;
		return FALSE ;
	}

	qsort( matches, (size_t) total_people, (size_t) 4, pidx_compare ) ;

				/* initialise match_refs as not all of array is used	*/
	for( i=0; i<next_person; i++ )  match_refs[i] = -1 ;
				/* load array to get from reference to match position	*/
	for( i=0; i<total_people; i++ )  match_refs[matches[i]] = i ;

	for( i=0; i<total_people; i++ )  exp_selected[i] = FALSE ;

	if( total_people > 16 )
	{
		if( total_people < 256 )
			esel_ptr[ES_SLIDER].ob_height
					= esel_ptr[ES_SLIDE_RANGE].ob_height * 16 / total_people ;
		else
			esel_ptr[ES_SLIDER].ob_height
					= esel_ptr[ES_SLIDE_RANGE].ob_height / 16 ;
		set_slide( 0, total_people-16, esel_ptr,
										ES_SLIDER, ES_SLIDE_RANGE, app_modal_box() ) ;
	}
	else
	{
		esel_ptr[ES_SLIDER].ob_height = esel_ptr[ES_SLIDE_RANGE].ob_height ;
		set_slide( 0, 1, esel_ptr, ES_SLIDER, ES_SLIDE_RANGE, app_modal_box() ) ;
	}

	list_exportees( oset ) ;

	app_modal_init( esel_ptr, "Export", TITLED ) ;

	while( !done )
	{
		button = app_modal_do() ;
		button &= ~DOUBLE_CLICK ;

		if( button  && button != APP_MODAL_TERM )  esel_ptr[button].ob_state &= ~SELECTED ;

		switch( button )
		{
			case ES_SLIDER :
				if( total_people > 16 )
				{
					oset = move_slide( esel_ptr,
										ES_SLIDER, ES_SLIDE_RANGE, app_modal_box() ) ;
					oset = ( total_people - 16 ) * oset / 1000 ;
				}
				list_exportees( oset ) ;
				objc_draw( esel_ptr, ES_LIST, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				break ;
			case ES_UP :
				if( total_people > 16 && oset > 0 )
				{
					oset-- ;
					set_slide( oset, total_people-16, esel_ptr,
										ES_SLIDER, ES_SLIDE_RANGE, app_modal_box() ) ;
				}
				list_exportees( oset ) ;
				objc_draw( esel_ptr, ES_LIST, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				break ;
			case ES_DOWN :
				if( total_people > 16 && oset < total_people - 16 )
				{
					oset++ ;
					set_slide( oset, total_people - 16, esel_ptr,
										ES_SLIDER, ES_SLIDE_RANGE, app_modal_box() ) ;
				}
				list_exportees( oset ) ;
				objc_draw( esel_ptr, ES_LIST, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				break ;
			case ES_SLIDE_RANGE :
				if( total_people > 16 )
				{
					graf_mkstate( &m_x, &m_y, &dummy, &dummy ) ;
					objc_offset( esel_ptr, ES_SLIDER, &obj_x, &obj_y ) ;
					if( m_y > obj_y )
					{
						oset += 15 ;
						if( oset > total_people - 16 )  oset = total_people - 16 ;
					}
					else
					{
						oset -= 15 ;
						if( oset < 0 )  oset = 0 ;
					}
					set_slide( oset, total_people-16, esel_ptr,
									ES_SLIDER, ES_SLIDE_RANGE, app_modal_box() ) ;
				}
				list_exportees( oset ) ;
				objc_draw( esel_ptr, ES_LIST, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				break ;
			case ESEL0 :
			case ESEL1 :
			case ESEL2 :
			case ESEL3 :
			case ESEL4 :
			case ESEL5 :
			case ESEL6 :
			case ESEL7 :
			case ESEL8 :
			case ESEL9 :
			case ESEL10 :
			case ESEL11 :
			case ESEL12 :
			case ESEL13 :
			case ESEL14 :
			case ESEL15 :
				if( esel_ptr[ANCESTORS].ob_state & SELECTED )
				{
					ancestor_select( matches[button-ESEL0 + oset] ) ;
					esel_ptr[ANCESTORS].ob_state &= ~SELECTED ;
					esel_ptr[DESCENDANTS].ob_state &= ~SELECTED ;
					list_exportees( oset ) ;
					objc_draw( esel_ptr, ROOT, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				}
				else if( esel_ptr[DESCENDANTS].ob_state & SELECTED )
				{
					descendant_select( matches[button-ESEL0 + oset], 0, 0 ) ;
					esel_ptr[DESCENDANTS].ob_state &= ~SELECTED ;
					list_exportees( oset ) ;
					objc_draw( esel_ptr, ROOT, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				}
				else
				{
					if( !exp_selected[button-ESEL0 + oset] )
					{
						exp_selected[button-ESEL0 + oset] = TRUE ;
						esel_ptr[button].ob_state |= CHECKED ;
					}
					else
					{
						exp_selected[button-ESEL0 + oset] = FALSE ;
						esel_ptr[button].ob_state &= ~CHECKED ;
					}
					objc_draw( esel_ptr, button, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				}
				break ;
			case ES_SEL_ALL :
				for( i=0; i<total_people; i++ )  exp_selected[i] = TRUE ;
				list_exportees( oset ) ;
				objc_draw( esel_ptr, ES_LIST, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				objc_draw( esel_ptr, ES_SEL_ALL, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				break ;
			case ES_DSEL_ALL :
				for( i=0; i<total_people; i++ )  exp_selected[i] = FALSE ;
				list_exportees( oset ) ;
				objc_draw( esel_ptr, ES_LIST, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				objc_draw( esel_ptr, ES_DSEL_ALL, MAX_DEPTH, PTRS( app_modal_box() ) ) ;
				break ;
			case ES_FILTER :
				clear_efil_form() ;
				clear_form_flags() ;
				for( i = 0 ; i <= FL_NOT8 - FL_NOT1 ; i+= FL_NOT2 - FL_NOT1 )
				{
					set_to_ignore(FL_NOT1+i) ;
					flags_ptr[FL_NOT1+i].ob_state |= SELECTED ;
				}
				fdone = FALSE ;				/* loop until filter done	*/
				while( !fdone )
				{
					button = do_sub_form( efil_ptr, "Export Filter", EXP_HELP, TITLED ) ;
					switch( button )
					{
						case EXP_SEL :
						case EXP_DESEL :
							busy( BUSY_MORE ) ;
							update_filter( &filter, efil_form_addrs.efam_name,
								efil_form_addrs.eforename, efil_form_addrs.ebefore,
								efil_form_addrs.eafter, efil_form_addrs.eplace ) ;
							if( button == EXP_DESEL )  flag = FALSE ;
							else  flag = TRUE ;
							for( i=0; i<total_people; i++ )
							{
								if( test_match( &filter, matches[i] ) )
									exp_selected[i] = flag ;
							}
							busy( BUSY_LESS ) ;
						case EXP_CANCEL :
							fdone = TRUE ;
							break ;
						case EXP_FLAGS :
							do_sub_form( flags_ptr, "Filter Flags", FL_HELP, TITLED ) ;
							break ;
					}
				}
				list_exportees( oset ) ;
				break ;
			case ES_CANCEL :
			case APP_MODAL_TERM :
				done = TRUE ;
				break ;
			case ES_OK :
				export = TRUE ;
				done = TRUE ;
				break ;
			case ES_HELP :
				help( export_help ) ;
				objc_draw( esel_ptr, ES_HELP, 0, PTRS( app_modal_box() ) ) ;
				break ;
			default :
				break ;
		}
	}
	esel_ptr[ANCESTORS].ob_state &= ~SELECTED ;
	esel_ptr[DESCENDANTS].ob_state &= ~SELECTED ;

	if( esel_ptr[GEDCOM].ob_state & SELECTED )
		*type_ptr = GEDCOM_TYPE ;
	else if( esel_ptr[CSV].ob_state & SELECTED )
		*type_ptr = CSV_TYPE ;
	else  *type_ptr = FAMTREE_TYPE ;
	
	app_modal_end() ;

	return export ;
}
Example #27
0
int16 main(void)
{
    GRECT		n = {0,0,0,0};
    GRECT		r1;
    EVNTDATA	ev;
    int16		bclicks, bmask, bstate;
    boolean	leave;
    quit = FALSE;

    debug_init("MControl", null, NULL);

    init_app("mcontrol.rsc");
    init_rsrc();
    init_conf();
    init_dial();
    init_comm();
    init_beta();

    /* Callback f�r modale Fensterdialoge, Fenster-Alerts usw. */
    set_mdial_wincb(handle_msg);

    graf_mkstate( &ev );
    wdial_hover( ev.x, ev.y, &r1, &leave );

    while (!quit)
    {
        mbutton = 0;

        if( !((ev.bstate) & 3) )
            bclicks = 258;
        else
            bclicks = 0;

        bmask = 3;
        bstate = 0;

        event = evnt_multi( MU_BUTTON|MU_M1|MU_MESAG|MU_KEYBD,
                            bclicks, bmask, bstate,
                            leave, &r1, 0, &n,
                            msg,
                            0l,
                            &ev,
                            &kreturn, &mclick );
        msx = ev.x;
        msy = ev.y;
        mbutton = ev.bstate;
        kstate = ev.kstate;

        if (event & MU_MESAG)
        {
            if( msg[0] == WM_MOVED )
                wdial_hover( msx, msy, &r1, &leave );

            handle_msg(msg);
        }

        if (event & MU_BUTTON)
        {
            if( mbutton == 2 )
                menu_context( msx, msy );
            else if (!click_wdial(mclick, msx, msy, kstate, mbutton))
                ;
        }

        if (event & MU_M1)
            wdial_hover( msx, msy, &r1, &leave );

        if (event & MU_KEYBD)
        {
            int16	title, item;

            if (is_menu_key(kreturn, kstate, &title, &item))
                handle_menu(title, item);
            else
            {
                key_wdial(kreturn, kstate);
                key_sdial(kreturn, kstate);
            }
        }
    }

    exit_comm();
    exit_dial();
    exit_rsrc();
    debug_exit();
    exit_app(0);
    return 0;
}
Example #28
0
File: gui.c Project: mmuman/NetSurf
/**
 * Core atari event processing.
 */
static void atari_poll(void)
{

    struct gui_window *tmp;
    short mx, my, dummy;

    aes_event_in.emi_tlow = schedule_run();

    if(rendering){
	aes_event_in.emi_tlow = nsoption_int(atari_gui_poll_timeout);
    }

    if(aes_event_in.emi_tlow < 0) {
	aes_event_in.emi_tlow = 10000;
	printf("long poll!\n");
    }

    if(input_window && input_window->root->redraw_slots.areas_used > 0) {
	window_process_redraws(input_window->root);
    }


    graf_mkstate(&mx, &my, &dummy, &dummy);
    aes_event_in.emi_m1.g_x = mx;
    aes_event_in.emi_m1.g_y = my;
    evnt_multi_fast(&aes_event_in, aes_msg_out, &aes_event_out);
    if(gemtk_wm_dispatch_event(&aes_event_in, &aes_event_out, aes_msg_out) == 0) {
	if( (aes_event_out.emo_events & MU_MESAG) != 0 ) {
	    LOG("WM: %d\n", aes_msg_out[0]);
	    switch(aes_msg_out[0]) {

	    case MN_SELECTED:
		LOG("Menu Item: %d\n", aes_msg_out[4]);
		deskmenu_dispatch_item(aes_msg_out[3], aes_msg_out[4]);
		break;

	    case AP_TERM:
		atari_quit = true;
		break;
	    default:
		break;
	    }
	}
	if((aes_event_out.emo_events & MU_KEYBD) != 0) {
	    uint16_t nkc = gem_to_norm( (short)aes_event_out.emo_kmeta,
					(short)aes_event_out.emo_kreturn);
	    deskmenu_dispatch_keypress(aes_event_out.emo_kreturn,
				       aes_event_out.emo_kmeta, nkc);
	}
    }

    tmp = window_list;
    while(tmp){
	if(tmp->root->redraw_slots.areas_used > 0){
	    window_process_redraws(tmp->root);
	}
	tmp = tmp->next;
    }

    /** @todo implement generic treeview redraw function. */
    /** @todo rename hl to atari_hotlist or create getter for it... */

    atari_treeview_flush_redraws();
}
Example #29
0
xamdeflst()
{
    long mul;
    int	 botptr, bret, value;
    int  xoff, yoff, mx, my;
    int  i, ret, cont;
    int  np, xam;
    int  k1, k2;

    /* Allocate memory to hold defects */
    if ((xampaddr = mymalloc(npndefs*(sizeof(PADDR)))) <= 0) {
        return err(nomemory);
    }
    
    for (np = 0; np < npndefs; np++) {
    	xampaddr[np].exist = nppaddr[np].exist;
    	xampaddr[np].head = nppaddr[np].head;
    	xampaddr[np].cylndr = nppaddr[np].cylndr;
    	xampaddr[np].btoffst = nppaddr[np].btoffst;
    }
    
    r_items();		/* read items */
    
    totcnt = npndefs;
    if (npndefs > NM_ITEMS)		/* bigger than one window */
	botptr = npndefs - NM_ITEMS;
    else
	botptr = 0;

    cont = TRUE;			/* control flag	*/
    while(cont) {
	bret = form_do(xamform, -1);
	graf_mkstate(&mx, &my, &k1, &k2);	/* graf mkstate	*/
	ret = bret & 0x7FFF;			/* mask off double click */
	LWSET(OB_STATE(xamform, ret), 0);
	value = 1;			/* scroll factor */

	switch (ret) {		/* Big Switch */
	    case FSVSLID:		
		objc_offset(xamform, FSVELEV, &xoff, &yoff);
		value = NM_ITEMS;		/* one full window size	*/
		if (my <= yoff)
		    goto up;		
		goto down;

	    case FSVELEV:
		value = graf_slidebox(xamform, FSVSLID, FSVELEV, TRUE);
		mul = (npndefs - NM_ITEMS) * value;
		mul /= 1000;
		value = (int)mul; 
		value = (topptr - value);
		if (value >= 0)
		    goto up;			/* go up */
		else
		    value = -value;		/* go down */

down:	    case FDNAROW:			/* scroll down */
		if (topptr == botptr)
		    break;

		if ((topptr + value) <= botptr)
		    topptr += value;
		else
		    topptr = botptr;

		goto sfiles;			

up:	    case FUPAROW:			/* scroll up */
		if (!topptr)
		    break;

		if ((topptr - value) >= 0)
		    topptr -= value;
		else
		    topptr = 0;

sfiles:	    r_show(topptr);		/* redisplay the file */
	    break;

	    case FCLSBOX:
	      cont = FALSE;
	      break;

	    default:
	      if (ret >= ENTRY0 && ret <= ENTRY7) {
	      	  erasemsg();		/* erase EXAMINING box */
	      	  want2edt(ret);	/* let user edit entry */
	      	  dsplymsg(xamform);	/* redraw EXAMINING box */
	      }
	      break;  
	}				/* end of switch */
    }			    	/* while */
    erasemsg();
    
    /* New inputted list = Examined list */
    for (xam = 0, np = 0; xam < npndefs; xam++) {
    	if (xampaddr[xam].exist) {
    	    nppaddr[np].head = xampaddr[xam].head;
    	    nppaddr[np].cylndr = xampaddr[xam].cylndr;
    	    nppaddr[np].btoffst = xampaddr[xam].btoffst;
    	    np++;
    	}
    }
    npndefs = np;	/* current number of input entries */
    free(xampaddr);
    return (TRUE);
}
Example #30
0
static bool select_font( bool is_prn )
{
int button, cx, cy, cw, ch, mousey, slidey, dum;
int index, i, double_click;
long pos;
static int top = 0;                 /* first name set to the top */

   wind_update(BEG_UPDATE);

   set_slider_size();                     /* set slider size and position, like a GEM window */
   set_slider_pos(top);

   ((TEDINFO *)chooser[CHACTION].ob_spec)->te_ptext = " Choose GDOS font ";
   ((TEDINFO *)chooser[CHTITLE].ob_spec)->te_ptext = is_prn? " Printer font list: ": " Screen font list: ";
   ((TEDINFO *)chooser[GEMFNAME].ob_spec)->te_ptext = gem_file_name;
   ((TEDINFO *)chooser[GEMFNAME].ob_spec)->te_txtlen = sizeof(gem_file_name);
   form_center(chooser, &cx, &cy, &cw, &ch);
   form_dial(FMD_START, 0, 0, 0, 0, cx, cy, cw, ch);
   objc_draw(chooser, ROOT, MAX_DEPTH, cx, cy, cw, ch);

   /*
   ** the chooser can show up to MAX_NAMES names. If there are fewer than this,
   ** the empty slots are disabled by clearing the TOUCHEXIT flags
   */
   for( i=0; i<MAX_NAMES; i++ ) {
      if( i<nr_names ) {
	 chooser[NAME1+i].ob_flags |= TOUCHEXIT;
      }
      else {
	 chooser[NAME1+i].ob_flags &= ~TOUCHEXIT;
      } /* if */
   } /* for */
   show_names( top );    /* display the font names */

   /** the main loop **/
   
   do {
      button =form_do( chooser, GEMFNAME );
      dprintf(( "\033Hbutton is %x\n", button)); dgetchar();
      if(button&0x8000) {     /* double click */
	 double_click = TRUE;
	 button &= 0x7fff;
      }
      else double_click = FALSE;
      if(button ==DNARR) {
	 if((top+MAX_NAMES)<nr_names) {
	    top++;   /* next name in the list */
	    show_names( top );
	    set_slider_pos(top);
	    objc_draw(chooser, SLIDEBAR, MAX_DEPTH, cx, cy, cw, ch);
	 }
      }
      else if(button ==UPARR) {
	 if(top>0) {
	    top--;
	    show_names( top );
	    set_slider_pos(top);
	    objc_draw(chooser, SLIDEBAR, MAX_DEPTH, cx, cy, cw, ch);
	 }
      }
      else if(button ==SLIDEBAR && nr_names>MAX_NAMES) { /* handle clicks on the slidebar */
	 graf_mkstate(&dum, &mousey, &dum, &dum);     /* where is the mouse - above or below the slider? */
	 objc_offset(chooser, SLIDER, &dum, &slidey);
	 if(mousey<slidey) {                       /* mouse is above the slider */
	    top-=MAX_NAMES;                        /* move up one page of names */
	    if(top<0) top =0;
	 }
	 else {
	    top+=MAX_NAMES;
	    if(top>(nr_names-MAX_NAMES)) top =nr_names-MAX_NAMES;
	 } /* if */
	 show_names( top );
	 set_slider_pos(top);
	 objc_draw(chooser, SLIDEBAR, MAX_DEPTH, cx, cy, cw, ch);
      }
      else if(button ==SLIDER && nr_names>MAX_NAMES) {      /* handle the slider */
	 pos =graf_slidebox(chooser, SLIDEBAR, SLIDER, 1);   /* the position the user wants */
	 chooser[SLIDER].ob_y =pos*(long)(chooser[SLIDEBAR].ob_height-chooser[SLIDER].ob_height)/1000;
	 top =pos*(nr_names-MAX_NAMES)/1000;
	 if(top<0) top =0;
	 if(top>(nr_names-MAX_NAMES)) top =nr_names-MAX_NAMES;
	 show_names( top );
	 objc_draw(chooser, SLIDEBAR, MAX_DEPTH, cx, cy, cw, ch);
      }
      else if(button>=NAME1 && button<=NAME8) {
	 /*** the user has clicked on a font name ***/
	 index = top+button-NAME1;
         dprintf(( "\033Hindex is %d\n", index)); dgetchar();
	 if( iSelected == index ) {    /* the name is already selected */
	    assert( iSelected >=0 );
	    assert( iSelected < nr_names );
	    iSelected = NO_INDEX;      /* deselect it */
	    highlight(button);         /* remove the highlight from the name */
	 }
	 else {
	    /* is the currently selected font name displayed in the box? */
	    if( iSelected!=NO_INDEX
	     && (iSelected+NAME1-top)>=NAME1
	     && (iSelected+NAME1-top)<=NAME8 ) {
	       highlight( iSelected+NAME1-top );        /* remove highlight */
	    } /* if */
	    iSelected = index;    /* set the index for the new selection */
	    highlight(button);         /* and highlight it */
	 } /* if */
	 if(double_click) button =CHOOSEOK;   /* if double clicked on a name, exit immediately */
      } /* if */
      assert( iSelected == NO_INDEX || iSelected >=0 );
      assert( iSelected == NO_INDEX || iSelected < nr_names );
   } while(button!=CHOOSEOK && button!=CHOOSECA);


   /** returned from form, process user actions **/

   dprintf(( "\033HiSelected is %d\n", iSelected)); dgetchar();
   dprintf(( "selected name is %s\n", name_table[iSelected].name ));
   dprintf(( "gem file name is %s\n", 
		     ((TEDINFO *)chooser[GEMFNAME].ob_spec)->te_ptext ));
   dprintf(( "%s format%s\n", 
      chooser[MOT].ob_state&SELECTED ? "motorola" : "intel",
      chooser[WIDONLY].ob_state&SELECTED ? ", width tables only" : "" ));
   dgetchar();

   assert( (chooser[MOT].ob_state & SELECTED) != (chooser[INTEL].ob_state&SELECTED) );
   fMot = (chooser[MOT].ob_state & SELECTED) != 0;
   fWidOnly = (chooser[WIDONLY].ob_state & SELECTED) != 0; 
   chooser[button].ob_state &= ~SELECTED;
   form_dial( FMD_FINISH, 0, 0, 0, 0, cx, cy, cw, ch );
   wind_update( END_UPDATE );
   return button==CHOOSEOK;
} /* select_font() */