Files correlati : bagn001a.msk Ricompilazione Demo : [ ] Commento : 0001607: 002422 - stampa schede Descrizione il bottone di esportazione excell non produce risultati; da impostazione stampante, scelgo di stampare su file, chiede il nome del file (che è già impostato) git-svn-id: svn://10.65.10.50/trunk@20431 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			220 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <xvt.h>
 | 
						|
 | 
						|
#include <checks.h>
 | 
						|
#include <diction.h>
 | 
						|
#include <keys.h>
 | 
						|
 | 
						|
#ifdef WIN32
 | 
						|
#define buildmsg() char msg[256];va_list argptr;va_start(argptr,fmt);_vsnprintf(msg,sizeof(msg),fmt,argptr);va_end(argptr);msg[255] = '\0';
 | 
						|
#else
 | 
						|
#define buildmsg() char msg[256];va_list argptr;va_start(argptr,fmt);vsprintf(msg,fmt,argptr);va_end(argptr)
 | 
						|
#endif
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
 | 
						|
// @msg fatal_box | Crea una finestra di ERRORE FATALE con il relativo messaggio
 | 
						|
bool fatal_box(
 | 
						|
  const char* fmt, ...)  // @parm Messaggio da stampare nella finestra
 | 
						|
  //       (il formato e' come nella printf del C)
 | 
						|
  // @comm Il programma viene interrotto al momento in cui si e' verificato l'errore.
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  xvt_dm_post_fatal_exit(msg);
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
 | 
						|
// @msg error_box | Crea una finestra di ERRORE con il relativo messaggio
 | 
						|
bool error_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
 | 
						|
  //       e l'icona punto esclamativo.
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  xvt_dm_post_error(msg);
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg warning_box | Crea una finestra di ATTENZIONE con il relativo messaggio
 | 
						|
bool warning_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
 | 
						|
  //       e l'icona punto di domanda.
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  xvt_dm_post_warning(msg);
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg message_box | Crea una finestra di INFORMAZIONE con relativo il messaggio
 | 
						|
bool message_box(
 | 
						|
  const char* fmt,  // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)              // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
 | 
						|
  //       e l'icona informazioni.
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  xvt_dm_post_message(msg);
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg sorry_box | Crea una finestra di SCUSE con il relativo messaggio
 | 
						|
bool sorry_box(
 | 
						|
  const char* fmt, // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)             // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con il bottone OK
 | 
						|
  //       e l'icona informazioni.
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  xvt_dm_post_note(msg);
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
// @msg yesno_box | Crea una finestra di RICHIESTA con il relativo messaggio
 | 
						|
bool noyes_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  ASK_RESPONSE r = xvt_dm_post_ask("No", "Si", NULL, msg);
 | 
						|
  return r == RESP_DEFAULT;
 | 
						|
}
 | 
						|
 | 
						|
// @msg noyesall_box | Crea una finestra di RICHIESTA con il relativo messaggio
 | 
						|
int noyesall_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  ASK_RESPONSE r = xvt_dm_post_ask("No", "Si", "Si Tutti", msg);
 | 
						|
  return r == RESP_DEFAULT ? K_NO : (r == RESP_2 ? K_YES : K_SPACE);
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg yesno_box | Crea una finestra di RICHIESTA con il relativo messaggio
 | 
						|
bool yesno_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)                           // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con i bottni SI e NO
 | 
						|
  //       e l'icona col punto di domanda.
 | 
						|
  //
 | 
						|
  // @rdesc Ritorna il risultato della richiesta:
 | 
						|
  // 
 | 
						|
  // @flag 1 | Se viene premuto il taso SI
 | 
						|
  // @flag 0 | Se viene premuto il taso NO
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  ASK_RESPONSE r = xvt_dm_post_ask("Si", "No", NULL, msg);
 | 
						|
  return r == RESP_DEFAULT;
 | 
						|
}
 | 
						|
 | 
						|
// @msg yesnoall_box | Crea una finestra di RICHIESTA con il relativo messaggio
 | 
						|
int yesnoall_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  ASK_RESPONSE r = xvt_dm_post_ask("No", "Si", "No Tutti", msg);
 | 
						|
  return r == RESP_DEFAULT ? K_NO : (r == RESP_2 ? K_YES : K_SPACE);
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg yesnofatal_box | Crea una finestra di RICHIESTA con il relativo
 | 
						|
