Exemple #1
0
void start_aktion(char *str, bool inter, long max)
{
	int	d;
	GRECT	r1, r2;

	if (aktion == NULL)
	{
		rsrc_gaddr(R_TREE, AKTION,	&aktion);
		fix_dial(aktion);
	}
		
	max_value = max(max, 1);
	set_string(aktion, ATEXT, str);
	aktion[ABOX2].ob_width = 1;
	set_flag(aktion, AESC, HIDETREE, !inter);
	interupt = inter;

	/* Zentrieren, nur beim ersten Mal */
	if (aktion[0].ob_x == 0 && aktion[0].ob_y == 0)
		form_center(aktion, &d, &d, &d, &d);	
	
	r1.g_x = aktion[0].ob_x;
	r1.g_y = aktion[0].ob_y;
	r1.g_w = aktion[0].ob_width;
	r1.g_h = aktion[0].ob_height;
	wind_calc_grect(WC_BORDER, (NAME|MOVER|BACKDROP), &r1, &r2);
	akt_handle = wind_create_grect((NAME|MOVER|BACKDROP), &r1);
	if (akt_handle > 0)
	{
		/* Men� abschalten */
		disable_menu();
		wind_set_str(akt_handle, WF_NAME, " qed ");
		wind_open_grect(akt_handle, &r2);
	}
}
Exemple #2
0
void nag_about(int time)
{

		OBJECT *dlog;	
		short x,y,w,h;

#ifdef DEMO

	Crsrc_gaddr(R_TREE,NAG_SCREEN,&dlog);
	set_tedinfo(dlog,Please_Wait_Butt,"Please Wait");

	form_center(dlog,&x,&y,&w,&h);
	form_dial(FMD_START,0,0,0,0,x,y,w,h);
	objc_draw(dlog,0,10,x,y,w,h);

	/*pause for supplied time_value*/

	set_tedinfo(dlog,Please_Wait_Butt," OK ");
	objc_draw(dlog,0,10,x,y,w,h);

	/* handle form */
	handle_dialog(dlog,0,0);

	set_tedinfo(dlog,Please_Wait_Butt,"Please Wait");
	form_dial(FMD_FINISH,0,0,0,0,x,y,w,h);

#endif
}
Exemple #3
0
open_dial(int flag)
{
static int x,y,w,h;

    if ((!_AccFlag) || (para.multi==MULTINE)){
        if(flag) {
	        strcpy((char *)transfer[BLOCKNUM].ob_spec,"0001");
    	    strcpy((char *)transfer[STATUS].ob_spec,"---");
        	strcpy((char *)transfer[RETRIES].ob_spec,"0001");
            form_center(transfer,&x,&y,&w,&h);
            form_dial(0,0,0,0,0,x,y,w,h);
            objc_draw(transfer,0,8,x,y,w,h);
        }
        else form_dial(3,0,0,0,0,x,y,w,h);
    }
    else {
        if (flag) {
            wind_up(0);
            strcpy(msg,"0001 01 ---");
            v_gtext(handle,640-12*8,13,msg);
        }
        else wind_up(1);
        was_full=0;Bconout(2,7);
    }
}
Exemple #4
0
/*
** Description
** Show information about oAESis
**
** 1999-01-10 CG
** 1999-01-11 CG
*/
static
void
show_information (void) {
  OBJECT * information;
  int      x;
  int      y;
  int      w;
  int      h;

  /* Get address if information resource */
  rsrc_gaddr (R_TREE, INFORM, &information);

  /* Fix version number :-) */
  sprintf(information[INFOVERSION].ob_spec.tedinfo->te_ptext,
          OAESIS_VERSION);

  /* Calculate area of resource */
  form_center (information, &x, &y, &w, &h);

  /* Reserve area for dialog */
  form_dial (FMD_START, x, y, w, h, x, y, w, h);

  /* Draw dialog */
  objc_draw (information, 0, 9, x, y, w, h);

  /* Let the user handle the dialog */
  form_do (information, 0);

  /* Free area used by dialog */
  form_dial (FMD_FINISH, x, y, w, h, x, y, w, h);

  /* Restore ok button */
  information[INFOOK].ob_state &= ~SELECTED;
}
Exemple #5
0
/***************************
* restore ttf-gdos to its previous config
*/
static void tidy_up( void )
{
register uint16 n = pInfo->nr_wkstns;
register WORKSTN_RECORD *pw = pInfo->workstn_table;
char *const gempath = ((void**)pInfo)[-1];
register int i = gem_font_count;
int xdial,ydial,wdial,hdial;         /* co-ords for dialog box */
int  x,y,w,h;

   form_center (&rs_object,&xdial,&ydial,&wdial,&hdial);
   x=y=w=h=0;
   form_dial (FMD_START,x,y,w,h,xdial,ydial,wdial,hdial);      /* reserve room */
   sprintf( usr_msg, "please wait ..." );
   objc_draw( &rs_object, 0, 2, xdial, ydial, wdial, hdial ); /* draw the dialog box */

   for( ; n>0; n--, pw++ ) {
      /* printf( "wkstn %d, %s, 1st font is %d, nr is %d\n", pw->id, &pw->driver_name, pw->nr_gemfonts, pw->first_font ); */
      pw->nr_gemfonts = save[pw->id].nr_gemfonts;
      pw->first_font = save[pw->id].first_font;
   } /* for */

   for( ; i>=0; i-- ) {
      FONT_FILE_NAME( gempath+pInfo->len_gem_path, i );
      remove( gempath );
   } /* for */

   form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial );  /* release its room */

} /* tidy_up() */
Exemple #6
0
void  gem_prgm()

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

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

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

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

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

   form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h);
   v_clsvwk (vdi_handle);
 }
