ba0.cpp Tolto salto immediato nei menu con una sola voce
ba1600?.* Mitiche installazioni git-svn-id: svn://10.65.10.50/trunk@5563 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									2a831c5f10
								
							
						
					
					
						commit
						c25be31d15
					
				
							
								
								
									
										11
									
								
								ba/ba0.cpp
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								ba/ba0.cpp
									
									
									
									
									
								
							@ -544,6 +544,7 @@ bool TMenuitem::perform_submenu() const
 | 
			
		||||
  bool ok = mnu != NULL && mnu->enabled();
 | 
			
		||||
  if (ok)
 | 
			
		||||
  {            
 | 
			
		||||
/* Cristina 6/11/97 
 | 
			
		||||
    if (mnu->items() == 1)
 | 
			
		||||
    {   
 | 
			
		||||
      if (mnu->query_firm())
 | 
			
		||||
@ -555,6 +556,7 @@ bool TMenuitem::perform_submenu() const
 | 
			
		||||
      }
 | 
			
		||||
    }  
 | 
			
		||||
    else
 | 
			
		||||
*/    
 | 
			
		||||
      menu().jumpto(mnu);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
@ -682,6 +684,8 @@ void TSubmenu::read(TScanner& scanner)
 | 
			
		||||
    {                 
 | 
			
		||||
      TString16 flags;
 | 
			
		||||
      get_next_string(line, 6, flags, brace);
 | 
			
		||||
      if (flags.find('D') >= 0)
 | 
			
		||||
        _enabled = FALSE; 
 | 
			
		||||
      if (flags.find('F') >= 0)
 | 
			
		||||
        _firm = TRUE; 
 | 
			
		||||
    } else
 | 
			
		||||
@ -698,8 +702,7 @@ int TSubmenu::find_string(const char* str) const
 | 
			
		||||
{             
 | 
			
		||||
  bool found = FALSE;
 | 
			
		||||
 | 
			
		||||
  TString caption(32);
 | 
			
		||||
  
 | 
			
		||||
  TString caption;
 | 
			
		||||
  caption = _caption; caption.upper();
 | 
			
		||||
  if (caption.find(str) >= 0)
 | 
			
		||||
    found = TRUE;
 | 
			
		||||
@ -728,7 +731,7 @@ bool TSubmenu::perform(int i)
 | 
			
		||||
 | 
			
		||||
bool TMenu::read(const char* name, TString& root)
 | 
			
		||||
{   
 | 
			
		||||
  TString80 str;
 | 
			
		||||
  TString str(255);
 | 
			
		||||
  bool first = TRUE;
 | 
			
		||||
 | 
			
		||||
  TScanner scanner(name);
 | 
			
		||||
@ -762,7 +765,7 @@ bool TMenu::read(const char* name, TString& root)
 | 
			
		||||
 | 
			
		||||
bool TMenu::read(const char* name) 
 | 
			
		||||
{ 
 | 
			
		||||
  TString80 root;
 | 
			
		||||
  TString root(50);
 | 
			
		||||
  bool ok = read(name, root); 
 | 
			
		||||
  if (ok && _current == NULL)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										134
									
								
								ba/ba1600.cpp
									
									
									
									
									
								
							
							
						
						
									
										134
									
								
								ba/ba1600.cpp
									
									
									
									
									
								
							@ -11,11 +11,14 @@
 | 
			
		||||
#include "ba1600.h"
 | 
			
		||||
#include "ba1600a.h"
 | 
			
		||||
 | 
			
		||||
#define FOR_EACH_SHEET_ROW(sheet, row) TToken_string* row; for (int __row = 0; __row < sheet.items() && (const char*)(row = &sheet.row(__row)); __row++)
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// Configurazione per installazione
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
int TInstall_ini::build_list(const TString& module, TString_array& a, const char* sommario)
 | 
			
		||||
int TInstall_ini::build_list(const TString& module, TString_array& a, 
 | 
			
		||||
                             const char* sommario, bool agg)
 | 
			
		||||
{            
 | 
			
		||||
  CHECKS(module.len() >= 2, "Bad module ", (const char*)module);
 | 
			
		||||
 | 
			
		||||
@ -23,10 +26,11 @@ int TInstall_ini::build_list(const TString& module, TString_array& a, const char
 | 
			
		||||
  if (sommario)
 | 
			
		||||
    sum = new TConfig(sommario, module);
 | 
			
		||||
  
 | 
			
		||||
  TToken_string tmp;
 | 
			
		||||
  TAuto_token_string tmp;
 | 
			
		||||
  TString paragraph;
 | 
			
		||||
  for (int sub = 0; ; sub++)
 | 
			
		||||
  {
 | 
			
		||||
    TString16 paragraph = module;
 | 
			
		||||
    paragraph = module;
 | 
			
		||||
    if (module[2] == '\0')     // Ho specificato un modulo principale
 | 
			
		||||
      paragraph << sub;
 | 
			
		||||
    
 | 
			
		||||
@ -34,10 +38,16 @@ int TInstall_ini::build_list(const TString& module, TString_array& a, const char
 | 
			
		||||
    {
 | 
			
		||||
      for (int index = 0; exist("File", index); index++)
 | 
			
		||||
      { 
 | 
			
		||||
        tmp = get("File", NULL, index);
 | 
			
		||||
        tmp = get("File", NULL, index);     // Nome e  aggiornamento
 | 
			
		||||
        
 | 
			
		||||
        // Quando creo il disco di aggiornamento salto tutti i file
 | 
			
		||||
        // che non hanno il flag di aggiornamento settato
 | 
			
		||||
        if (agg && tmp.get_char(1) <= ' ')
 | 
			
		||||
          continue;
 | 
			
		||||
  
 | 
			
		||||
        if (sum) 
 | 
			
		||||
          sum->set("File", tmp, paragraph, TRUE, index);
 | 
			
		||||
        tmp.add(paragraph);
 | 
			
		||||
        tmp.add(paragraph, 2);              // Sottomodulo
 | 
			
		||||
        tmp.lower();  
 | 
			
		||||
        a.add(tmp);
 | 
			
		||||
      }
 | 
			
		||||
@ -55,15 +65,17 @@ int TInstall_ini::build_list(const TString& module, TString_array& a, const char
 | 
			
		||||
  return a.items();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int TInstall_ini::build_complete_list(const TString& module, TString_array& a, const char* sommario)
 | 
			
		||||
int TInstall_ini::build_complete_list(const TString& module, TString_array& a, 
 | 
			
		||||
                                      const char* sommario, bool agg)
 | 
			
		||||
{
 | 
			
		||||
  build_list(module, a, sommario);
 | 
			
		||||
  build_list(module, a, sommario, agg);
 | 
			
		||||
  
 | 
			
		||||
  TAuto_token_string altri(get("Moduli", module));
 | 
			
		||||
  TString submodule;
 | 
			
		||||
  for (const char* mod = altri.get(0); mod; mod = altri.get())
 | 
			
		||||
  {
 | 
			
		||||
    const TString16 submodule = mod;
 | 
			
		||||
    if (!submodule.blank())
 | 
			
		||||
      build_list(submodule, a, sommario);
 | 
			
		||||
    submodule = mod;
 | 
			
		||||
    copy_paragraph(submodule, sommario);
 | 
			
		||||
  }
 | 
			
		||||
  return a.items();
 | 
			
		||||
}
 | 
			
		||||
@ -83,7 +95,7 @@ void TInstall_ini::copy_paragraph(const char* module, const char* summary)
 | 
			
		||||
 | 
			
		||||
void TInstall_ini::copy_module_paragraphs(const char* module, const char* summary)
 | 
			
		||||
{
 | 
			
		||||
  TString16 mod;
 | 
			
		||||
  TString mod;
 | 
			
		||||
  for (int sub = -1; ; sub++)
 | 
			
		||||
  {            
 | 
			
		||||
    mod = module;  
 | 
			
		||||
@ -93,14 +105,6 @@ void TInstall_ini::copy_module_paragraphs(const char* module, const char* summar
 | 
			
		||||
    else
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  TAuto_token_string modules(get("Moduli", module));
 | 
			
		||||
  for (const char* m = modules.get(0); m; m = modules.get())
 | 
			
		||||
  {
 | 
			
		||||
    mod = m;
 | 
			
		||||
    if (!mod.blank())
 | 
			
		||||
      copy_paragraph(mod, summary);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
@ -115,7 +119,7 @@ TAuto_token_string& TAuto_token_string::create(const char* ts)
 | 
			
		||||
  // Calcola il separatore
 | 
			
		||||
  for (const char* s = get_buffer(); *s; s++)
 | 
			
		||||
  {
 | 
			
		||||
    if (strchr("|;,!^&", *s) != NULL)
 | 
			
		||||
    if (strchr("|;,!^&+", *s) != NULL)
 | 
			
		||||
    {                  
 | 
			
		||||
      separator(*s);
 | 
			
		||||
      break;
 | 
			
		||||
@ -136,6 +140,7 @@ protected:
 | 
			
		||||
  static bool missing_notify(TSheet_field& sf, int row, KEY key);
 | 
			
		||||
  static bool file_handler(TMask_field& f, KEY k);
 | 
			
		||||
  static bool link_handler(TMask_field& f, KEY k);
 | 
			
		||||
  static bool deselect_handler(TMask_field& f, KEY k);
 | 
			
		||||
  
 | 
			
		||||
  bool find(const TString& name) const;
 | 
			
		||||
  bool kill_missing(const char* name, bool update);
 | 
			
		||||
@ -152,9 +157,9 @@ public:
 | 
			
		||||
bool TModule_mask::find(const TString& name) const
 | 
			
		||||
{
 | 
			
		||||
  TSheet_field& sf = sfield(F_SHEET);
 | 
			
		||||
  for (int m = sf.items()-1; m >= 0; m--)
 | 
			
		||||
  FOR_EACH_SHEET_ROW(sf, row)
 | 
			
		||||
  {
 | 
			
		||||
    if (name.compare(sf.row(m).get(0), -1, TRUE) == 0)
 | 
			
		||||
    if (name.compare(row->get(0), -1, TRUE) == 0)
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  return m >= 0;
 | 
			
		||||
@ -164,11 +169,11 @@ bool TModule_mask::find(const TString& name) const
 | 
			
		||||
bool TModule_mask::kill_missing(const char* name, bool update)
 | 
			
		||||
{
 | 
			
		||||
  TSheet_field& miss = sfield(F_MISSING);
 | 
			
		||||
  for (int m = miss.items()-1; m >= 0; m--)
 | 
			
		||||
  FOR_EACH_SHEET_ROW(miss, row)
 | 
			
		||||
  {
 | 
			
		||||
    if (miss.row(m).compare(name, -1, TRUE) == 0)
 | 
			
		||||
    if (row->compare(name, -1, TRUE) == 0)
 | 
			
		||||
    {
 | 
			
		||||
      miss.destroy(m, update);
 | 
			
		||||
      miss.destroy(__row, update);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -269,14 +274,16 @@ bool TModule_mask::missing_notify(TSheet_field& sf, int r, KEY key)
 | 
			
		||||
    // Sposto tutte le righe nello spreadsheet a fianco
 | 
			
		||||
    TMask& mainmask = sf.mask();
 | 
			
		||||
    TSheet_field& sheet = mainmask.sfield(F_SHEET);
 | 
			
		||||
    for (int i = 0; i < sf.items(); i++)
 | 
			
		||||
 | 
			
		||||
    FOR_EACH_SHEET_ROW(sf, row)
 | 
			
		||||
    {
 | 
			
		||||
      TToken_string& newrow = sheet.row(-1);
 | 
			
		||||
      newrow = sf.row(i);
 | 
			
		||||
      newrow = *row;
 | 
			
		||||
      TString16 submod = newrow.left(2);
 | 
			
		||||
      submod << '0';
 | 
			
		||||
      newrow.add(submod);
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    sf.destroy();
 | 
			
		||||
    sf.force_update();
 | 
			
		||||
    sheet.force_update();
 | 
			
		||||
@ -358,6 +365,27 @@ bool TModule_mask::link_handler(TMask_field& f, KEY k)
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
bool TModule_mask::deselect_handler(TMask_field& f, KEY k)
 | 
			
		||||
{                          
 | 
			
		||||
  if (k == K_SPACE)
 | 
			
		||||
  {           
 | 
			
		||||
    TSheet_field& sheet = f.mask().sfield(F_SHEET);
 | 
			
		||||
 | 
			
		||||
//    for (int r = sheet.items()-1; r >= 0; r--)
 | 
			
		||||
//    {
 | 
			
		||||
//      sheet.row(r).add(" ", 1);
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    FOR_EACH_SHEET_ROW(sheet, row)
 | 
			
		||||
    {
 | 
			
		||||
      row->add(" ", 1);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    sheet.force_update();  
 | 
			
		||||
  }
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TModule_mask::load(const char* module)
 | 
			
		||||
{                 
 | 
			
		||||
  TWait_cursor hourglass;
 | 
			
		||||
@ -421,7 +449,7 @@ void TModule_mask::save()
 | 
			
		||||
  TInstall_ini ini;
 | 
			
		||||
  int index;       
 | 
			
		||||
  
 | 
			
		||||
  const TString16 module = get(F_MODULE);
 | 
			
		||||
  const TString module = get(F_MODULE);
 | 
			
		||||
  for (index = 0; ; index++)
 | 
			
		||||
  {
 | 
			
		||||
    TString16 sub; sub << module << index;
 | 
			
		||||
@ -434,15 +462,17 @@ void TModule_mask::save()
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  TString tmp;    
 | 
			
		||||
  TToken_string tmp;    
 | 
			
		||||
  index = 0;
 | 
			
		||||
  for (int r = 0; r < sheet.items(); r++)
 | 
			
		||||
  {
 | 
			
		||||
    TToken_string& row = sheet.row(r);
 | 
			
		||||
    TString16 sub = row.get(1);
 | 
			
		||||
    TString16 sub = row.get(2);
 | 
			
		||||
    if (isdigit(sub[0]) || sub.left(2) == module)
 | 
			
		||||
    {
 | 
			
		||||
      tmp = row.get(0);
 | 
			
		||||
      tmp = row.get(0);       // Nome del file
 | 
			
		||||
      const bool agg = *row.get() > ' ';
 | 
			
		||||
      if (agg) tmp.add("X");  // Flag aggiornamento
 | 
			
		||||
      ini.set("File", tmp, sub, TRUE, index++);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -452,6 +482,8 @@ void TModule_mask::save()
 | 
			
		||||
TModule_mask::TModule_mask()
 | 
			
		||||
            : TMask("ba1600b")
 | 
			
		||||
{                
 | 
			
		||||
  set_handler(F_DESELECT, deselect_handler);
 | 
			
		||||
 | 
			
		||||
  TSheet_field& s = sfield(F_SHEET);
 | 
			
		||||
  s.set_notify(sheet_notify);
 | 
			
		||||
  s.sheet_mask().set_handler(S_FILE, file_handler);
 | 
			
		||||
@ -475,7 +507,7 @@ protected:
 | 
			
		||||
  bool zip_file(const char* archive, const char* file) const;
 | 
			
		||||
  int  split_file(const TFilename& file, long size) const;
 | 
			
		||||
  bool move_file(const TFilename& file, const char* dir) const;
 | 
			
		||||
  bool zip_module(const TString& module) const;
 | 
			
		||||
  bool zip_module(const TString& module, bool agg) const;
 | 
			
		||||
       
 | 
			
		||||
public:
 | 
			
		||||
  void load();
 | 
			
		||||
@ -514,9 +546,9 @@ bool TFascicolator_mask::save_handler(TMask_field& f, KEY k)
 | 
			
		||||
      ini.set("PreProcess", m.get(S_PREPROCESS));
 | 
			
		||||
      ini.set("PostProcess", m.get(S_POSTPROCESS));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const bool agg = f.dlg() == S_SAVEAGG;
 | 
			
		||||
    TFascicolator_mask& fm = (TFascicolator_mask&)m.get_sheet()->mask();
 | 
			
		||||
    fm.zip_module(module);
 | 
			
		||||
    fm.zip_module(module, agg);
 | 
			
		||||
  }  
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}  
 | 
			
		||||
@ -718,15 +750,13 @@ int TFascicolator_mask::split_file(const TFilename& archive, long size) const
 | 
			
		||||
      else
 | 
			
		||||
        break;
 | 
			
		||||
    }  
 | 
			
		||||
    
 | 
			
		||||
    if (disks > 1)
 | 
			
		||||
    ::remove(archive);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  return disks;  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TFascicolator_mask::zip_module(const TString& main_module) const
 | 
			
		||||
bool TFascicolator_mask::zip_module(const TString& main_module, bool agg) const
 | 
			
		||||
{  
 | 
			
		||||
  TString_array arr;
 | 
			
		||||
  TInstall_ini ini;
 | 
			
		||||
@ -735,7 +765,7 @@ bool TFascicolator_mask::zip_module(const TString& main_module) const
 | 
			
		||||
  sommario.add(main_module);
 | 
			
		||||
  sommario << "inst.ini";            // Nome del file sommario completo
 | 
			
		||||
  
 | 
			
		||||
  ini.build_complete_list(main_module, arr, sommario);
 | 
			
		||||
  ini.build_complete_list(main_module, arr, sommario, agg);
 | 
			
		||||
  if (arr.items() == 0)
 | 
			
		||||
  {
 | 
			
		||||
    ::remove(sommario);
 | 
			
		||||
@ -746,27 +776,33 @@ bool TFascicolator_mask::zip_module(const TString& main_module) const
 | 
			
		||||
  archivio.ext("zip");            // Nome del file archivio completo
 | 
			
		||||
  
 | 
			
		||||
  bool aborted = FALSE;                                                              
 | 
			
		||||
  TString msg(80);
 | 
			
		||||
  TString msg;
 | 
			
		||||
  msg << "Creazione del file " << archivio << " ...";
 | 
			
		||||
 | 
			
		||||
  TProgind pi(arr.items(), msg, TRUE, TRUE); 
 | 
			
		||||
  TFilename cmd;
 | 
			
		||||
  for (int i = arr.items()-1; i >= 0; i--)
 | 
			
		||||
  {                    
 | 
			
		||||
    pi.addstatus(1);
 | 
			
		||||
    cmd << ' ' << arr.row(i).get(0);
 | 
			
		||||
    if (cmd.len() > 80)
 | 
			
		||||
    {                              
 | 
			
		||||
      zip_file(archivio, cmd);
 | 
			
		||||
      cmd.cut(0);
 | 
			
		||||
    }
 | 
			
		||||
    if (pi.iscancelled())
 | 
			
		||||
    {
 | 
			
		||||
      aborted = TRUE;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    TToken_string& row = arr.row(i);
 | 
			
		||||
      
 | 
			
		||||
    // Aggiungo il nome corrente alla lista dei files da compattare
 | 
			
		||||
    cmd << ' ' << row.get(0);
 | 
			
		||||
    
 | 
			
		||||
    if (cmd.len() > 80)         // Se la riga ha raggiunto la dimensione giusta...
 | 
			
		||||
    {                              
 | 
			
		||||
      zip_file(archivio, cmd);  // ... allora compatto
 | 
			
		||||
      cmd.cut(0);               // e svuoto la riga di comando
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (cmd.len() > 0 && !aborted)
 | 
			
		||||
    zip_file(archivio, cmd);
 | 
			
		||||
    zip_file(archivio, cmd);    // Compatto gli eventuali ultimi rimasti
 | 
			
		||||
 
 | 
			
		||||
  msg.cut(0);
 | 
			
		||||
  msg << "Separazione del file " << archivio << " ...";
 | 
			
		||||
@ -794,12 +830,9 @@ bool TFascicolator_mask::zip_module(const TString& main_module) const
 | 
			
		||||
 | 
			
		||||
    // Costruisco il nome del file da copiare su dischetto  
 | 
			
		||||
    TFilename src(archivio);
 | 
			
		||||
    if (d > 1 || disks > 1) 
 | 
			
		||||
    {
 | 
			
		||||
    src.ext("");
 | 
			
		||||
    src << d;
 | 
			
		||||
    src.ext("zip");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    msg.cut(0);
 | 
			
		||||
    msg << "Generazione del disco " << d << " di " << disks
 | 
			
		||||
@ -824,7 +857,8 @@ TFascicolator_mask::TFascicolator_mask()
 | 
			
		||||
  TSheet_field& s = sfield(F_SHEET);
 | 
			
		||||
  TMask& m = s.sheet_mask();
 | 
			
		||||
  m.set_handler(S_LIST, list_handler);
 | 
			
		||||
  m.set_handler(100, save_handler);
 | 
			
		||||
  m.set_handler(S_SAVE, save_handler);
 | 
			
		||||
  m.set_handler(S_SAVEAGG, save_handler);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
@ -8,8 +8,10 @@
 | 
			
		||||
class TInstall_ini : public TConfig
 | 
			
		||||
{ 
 | 
			
		||||
public:
 | 
			
		||||
  int build_list(const TString& m, TString_array& a, const char* s = NULL);
 | 
			
		||||
  int build_complete_list(const TString& m, TString_array& a, const char* s = NULL);
 | 
			
		||||
  int build_list(const TString& m, TString_array& a, 
 | 
			
		||||
                 const char* s = NULL, bool agg = FALSE);
 | 
			
		||||
  int build_complete_list(const TString& m, TString_array& a, 
 | 
			
		||||
                          const char* s = NULL, bool agg = FALSE);
 | 
			
		||||
 | 
			
		||||
  void copy_paragraph(const char* module, const char* summary);
 | 
			
		||||
  void copy_module_paragraphs(const char* module, const char* summary);
 | 
			
		||||
@ -32,6 +34,7 @@ public:
 | 
			
		||||
  TAuto_token_string& operator=(const TString& ts) { return create(ts); }
 | 
			
		||||
  TAuto_token_string& operator=(const TToken_string& ts) { return create(ts); }
 | 
			
		||||
  TAuto_token_string& operator=(const TAuto_token_string& ts) { return create(ts); }
 | 
			
		||||
  TAuto_token_string() : TToken_string(50) { }
 | 
			
		||||
  TAuto_token_string(const char* ts) { create(ts); }
 | 
			
		||||
  virtual ~TAuto_token_string() { }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@
 | 
			
		||||
#define F_SHEET       203
 | 
			
		||||
#define F_MISSING     204
 | 
			
		||||
#define F_MODULE      205
 | 
			
		||||
#define F_DESELECT    251
 | 
			
		||||
              
 | 
			
		||||
#define S_FILE        101              
 | 
			
		||||
#define S_MODULE      102
 | 
			
		||||
@ -14,6 +15,9 @@
 | 
			
		||||
#define S_EXTERN      105
 | 
			
		||||
#define S_PREPROCESS  106
 | 
			
		||||
#define S_POSTPROCESS 107
 | 
			
		||||
#define S_LIST        200
 | 
			
		||||
 | 
			
		||||
#define S_LIST        100
 | 
			
		||||
#define S_SAVE        151
 | 
			
		||||
#define S_SAVEAGG     152
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -47,7 +47,7 @@ ENDPAGE
 | 
			
		||||
 | 
			
		||||
ENDMASK
 | 
			
		||||
 | 
			
		||||
PAGE "Modulo" -1 -1 52 8
 | 
			
		||||
PAGE "Modulo" -1 -1 52 10
 | 
			
		||||
 | 
			
		||||
STRING 101 36
 | 
			
		||||
BEGIN
 | 
			
		||||
@ -86,28 +86,30 @@ BEGIN
 | 
			
		||||
  PROMPT 1 5 "Post-processing "
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_OK 10 2
 | 
			
		||||
BUTTON DLG_OK 14 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -14 -1 ""
 | 
			
		||||
  PROMPT -13 -3 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON 100 10 2
 | 
			
		||||
BUTTON DLG_CANCEL 14 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -24 -1 ""
 | 
			
		||||
  PICTURE BMP_SAVEREC
 | 
			
		||||
  PICTURE BMP_SAVERECDN
 | 
			
		||||
  PROMPT -13 -1 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON S_LIST 10 2
 | 
			
		||||
BUTTON S_SAVE 14 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -34 -1 "Lista file"
 | 
			
		||||
  PROMPT -23 -3 "&Versione"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_CANCEL 10 2
 | 
			
		||||
BUTTON S_SAVEAGG 14 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -44 -1 ""
 | 
			
		||||
  PROMPT -23 -1 "&Aggiornamento"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON S_LIST 14 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -33 -1 "Lista file"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
@ -4,12 +4,17 @@ TOOLBAR "" 0 20 0 2
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_OK 10 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -12 -11 ""
 | 
			
		||||
  PROMPT -13 -11 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON F_DESELECT 20 2
 | 
			
		||||
BEGIN              
 | 
			
		||||
  PROMPT -11 -11 "Annulla selezione"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_CANCEL 10 2
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT -22 -11 ""
 | 
			
		||||
  PROMPT -33 -11 ""
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
@ -25,7 +30,8 @@ END
 | 
			
		||||
SPREADSHEET F_SHEET 46
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 ""
 | 
			
		||||
  ITEM "File@32"
 | 
			
		||||
  ITEM "File@28"
 | 
			
		||||
  ITEM "Agg."
 | 
			
		||||
  ITEM "Mod."
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
@ -48,9 +54,14 @@ BEGIN
 | 
			
		||||
  FLAGS "B"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_MODULE 3
 | 
			
		||||
BOOLEAN 102
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 2 "Sottomodulo "
 | 
			
		||||
  PROMPT 1 2 "Includi nell'aggiornamento"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING 103 3
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 30 2 "Sottomodulo "
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BUTTON DLG_OK 10 2
 | 
			
		||||
 | 
			
		||||
@ -170,8 +170,36 @@ bool TInstaller_mask::do_process(TAuto_token_string& commands) const
 | 
			
		||||
 | 
			
		||||
bool TInstaller_mask::pre_process(TInstall_ini& ini, const char* module) const
 | 
			
		||||
{                           
 | 
			
		||||
  bool ok = TRUE;
 | 
			
		||||
  
 | 
			
		||||
  TInstall_ini cur_ini;
 | 
			
		||||
  TAuto_token_string altri(ini.get("Moduli", module));
 | 
			
		||||
  altri.add("ba");  // La base e' obbligatoria per tutti
 | 
			
		||||
  
 | 
			
		||||
  TString submodule, curver, reqver;
 | 
			
		||||
  for (const char* mod = altri.get(0); mod && ok; mod = altri.get())
 | 
			
		||||
  {
 | 
			
		||||
    submodule = mod;
 | 
			
		||||
    submodule.cut(2);
 | 
			
		||||
    reqver = ini.get("Versione", submodule);
 | 
			
		||||
    curver = cur_ini.get("Versione", submodule);
 | 
			
		||||
    ok = compare_version(reqver, curver) <= 0;
 | 
			
		||||
    if (!ok)
 | 
			
		||||
    {        
 | 
			
		||||
      TString msg;
 | 
			
		||||
      msg << "L'installazione del modulo " << module
 | 
			
		||||
          << " richiede\nla versione " << reqver
 | 
			
		||||
          << " del sottomodulo " << submodule;
 | 
			
		||||
      error_box(msg);    
 | 
			
		||||
    }
 | 
			
		||||
  }  
 | 
			
		||||
  if (ok)
 | 
			
		||||
  {
 | 
			
		||||
    TAuto_token_string commands(ini.get("PreProcess", module));
 | 
			
		||||
  return do_process(commands);
 | 
			
		||||
    ok = do_process(commands);
 | 
			
		||||
  }  
 | 
			
		||||
  
 | 
			
		||||
  return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TInstaller_mask::post_process(TInstall_ini& ini, const char* module) const
 | 
			
		||||
@ -196,18 +224,24 @@ bool TInstaller_mask::install(const TString& module)
 | 
			
		||||
    const int dischi = ini.get_int("Dischi", module);
 | 
			
		||||
    ok = dischi > 0;
 | 
			
		||||
    
 | 
			
		||||
    if (ok)
 | 
			
		||||
    if (!ok)
 | 
			
		||||
    {
 | 
			
		||||
      return error_box("Impossibile determinare il numero dei dischetti");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      ok = pre_process(ini, module);
 | 
			
		||||
      if (!ok) return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    TProgind pi(dischi, "Decompressione in corso...", FALSE, TRUE);
 | 
			
		||||
    
 | 
			
		||||
    TFilename cmdline;
 | 
			
		||||
    for (int d = 1; d <= dischi && ok; d++)
 | 
			
		||||
    {
 | 
			
		||||
      cmdline = ininame.path();
 | 
			
		||||
      cmdline = path;
 | 
			
		||||
      cmdline.add(module);  
 | 
			
		||||
      cmdline << "inst";
 | 
			
		||||
      if (dischi > 1) cmdline << d;
 | 
			
		||||
      cmdline << "inst" << d;
 | 
			
		||||
      cmdline.ext("zip");
 | 
			
		||||
      
 | 
			
		||||
      ok = fexist(cmdline);
 | 
			
		||||
@ -251,7 +285,6 @@ bool TInstaller_mask::install(const TString& module)
 | 
			
		||||
    { 
 | 
			
		||||
      post_process(ini, module);
 | 
			
		||||
      ini.copy_module_paragraphs(module, ini.default_name());
 | 
			
		||||
      
 | 
			
		||||
    }  
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
@ -263,11 +296,13 @@ bool TInstaller_mask::install(const TString& module)
 | 
			
		||||
    {
 | 
			
		||||
      TInstall_ini ini(ininame);
 | 
			
		||||
      TString_array list;
 | 
			
		||||
      const int files = ini.build_complete_list(module, list);
 | 
			
		||||
      const int files = ini.build_list(module, list);
 | 
			
		||||
      if (files > 0)
 | 
			
		||||
      {
 | 
			
		||||
        pre_process(ini, module);
 | 
			
		||||
        ok = pre_process(ini, module);
 | 
			
		||||
        
 | 
			
		||||
        if (ok)
 | 
			
		||||
        {
 | 
			
		||||
          TProgind pi(files, "Copia in corso...", FALSE, TRUE);
 | 
			
		||||
          TFilename src, dst;
 | 
			
		||||
          for (int f = 0; f < files && ok; f++)
 | 
			
		||||
@ -278,6 +313,8 @@ bool TInstaller_mask::install(const TString& module)
 | 
			
		||||
            src.add(dst);
 | 
			
		||||
            ok = fcopy(src, dst);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (ok)
 | 
			
		||||
        {
 | 
			
		||||
          ini.copy_module_paragraphs(module, ini.default_name());
 | 
			
		||||
@ -293,6 +330,9 @@ bool TInstaller_mask::install(const TString& module)
 | 
			
		||||
    ini.set("DiskPath", path);
 | 
			
		||||
    ini.set("Data", TDate(TODAY), module);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  // Non spostare nell'if precedente
 | 
			
		||||
  if (ok)
 | 
			
		||||
    update_version(); 
 | 
			
		||||
 | 
			
		||||
  return ok;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user