//                        messaggio, ma permette di terminare il programma
 | 
						|
bool yesnofatal_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)                           // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con i bottoni SI e NO
 | 
						|
  //       e l'icona col punto di domanda.
 | 
						|
  //       <nl>A differenza della <m yesno_box> permette di terminare il programma
 | 
						|
  //             se viene premuto il tasto SI
 | 
						|
  //
 | 
						|
  // @rdesc Ritorna il risultato della richiesta:
 | 
						|
  // 
 | 
						|
  // @flag 1 | Se viene premuto il tasto SI
 | 
						|
  // @flag 0 | Se viene premuto il tasto NO
 | 
						|
  //
 | 
						|
  // @xref <m yesno_box> <m yesnofatal_box>
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
 | 
						|
#ifdef DBG  
 | 
						|
  char user[32]; xvt_sys_get_user_name(user, 32);
 | 
						|
  char s[256]; sprintf(s, "Ma lo sai %s cos'e' successo?\n%s\nVuoi perseverare?", user, msg);
 | 
						|
  const bool ret = yesno_box(s);
 | 
						|
  if (!ret) 
 | 
						|
#endif
 | 
						|
  fatal_box(msg);
 | 
						|
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg yesnocancel_box | Crea una finestra di RICHIESTA con il relativo messaggio
 | 
						|
int yesnocancel_box(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare nella finestra
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Se si opera in ambiente Windows crea la finestra con i bottoni SI e NO
 | 
						|
  //       e l'icona col punto di domanda.
 | 
						|
  //
 | 
						|
  // @rdesc Ritorna il risultato della richiesta:
 | 
						|
  // 
 | 
						|
  // @flag K_YES | Se viene premuto il tasto SI
 | 
						|
  // @flag K_NO | Se viene premuto il tasto NO
 | 
						|
  // @flag K_ESC | Se viene premuto il tosto ESC
 | 
						|
  //
 | 
						|
  // @xref <m yesno_box> <m yesnofatal_box>
 | 
						|
{
 | 
						|
  buildmsg();
 | 
						|
  ASK_RESPONSE r = xvt_dm_post_ask("Si", "No", "Annulla", msg);
 | 
						|
  return r == RESP_DEFAULT ? K_YES : (r == RESP_2 ? K_NO : K_ESC);
 | 
						|
}
 | 
						|
 | 
						|
bool cantread_box(const char* filename)
 | 
						|
{
 | 
						|
  return error_box(FR("Impossibile leggere '%s'"), filename);
 | 
						|
}
 | 
						|
 | 
						|
bool cantwrite_box(const char* filename)
 | 
						|
{
 | 
						|
  return error_box(FR("Impossibile scrivere '%s'"), filename);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
// @msg __trace | Permette di mandare dei messaggi nel file trace.log
 | 
						|
bool __trace(
 | 
						|
  const char* fmt,   // @parm Messaggio da stampare
 | 
						|
  ...)               // @parmvar Uno o piu' parametri corrispondenti ai codici in <p fmt>
 | 
						|
  // @comm Usato in fase di debug, permette di vedere se il programma ha
 | 
						|
  //             fatto certe operazioni (deve essere definito il simbolo TRC in
 | 
						|
  //             fase di compilazione).
 | 
						|
  //
 | 
						|
  // @rdesc Ritorna non 0 se riesca ad aprire il file trace.log
 | 
						|
{
 | 
						|
  static FILE* f = NULL;
 | 
						|
  if (f == NULL)
 | 
						|
    f = fopen("trace.log", "w");
 | 
						|
  if (f != NULL)
 | 
						|
  {
 | 
						|
    buildmsg();
 | 
						|
    fprintf(f, "%s\n", msg);
 | 
						|
    fflush(f);
 | 
						|
  }
 | 
						|
  return f != NULL;  
 | 
						|
}
 | 
						|
 | 
						|
bool __tracemem(const char* msg)
 | 
						|
{
 | 
						|
  unsigned long mem = xvt_sys_get_free_memory_kb();
 | 
						|
  return __trace("%5lu Kb - %s", mem, msg);
 | 
						|
}
 | 
						|
 |