Exemple #7
0
/* ------------------------------------------------------------------ */
static void choose_font(void)
{
OBJECT *loading;
int cx, cy, cw, ch;
bool is_prn;

   is_prn = (form_alert( 1, "[0][select device][screen|printer]" )==2);
   dprintf(( "\033Hselected %s workstation\n", is_prn? "printer": "screen" ));

   if( init_wkstn( is_prn ) ) {

      graf_mouse(BUSY_BEE, 0);
      dprintf(( "ready to load fonts ... " )); dgetchar();
      rsrc_gaddr( R_TREE, LDGFONTS, &loading );
      form_center( loading, &cx, &cy, &cw, &ch);
      form_dial(FMD_START, 0, 0, 0, 0, cx, cy, cw, ch);
      objc_draw( loading, ROOT, MAX_DEPTH, cx, cy, cw, ch);
      (void)vst_load_fonts(handle, 0);
      form_dial( FMD_FINISH, 0, 0, 0, 0, cx, cy, cw, ch );
      dprintf(( "\033Hdone\nnow getting font names ..." )); dgetchar();
      if( get_fontnames( *(tGemFont **)(&_contrl[10]) ) ) {
	 dprintf(( "done\n" )); dgetchar();
	 graf_mouse(ARROW, 0);
	 while( select_font( is_prn ) ) {
	    if( iSelected == NO_INDEX ) {
	       form_alert( 1, "[1][You must choose|a font to dump][Try Again]" );
	    }
	    else if( gem_file_name[0] == '\0' ) {
	       form_alert( 1, "[1][You must choose a|"
			 "gem font file name][Try Again]" );
	    }
	    else {
	       dump_font();
	       gem_file_name[0] = '\0'; /* reset entries for next round */
	       iSelected = NO_INDEX;
	    } /* if */
	 } /* while */
      } /* if */

      vst_unload_fonts(handle, 0);

      free(name_table);

      dprintf(( "\033Hclosing %s workstation ...", is_prn? "printer": "screen" ));
      if( is_prn ) v_clswk(handle);
      else v_clsvwk(handle);
   }
   else form_alert(1, "[3][Can't open workstation][OK]");

} /* choose_font() */
Exemple #8
0
/* ***Fenster anmelden + Dialog zeichnen*** */
int wdial_init(OBJECT *tree, char *title)
{
 short wx, wy, ww, wh;
 int dwhndl;

 form_center(tree, &wx, &wy, &ww, &wh);           /* Gr��e holen */
 wind_calc(WC_BORDER, NAME|MOVER, wx, wy, ww, wh, &wx, &wy, &ww, &wh);
 dwhndl=wind_create(NAME|MOVER, wx, wy, ww, wh);  /* Fenster anmelden */
 if(dwhndl<0)  return(NULL);
 wind_set(dwhndl, WF_NAME, title);                /* Name setzen */
 wind_open(dwhndl, wx, wy, ww, wh);               /* Fenster �ffnen */
 objc_draw(tree, ROOT, MAX_DEPTH, wx, wy, ww, wh);  /* Dialog zeichnen */

 return(dwhndl);
}
Exemple #9
0
void init_infowin(void)
{
    short dummy;

    rsrc_gaddr(R_TREE,INFORMATION,&info_win.dialog);
    strncpy(info_win.w_name,"FireMail information",MAXWINSTRING);
    info_win.attr=NAME|MOVE|CLOSE;
    info_win.icondata=NULL;
    info_win.status=WINDOW_CLOSED;
    form_center(info_win.dialog, &dummy, &dummy, &dummy, &dummy);
    str2ted(info_win.dialog,INFO_VERSION,alerts[VERSION]);

    rsrc_gaddr(R_TREE,REGISTER,&register_win.dialog);
    strncpy(register_win.w_name,"FireMail Registration",MAXWINSTRING);
    register_win.attr=NAME|MOVE|CLOSE;
    register_win.icondata=NULL;
    register_win.status=WINDOW_CLOSED;
    form_center(register_win.dialog, &dummy, &dummy, &dummy, &dummy);
    str2ted(register_win.dialog,REG_NAME,"Unregistered");
    str2ted(register_win.dialog,REG_ADR1,"");
    str2ted(register_win.dialog,REG_ADR2,"");
    str2ted(register_win.dialog,REG_ADR3,"");
    str2ted(register_win.dialog,REG_KEY,"");
}
Exemple #10
0
void init_registerwin(void)
{
  short dummy;
  
  rsrc_gaddr(R_TREE,REGISTER,&register_win.dialog);
  strncpy(register_win.w_name,"Registration",MAXWINSTRING);
  register_win.attr=NAME|CLOSE|SMALLER|MOVE;
  register_win.icondata=&icons[ICON_INFO];
  register_win.status=WINDOW_CLOSED;
  str2ted(register_win.dialog,REG_NAME,"");
  str2ted(register_win.dialog,REG_ADR1,"");
  str2ted(register_win.dialog,REG_ADR2,"");
  str2ted(register_win.dialog,REG_ADR3,"");
  str2ted(register_win.dialog,REG_KEY,"");
  form_center(register_win.dialog, &dummy, &dummy, &dummy, &dummy);
}
Exemple #11
0
void init_path_win(void)
{
#ifdef LOGGING
Log(LOG_FUNCTION,"init_path_win(void)\n");
Log(LOG_INIT,"Path Window Init\n");
#endif
  rsrc_gaddr(R_TREE,PATH,&path_win.dialog);
  strncpy(path_win.w_name,alerts[WN_PATH],MAXWINSTRING);
  path_win.attr=NAME|MOVE|CLOSE;
  path_win.icondata=NULL; /* &icons[ICON_FIRESTORM]; */
  path_win.i_x=100;
  path_win.i_y=100;
  path_win.status=WINDOW_CLOSED;
  path_win.type=TYPE_DIALOG;
  form_center(path_win.dialog, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter);
    
  Return;
}
Exemple #12
0
void init_user_win(void)
{
#ifdef LOGGING
Log(LOG_FUNCTION,"init_user_win(void)\n");
Log(LOG_INIT,"User Window Init\n");
#endif
  rsrc_gaddr(R_TREE,USER,&user_win.dialog);
  strncpy(user_win.w_name,alerts[WN_PATH],MAXWINSTRING);
  user_win.attr=NAME|MOVE|CLOSE|SMALLER;
  user_win.icondata=&icons[ICON_FIRESTORM];
  user_win.i_x=100;
  user_win.i_y=100;
  user_win.status=WINDOW_CLOSED;
  user_win.type=TYPE_DIALOG;
  form_center(user_win.dialog, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter);
    
  Return;
}
Exemple #13
0
void init_switch_win(void)
{
#ifdef LOGGING
Log(LOG_FUNCTION,"init_switch_win(void)\n");
Log(LOG_INIT,"Switches window Init\n");
#endif
  rsrc_gaddr(R_TREE,SWITCHES,&switch_win.dialog);
  strncpy(switch_win.w_name,alerts[WN_SWITCH],MAXWINSTRING);
  switch_win.attr=NAME|MOVE|CLOSE;
  switch_win.icondata=&icons[ICON_FIRESTORM];
  switch_win.i_x=100;
  switch_win.i_y=100;
  switch_win.status=WINDOW_CLOSED;
  switch_win.type=TYPE_DIALOG;
  form_center(switch_win.dialog, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter, (short *)&tempvar.tempcounter);
    
  Return;
}
Exemple #14
0
void std_input(char *title, char *text, char *txt_cancel)
{
  int x, y, w, h ;
  int button ;

  if ( stdinput == NULL ) stdinput_fix() ;

  if ( txt_cancel != NULL ) strcpy( stdinput[INPUT_CANCEL].ob_spec.free_string, txt_cancel ) ;
  write_text(stdinput, INPUT_TEXT, "") ;
  write_text(stdinput, INPUT_TITLE, title) ;
  form_center(stdinput, &x, &y, &w, &h) ;
  form_dial(0, x, y, w, h, x, y, w, h) ;
  objc_draw(stdinput, 0, 200, x, y, w, h) ;
  button = form_do(stdinput, INPUT_TEXT) ;
  deselect(stdinput, button) ;
  form_dial(3, x, y, w, h, x, y, w, h) ;
  if (button == INPUT_OK) read_text(stdinput, INPUT_TEXT, text) ;
  else                    text[0] = 0 ;
}
Exemple #15
0
int
main(void)
{
  int      x,y,w,h;
	
  int      vid;

  int      work_in[] = {1,7,1,1,1,1,1,1,1,1,2};
  int      work_out[57];
  OBJECT * dial;
	
  appl_init();

  vid = graf_handle(&vid,&vid,&vid,&vid);

  v_opnvwk(work_in,&vid,work_out);
	
  if(rsrc_load("test2rsc.rsc"))
  {
    rsrc_gaddr(R_TREE,TESTDIAL,&dial);
    
    form_center(dial,&x,&y,&w,&h);
    form_dial(FMD_START,0,0,0,0,x,y,w,h);
    
    objc_draw(dial,0,9,x,y,w,h);
    
    own_form_do(dial,0);
    
    form_dial(FMD_FINISH,0,0,0,0,x,y,w,h);
    
    rsrc_free();
  }
  else
  {
    form_alert(1,"[1][Couldn't load resource file!][Bummer!]");
  }
	
  v_clsvwk(vid);
	
  appl_exit();

  return 0;
}
Exemple #16
0
void fg_init(WINDFORM *wind)
{
	form_center(wind->formtree,&wind->form.x,&wind->form.y,
		&wind->form.w,&wind->form.h);
	wind_calc(WC_BORDER,wind->windkind,wind->form.x,wind->form.y,
		wind->form.w,wind->form.h,&wind->wind.x,&wind->wind.y,
		&wind->wind.w,&wind->wind.h);
	wind->whandle=wind_create(wind->windkind,wind->wind.x,wind->wind.y,
		wind->wind.w,wind->wind.h);
	wind_set(wind->whandle,WF_NAME,wind->wind_title);

	if(wind == &windforms[WIND_CTRL])
		wind_set(wind->whandle,WF_BEVENT,1,0,0,0); /* untoppable */
	
	wind_calc(WC_WORK,wind->windkind,wind->wind.x,wind->wind.y,
		wind->wind.w,wind->wind.h,&wind->form.x,&wind->form.y,
		&wind->form.w,&wind->form.h);
	wind->formtree[wind->firstobj].ob_x=wind->form.x;
	wind->formtree[wind->firstobj].ob_y=wind->form.y;
	wind->formtree[wind->firstobj].ob_width=wind->form.w;
	wind->formtree[wind->firstobj].ob_height=wind->form.h;
}
Exemple #17
0
void init_exportwin(void)
{
  short dummy;
  
  rsrc_gaddr(R_TREE,EXPORT,&export_win.dialog);
  strncpy(export_win.w_name,alerts[WN_EXPORT],MAXWINSTRING);
  export_win.attr=NAME|MOVE|CLOSE;
  export_win.icondata=NULL;
  export_win.status=WINDOW_CLOSED;
  export_win.type=TYPE_DIALOG;
  form_center(export_win.dialog, &dummy, &dummy, &dummy, &dummy);

  button(&export_win,EXPORT_TYPE_0,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_1,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_2,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_3,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_4,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_5,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_6,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_7,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_8,CLEAR_STATE,SELECTED,FALSE);
  button(&export_win,EXPORT_TYPE_9,CLEAR_STATE,SELECTED,FALSE);
}
Exemple #18
0
/* -------------------------
	 | Dialog window handler |
	 ------------------------- */
