Merge branch 'R12.00' of http://10.65.20.33/sirio/CAMPO/campo into R12.00
This commit is contained in:
		
						commit
						39e5d93c30
					
				
							
								
								
									
										6
									
								
								cd/test/fp1100.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								cd/test/fp1100.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					fpmenu.men
 | 
				
			||||||
 | 
					fp0.exe
 | 
				
			||||||
 | 
					fp0700a.msk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Aggiunta Integrazione del modulo "Regolarizzazione Contabile" per i nuovi tipi documento 
 | 
				
			||||||
 | 
					T16 T17 T18 T19
 | 
				
			||||||
							
								
								
									
										21
									
								
								cd/test/fp1100a.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								cd/test/fp1100a.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					[Main]
 | 
				
			||||||
 | 
					Demo=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[fp0]
 | 
				
			||||||
 | 
					File(0) = fp0.exe|X
 | 
				
			||||||
 | 
					File(7) = fp0700a.msk|X
 | 
				
			||||||
 | 
					File(8) = fpmenu.men|X
 | 
				
			||||||
 | 
					Patch = 1100
 | 
				
			||||||
 | 
					Versione = 21511200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[fp]
 | 
				
			||||||
 | 
					Data = 13-12-2021
 | 
				
			||||||
 | 
					Descrizione = Fattura Elettronica
 | 
				
			||||||
 | 
					Dischi = 1
 | 
				
			||||||
 | 
					Moduli = cg,ve
 | 
				
			||||||
 | 
					OEM = 
 | 
				
			||||||
 | 
					Patch = 1100
 | 
				
			||||||
 | 
					PostProcess = 
 | 
				
			||||||
 | 
					PreProcess = 
 | 
				
			||||||
 | 
					Versione = 21511200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								cd/test/fp1100a1.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cd/test/fp1100a1.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -646,6 +646,8 @@ bool TDir::is_active () const
 | 
				
			|||||||
  return main_app().has_module(module, CHK_DONGLE);
 | 
					  return main_app().has_module(module, CHK_DONGLE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// riimplementare nella 13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TTrec::update_fielddef (int nfld, TToken_string& s)
 | 
					void TTrec::update_fielddef (int nfld, TToken_string& s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  RecFieldDes& rfd = _rec.Fd[nfld];
 | 
					  RecFieldDes& rfd = _rec.Fd[nfld];
 | 
				
			||||||
@ -655,6 +657,59 @@ void TTrec::update_fielddef (int nfld, TToken_string& s)
 | 
				
			|||||||
  rfd.Dec = s.get_int ();
 | 
					  rfd.Dec = s.get_int ();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TTrec::update_fielddef(int nfld, const char * name, int type, int len, int dec)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (nfld < 0)
 | 
				
			||||||
 | 
							nfld = _rec.NFields++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RecFieldDes& rfd = _rec.Fd[nfld];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						strcpy(rfd.Name, name);
 | 
				
			||||||
 | 
						rfd.TypeF = type;
 | 
				
			||||||
 | 
						if (len <= 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch (rfd.TypeF)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case _datefld:
 | 
				
			||||||
 | 
								rfd.Len = 8;
 | 
				
			||||||
 | 
								rfd.Dec = 0;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case _charfld:
 | 
				
			||||||
 | 
							case _boolfld:
 | 
				
			||||||
 | 
								rfd.Len = 1;
 | 
				
			||||||
 | 
								rfd.Dec = 0;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case _memofld:
 | 
				
			||||||
 | 
								rfd.Len = 10;
 | 
				
			||||||
 | 
								rfd.Dec = 0;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								message_box("Lunghezza errata");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							rfd.Len = len;
 | 
				
			||||||
 | 
							rfd.Dec = dec;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TTrec::update_fielddef(int nfld, const RecDes & rd, const char * name)
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
						int i = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < rd.NFields; i++)
 | 
				
			||||||
 | 
							if (strcmp(rd.Fd[i].Name, name) == 0)
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						if (i >= 0)
 | 
				
			||||||
 | 
							update_fielddef(nfld, rd.Fd[i].Name, rd.Fd[i].TypeF, rd.Fd[i].Len, rd.Fd[i].Dec);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// riimplementare nella 13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TTrec::update_keydef (int key, TToken_string& s)
 | 
					void TTrec::update_keydef (int key, TToken_string& s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TExpression expr ("", _strexpr);
 | 
					  TExpression expr ("", _strexpr);
 | 
				
			||||||
@ -704,6 +759,56 @@ void TTrec::update_keydef (int key, TToken_string& s)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TTrec::update_keydef(int key, const char * e, const bool dup)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TExpression expr ("", _strexpr);
 | 
				
			||||||
 | 
					  TString ke (e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (key < 0)
 | 
				
			||||||
 | 
							key = _rec.NKeys++;
 | 
				
			||||||
 | 
					  if (expr.set(ke, _strexpr))
 | 
				
			||||||
 | 
					  {                          
 | 
				
			||||||
 | 
					    _rec.Ky[key].DupKeys = dup;
 | 
				
			||||||
 | 
					    TCodearray & c = expr.code ();
 | 
				
			||||||
 | 
					    c.begin ();
 | 
				
			||||||
 | 
					    int n = 0;
 | 
				
			||||||
 | 
					    while (!c.end ())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      TCode & inst = c.step ();
 | 
				
			||||||
 | 
					      TCodesym sym = inst.getsym ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (sym == _variable)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        const char *s = inst.string ();
 | 
				
			||||||
 | 
					        int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (i = 0; i < _rec.NFields; i++)
 | 
				
			||||||
 | 
					          if (strcmp (_rec.Fd[i].Name, s) == 0)
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _rec.Ky[key].FieldSeq[n] = i;
 | 
				
			||||||
 | 
					        _rec.Ky[key].FromCh[n] = INVFLD;
 | 
				
			||||||
 | 
					        _rec.Ky[key].ToCh[n]   = INVFLD;
 | 
				
			||||||
 | 
					        inst = c.step ();
 | 
				
			||||||
 | 
					        sym = inst.getsym ();
 | 
				
			||||||
 | 
					        if (sym == _upper)
 | 
				
			||||||
 | 
					          _rec.Ky[key].FieldSeq[n] += MaxFields;
 | 
				
			||||||
 | 
					        else if (sym == _number)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          _rec.Ky[key].FromCh[n] = (int)inst.number().integer() - 1;
 | 
				
			||||||
 | 
					          inst = c.step ();
 | 
				
			||||||
 | 
					          _rec.Ky[key].ToCh[n] = _rec.Ky[key].FromCh[n] + (int)inst.number ().integer () - 1;
 | 
				
			||||||
 | 
					          inst = c.step ();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          c.backtrace ();
 | 
				
			||||||
 | 
					        n++;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _rec.Ky[key].NkFields = n;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TTrec::print_on(ostream & out) const
 | 
					void TTrec::print_on(ostream & out) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  const int n = num();
 | 
					  const int n = num();
 | 
				
			||||||
@ -779,5 +884,14 @@ void TTrec::read_from(istream & in)
 | 
				
			|||||||
  _des = NULL;
 | 
					  _des = NULL;
 | 
				
			||||||
  _tab = "";
 | 
					  _tab = "";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					void TTrec::set_name(const char * name, int nfld)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (nfld < 0)
 | 
				
			||||||
 | 
							nfld = _rec.NFields - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RecFieldDes& rfd = _rec.Fd[nfld];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						strcpy(rfd.Name, name);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // FOXPRO
 | 
					#endif // FOXPRO
 | 
				
			||||||
 | 
				
			|||||||
@ -230,15 +230,33 @@ public:
 | 
				
			|||||||
  int len() const;
 | 
					  int len() const;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
#ifndef FOXPRO
 | 
					#ifndef FOXPRO
 | 
				
			||||||
 | 
						// @cmember Aggiorna la chiave. <p desc> e' una token string
 | 
				
			||||||
 | 
						void update_keydef(int key, const char * e, const bool dup);
 | 
				
			||||||
	// @cmember Aggiorna la chiave. <p desc> e' una token string
 | 
						// @cmember Aggiorna la chiave. <p desc> e' una token string
 | 
				
			||||||
	void update_keydef(int key, TToken_string& desc);
 | 
						void update_keydef(int key, TToken_string& desc);
 | 
				
			||||||
 | 
						// @cmember Aggiunge una chiave. <p desc> e' una token string
 | 
				
			||||||
 | 
						void add_keydef(TToken_string& desc) { update_keydef(-1, desc); }
 | 
				
			||||||
 | 
						// @cmember Aggiunge una chiave. <p desc> e' una token string
 | 
				
			||||||
 | 
						void add_keydef(const char * e, const bool dup) { update_keydef(-1, e, dup); }
 | 
				
			||||||
 | 
						// @cmember Aggiorna il campo. 
 | 
				
			||||||
 | 
						void update_fielddef(int nfld, const char * name, int type, int len = 0, int dec = 0);
 | 
				
			||||||
	// @cmember Aggiorna il campo. <p desc> e' una token string
 | 
						// @cmember Aggiorna il campo. <p desc> e' una token string
 | 
				
			||||||
	void update_fielddef(int nfld, TToken_string& desc);
 | 
						void update_fielddef(int nfld, TToken_string& desc);
 | 
				
			||||||
 | 
						// @cmember Aggiorna il campo. 
 | 
				
			||||||
 | 
						void update_fielddef(int nfld, const RecDes & rd, const char * name);
 | 
				
			||||||
 | 
						// @cmember Aggiunge un campo. <p desc> e' una token string
 | 
				
			||||||
 | 
						void add_fielddef(TToken_string& desc) { update_fielddef(-1, desc); }
 | 
				
			||||||
 | 
						// @cmember Aggiunge un campo. 
 | 
				
			||||||
 | 
						void add_fielddef(const char * name, int type, int len = 0, int dec = 0) { update_fielddef(-1, name, type, len, dec); }
 | 
				
			||||||
 | 
						// @cmember Aggiunge un campo. 
 | 
				
			||||||
 | 
						void add_fielddef(const RecDes & rd, const char * name) { update_fielddef(-1, rd, name); }
 | 
				
			||||||
  // @cmember Stampa il tracciato record sull'output selezionato
 | 
					  // @cmember Stampa il tracciato record sull'output selezionato
 | 
				
			||||||
  virtual void print_on(ostream& out) const;
 | 
					  virtual void print_on(ostream& out) const;
 | 
				
			||||||
  // @cmember Legge il tracciato record da input selezionato
 | 
					  // @cmember Legge il tracciato record da input selezionato
 | 
				
			||||||
  virtual void read_from(istream& in);
 | 
					  virtual void read_from(istream& in);
 | 
				
			||||||
  void set_des(TConfig* c = NULL, const char* tab = "") { _des = c; _tab = tab;}
 | 
					  void set_des(TConfig* c = NULL, const char* tab = "") { _des = c; _tab = tab;}
 | 
				
			||||||
 | 
						void set_name(const char * name, int pos = -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  // @cmember Duplica il descrittore di file
 | 
					  // @cmember Duplica il descrittore di file
 | 
				
			||||||
  virtual TObject* dup() const { return new TTrec(*this);}
 | 
					  virtual TObject* dup() const { return new TTrec(*this);}
 | 
				
			||||||
 | 
				
			|||||||
@ -680,7 +680,7 @@ int TMask::id2pos(
 | 
				
			|||||||
TMask_field& TMask::field(short id) const
 | 
					TMask_field& TMask::field(short id) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TMask_field* f = find_by_id(id);
 | 
					  TMask_field* f = find_by_id(id);
 | 
				
			||||||
  if (f == NULL)
 | 
					  if (f == nullptr)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    if (_mask_num == 0)
 | 
					    if (_mask_num == 0)
 | 
				
			||||||
      yesnofatal_box("Non esiste il campo %d sulla maschera %s", id, (const char*)_source_file);
 | 
					      yesnofatal_box("Non esiste il campo %d sulla maschera %s", id, (const char*)_source_file);
 | 
				
			||||||
@ -1042,7 +1042,7 @@ bool TMask::on_key(
 | 
				
			|||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  switch(key)
 | 
						switch (key)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	case K_AUTO_ENTER:
 | 
						case K_AUTO_ENTER:
 | 
				
			||||||
	case K_CTRL_ENTER:
 | 
						case K_CTRL_ENTER:
 | 
				
			||||||
@ -1079,14 +1079,14 @@ bool TMask::on_key(
 | 
				
			|||||||
	case K_F12:
 | 
						case K_F12:
 | 
				
			||||||
		send_key(K_F12, focus_field().dlg());
 | 
							send_key(K_F12, focus_field().dlg());
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
  case K_SHIFT+K_F11:
 | 
						case K_SHIFT + K_F11:
 | 
				
			||||||
		if (is_power_station())
 | 
							if (is_power_station())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			_bShowGrid = !_bShowGrid;
 | 
								_bShowGrid = !_bShowGrid;
 | 
				
			||||||
			xvt_dwin_invalidate_rect(curr_win(), NULL);
 | 
								xvt_dwin_invalidate_rect(curr_win(), NULL);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
  case K_CTRL+'+':
 | 
						case K_CTRL + '+':
 | 
				
			||||||
		if (is_running())
 | 
							if (is_running())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Cerco nella pagina corrente il primo spreadsheet a partire dal campo col focus
 | 
								// Cerco nella pagina corrente il primo spreadsheet a partire dal campo col focus
 | 
				
			||||||
@ -1105,12 +1105,12 @@ bool TMask::on_key(
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
/*
 | 
							/*
 | 
				
			||||||
			case K_CTRL+'-':
 | 
								case K_CTRL+'-':
 | 
				
			||||||
				if (is_running() && focus_field().is_sheet())
 | 
									if (is_running() && focus_field().is_sheet())
 | 
				
			||||||
					send_key(key, focus_field().dlg());
 | 
										send_key(key, focus_field().dlg());
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
*/
 | 
							*/
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		if (key > K_CTRL)
 | 
							if (key > K_CTRL)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@ -1118,25 +1118,46 @@ bool TMask::on_key(
 | 
				
			|||||||
			if (key >= K_F1 && key <= K_F12)
 | 
								if (key >= K_F1 && key <= K_F12)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				const int page = key - K_F1;
 | 
									const int page = key - K_F1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (page < _pages && fld(_focus).on_key(K_TAB))
 | 
									if (page < _pages && fld(_focus).on_key(K_TAB))
 | 
				
			||||||
					show_page(page);
 | 
										show_page(page);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
 | 
									if (UPCASE(key) == 'S')
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
        for (int i = fields()-1; i >= 0; i--)
 | 
										TFilename fname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										if (fname.input(false))
 | 
				
			||||||
 | 
											save(fname);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										if (UPCASE(key) == 'L')
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											TFilename fname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											if (fname.input())
 | 
				
			||||||
 | 
												load(fname);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											for (int i = fields() - 1; i >= 0; i--)
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							TMask_field& f = fld(i);
 | 
												TMask_field& f = fld(i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							if (f.is_operable() && !f.is_editable() && f.active())
 | 
												if (f.is_operable() && !f.is_editable() && f.active())
 | 
				
			||||||
							{
 | 
												{
 | 
				
			||||||
								KEY vk = 0;
 | 
													KEY vk = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
								if (f.is_kind_of(CLASS_BUTTON_FIELD))
 | 
													if (f.is_kind_of(CLASS_BUTTON_FIELD))
 | 
				
			||||||
								{
 | 
													{
 | 
				
			||||||
									TButton_field& b = (TButton_field&)f;
 | 
														TButton_field& b = (TButton_field&)f;
 | 
				
			||||||
									vk = b.virtual_key();
 | 
														vk = b.virtual_key();
 | 
				
			||||||
            } else
 | 
													}
 | 
				
			||||||
 | 
													else
 | 
				
			||||||
									if (f.is_kind_of(CLASS_BUTTON_TOOL))
 | 
														if (f.is_kind_of(CLASS_BUTTON_TOOL))
 | 
				
			||||||
									{
 | 
														{
 | 
				
			||||||
										TButton_tool& t = (TButton_tool&)f;
 | 
															TButton_tool& t = (TButton_tool&)f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
										vk = t.virtual_key();
 | 
															vk = t.virtual_key();
 | 
				
			||||||
									}
 | 
														}
 | 
				
			||||||
								if (vk > 0 && vk == key)
 | 
													if (vk > 0 && vk == key)
 | 
				
			||||||
@ -1149,7 +1170,6 @@ bool TMask::on_key(
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2511,11 +2531,14 @@ TButton_tool& TMask::add_button_tool(short id, const char* prompt, short bmpup)
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// @flag true | Se l'operazione e' avvenuta corretamente
 | 
					// @flag true | Se l'operazione e' avvenuta corretamente
 | 
				
			||||||
// @flag false | Se non si riesce a creare il file di salvataggio
 | 
					// @flag false | Se non si riesce a creare il file di salvataggio
 | 
				
			||||||
bool TMask::save(
 | 
					bool TMask::save(const TFilename & fname, // @parm nome del file, se vuoto usa _workfile
 | 
				
			||||||
  bool append) const // @parm Indica se creare il file o appendere (true) le informazioni
 | 
					  bool append) const // @parm Indica se creare il file o appendere (true) le informazioni
 | 
				
			||||||
  //       ad uno gia' esistente (false, default).
 | 
					  //       ad uno gia' esistente (false, default).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						if (fname.full())
 | 
				
			||||||
 | 
							((TMask *)this)->set_workfile(fname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FILE* f = fopen(_workfile, append ? "a" : "w");
 | 
					  FILE* f = fopen(_workfile, append ? "a" : "w");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (f == nullptr)
 | 
					  if (f == nullptr)
 | 
				
			||||||
@ -2542,13 +2565,16 @@ bool TMask::save(
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// @flag true | Se l'operazione e' avvenuta corretamente
 | 
					// @flag true | Se l'operazione e' avvenuta corretamente
 | 
				
			||||||
// @flag false | Se non si riesce a leggere il file di salvataggio
 | 
					// @flag false | Se non si riesce a leggere il file di salvataggio
 | 
				
			||||||
bool TMask::load(
 | 
					bool TMask::load(const TFilename & fname, // @parm nome del file, se vuoto usa _workfile
 | 
				
			||||||
  bool reset) // @parm Indica la posizione di lettura del file:
 | 
					  bool reset) // @parm Indica la posizione di lettura del file:
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // @flag true | Comincia la lettura dell'inizio
 | 
					  // @flag true | Comincia la lettura dell'inizio
 | 
				
			||||||
  // @flag false | Comincia la lettura dalla posizione corrente dell'offset
 | 
					  // @flag false | Comincia la lettura dalla posizione corrente dell'offset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						if (fname.full())
 | 
				
			||||||
 | 
							((TMask *)this)->set_workfile(fname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FILE*  f = fopen(_workfile, "r");
 | 
					  FILE*  f = fopen(_workfile, "r");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (f == nullptr)
 | 
					  if (f == nullptr)
 | 
				
			||||||
 | 
				
			|||||||
@ -449,9 +449,9 @@ public:
 | 
				
			|||||||
  void set_workfile(const char* workfile)
 | 
					  void set_workfile(const char* workfile)
 | 
				
			||||||
  { _workfile = workfile; _lastpos = 0L;}
 | 
					  { _workfile = workfile; _lastpos = 0L;}
 | 
				
			||||||
  // @cmember Salva i valori dei campi della maschera sul file di salvataggio
 | 
					  // @cmember Salva i valori dei campi della maschera sul file di salvataggio
 | 
				
			||||||
  bool save(bool append = false) const;
 | 
					  bool save(const TFilename & fname = EMPTY_STRING, bool append = false) const;
 | 
				
			||||||
  // @cmember Legge i valori dei campi della maschera da file di salvataggio
 | 
					  // @cmember Legge i valori dei campi della maschera da file di salvataggio
 | 
				
			||||||
  bool load(bool reset = false);
 | 
					  bool load(const TFilename & fname = EMPTY_STRING, bool reset = false);
 | 
				
			||||||
  // @cmember Copia i valori dei campi dalla maschera <p m>
 | 
					  // @cmember Copia i valori dei campi dalla maschera <p m>
 | 
				
			||||||
  void copy_values(const TMask &m);
 | 
					  void copy_values(const TMask &m);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2811,16 +2811,19 @@ bool TEdit_field::on_key(KEY key)
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
        ok = !(check_type() == CHECK_REQUIRED && empty());
 | 
					        ok = !(check_type() == CHECK_REQUIRED && empty());
 | 
				
			||||||
        // check consistency
 | 
					        // check consistency
 | 
				
			||||||
				if (!ok && _browse != nullptr && _browse->is_kind_of(CLASS_RSELECT_BUTTON))
 | 
									if (!ok && _browse != nullptr && _browse->is_reportsel())
 | 
				
			||||||
					ok = true;
 | 
										ok = true;
 | 
				
			||||||
        if (ok && _browse)
 | 
					        if (ok && _browse != nullptr)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          if (browse() && !_browse->is_kind_of(CLASS_RSELECT_BUTTON))
 | 
					          if (browse() != nullptr && !_browse->is_reportsel())
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
            if (ok && check_enabled() && vf != 21) // 21 = NOT_EMPTY_CHECK_FIELD
 | 
					            if (ok && check_enabled() && vf != 21 && !_browse->is_filesel() && !_browse->is_profile()) // 21 = NOT_EMPTY_CHECK_FIELD
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
              if (dirty()) ok = browse()->check(FINAL_CHECK);     // Check consistency
 | 
					
 | 
				
			||||||
              else ok = browse()->empty_check();
 | 
					              if (dirty())
 | 
				
			||||||
 | 
													ok = browse()->check(FINAL_CHECK);     // Check consistency
 | 
				
			||||||
 | 
					              else
 | 
				
			||||||
 | 
														ok = browse()->empty_check();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          else
 | 
					          else
 | 
				
			||||||
 | 
				
			|||||||
@ -934,17 +934,17 @@ public:
 | 
				
			|||||||
  virtual bool check(CheckTime = RUNNING_CHECK);
 | 
					  virtual bool check(CheckTime = RUNNING_CHECK);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Ritorna l'oggetto browse
 | 
					  // @cmember Ritorna l'oggetto browse
 | 
				
			||||||
  TBrowse* browse() const    
 | 
					  TBrowse * browse() const { return (_browse && _browse->is_browse()) ? (TBrowse *)_browse : NULL; }
 | 
				
			||||||
  { return (_browse && _browse->is_browse()) ? (TBrowse*)_browse : NULL; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Ritorna l'oggetto sheet
 | 
					  // @cmember Ritorna l'oggetto sheet
 | 
				
			||||||
  TList_sheet* sheet() const
 | 
					  TList_sheet * sheet() const { return (_browse && _browse->is_sheet()) ? (TList_sheet *)_browse : NULL;}
 | 
				
			||||||
  { return (_browse && _browse->is_sheet()) ? (TList_sheet*)_browse : NULL;}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Ritorna l'oggetto dirsheet
 | 
					  // @cmember Ritorna l'oggetto dir sheet
 | 
				
			||||||
  TFile_select* filesel() const
 | 
					  TFile_select * filesel() const { return (_browse && _browse->is_filesel()) ? (TFile_select*)_browse : NULL;}
 | 
				
			||||||
  { return (_browse && _browse->is_filesel()) ? (TFile_select*)_browse : NULL;}
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
						// @cmember Ritorna l'oggetto report sheet
 | 
				
			||||||
 | 
						TReport_select * reportsel() const{	return (_browse && _browse->is_reportsel()) ? (TReport_select *)_browse : NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	// @cmember Permette di abilitare/disabilitare il campo
 | 
						// @cmember Permette di abilitare/disabilitare il campo
 | 
				
			||||||
  virtual void enable(bool on = true);
 | 
					  virtual void enable(bool on = true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -171,6 +171,7 @@ public:
 | 
				
			|||||||
  { return is_zero(); }
 | 
					  { return is_zero(); }
 | 
				
			||||||
  // @cmember Ritorna il risultato della differenza tra due reali
 | 
					  // @cmember Ritorna il risultato della differenza tra due reali
 | 
				
			||||||
  real operator -() const;
 | 
					  real operator -() const;
 | 
				
			||||||
 | 
						//bool between(const real& a, const real& b) const { return (*this >= a) && (*this <= b || b <= ZERO);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Costruttore
 | 
					  // @cmember Costruttore
 | 
				
			||||||
  real();
 | 
					  real();
 | 
				
			||||||
 | 
				
			|||||||
@ -92,6 +92,7 @@ void TReport_application::mask2ini(const TMask& m, TConfig& ini)
 | 
				
			|||||||
// @cmember Esegue la stampa
 | 
					// @cmember Esegue la stampa
 | 
				
			||||||
void TReport_application::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type)
 | 
					void TReport_application::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						rep.set_export_sections(type);
 | 
				
			||||||
	book.add(rep, type);
 | 
						book.add(rep, type);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2990,29 +2990,26 @@ void TReport::reset_export_sections()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		sect->show(section_shown);
 | 
							sect->show(section_shown);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						set_dbase_fixed_fields(false);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TReport::set_export_sections(export_type type)
 | 
					
 | 
				
			||||||
 | 
					void TReport::set_export4excel()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	switch (type)
 | 
						TToken_string header_section(get_excel_header_section());
 | 
				
			||||||
	{
 | 
					
 | 
				
			||||||
		case _export_printer :
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case _export_visualize :
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
		case _export_excel :
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
	FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
 | 
						FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		const TString4 sec_id(sec_key);
 | 
							const TString4 sec_id(sec_key);
 | 
				
			||||||
		TReport_section * sect = (TReport_section *)sec_item;
 | 
							TReport_section * sect = (TReport_section *)sec_item;
 | 
				
			||||||
 | 
							const bool on = sect->shown() && (header_section.find(sec_id) >= 0  || sec_id.starts_with("B"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					sect->show(sect->shown() && (sec_id == "H0" || sec_id.starts_with("B")));
 | 
							sect->show(on);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
			}
 | 
					}
 | 
				
			||||||
		break;
 | 
					
 | 
				
			||||||
		case _export_dbase:
 | 
					void TReport::set_export4dbase()
 | 
				
			||||||
			{
 | 
					{
 | 
				
			||||||
	FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
 | 
						FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		const TString4 sec_id(sec_key);
 | 
							const TString4 sec_id(sec_key);
 | 
				
			||||||
@ -3020,14 +3017,33 @@ void TReport::set_export_sections(export_type type)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		sect->show(sect->shown() && sec_id.starts_with("B"));
 | 
							sect->show(sect->shown() && sec_id.starts_with("B"));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
			}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TReport::set_export_sections(export_type type)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						switch (type)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case _export_printer :
 | 
				
			||||||
 | 
								set_export4print();
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							case _export_visualize :
 | 
				
			||||||
 | 
								set_export4visualize();
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							case _export_excel :
 | 
				
			||||||
 | 
								set_export4excel();
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							case _export_dbase:
 | 
				
			||||||
 | 
								set_export4dbase();
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
		case _export_pdf :
 | 
							case _export_pdf :
 | 
				
			||||||
 | 
								set_export4pdf();
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
		case _export_text :
 | 
							case _export_text :
 | 
				
			||||||
 | 
								set_export4text();
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						set_dbase_fixed_fields(type == _export_dbase);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KEY TReport::run_form(TMask& m)
 | 
					KEY TReport::run_form(TMask& m)
 | 
				
			||||||
 | 
				
			|||||||
@ -598,8 +598,16 @@ public:
 | 
				
			|||||||
  bool kill_section(char type, int level);
 | 
					  bool kill_section(char type, int level);
 | 
				
			||||||
  int find_max_level(char type) const;
 | 
					  int find_max_level(char type) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void reset_export_sections();
 | 
						virtual const char * get_excel_header_section() { return "H0"; }
 | 
				
			||||||
	virtual void set_export_sections(export_type type);
 | 
						virtual void set_dbase_fixed_fields(bool on = true) {}
 | 
				
			||||||
 | 
						void reset_export_sections();
 | 
				
			||||||
 | 
						void set_export_sections(export_type type);
 | 
				
			||||||
 | 
						virtual void set_export4print() {};
 | 
				
			||||||
 | 
						virtual void set_export4visualize() {};
 | 
				
			||||||
 | 
						virtual void set_export4excel();
 | 
				
			||||||
 | 
						virtual void set_export4pdf() {};
 | 
				
			||||||
 | 
						virtual void set_export4text() {};
 | 
				
			||||||
 | 
						virtual void set_export4dbase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  virtual bool on_link(const TReport_link& link);
 | 
					  virtual bool on_link(const TReport_link& link);
 | 
				
			||||||
  virtual bool use_mask() { return true;}
 | 
					  virtual bool use_mask() { return true;}
 | 
				
			||||||
 | 
				
			|||||||
@ -1875,7 +1875,6 @@ bool TBook::export_dbase(TFilename& fname, TTrec * desc, bool signature, bool go
 | 
				
			|||||||
			desc->update_fielddef(i, TToken_string(format("FLD%03d|1|80|0", i)));
 | 
								desc->update_fielddef(i, TToken_string(format("FLD%03d|1|80|0", i)));
 | 
				
			||||||
		desc->update_keydef(0, TToken_string("FLD001|"));
 | 
							desc->update_keydef(0, TToken_string("FLD001|"));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (fname.exist())
 | 
						if (fname.exist())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		TFilename f(fname);
 | 
							TFilename f(fname);
 | 
				
			||||||
@ -1883,11 +1882,10 @@ bool TBook::export_dbase(TFilename& fname, TTrec * desc, bool signature, bool go
 | 
				
			|||||||
		f.ext("*");
 | 
							f.ext("*");
 | 
				
			||||||
		remove_files(f, false);
 | 
							remove_files(f, false);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	TExternisamfile dbf(fname, *desc);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	temp.temp("exp", "xls");
 | 
						temp.temp("exp", "xls");
 | 
				
			||||||
	export_excel(temp, signature);
 | 
						export_excel(temp, signature);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TExternisamfile dbf(fname, *desc);
 | 
				
			||||||
	ifstream ifstream(temp);
 | 
						ifstream ifstream(temp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (!ifstream.eof())
 | 
						while (!ifstream.eof())
 | 
				
			||||||
@ -1977,7 +1975,7 @@ bool TBook::export_excel(TFilename& fname, bool signature, bool goto_url, bool a
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
        // <text owner=B1>
 | 
					        // <text owner=B1>
 | 
				
			||||||
        const char* section = str.get(1);
 | 
					        const char* section = str.get(1);
 | 
				
			||||||
        if ((section[0] == 'B'||section[0]=='F') && section[1]>'0')
 | 
					        if ((section[0] == 'B'||section[0]=='F' || section[0] == 'H') && section[1]>'0')
 | 
				
			||||||
          tab.add_field(col, wid);
 | 
					          tab.add_field(col, wid);
 | 
				
			||||||
        // Raggiunge fine del testo
 | 
					        // Raggiunge fine del testo
 | 
				
			||||||
        while (str != "</text>" && !ifs.eof()) 
 | 
					        while (str != "</text>" && !ifs.eof()) 
 | 
				
			||||||
@ -3033,12 +3031,14 @@ bool TReport_book::add(TReport& rep, export_type type, bool progind)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  TString msg; msg << TR("Report ") << _report->filename();
 | 
					  TString msg; msg << TR("Report ") << _report->filename();
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  TProgind* pi = NULL;
 | 
					  TPrintind* pi = nullptr;
 | 
				
			||||||
  if (progind && rex_items > 1)
 | 
					
 | 
				
			||||||
 | 
					  if (progind)
 | 
				
			||||||
    pi = new TPrintind(rex_items, msg);
 | 
					    pi = new TPrintind(rex_items, msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TString_array oldgroup, newgroup;
 | 
					  TString_array oldgroup, newgroup;
 | 
				
			||||||
  const int max_group = _report->find_max_level('H');
 | 
					  const int max_group = _report->find_max_level('H');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (max_group >= 2)
 | 
					  if (max_group >= 2)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    for (int g = 2; g <= max_group; g++)
 | 
					    for (int g = 2; g <= max_group; g++)
 | 
				
			||||||
@ -3128,7 +3128,7 @@ bool TReport_book::add(TReport& rep, export_type type, bool progind)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pi != NULL)
 | 
					    if (pi != nullptr)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      if (!pi->addstatus(1))
 | 
					      if (!pi->addstatus(1))
 | 
				
			||||||
        _print_aborted = true;
 | 
					        _print_aborted = true;
 | 
				
			||||||
@ -3190,10 +3190,8 @@ bool TReport_book::add(TReport& rep, export_type type, bool progind)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  safe_delete(pi);
 | 
				
			||||||
  if (pi != NULL)
 | 
						_report->reset_export_sections();
 | 
				
			||||||
    delete pi;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return !_print_aborted;
 | 
					  return !_print_aborted;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1466,9 +1466,9 @@ bool TFilename::search_in_path(TFilename& path) const
 | 
				
			|||||||
  return path.full();
 | 
					  return path.full();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TFilename::input()
 | 
					bool TFilename::input(bool existent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return input_filename(*this);
 | 
					  return input_filename(*this, existent);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TFilename::custom_path(const char* path_list)
 | 
					bool TFilename::custom_path(const char* path_list)
 | 
				
			||||||
 | 
				
			|||||||
@ -592,7 +592,7 @@ public:
 | 
				
			|||||||
  // @cmember Cerca nel path il nome del file corrente e scrive il path assoluto in path
 | 
					  // @cmember Cerca nel path il nome del file corrente e scrive il path assoluto in path
 | 
				
			||||||
  bool search_in_path(TFilename& path) const;
 | 
					  bool search_in_path(TFilename& path) const;
 | 
				
			||||||
  // @cmember Richiede all'utente il nome di un file
 | 
					  // @cmember Richiede all'utente il nome di un file
 | 
				
			||||||
  bool input();
 | 
					  bool input(bool existent = true);
 | 
				
			||||||
  // @cmember Ritorna il nome del file con estensione
 | 
					  // @cmember Ritorna il nome del file con estensione
 | 
				
			||||||
  const char* name() const;
 | 
					  const char* name() const;
 | 
				
			||||||
  // @cmember Ritorna il nome del file senza estensione
 | 
					  // @cmember Ritorna il nome del file senza estensione
 | 
				
			||||||
 | 
				
			|||||||
@ -352,13 +352,19 @@ int list_files(
 | 
				
			|||||||
  return count;
 | 
					  return count;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool input_filename(TFilename& file)
 | 
					bool input_filename(TFilename& file, bool existent)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  DIRECTORY dir; xvt_fsys_get_curr_dir(&dir);
 | 
					  DIRECTORY dir; xvt_fsys_get_curr_dir(&dir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FILE_SPEC fs;
 | 
					  FILE_SPEC fs;
 | 
				
			||||||
  xvt_fsys_convert_str_to_fspec(file, &fs);
 | 
					  xvt_fsys_convert_str_to_fspec(file, &fs);
 | 
				
			||||||
  const bool good = xvt_dm_post_file_open(&fs, TR("Selezionare il file")) == FL_OK;
 | 
					
 | 
				
			||||||
 | 
						bool good;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if (existent)
 | 
				
			||||||
 | 
							good = xvt_dm_post_file_open(&fs, TR("Selezionare il file")) == FL_OK;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							good = xvt_dm_post_file_save(&fs, TR("Indicare il file")) == FL_OK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  xvt_fsys_set_dir(&dir);
 | 
					  xvt_fsys_set_dir(&dir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,8 @@ bool remove_file(const char* file);
 | 
				
			|||||||
int remove_files(const char* mask, bool subdirs);
 | 
					int remove_files(const char* mask, bool subdirs);
 | 
				
			||||||
int count_files(const char* dir, bool subdirs);
 | 
					int count_files(const char* dir, bool subdirs);
 | 
				
			||||||
int list_files(const char* mask, TString_array& result);
 | 
					int list_files(const char* mask, TString_array& result);
 | 
				
			||||||
bool input_filename(TFilename& file);
 | 
					bool input_filename(TFilename& file, bool existent = true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char * get_system_dir(TSystem_dirs what);
 | 
					const char * get_system_dir(TSystem_dirs what);
 | 
				
			||||||
const char * standard_path_list();
 | 
					const char * standard_path_list();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -122,5 +123,6 @@ void split_IBAN(const char * iban, TString & iso, TString & icin,
 | 
				
			|||||||
void set_test_mail(const TString & email);
 | 
					void set_test_mail(const TString & email);
 | 
				
			||||||
bool send_mail(TToken_string & to, TToken_string & cc, TToken_string & ccn,
 | 
					bool send_mail(TToken_string & to, TToken_string & cc, TToken_string & ccn,
 | 
				
			||||||
               const char * subj, const char * text, TToken_string & attachment, bool ui, bool receipt);
 | 
					               const char * subj, const char * text, TToken_string & attachment, bool ui, bool receipt);
 | 
				
			||||||
 | 
					inline bool between(const long val, const long a, const long b) { return ((a == 0 ||val >= a) && (b == 0 || val <= b)); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __UTILITY_H */
 | 
					#endif /* __UTILITY_H */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user