Patch level : 10.0 500
Files correlati : ba0 Ricompilazione Demo : [ ] Commento : Ripristinato comportamento error_box git-svn-id: svn://10.65.10.50/trunk@19574 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									0bbbc30ede
								
							
						
					
					
						commit
						89d8a61d76
					
				@ -4,59 +4,264 @@
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <dongle.h>
 | 
			
		||||
#include <prefix.h>
 | 
			
		||||
#include <sheet.h>
 | 
			
		||||
#include <sqlset.h>
 | 
			
		||||
#include <toolfld.h>
 | 
			
		||||
#include <urldefid.h>
 | 
			
		||||
#include <utility.h>
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TAdavnced_property sheet
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TAdvanced_property_sheet : public TMask
 | 
			
		||||
{ 
 | 
			
		||||
  TProp_field* _pf;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
  virtual long handler(WINDOW win, EVENT* e);
 | 
			
		||||
  void esporta();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  void freeze(bool on) { _pf->freeze(on); }
 | 
			
		||||
  void add_cat(const char* prompt);
 | 
			
		||||
  void add_prop(const char* prompt, const char* value);
 | 
			
		||||
  void add_prop(const char* prompt, long value);
 | 
			
		||||
 | 
			
		||||
  void set_read_only(bool ro = true);
 | 
			
		||||
	TAdvanced_property_sheet(const char* title = "", int width = 78, int height = 20);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
long TAdvanced_property_sheet::handler(WINDOW win, EVENT* e)
 | 
			
		||||
{
 | 
			
		||||
  if (_pf != NULL)
 | 
			
		||||
  {
 | 
			
		||||
    switch (e->type)
 | 
			
		||||
    {
 | 
			
		||||
    case E_SIZE:
 | 
			
		||||
      if (win == _pf->win().parent())
 | 
			
		||||
        _pf->win().maximize();
 | 
			
		||||
      break;
 | 
			
		||||
    case E_CONTROL:
 | 
			
		||||
      switch(e->v.ctl.id)
 | 
			
		||||
      {
 | 
			
		||||
      case DLG_EXPORT: esporta(); return 0L;
 | 
			
		||||
      default: break;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return TMask::handler(win, e);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TAdvanced_property_sheet::add_cat(const char* prompt)
 | 
			
		||||
{
 | 
			
		||||
  _pf->set_property(prompt, (const char*)NULL, prompt);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TAdvanced_property_sheet::add_prop(const char* prompt, const char* value)
 | 
			
		||||
{
 | 
			
		||||
  _pf->set_property(prompt, value, prompt);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TAdvanced_property_sheet::add_prop(const char* prompt, long value)
 | 
			
		||||
{
 | 
			
		||||
  _pf->set_property(prompt, value, prompt);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static BOOLEAN export_cb(WINDOW pg, XVT_TREEVIEW_NODE node, void* jolly)
 | 
			
		||||
{
 | 
			
		||||
  char name[_MAX_PATH];
 | 
			
		||||
  if (xvt_prop_get_string(pg, node, name, sizeof(name)))
 | 
			
		||||
  {
 | 
			
		||||
    ostream& out = *(ostream*)jolly;
 | 
			
		||||
    char value[_MAX_PATH];
 | 
			
		||||
    if (xvt_prop_get_data(pg, node, value, sizeof(value))) 
 | 
			
		||||
      out << '\t' << name << '\t' << value << endl; // Property 
 | 
			
		||||
    else
 | 
			
		||||
      out << name << endl; // Category
 | 
			
		||||
  }
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TAdvanced_property_sheet::esporta()
 | 
			
		||||
{
 | 
			
		||||
  TString cap; get_caption(cap);
 | 
			
		||||
  for (char* buf = cap.get_buffer(); *buf; buf++)
 | 
			
		||||
  {
 | 
			
		||||
    switch (*buf)
 | 
			
		||||
    {
 | 
			
		||||
    case '?':
 | 
			
		||||
    case '(':
 | 
			
		||||
    case ')':
 | 
			
		||||
    case '/':
 | 
			
		||||
    case '\\':
 | 
			
		||||
    case '*': *buf = ' '; break;
 | 
			
		||||
    default :  break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  cap.strip_spaces();
 | 
			
		||||
  if (cap.blank())
 | 
			
		||||
    cap = "export";
 | 
			
		||||
  TFilename name;
 | 
			
		||||
  name.tempdir(); name.add(cap); name.ext("xls");
 | 
			
		||||
  if (name.full()) // Dummy test
 | 
			
		||||
  {
 | 
			
		||||
    ofstream xls(name);
 | 
			
		||||
    _pf->for_each_property(export_cb, &xls);
 | 
			
		||||
  }
 | 
			
		||||
  if (name.exist())
 | 
			
		||||
    xvt_sys_goto_url(name, "open");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TAdvanced_property_sheet::set_read_only(bool ro)
 | 
			
		||||
{
 | 
			
		||||
  xvt_prop_set_read_only(_pf->win().win(), NULL, ro);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TAdvanced_property_sheet::TAdvanced_property_sheet(const char* title, int width, int height)
 | 
			
		||||
: TMask(title && *title ? title : TR("Proprieta'"), 1, width, height), _pf(NULL)
 | 
			
		||||
{
 | 
			
		||||
  add_button_tool(DLG_CANCEL, TR("Ritorna"), TOOL_CANCEL);
 | 
			
		||||
  add_button_tool(DLG_EXPORT, TR("Esporta"), TOOL_EXCEL);
 | 
			
		||||
  add_button_tool(DLG_HELP, TR("Help"), TOOL_HELP);
 | 
			
		||||
 | 
			
		||||
  _pf = new TProp_field(this);
 | 
			
		||||
  _pf->create(DLG_USER, 0, 0, 0, 0, page_win(0));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TBasic_property sheet
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TBasic_property_sheet : public TArray_sheet
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
  virtual bool get_cell_colors(int row, int col, COLOR& fore, COLOR& back) const;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  void add_cat(const char* cat);
 | 
			
		||||
  void add_prop(const char* prop, const char* val);
 | 
			
		||||
  void add_prop(const char* prop, long val);
 | 
			
		||||
  TBasic_property_sheet(const char* title, int width, int height);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool TBasic_property_sheet::get_cell_colors(int r, int col, COLOR& fore, COLOR& back) const
 | 
			
		||||
{
 | 
			
		||||
  const TToken_string& riga = ((TBasic_property_sheet*)this)->row(r);
 | 
			
		||||
  const bool changed = riga.items() == 1;
 | 
			
		||||
  if (changed)
 | 
			
		||||
  {
 | 
			
		||||
    fore = FOCUS_COLOR;
 | 
			
		||||
    back = REQUIRED_BACK_COLOR;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  return changed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void TBasic_property_sheet::add_cat(const char* cat)
 | 
			
		||||
{
 | 
			
		||||
  add(cat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TBasic_property_sheet::add_prop(const char* prop, const char* val)
 | 
			
		||||
{
 | 
			
		||||
  TToken_string r;
 | 
			
		||||
  r = prop; 
 | 
			
		||||
  r.add(val);
 | 
			
		||||
  add(r);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TBasic_property_sheet::add_prop(const char* prop, long val)
 | 
			
		||||
{
 | 
			
		||||
  add_prop(prop, format("%ld", val));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TBasic_property_sheet::TBasic_property_sheet(const char* title, int width, int height) 
 | 
			
		||||
                     : TArray_sheet(-1, -1, width, height, title, format("@%d|@%d", width/4-2, 3*width/4-2))
 | 
			
		||||
{ }
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TProperty sheet
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
void TProperty_sheet::add_cat(const char* cat)
 | 
			
		||||
{
 | 
			
		||||
  if (_power)
 | 
			
		||||
    ((TAdvanced_property_sheet*)_ps)->add_cat(cat);
 | 
			
		||||
  else
 | 
			
		||||
    ((TBasic_property_sheet*)_ps)->add_cat(cat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TProperty_sheet::add_prop(const char* prop, const char* val)
 | 
			
		||||
{
 | 
			
		||||
  if (_power)
 | 
			
		||||
    ((TAdvanced_property_sheet*)_ps)->add_prop(prop, val);
 | 
			
		||||
  else
 | 
			
		||||
    ((TBasic_property_sheet*)_ps)->add_prop(prop, val);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TProperty_sheet::add_prop(const char* prop, long val)
 | 
			
		||||
{
 | 
			
		||||
  if (_power)
 | 
			
		||||
    ((TAdvanced_property_sheet*)_ps)->add_prop(prop, val);
 | 
			
		||||
  else
 | 
			
		||||
    ((TBasic_property_sheet*)_ps)->add_prop(prop, val);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TProperty_sheet::freeze(bool f)
 | 
			
		||||
{
 | 
			
		||||
  if (_power)
 | 
			
		||||
    ((TAdvanced_property_sheet*)_ps)->freeze(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TProperty_sheet::set_read_only(bool ro)
 | 
			
		||||
{
 | 
			
		||||
  if (_power)
 | 
			
		||||
    ((TAdvanced_property_sheet*)_ps)->set_read_only(ro);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
KEY TProperty_sheet::run()
 | 
			
		||||
{ return _ps->run(); }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TProperty_sheet::TProperty_sheet(const char* title, int width, int height)
 | 
			
		||||
{
 | 
			
		||||
  _power = is_power_reseller();
 | 
			
		||||
  if (_power)
 | 
			
		||||
    _ps = new TAdvanced_property_sheet(title, width, height);
 | 
			
		||||
  else
 | 
			
		||||
    _ps = new TBasic_property_sheet(title, width, height);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TProperty_sheet::~TProperty_sheet()
 | 
			
		||||
{
 | 
			
		||||
  delete _ps;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// Finestra informazioni
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TInfo_mask : public TArray_sheet
 | 
			
		||||
class TInfo_mask : public TProperty_sheet
 | 
			
		||||
{ 
 | 
			
		||||
protected:
 | 
			
		||||
  virtual bool get_cell_colors(int row, int col, COLOR& fore, COLOR& back) const;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  void add_row(const char* prompt, const char* value, int err = 0);
 | 
			
		||||
  void add_row(const char* prompt, unsigned long value, int err = 0);
 | 
			
		||||
	TInfo_mask();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool TInfo_mask::get_cell_colors(int r, int c, COLOR& fore, COLOR& back) const
 | 
			
		||||
{
 | 
			
		||||
  const int err = ((TArray_sheet*)this)->row(r).get_int(2);
 | 
			
		||||
  if (err > 0)
 | 
			
		||||
  {
 | 
			
		||||
    fore = err == 1 ? NORMAL_COLOR        : FOCUS_COLOR;
 | 
			
		||||
    back = err == 1 ? REQUIRED_BACK_COLOR : FOCUS_BACK_COLOR;
 | 
			
		||||
  }
 | 
			
		||||
  return TArray_sheet::get_cell_colors(r, c, fore, back);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TInfo_mask::add_row(const char* prompt, const char* value, int err)
 | 
			
		||||
TInfo_mask::TInfo_mask() : TProperty_sheet(TR("Informazioni"))
 | 
			
		||||
{
 | 
			
		||||
  TToken_string* r = new TToken_string;
 | 
			
		||||
  r->add(prompt);
 | 
			
		||||
  r->add(value);
 | 
			
		||||
  r->add(err);
 | 
			
		||||
  add(r);
 | 
			
		||||
}
 | 
			
		||||
  freeze(true);
 | 
			
		||||
 | 
			
		||||
void TInfo_mask::add_row(const char* prompt, unsigned long value, int err)
 | 
			
		||||
{
 | 
			
		||||
	TString16 str; str.format("%lu", value);
 | 
			
		||||
	add_row(prompt, str);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TInfo_mask::TInfo_mask() 
 | 
			
		||||
          : TArray_sheet(-1, -1, 78, 20, TR("Informazioni"), "@18|@58")
 | 
			
		||||
{
 | 
			
		||||
  const word ser_no = dongle().number();
 | 
			
		||||
 | 
			
		||||
  int year = 2091, release = 10, tag = 0, patch = 1;
 | 
			
		||||
	TString80 versione = "2091.10.00 Patch 0001";
 | 
			
		||||
	TString80 versione = "2091.10.00";
 | 
			
		||||
  if (main_app().get_version_info(year, release, tag, patch))
 | 
			
		||||
		versione.format("%d.%02d.%02d Patch %04d", year, release, tag, patch);
 | 
			
		||||
		versione.format("%d.%02d.%02d Patch %d", year, release, tag, patch);
 | 
			
		||||
 | 
			
		||||
  TString80 stros, strwx, strcpu;
 | 
			
		||||
  xvt_sys_get_version(stros.get_buffer(), strwx.get_buffer(), stros.size());
 | 
			
		||||
@ -76,7 +281,7 @@ TInfo_mask::TInfo_mask()
 | 
			
		||||
	{
 | 
			
		||||
	case _dongle_hardlock: prot = "Hardlock"; break;
 | 
			
		||||
	case _dongle_eutron  : prot = "Eutron"; break;
 | 
			
		||||
	case _dongle_network : prot = campoini.get("Dongle", "Server"); break;
 | 
			
		||||
	case _dongle_network : prot = ini_get_string(CONFIG_INSTALL, "Main", "Dongle", "Server"); break;
 | 
			
		||||
	default              : prot = TR("Nessuna");	break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -111,48 +316,69 @@ TInfo_mask::TInfo_mask()
 | 
			
		||||
    strsql = rs.driver_version();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	add_row(TR("Versione"), versione);
 | 
			
		||||
	add_row(TR("Protezione"), prot);
 | 
			
		||||
	add_row(TR("N. di serie"), ser_no, ser_no < 0);
 | 
			
		||||
  add_row(TR("Assistenza"), dongle().year_assist());
 | 
			
		||||
  add_row(TR("Installazione"), tipo);
 | 
			
		||||
  add_row(TR("Sistema Operativo"), stros);
 | 
			
		||||
	add_row(TR("Utente"), user());
 | 
			
		||||
  add_row(TR("Computer"), strcpu);
 | 
			
		||||
  const TString study = firm2dir(-1);
 | 
			
		||||
  add_row(TR("Studio"), study, study.find(' ') > 0 || study.len() > 30);
 | 
			
		||||
  add_row(TR("Ditta"), campoini.get("Firm", "Main"));
 | 
			
		||||
  add_cat(TR("Programma"));
 | 
			
		||||
	add_prop(TR("Versione"), versione);
 | 
			
		||||
  add_prop(TR("Protezione"), prot);
 | 
			
		||||
	add_prop(TR("N. di serie"), ser_no);
 | 
			
		||||
  if (ser_no > 0)
 | 
			
		||||
    add_prop(TR("Assistenza"), dongle().year_assist());
 | 
			
		||||
  add_prop(TR("Installazione"), tipo);
 | 
			
		||||
	add_prop(TR("Utente"), user());
 | 
			
		||||
	add_prop(TR("Linea di Comando"), arg);
 | 
			
		||||
 | 
			
		||||
  add_cat(TR("Area dati"));
 | 
			
		||||
  TFilename study = firm2dir(-1);
 | 
			
		||||
  add_prop(TR("Studio"), study);
 | 
			
		||||
  const long codditta = campoini.get_long("Firm", "Main");
 | 
			
		||||
  add_prop(TR("Ditta"), codditta);
 | 
			
		||||
  if (prefix_valid())
 | 
			
		||||
  {
 | 
			
		||||
    const TFirm& f = prefix().firm();
 | 
			
		||||
    add_row(TR("Ragione Sociale"), f.ragione_sociale());
 | 
			
		||||
    add_row(TR("Valuta"), f.codice_valuta());
 | 
			
		||||
    add_prop(TR("Ragione Sociale"), f.ragione_sociale());
 | 
			
		||||
    add_prop(TR("Valuta"), f.codice_valuta());
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    add_row(TR("Ragione Sociale"), campoini.get("Company"));
 | 
			
		||||
    add_prop(TR("Ragione Sociale"), campoini.get("Company"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	add_row(TR("Programma"), arg);
 | 
			
		||||
	add_row(TR("Config locale"), campoini.name(), campoini.name().find(' ') >= 0);
 | 
			
		||||
	add_row(TR("Config utente"), userini.name(), userini.name().find(' ') >= 0);
 | 
			
		||||
  add_row(TR("File temporanei"), temp, temp.find(' ') >= 0);
 | 
			
		||||
  add_cat(TR("Dati Stazione"));
 | 
			
		||||
  add_prop(TR("Sistema Operativo"), stros);
 | 
			
		||||
	add_prop(TR("Utente"), user());
 | 
			
		||||
  add_prop(TR("Computer"), strcpu);
 | 
			
		||||
 | 
			
		||||
  const long mbfree = xvt_fsys_get_disk_free_space(study, 'M');
 | 
			
		||||
  TString16 strmb; strmb.format("%ld Mb", mbfree);
 | 
			
		||||
	add_row(TR("Spazio su disco"), strmb, mbfree < 512);
 | 
			
		||||
	add_prop(TR("Spazio su disco"), strmb);
 | 
			
		||||
  add_prop(TR("File temporanei"), temp);
 | 
			
		||||
	
 | 
			
		||||
  TString printer;
 | 
			
		||||
  printer = userini.get("Name", "Printer");
 | 
			
		||||
	if (printer.blank())
 | 
			
		||||
		printer = TR("Nessuna");
 | 
			
		||||
	add_row(TR("Stampante"), printer, printer.len() >= 32);
 | 
			
		||||
	add_prop(TR("Stampante"), printer);
 | 
			
		||||
 | 
			
		||||
  add_cat(TR("Configurazioni"));
 | 
			
		||||
	add_prop(TR("Config locale"), campoini.name());
 | 
			
		||||
  add_prop(TR("Config studio"), study.add("studio.ini"));
 | 
			
		||||
  if (codditta > 0)
 | 
			
		||||
  {
 | 
			
		||||
    study = firm2dir(codditta);
 | 
			
		||||
    add_prop(TR("Config ditta"), study.add("ditta.ini"));
 | 
			
		||||
  }
 | 
			
		||||
	add_prop(TR("Config utente"), userini.name());
 | 
			
		||||
  study = firm2dir(-1); study.add("config"); study.add(strcpu); study.ext("ini");
 | 
			
		||||
  add_prop(TR("Config stazione"), study), 
 | 
			
		||||
 | 
			
		||||
  add_cat(TR("Librerie di supporto"));
 | 
			
		||||
  xvt_print_pdf_version(printer.get_buffer(), printer.size());
 | 
			
		||||
  add_row(TR("Libreria DB"),  strdb);
 | 
			
		||||
  add_row(TR("Libreria GUI"), strwx);
 | 
			
		||||
  add_row(TR("Libreria PDF"), printer);
 | 
			
		||||
  add_row(TR("Libreria SQL"), strsql);
 | 
			
		||||
  add_prop(TR("Libreria DB"),  strdb);
 | 
			
		||||
  add_prop(TR("Libreria GUI"), strwx);
 | 
			
		||||
  add_prop(TR("Libreria PDF"), printer);
 | 
			
		||||
  add_prop(TR("Libreria SQL"), strsql);
 | 
			
		||||
 | 
			
		||||
  set_read_only();
 | 
			
		||||
  freeze(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// About box: risposta alla opzione Informazioni del menu File
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,33 @@
 | 
			
		||||
#ifndef __ABOUT_H
 | 
			
		||||
#define __ABOUT_H
 | 
			
		||||
 | 
			
		||||
#ifndef __MASK_H
 | 
			
		||||
#include <mask.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef __TREECTRL_H
 | 
			
		||||
#include <treectrl.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
class TProperty_sheet : public TObject
 | 
			
		||||
{ 
 | 
			
		||||
  bool _power;
 | 
			
		||||
  TWindow* _ps;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
  void freeze(bool f);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  void add_cat(const char* prompt);
 | 
			
		||||
  void add_prop(const char* prompt, const char* value);
 | 
			
		||||
  void add_prop(const char* prompt, long value);
 | 
			
		||||
 | 
			
		||||
  void set_read_only(bool ro = true);
 | 
			
		||||
  KEY run();
 | 
			
		||||
	TProperty_sheet(const char* title = "", int width = 78, int height = 20);
 | 
			
		||||
  virtual ~TProperty_sheet();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void about();
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -529,13 +529,20 @@ void TApplication::run(
 | 
			
		||||
  if (mod == NULL || *mod == '\0')
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  XVT_CONFIG cfg;
 | 
			
		||||
  XVT_CONFIG cfg; memset(&cfg, 0, sizeof(cfg));
 | 
			
		||||
  cfg.menu_bar_ID    = TASK_MENUBAR;
 | 
			
		||||
  cfg.about_box_ID   = 0;
 | 
			
		||||
  cfg.base_appl_name = base.name();
 | 
			
		||||
  cfg.appl_name      = title;
 | 
			
		||||
  cfg.taskwin_title  = dongle().product();
 | 
			
		||||
 | 
			
		||||
  int year, major, minor, patch;
 | 
			
		||||
  if (TApplication::get_version_info(year, major, minor, patch))
 | 
			
		||||
  {
 | 
			
		||||
    TString16 ver; ver.format("%d %d.%d/%d", year, major, minor, patch);
 | 
			
		||||
    xvt_vobj_set_attr(NULL_WIN, ATTR_APPL_VERSION_STRING, (long)(const char*)ver);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  set_xvt_hooks();
 | 
			
		||||
 | 
			
		||||
  _running = TRUE;
 | 
			
		||||
 | 
			
		||||
@ -1852,7 +1852,6 @@ void TMask::on_idle()
 | 
			
		||||
    {
 | 
			
		||||
      TOperable_field& s = (TOperable_field&)fld(_focus);
 | 
			
		||||
      s.on_idle();
 | 
			
		||||
 | 
			
		||||
      if (_msg_field > 0)
 | 
			
		||||
      {
 | 
			
		||||
        TMask_field& f = field(_msg_field);
 | 
			
		||||
@ -1863,14 +1862,15 @@ void TMask::on_idle()
 | 
			
		||||
    }
 | 
			
		||||
    if (_error_severity > 0)
 | 
			
		||||
    {
 | 
			
		||||
      set_focus();
 | 
			
		||||
      switch(_error_severity)
 | 
			
		||||
      {
 | 
			
		||||
      case  2: warning_box(_error_message); break;
 | 
			
		||||
      case  3: error_box(_error_message); break;
 | 
			
		||||
      default: message_box(_error_message); break;
 | 
			
		||||
      }
 | 
			
		||||
      const int es = _error_severity; // Memorizzo per azzerare subito
 | 
			
		||||
      _error_severity = 0;
 | 
			
		||||
      set_focus();
 | 
			
		||||
      switch(es)
 | 
			
		||||
      {
 | 
			
		||||
      case  2: xvt_dm_popup_warning(_error_message); break;
 | 
			
		||||
      case  3: xvt_dm_popup_error  (_error_message); break;
 | 
			
		||||
      default: xvt_dm_popup_message(_error_message); break;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (_test_fld >= 0)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
#include <about.h>
 | 
			
		||||
#include <automask.h>
 | 
			
		||||
#include <colors.h>
 | 
			
		||||
#include <controls.h>
 | 
			
		||||
@ -737,11 +738,13 @@ void TGroup_field::create(WINDOW parent)
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
TOperable_field::TOperable_field(TMask* m)
 | 
			
		||||
               : TMask_field(m), _message(NULL), _handler(NULL)
 | 
			
		||||
               : TMask_field(m), _message(NULL), _handler(NULL), _help(NULL)
 | 
			
		||||
{ }               
 | 
			
		||||
 | 
			
		||||
TOperable_field::~TOperable_field()
 | 
			
		||||
{ 
 | 
			
		||||
  if (_help) 
 | 
			
		||||
    delete _help;
 | 
			
		||||
  if (_message) 
 | 
			
		||||
    delete _message;
 | 
			
		||||
}               
 | 
			
		||||
@ -764,7 +767,7 @@ bool TOperable_field::parse_item(TScanner& scanner)
 | 
			
		||||
{
 | 
			
		||||
  if (scanner.key() == "HE")                    // HELP
 | 
			
		||||
  {
 | 
			
		||||
    scanner.string();                           // Ignored from this version
 | 
			
		||||
    _help = new TString(scanner.string());
 | 
			
		||||
    return true;
 | 
			
		||||
  } 
 | 
			
		||||
  
 | 
			
		||||
@ -802,13 +805,59 @@ bool TOperable_field::on_key(
 | 
			
		||||
  {  
 | 
			
		||||
  case K_F11:
 | 
			
		||||
    if (handler(key))
 | 
			
		||||
    {          
 | 
			
		||||
      TString msg;
 | 
			
		||||
      msg << TR("Identificatore: ") << dlg() << '\n'
 | 
			
		||||
          << TR("Maschera: ") << mask().source_file() << '\n';
 | 
			
		||||
    {      
 | 
			
		||||
      TProperty_sheet p(prompt(), 60, 10);
 | 
			
		||||
      p.add_cat(TR("Sorgente"));
 | 
			
		||||
      TFilename fn = mask().source_file(); fn.lower();
 | 
			
		||||
      p.add_prop(TR("Maschera"), fn);
 | 
			
		||||
      p.add_prop(TR("Personalizzata"), fn.find("custom") > 0 ? "Si" : "No");
 | 
			
		||||
      if (mask().get_sheet() != NULL)
 | 
			
		||||
        p.add_prop(TR("Spreadsheet"), mask().get_sheet()->dlg());
 | 
			
		||||
 | 
			
		||||
      p.add_cat(TR("Informazioni"));
 | 
			
		||||
      TString16 id; id << dlg();
 | 
			
		||||
      // p.add_prop(TR("Tipo"), class_name());  // Per ora ritorna sempre "Field"!
 | 
			
		||||
      p.add_prop(TR("Identificatore"), id);
 | 
			
		||||
      p.add_prop(TR("Lunghezza"), long(size()));
 | 
			
		||||
      if (_help != NULL)
 | 
			
		||||
        p.add_prop(TR("Help"), *_help);
 | 
			
		||||
      p.add_prop(TR("Obbligatorio"), required() ? TR("Si") : TR("No"));
 | 
			
		||||
 | 
			
		||||
      p.add_cat(TR("Database"));
 | 
			
		||||
      id.cut(0);
 | 
			
		||||
      if (field() != NULL)
 | 
			
		||||
        msg << TR("Campo: ") << *field();
 | 
			
		||||
      message_box(msg);
 | 
			
		||||
      {
 | 
			
		||||
        const TIsam_handle f0 = atoi(field()->id());
 | 
			
		||||
        if (f0 <= 0) 
 | 
			
		||||
        {
 | 
			
		||||
          if (main_app().class_id() == CLASS_RELATION_APPLICATION)
 | 
			
		||||
          {
 | 
			
		||||
            TRelation_application& ra = (TRelation_application&)main_app();
 | 
			
		||||
            id = ra.get_relation()->file(0).name();
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
          id << f0;
 | 
			
		||||
        TString80 str; str << *field();
 | 
			
		||||
        p.add_prop(TR("Campo"), str);
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
        // p.add_prop(TR("Campo"), TR("Nessuno")); ???
 | 
			
		||||
        if (class_id() == CLASS_EDIT_FIELD || is_kind_of(CLASS_EDIT_FIELD))
 | 
			
		||||
        {
 | 
			
		||||
          const TEdit_field& ef = (TEdit_field&)*this;
 | 
			
		||||
          const TBrowse* b = ef.browse();
 | 
			
		||||
          if (b != NULL && b->cursor() != NULL)
 | 
			
		||||
            id = b->cursor()->file(0).name();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if (id.full())
 | 
			
		||||
      {
 | 
			
		||||
        p.add_prop(TR("Tabella"), id);
 | 
			
		||||
        p.add_prop(TR("Descrizione"), prefix().description(id));
 | 
			
		||||
      }
 | 
			
		||||
      p.run();
 | 
			
		||||
    }  
 | 
			
		||||
    break;
 | 
			
		||||
  case K_CTRL + K_TAB:
 | 
			
		||||
 | 
			
		||||
@ -474,6 +474,7 @@ class TOperable_field : public TMask_field
 | 
			
		||||
{                
 | 
			
		||||
  // @cmember Comandi da eseguire in caso di modifica del campo
 | 
			
		||||
  TString_array* _message;
 | 
			
		||||
  TString* _help;
 | 
			
		||||
  
 | 
			
		||||
  // @cmember Handler del controllo
 | 
			
		||||
  CONTROL_HANDLER _handler;
 | 
			
		||||
 | 
			
		||||
@ -1757,8 +1757,8 @@ bool TRelation_application::parse_command_line()
 | 
			
		||||
  return _lnflag != 0;
 | 
			
		||||
}                         
 | 
			
		||||
 | 
			
		||||
// il valore di ritorno  indica se attivare l'"automagia" (spedizione dei tasti e 
 | 
			
		||||
// precaricamento della maschera)
 | 
			
		||||
// il valore di ritorno  indica se attivare l'"automagia":
 | 
			
		||||
// spedizione dei tasti e precaricamento della maschera
 | 
			
		||||
bool TRelation_application::load_transaction() 
 | 
			
		||||
{
 | 
			
		||||
  bool retv = FALSE;
 | 
			
		||||
 | 
			
		||||
@ -1028,6 +1028,11 @@ COLOR TProp_field::get_color_property(const char* name) const
 | 
			
		||||
  return col;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TProp_field::for_each_property(PROP_CALLBACK pcb, void* jolly)
 | 
			
		||||
{
 | 
			
		||||
  return xvt_prop_for_each(win().win(), pcb, jolly) != 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static TString_array _items;
 | 
			
		||||
 | 
			
		||||
bool TProp_field::parse_item(TScanner& scanner)
 | 
			
		||||
 | 
			
		||||
@ -143,7 +143,9 @@ public:
 | 
			
		||||
 | 
			
		||||
  const TString& get_property(const char* name) const;
 | 
			
		||||
  COLOR get_color_property(const char* name) const;
 | 
			
		||||
  long get_long_property(const char* name) const;;
 | 
			
		||||
  long get_long_property(const char* name) const;
 | 
			
		||||
 | 
			
		||||
  bool for_each_property(PROP_CALLBACK pcb, void* jolly);
 | 
			
		||||
 | 
			
		||||
  TProp_field(TMask* m);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user