int dialog_window(int wind_id, OBJECT *dialog, int action, int ext)
{
    int x, y, w, h, s;
    int w_x, w_y, w_w, w_h;
    int hndl, sel;

    switch(action)
    {
    case CLS_DIA:
        wind_close(wind_id);
        wind_delete(wind_id);
        break;

    case OPN_DIA:
        form_center(dialog, &x, &y, &w, &h);
        wind_calc(WC_BORDER, MOVER|NAME, x, y, w, h, &w_x, &w_y, &w_w, &w_h);
        hndl = open_window(MOVER|NAME, w_x, w_y, w_w, w_h, "");
        return hndl;

    case RDW_DIA:
        s = first_rect(wind_id, 0);
        while(s)
        {
            objc_draw(dialog, ext, MAX_DEPTH, r_xy[0], r_xy[1], r_xy[2], r_xy[3]);
            s = next_rect(wind_id, 0);
        }
        break;

    case ACT_DIA:
        sel = win_formdo(dialog, ext, wind_id);
        if (dialog[sel].ob_flags & EXIT)
            dialog[sel].ob_state &= ~SELECTED;

        return sel;
    }
    return 0;
}
Exemple #19
0
/* ----------------- */
show_font()
{
int off, key, w, h, ww, wh, dummy;
register int i, hg, eo;
OBJECT *show_form;
int sx, sy, sw, sh, c_xy[4], eff = NORMAL, f_sld;
int sk = 0;

menu_bar(menu_adr, FALSE);
store_char();

inst_font(&show_head);
vsf_interior(vdi_handle, 0);

for (i = 0; i < 14 && show_head.skewmask != skew[i]; i++);
if (i < 14)
	sk = i;
else
	sk = 6;
	
rsrc_gaddr(ROOT, SHW_FLD, &show_form);

form_center(show_form, &sx, &sy, &sw, &sh);
strcpy(show_form[SHW_NAM].ob_spec, font_back[FONTNAME].ob_spec);
strcpy(show_form[SHW_DEF].ob_spec, font_back[CHAR_DEF].ob_spec);

show_form[BOLD].ob_state &= ~SELECTED;
show_form[ITALIC].ob_state &= ~SELECTED;
show_form[LIGHT].ob_state &= ~SELECTED;
show_form[OUTL].ob_state &= ~SELECTED;
show_form[UNDERL].ob_state &= ~SELECTED;

show_form[KR_UP].ob_state |= DISABLED;
show_form[KR_DWN].ob_state |= DISABLED;
show_form[UL_UP].ob_state |= DISABLED;
show_form[UL_DWN].ob_state |= DISABLED;

hg = show_head.top * 2;
make_rasc((long)hg, 100L, ((TEDINFO *)show_form[SHW_TG].ob_spec)->te_ptext);

off = akt_char;
set_aktshw(&f_sld, off, show_form);

make_rasc((long)show_head.formheight, 10L, show_form[SHW_HGHT].ob_spec);

objc_draw(show_form, ROOT, MAX_DEPTH, sx, sy, sw, sh);

objc_offset(show_form, SHW_WIND, &c_xy[0], &c_xy[1]);
c_xy[2] = c_xy[0] + show_form[SHW_WIND].ob_width - 1;
c_xy[3] = c_xy[1] + show_form[SHW_WIND].ob_height - 1;

do
	{
	make_fontscreen(off, hg, c_xy, eff);

	eo = form_do(show_form, 0) & 0x7FFF;

	if (!(show_form[eo].ob_state & DISABLED))
		switch(eo)
			{
			case BOLD:
				if (show_form[BOLD].ob_state & SELECTED)
					eff |= 1;
				else
					eff &= ~1;
				break;
	
			case LIGHT:
				if (show_form[LIGHT].ob_state & SELECTED)
					eff |= 2;
				else
					eff &= ~2;
				break;
	
			case ITALIC:
				if (show_form[ITALIC].ob_state & SELECTED)
					{
					eff |= 4;
					show_form[KR_UP].ob_state &= ~DISABLED;
					show_form[KR_DWN].ob_state &= ~DISABLED;
					}
				else
					{
					eff &= ~4;
					show_form[KR_UP].ob_state |= DISABLED;
					show_form[KR_DWN].ob_state |= DISABLED;
					}
				objc_draw(show_form, SHW_PARA, MAX_DEPTH, sx, sy, sw, sh);
				break;
	
			case UNDERL:
				if (show_form[UNDERL].ob_state & SELECTED)
					{
					eff |= 8;
					show_form[UL_UP].ob_state &= ~DISABLED;
					show_form[UL_DWN].ob_state &= ~DISABLED;
					}
				else
					{
					eff &= ~8;
					show_form[UL_UP].ob_state |= DISABLED;
					show_form[UL_DWN].ob_state |= DISABLED;
					}
				objc_draw(show_form, SHW_PARA, MAX_DEPTH, sx, sy, sw, sh);
				break;
	
			case OUTL:
				if (show_form[OUTL].ob_state & SELECTED)
					eff |= 16;
				else
					eff &= ~16;
				break;
	
			case TG_UP:
				if (hg < show_head.top * 2)
					do
						{
						hg++;
						}while(hg == show_head.top);
				make_rasc((long)hg, 100L, ((TEDINFO *)show_form[SHW_TG].ob_spec)->te_ptext);
				objc_draw(show_form, SHW_TG, MAX_DEPTH, sx, sy, sw, sh);
				break;
	
			case TG_DWN:
				if (hg > 3)
					do
						{
						hg--;
						}while(hg == show_head.top);
				make_rasc((long)hg, 100L, ((TEDINFO *)show_form[SHW_TG].ob_spec)->te_ptext);
				objc_draw(show_form, SHW_TG, MAX_DEPTH, sx, sy, sw, sh);
				break;
	
			case UL_DWN:
				if (show_head.underlinemask < 10)
					show_head.underlinemask++;
				break;
				
			case UL_UP:
				if (show_head.underlinemask > 0)
					show_head.underlinemask--;
				break;
	
			case KR_DWN:
				if (sk < 13)
					show_head.skewmask = skew[++sk];
				break;
				
			case KR_UP:
				if (sk > 0)
					show_head.skewmask = skew[--sk];
				break;
	
			case SHW_UP:
				if (off > 0)
					off--;
				set_aktshw(&f_sld, off, show_form);
				objc_draw(show_form, SHW_CBKG, MAX_DEPTH, sx, sy, sw, sh);
				objc_draw(show_form, SHW_INFO, MAX_DEPTH, sx, sy, sw, sh);
				break;
	
			case SHW_DWN:
				if (off < 255)
					off++;
				set_aktshw(&f_sld, off, show_form);
				objc_draw(show_form, SHW_CBKG, MAX_DEPTH, sx, sy, sw, sh);
				objc_draw(show_form, SHW_INFO, MAX_DEPTH, sx, sy, sw, sh);
				break;
				
			default:
				show_form[eo].ob_state &= ~SELECTED;
			}
				
	}while(eo != SHW_END);

deinst_font();

menu_bar(menu_adr, TRUE);
objc_change(font_back, MARKER, 0, fx, fy, fw, fh, NORMAL, TRUE);
form_dial(FMD_FINISH, 0, 0, 0, 0, sx, sy, sw, sh);

show_character();
show_ccharacter();
draw_edit();
objc_change(font_back, MARKER, 0, fx, fy, fw, fh, SELECTED, TRUE);
}
Exemple #20
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() */
Exemple #21
0
/* show configuration dial, return 1 to cancel installation */
int
configure( void )
{
    OBJECT *tree = rs_object;
    int quit = 0;
    int x, y, w, h, ox, oy;
    MRETS mk;
    int savelinear, saveudset, savetime, saveptime;

    if( ma_info == &start ) /* ma_info points at our start */
	ObString(OK) = (char *)(rs_frstr[INSTRING]);

/* set accel buttons */
    savelinear = ma_info->linear;
    set_accelbox( savelinear );
/* set screensave buttons */
    saveudset = ma_info->udset;
    set_screenbox( saveudset );
    savetime = (ma_info->timeout)/3600;
    sl_x( SAVEBOX, savetime, SAVE_MIN, SAVE_MAX );
    /* set modem switch */
    if( ma_info->watch ) {
	Select(MODEM);
    } else {
	Deselect(MODEM);
    }
/* set stacy options box */
    if( ma_info->stacy ) {
	ObFlags( SWITCH ) = ObFlags( LITE ) = TOUCHEXIT;
    	if( ma_info->stacmask & SH_SCREEN ) Select( SWITCH );
    	if( ma_info->stacmask & SH_LIGHT ) Select( LITE );
    } else {
	ObFlags(SWITCH) = ObFlags(LITE) = NONE;
	ObState(SWITCH) = ObState(LITE) = DISABLED; /* deselects */
    }

/* set up park box */
    Supexec((long(*)())get_parktime);
    if( parktime >= 0 ) parktime = ma_info->savepark;
    saveptime = parktime;
    if( saveptime == 0 ) saveptime = 1;
    set_parkbox();
    if( parktime >= 0 )
    	sl_x( PARKBOX, parktime, PARK_MIN, PARK_MAX );
    	

/* set appropriate icons */
    graf_handle( &x, &y, &w, &h );
    if( y < 16 ) {
    /* if char cell is < 16 pixels high, use 8 pixel icons */
	ObSpec(IACCOFF).bitblk = (BITBLK *)(rs_frimg[ACCOFF8]);
	ObSpec(IACCSLOW).bitblk = (BITBLK *)(rs_frimg[ACCSLOW8]);
	ObSpec(IACCFAST).bitblk = (BITBLK *)(rs_frimg[ACCFAST8]);
	ObSpec(ISCREEN).bitblk = (BITBLK *)(rs_frimg[SCREEN8]);
	ObSpec(SAVEUP).bitblk = (BITBLK *)(rs_frimg[TIMEHI8]);
	ObSpec(SAVEDOWN).bitblk = (BITBLK *)(rs_frimg[TIMELO8]);
	ObSpec(IMODEM).bitblk = (BITBLK *)(rs_frimg[MODEM8]);
	ObSpec(IPARK).bitblk = (BITBLK *)(rs_frimg[PARK8]);
	ObSpec(PARKUP).bitblk = (BITBLK *)(rs_frimg[TIMEHI8]);
	ObSpec(PARKDOWN).bitblk = (BITBLK *)(rs_frimg[TIMELO8]);
	ObSpec(ILITE).bitblk = (BITBLK *)(rs_frimg[LITE8]);
	ObSpec(ISWITCH).bitblk = (BITBLK *)(rs_frimg[SCREEN8]);
    }

    form_center( rs_object, &x, &y, &w, &h );
    form_dial( FMD_START, 0, 0, 0, 0, x, y, w, h );
    form_dial( FMD_GROW, 0, 0, 0, 0, x, y, w, h );
    objc_draw( tree, 0, MAX_DEPTH, x, y, w, h );
    graf_mouse( ARROW, 0L );
    do {
	switch( form_do( rs_object, 0 ) & 0x7fff ) {
	case LITE:
	    if( IsSelected(LITE) ) { /* deselecting */
	    /* don't allow user to select screensave without litesave */
	    	Deselect(SWITCH);
	    	Deselect(LITE);
	    } else {
	    	Select(LITE);
	    }
	    Objc_draw( tree, STACOPTS, MAX_DEPTH, NULL );
	    break;
	case SWITCH:
	    if( IsSelected(SWITCH) ) { /* deselecting */
	    	Deselect(SWITCH);
	    } else {
	    /* don't allow user to select screensave without litesave */
		Select(LITE);
		Select(SWITCH);
	    }
	    Objc_draw( tree, STACOPTS, MAX_DEPTH, NULL );
	    break;
	case SCREEN:
	/* floggle the bit */
	    ma_info->udset ^= 1;
	    ma_info->updown = ma_info->udset;
	    set_screenbox( ma_info->udset );
	    Objc_draw( tree, SCRNSECT, MAX_DEPTH, NULL);
	    break;
	case ACCOFF:
	    ma_info->linear = -1;
	    break;
	case ACCSLOW:
	    ma_info->linear = 1;
	    break;
	case ACCFAST:
	    ma_info->linear = 0;
	    break;
	case SAVEUP:
	    sl_arrow( SAVEBOX, SAVEUP, 1, SAVE_MIN, SAVE_MAX, &savetime );
	    break;
	case SAVEDOWN:
	    sl_arrow( SAVEBOX, SAVEDOWN, -1, SAVE_MIN, SAVE_MAX, &savetime );
	    break;
	case SAVESLID:
	    sl_drag( SAVEBOX, SAVE_MIN, SAVE_MAX, &savetime );
	    break;
	case SAVEBOX:
    	    Graf_mkstate( &mk );
    	    objc_offset( tree, SAVESLID, &ox, &oy );
    	    if( mk.x < ox )
    	    	oy = -SAVE_PAGE;
    	    else
    	        oy = SAVE_PAGE;
	    sl_arrow( SAVEBOX, -1, oy, SAVE_MIN, SAVE_MAX, &savetime );
	    break;
	case PARK:
	    if( IsSelected( PARK ) ) { /* deselecting */
		saveptime = parktime;
	    	parktime = 0;
	    } else {
	    	parktime = saveptime;
		sl_x( PARKBOX, parktime, PARK_MIN, PARK_MAX );
	    }
	    set_parkbox();
	    Objc_draw( tree, PARKSECT, MAX_DEPTH, NULL );
	    break;
	case PARKUP:
	    sl_arrow( PARKBOX, PARKUP, 1, PARK_MIN, PARK_MAX, &parktime );
	    break;
	case PARKDOWN:
	    sl_arrow( PARKBOX, PARKDOWN, -1, PARK_MIN, PARK_MAX, &parktime );
	    break;
	case PARKSLID:
	    sl_drag( PARKBOX, PARK_MIN, PARK_MAX, &parktime );
	    break;
	case PARKBOX:
    	    Graf_mkstate( &mk );
    	    objc_offset( tree, PARKSLID, &ox, &oy );
    	    if( mk.x < ox )
    	    	oy = -PARK_PAGE;
    	    else
    	        oy = PARK_PAGE;
	    sl_arrow( PARKBOX, -1, oy, PARK_MIN, PARK_MAX, &parktime );
	    break;
	case SAVE:
	    save_conf( savetime );
	    rs_object[SAVE].ob_state = NORMAL;
	    Objc_draw( tree, ROOT, MAX_DEPTH, NULL );
	    break;
	case OK:
	    quit = OK;
	    break;
	case CANCEL:
	    quit = CANCEL;
	    break;
	}
	/* delay after touchexit objects */
	wait_bup();
    } while (!quit);


    form_dial( FMD_SHRINK, 0, 0, 0, 0, x, y, w, h );
    form_dial( FMD_FINISH, 0, 0, 0, 0, x, y, w, h );

    if( quit == CANCEL ) {
	ma_info->updown = ma_info->udset = saveudset;
	ma_info->linear = savelinear;
    } else {
    	if( IsSelected(MODEM) ) ma_info->watch = 1;
    	else ma_info->watch = 0;
	if( ma_info->stacy ) {
	    if( IsSelected(SWITCH) ) {
		ma_info->stacmask |= SH_SCREEN;
	    } else {
		ma_info->stacmask &= ~SH_SCREEN;
	    }
	    if( IsSelected(LITE) ) {
		ma_info->stacmask |= SH_LIGHT;
	    } else {
		ma_info->stacmask &= ~SH_LIGHT;
	    }
	}
 
	ma_info->timeout = savetime * 3600;
	ma_info->savepark = parktime;
	Supexec((long(*)())set_ptime);
    }
    return (quit == CANCEL);
}
Exemple #22
0
void	main(void) {
	WORD	x,y,w,h;
	
	WORD	mx,my,button,kstate,clicks;
	
	MFDB	mfdbs,mfdbd;
	
	WORD	xyarray[8],vid;

	WORD	work_in[] = {1,7,1,1,1,1,1,1,1,1,2};
	WORD	work_out[57];
	OBJECT	*dial;
	
	char	path[200],file[30];
	
	appl_init();

	strcpy(path,"C:\\*");
	strcpy(file,"noname.inf");

	vid = graf_handle(&vid,&vid,&vid,&vid);

	v_opnvwk(work_in,&vid,work_out);


/*	for(x = 0; x < 25; x++)
		form_error(x);
*/
/*	fsel_input(path,file,&button);
*/
	form_alert(3,"[2][Test av|form_alert.|Windoze rulez...|...___NOOOT!___][Ja|Kanske|Nej]");
	
	if(rsrc_load("test2rsc.rsc")) {
		int co;
		int i;
		
		rsrc_gaddr(R_TREE,TESTDIAL,&dial);

		form_center(dial,&x,&y,&w,&h);
		form_dial(FMD_START,0,0,0,0,x,y,w,h);

		objc_draw(dial,0,9,x,y,w,h);

		form_do(dial,0);

		form_dial(FMD_FINISH,0,0,0,0,x,y,w,h);

		i = 0;
		
		objc_delete(dial,11);
		
		while(1) {
			fprintf(stderr,"%3d next=%3d head=%3d tail=%3d\r\n",
				i,dial[i].ob_next,dial[i].ob_head,dial[i].ob_tail);
			
			if(dial[i].ob_flags & LASTOB) {
				break;
			};
			
			i++;
		};
		
		getchar();

		rsrc_free();
	}
	else {
		form_alert(1,"[1][Couldn't load resource file!][Bummer!]");
	};
	
	v_clsvwk(vid);

	fprintf(stderr,"environ size=%d",shel_write(SWM_ENVIRON,ENVIRON_SIZE,0,NULL,NULL));
	
	appl_exit();
}
Exemple #23
0
static void dump_font()
{
const tGemFont *const pgf = name_table[iSelected].pFont;
const uint16 nr_entries = pgf->last_ade - pgf->first_ade + 1;
const uint32 size_wid = (nr_entries+1) * sizeof(uint16);
uint32 size_hor;
register tGemFont *phdr;
FILE *fp;
int16 dummy;
int16 clip_array[4] = { 0, 0, 100, 100 };
OBJECT *generating;
int cx, cy, cw, ch;
char *err_str;

   dprintf(( "\033Hgenerating fonts ... " )); dgetchar();
   rsrc_gaddr( R_TREE, GENFONTS, &generating );
   form_center( generating, &cx, &cy, &cw, &ch);
   form_dial(FMD_START, 0, 0, 0, 0, cx, cy, cw, ch);
   objc_draw( generating, ROOT, MAX_DEPTH, cx, cy, cw, ch);
   vst_font( handle, pgf->font_id );
   vst_point( handle, pgf->size, &dummy, &dummy, &dummy, &dummy );

   assert( (pgf->flags&MOT_FLAG) != 0 );
   size_hor = pgf->flags&HOR_FLAG ? nr_entries : 0;

   phdr = (tGemFont*)malloc( sizeof(tGemFont) + size_wid );
   if( phdr == NULL ) {
      err_str = "[3][Not enough memory|to convert font][OK]";
      goto error0;
   } /* if */
   
   *phdr = *pgf;        /* copy header data */
   phdr->h_table = (int8*)sizeof(tGemFont);
   phdr->off_table = (int16*)((uint32)phdr->h_table + size_hor);
   phdr->dat_table = (int8*)((uint32)phdr->off_table + size_wid);
   memcpy( phdr+1, pgf->off_table, size_wid );
   
   if( !fMot ) {
   register int16 *char_tbl = (int16*)(phdr+1);
   register uint16 i;
      for (i = nr_entries+1; i > 0; i--) {
	   Swapw(*char_tbl);
	   char_tbl++;
      } /* for */

      /* swap header words and longs */
      phdr->flags &= ~MOT_FLAG;
      Swapw(phdr->font_id);             Swapw(phdr->size);
      Swapw(phdr->first_ade);           Swapw(phdr->last_ade);
      Swapw(phdr->top);                 Swapw(phdr->ascent);
      Swapw(phdr->half);                Swapw(phdr->descent);
      Swapw(phdr->bottom);
      Swapw(phdr->max_char_width);      Swapw(phdr->max_cell_width);
      Swapw(phdr->left_offset);         Swapw(phdr->right_offset);
      Swapw(phdr->thicken);             Swapw(phdr->ul_size);
      Swapw(phdr->lighten);             Swapw(phdr->skew);
      Swapw(phdr->flags);               Swapl(phdr->h_table);
      Swapl(phdr->off_table);           Swapl(phdr->dat_table); 
      Swapw(phdr->form_width);          Swapw(phdr->form_height);
   } /* if */

   fp = fopen( gem_file_name, "wb" );
   if( fp == NULL ) {
      err_str = "[3][can't open gem font file][OK]";
      goto error1;
   } /* if */

   /** write the font header **/
   assert( phdr != NULL );   
   if( fwrite( phdr, sizeof( *phdr), 1, fp ) != 1 ) {
      goto error2;
   } /* if */
   
   if( size_hor != 0 ) {
      /** write horizontal offset table **/
      assert( pgf->h_table != NULL );   
      if( fwrite( pgf->h_table, nr_entries, 1, fp ) != 1 ) {
	 goto error2;
      } /* if */
   } /* if */

   /** write the character offset table **/
   if( fwrite( phdr+1, size_wid, 1, fp ) != 1 ) {
      goto error2;
   } /* if */

   if( !fWidOnly ) {
      /** write the character data table **/
      int q;
      unsigned char char_array[2] = { '\0', '\0' };
      dprintf(( "\033Hgenerating character data\n" )); dgetchar();
      vs_clip( handle, 1, clip_array );
      for( q=nr_entries, *char_array=pgf->first_ade; q>0; q--, (*char_array)++ ) {
         v_gtext( handle, 200, 200, char_array );
      } /* for */
      vs_clip( handle, 0, clip_array );
      assert( pgf->dat_table != NULL );   
      if( fwrite( pgf->dat_table, pgf->form_width, pgf->form_height, fp )
						      != pgf->form_height ) {
	 goto error2;
      } /* if */
   } /* if */
   fclose( fp );
   free( phdr );
   form_dial( FMD_FINISH, 0, 0, 0, 0, cx, cy, cw, ch );
   return;
   
error2:
   fclose( fp );
   err_str = "[3][can't write to|gem font file][OK]";
error1:
   free( phdr );
error0:
   form_dial( FMD_FINISH, 0, 0, 0, 0, cx, cy, cw, ch );
   form_alert(1, err_str );
} /* dump_font() */
Exemple #24
0
/*******************************************************
* load fonts for device
* get font chain and dump fonts (width table only) in current directory
*/
static void dump_gem_fonts( int16 dev_nr )
{
const tGemFont *pgf;	/* pointer to the font chain */
int16 handle;
char *err_msg;
register tGemFont *phdr;	/* pointer to font we are making */
char *const gempath = ((void**)pInfo)[-1];
FILE *fp;
int xdial,ydial,wdial,hdial;         /* co-ords for dialog box */
int  x,y,w,h;

   handle = init_wkstn( dev_nr );	/* open the workstation */
   if( handle == 0 ) {
      sprintf( err_string, "[3][can't connect to %s][skip]", dev_nr>10? "printer": "screen" );
      form_alert(1, err_string );
      return;
   } /* if */
   if( vst_load_fonts( handle, 0 ) == 0 ) {
      sprintf( err_string, "[3][can't find fonts for %s][skip]", dev_nr>10? "printer": "screen" );
      goto error0;
   } /* if */
   pgf = *(tGemFont **)(&_contrl[10]);	/* get pointer to font chain */
   save[dev_nr].pw->first_font = gem_font_count;

   /******************
   * loop thru font chain, 
   * writing a new font file for each font found in the chain
   * count the fonts so we can assign them to the workstations
   * this can take quite a while, so report progress as we go
   */

   form_center (&rs_object,&xdial,&ydial,&wdial,&hdial);
   x=y=w=h=0;
   form_dial (FMD_START,x,y,w,h,xdial,ydial,wdial,hdial);      /* reserve room */

   for( ; pgf!=NULL; pgf=pgf->next_font ) {
   const uint16 nr_entries = pgf->last_ade - pgf->first_ade + 1;
   const uint32 size_wid = (nr_entries+1) * sizeof(int16);	/* sizeof(*(tGemFont*)->off_table) */
   register int16 *char_tbl;
   register uint16 i;
      
      /* printf( "line %d, %.32s, %d points\n", (int)__LINE__, pgf->name, pgf->size ); */
      sprintf( usr_msg, "storing gem fonts: %d", gem_font_count );
      objc_draw( &rs_object, 0, 2, xdial, ydial, wdial, hdial ); /* draw the dialog box */
      phdr = (tGemFont*)malloc( sizeof(tGemFont) + size_wid );
      if( phdr == NULL ) {
	 err_msg = "[3][Not enough memory|to dump font][OK]";
	 goto error1;
      } /* if */
      
      *phdr = *pgf;	   /* copy header data */
      phdr->off_table = (int16*)sizeof(tGemFont);
      memcpy( phdr+1, pgf->off_table, size_wid );
      phdr->dat_table = 0L;
      
      /** convert font to intel format before dumping **/
      for( i = nr_entries+1, char_tbl = (int16*)(phdr+1); i > 0; i--, char_tbl++ ) {
	   Swapw(*char_tbl);
      } /* for */

      /* swap header words and longs */
      phdr->flags &= ~MOT_FLAG;
      Swapw(phdr->font_id);		Swapw(phdr->size);
      Swapw(phdr->first_ade);		Swapw(phdr->last_ade);
      Swapw(phdr->top); 		Swapw(phdr->ascent);
      Swapw(phdr->half);		Swapw(phdr->descent);
      Swapw(phdr->bottom);
      Swapw(phdr->max_char_width);	Swapw(phdr->max_cell_width);
      Swapw(phdr->left_offset); 	Swapw(phdr->right_offset);
      Swapw(phdr->thicken);		Swapw(phdr->ul_size);
      Swapw(phdr->lighten);		Swapw(phdr->skew);
      Swapw(phdr->flags);		Swapl(phdr->h_table);
      Swapl(phdr->off_table);		Swapl(phdr->dat_table); 
      Swapw(phdr->form_width);		Swapw(phdr->form_height);

      /* printf( "line %dn", (int)__LINE__); getchar(); */
      FONT_FILE_NAME( gempath+pInfo->len_gem_path, gem_font_count );
      fp = fopen( gempath, "wb" );
      if( fp == NULL ) {
	 err_msg = "[3][can't open gem font file|%s][OK]";
	 goto error2;
      } /* if */

      /** write the font header **/
      if( fwrite( phdr, sizeof( *phdr), 1, fp ) != 1 ) {
	 goto error3;
      } /* if */
      
      /** write the character offset table **/
      if( fwrite( phdr+1, size_wid, 1, fp ) != 1 ) {
	 goto error3;
      } /* if */
   
      fclose( fp );
      free( phdr );
      gem_font_count++;
   } /* for */
   save[dev_nr].pw->nr_gemfonts = gem_font_count - save[dev_nr].pw->first_font;
   (void)vst_unload_fonts( handle, 0 );
   if( dev_nr>10 ) v_clswk(handle);
   else v_clsvwk(handle);

   form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial );  /* release its room */
   return;

error3:
   fclose(fp);
   err_msg = "[3][can't write to gem font file|%s][OK]";
error2:
   sprintf( err_string, err_msg, strerror(errno) );
   free( phdr );
error1:
   form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial );  /* release its room */
error0:
   (void)vst_unload_fonts( handle, 0 );
   if( dev_nr>10 ) v_clswk(handle);
   else v_clsvwk(handle);
   form_alert(1, err_string );
} /* dump_gem_fonts() */
Exemple #25
0
void autre_type(WINDFORM_VAR wind,int pop)
{
int x,y,w,h;
int retour,a,n;
int n_case,pos=0,select=-1;
int k,ys,ys1,pos1=0,yob,dummy;
char s[10];
C_OBJ **liste=NULL,*sel=NULL;
	
	n_case=AUT_END-AUT_START;
	n=liste_type(&liste);

	if(n>0)
	{
		for(a=0;	a<n;	a++)
			adr_autre_type[AUT_START+a].ob_state &=~SELECTED;	/*	d‚selectionne tous les items	*/
		strcpy(((TEDINFO *)((adr_autre_type[AUT_NOM]).ob_spec))->te_ptext,"");	/* efface le nom de l'object selectionn‚e	*/

		if(n<n_case)		/*	Remplit les lignes	*/
		{
			for(a=0;	a<n;	a++)
				strcpy(((TEDINFO *)((adr_autre_type[AUT_START+a]).ob_spec))->te_ptext,(*(liste+a))->spec.type.tt_nom);
			adr_autre_type[AUT_SLID].ob_height=adr_autre_type[AUT_LIFT].ob_height;
		}
		else
		{
			for(a=0;	a<=n_case;	a++)
				strcpy(((TEDINFO *)((adr_autre_type[AUT_START+a]).ob_spec))->te_ptext,(*(liste+a))->spec.type.tt_nom);
			adr_autre_type[AUT_SLID].ob_height=(int)((long)(n_case*adr_autre_type[AUT_LIFT].ob_height)/n);
		}
		adr_autre_type[AUT_SLID].ob_y=0;

		form_center (adr_autre_type, &x, &y, &w, &h);
		form_dial (FMD_START, 0, 0, 0, 0, x, y, w, h);
		objc_draw (adr_autre_type, 0, MAX_DEPTH, x, y, w, h);
		do {
			retour = form_do (adr_autre_type, 0);
			if (retour>=AUT_START && retour<=AUT_END)		/* si on a cliquer sur une ligne	*/
			{
				if(retour-AUT_START<n)
				{
					strcpy(((TEDINFO *)((adr_autre_type[AUT_NOM]).ob_spec))->te_ptext,	
								((TEDINFO *)((adr_autre_type[retour]).ob_spec))->te_ptext);
					sel=(*(liste+pos+(retour-AUT_START))); 				/*	Object selectionn‚e	*/
					objc_draw (adr_autre_type, AUT_NOM, 1, x, y, w, h);
					select=pos+retour-AUT_START;
				}
			}
			else if(retour==AUT_DOWN)		/*	Fleche ver le bas	*/
			{
				pos++;
				if(pos>=n-n_case)
					pos--;
				else
					autre_type_affiche(liste,n,n_case,pos,x,y,w,h,select);
			}
			else if(retour==AUT_UP)		/* FlŠche vers le haut	*/
			{
				pos--;
				if(pos<0)
					pos++;
				else
					autre_type_affiche(liste,n,n_case,pos,x,y,w,h,select);
			}
			else if (retour==AUT_SLID)		/* Sliders	*/
			{
				graf_mkstate ( &dummy, &ys1,&k,&dummy );
				yob=adr_autre_type[AUT_SLID].ob_y;
				do
				{
					graf_mkstate ( &dummy, &ys,&k,&dummy );		/* coord de la souris	*/
					adr_autre_type[AUT_SLID].ob_y =yob+(ys-ys1);	
					pos=adr_autre_type[AUT_SLID].ob_y*(n-n_case)/(adr_autre_type[AUT_LIFT].ob_height-adr_autre_type[AUT_SLID].ob_height);

					if (pos>=n-n_case)
						pos=n-n_case-1;
					if (pos<0)
						pos=0;

					if(pos!=pos1)
					{
						autre_type_affiche(liste,n,n_case,pos,x,y,w,h,select);
						pos1=pos;
					}
				}while(k==1);
			}
			else if (retour==AUT_LIFT)		/* Ascenseur	*/
			{
				objc_offset(adr_autre_type,AUT_LIFT,&dummy,&ys);
				graf_mkstate ( &dummy, &ys1,&dummy,&dummy );
				if (ys1-ys>adr_autre_type[AUT_SLID].ob_y)
				{
					pos+=n_case;
					if(pos>=n-n_case)
						pos=n-n_case-1;
					autre_type_affiche(liste,n,n_case,pos,x,y,w,h,select);
				}
				else
				{
					pos-=n_case;
					if(pos<0)
						pos=0;
					autre_type_affiche(liste,n,n_case,pos,x,y,w,h,select);
				}
			}
			else if (retour & 0x8000)
			{
				retour &= ~0x8000;
				if (retour>=AUT_START && retour<=AUT_END)		/* si on a cliquer sur une ligne	*/
				{
					if(retour-AUT_START<n)
					{
						strcpy(((TEDINFO *)((adr_autre_type[AUT_NOM]).ob_spec))->te_ptext,	
									((TEDINFO *)((adr_autre_type[retour]).ob_spec))->te_ptext);
						sel=(*(liste+pos+(retour-AUT_START))); 				/*	Object selectionn‚e	*/
						objc_draw (adr_autre_type, AUT_NOM, 1, x, y, w, h);
						retour=-1;
					}
				}
			}

		}while (retour!=AUT_CON && retour!=-1);
		form_dial (FMD_FINISH, 0, 0, 0, 0, x, y, w, h);
		objc_change (adr_autre_type, retour, 0, x, y, w, h, 0, 0);
	
		FREE(liste);
	}

	strcpy(s,"  ");	
	strncat(s,((TEDINFO *)((adr_autre_type[AUT_NOM]).ob_spec))->te_ptext,6);
	strcpy(((TEDINFO *)((wind.adr_form[pop]).ob_spec))->te_ptext	,s);

	((TEDINFO *)((wind.adr_form[pop]).ob_spec))->te_ptmplt=sel;		/*	Sauve l'objet s‚lectionne directement dans la ressource ==> laisser au moins 4 caractŠres dans le masque du pop up	*/
/*	printf(">>%s\n",((C_OBJ*)(((TEDINFO *)((wind.adr_form[pop]).ob_spec))->te_ptmplt))->spec.type.tt_nom );*/
}
Exemple #26
0
/* MAIN()
 * ================================================================
 */
VOID
main( VOID )
{
	OBJECT  *tree;
	WORD    i;
	WORD    button;
	GRECT   box;
	GRECT   xrect;
        WORD    tempx;

        GRECT   rect;
        MRETS   mk;
	
        WORD    ptitle, pitem, pmenu;
	OBJECT  *ptree;
        BOOLEAN flag;
	BOOLEAN done;
	WORD    dummy;

        WORD	xvalue;

        
	appl_init();

	phys_handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox );

        graf_mouse( ARROW, 0L );
        
        rsrc_load( "TEST.RSC" );

        rsrc_gaddr( 0, MENU1, &ad_tree );
	rsrc_gaddr( 0, BIGBOX, &ad_box );
        rsrc_gaddr( 0, COUNTRY, &ad_country );
	rsrc_gaddr( 0, OTHER, &ad_other );
        rsrc_gaddr( 0, MENUBAR, &ad_menubar );
	rsrc_gaddr( 0, TREE6, &ad_extra );

	ad_other[ ROOT ].ob_x = ad_other[ ROOT ].ob_y = 0;
#if 0
	/* test setting delay and height variables */
	TData.Delay  = 100L;
	TData.Drag   = 10000L;
	TData.Delay  = 250L;
	TData.Speed  = 0L;
	TData.Height = 16;
	menu_settings( 1, &TData );
#endif

	/* test attaching submenus */
	Menu.mn_tree   = ad_country;
	Menu.mn_menu   = ROOT;
        Menu.mn_item   = Cur2;
	Menu.mn_scroll = TRUE;
	menu_attach( 1, ad_tree, DELETE, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = DISNEY;
        Menu.mn_item   = MICKEY;
	Menu.mn_scroll = FALSE;
	menu_attach( 1, ad_tree, FLOPPY, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = MODEM;
        Menu.mn_item   = Cur3;
	Menu.mn_scroll = FALSE;
        menu_attach( 1, ad_country, 5, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = DISNEY;
        Menu.mn_item   = MICKEY;
	Menu.mn_scroll = FALSE;
        menu_attach( 1, ad_country, 1, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = DISNEY;
        Menu.mn_item   = MICKEY;
	Menu.mn_scroll = FALSE;
	menu_attach( 1, ad_country, ARKANSAS, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = QUOTES;
        Menu.mn_item   = Cur4;
	Menu.mn_scroll = FALSE;
	menu_attach( 1, ad_other, 5, &Menu );

	Menu.mn_tree   = ad_country;
	Menu.mn_menu   = ROOT;
        Menu.mn_item   = Cur2;
	Menu.mn_scroll = TRUE;
	menu_attach( 1, ad_menubar, PASTE, &Menu );

	Menu.mn_tree   = ad_country;
	Menu.mn_menu   = ROOT;
        Menu.mn_item   = Cur2;
	Menu.mn_scroll = TRUE;
	menu_attach( 1, ad_menubar, FNEW, &Menu );

        menu_icheck( ad_tree, Cur1, 1 );
	menu_icheck( ad_country, Cur2, 1 );
	menu_icheck( ad_other, Cur3, 1 );
	menu_icheck( ad_other, Cur4, 1 );
	menu_icheck( ad_other, Cur5, 1 );

	ActiveTree( ad_box );

        form_center( ad_box, &rect.g_x, &rect.g_y, &rect.g_w, &rect.g_h );

	ObX( ROOT ) = rect.g_x;
        xrect = ObRect( TITLE1 );
        objc_offset( ad_box, TITLE1, &xrect.g_x, &xrect.g_y );
	tempx = xrect.g_x;
        xrect.g_x = (( xrect.g_x + 7 )/8 ) * 8;
	rect.g_x = rect.g_x + ( xrect.g_x - tempx );
	ObX( ROOT ) = rect.g_x;
	rect.g_x -= 3;

	form_dial( FMD_START, rect.g_x, rect.g_y, rect.g_w, rect.g_h,
			      rect.g_x, rect.g_y, rect.g_w, rect.g_h );
	objc_draw( ad_box, ROOT, MAX_DEPTH, rect.g_x, rect.g_y,
					    rect.g_w, rect.g_h );

        do
        {
	  ActiveTree( ad_box );
          button = form_do( ad_box, 0L );

	  switch( button )
	  {
	    case TITLE1:
			 box = ObRect( TITLE1 );
			 objc_offset( ad_box, TITLE1, &box.g_x, &box.g_y );
			 
			 Menu.mn_tree   = ad_tree;
			 Menu.mn_menu   = ROOT;
			 Menu.mn_item   = Cur1;
			 Menu.mn_scroll = FALSE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu, 
				      MData.mn_item );
			 break;

            case TITLE2:
			 box = ObRect( TITLE2 );
			 objc_offset( ad_box, TITLE2, &box.g_x, &box.g_y );

			 Menu.mn_tree   = ad_country;
			 Menu.mn_menu   = ROOT;
			 Menu.mn_item   = Cur2;
			 Menu.mn_scroll = TRUE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu,
				      MData.mn_item );
			 break;

            case TITLE3:
			 box = ObRect( TITLE3 );
			 objc_offset( ad_box, TITLE3, &box.g_x, &box.g_y );

			 Menu.mn_tree   = ad_other;
			 Menu.mn_menu   = MODEM;
			 Menu.mn_item   = Cur3;
			 Menu.mn_scroll = FALSE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu,
				      MData.mn_item );
			 break;

            case TITLE4:
			 box = ObRect( TITLE4 );
			 objc_offset( ad_box, TITLE4, &box.g_x, &box.g_y );

			 Menu.mn_tree   = ad_other;
			 Menu.mn_menu   = QUOTES;
			 Menu.mn_item   = Cur4;
			 Menu.mn_scroll = FALSE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu,
				      MData.mn_item );
			 break;

            default:
			break;
          }

        }while( button != XEXIT );

	form_dial( FMD_FINISH, rect.g_x, rect.g_y, rect.g_w, rect.g_h,
			       rect.g_x, rect.g_y, rect.g_w, rect.g_h );

        evnt_button( 1, 1, 0, &dummy, &dummy, &dummy, &dummy );



       /* display menubar stuff here */
        ActiveTree( ad_menubar );
        menu_bar( ad_menubar, TRUE );

        
	do
	{
	    evnt_mesag( msg );
	    if( msg[0] == MN_SELECTED )
	    {
		/* msg[7] is the parent of FQUIT - which the user can't know */
		ptr = &msg[5];
		if( ( *ptr == ad_menubar ) &&
                    ( msg[4] == FQUIT )
		  )
                {
		  button = form_alert( 1, "[1][ |  EXIT PROGRAM? ][OK|Cancel]");
		  if( button == 1 )
		    done = TRUE;
                }  
		else
		    MenuCheck( *ptr, msg[7], msg[4] );
		menu_tnormal( ad_menubar, msg[3], TRUE );
            }	
	}while( !done );
        menu_bar( ad_menubar, FALSE );

        rsrc_free();
	graf_mouse( ARROW, 0L );
	appl_exit();
}