144 lines
2.7 KiB
C++
Executable File
144 lines
2.7 KiB
C++
Executable File
#include <confapp.h>
|
|
#include <urldefid.h>
|
|
#include <utility.h>
|
|
#include <mask.h>
|
|
#include <maskfld.h>
|
|
#include <relation.h>
|
|
#include <xvtility.h>
|
|
|
|
bool TConfig_application::create()
|
|
{
|
|
TApplication::create();
|
|
|
|
_last_choice = BAR_ITEM(1);
|
|
|
|
// process args
|
|
TString arg(16);
|
|
for (int i = 0; i < argc(); i++)
|
|
{
|
|
arg = argv(i);
|
|
if (arg == "-c")
|
|
_which_config = atoi(argv(++i));
|
|
else
|
|
if (arg[0] == '-')
|
|
continue;
|
|
else
|
|
{
|
|
TString* argp = new TString(arg);
|
|
_paragraphs.add(argp);
|
|
}
|
|
}
|
|
|
|
user_create();
|
|
dispatch_e_menu(_last_choice);
|
|
return TRUE;
|
|
}
|
|
|
|
bool TConfig_application::destroy()
|
|
{
|
|
bool b = user_destroy();
|
|
TApplication::destroy();
|
|
return b;
|
|
}
|
|
|
|
bool TConfig_application::menu(MENU_TAG m)
|
|
{
|
|
// funziona da se' fino a 20 voci della menubar
|
|
if (m >= BAR_ITEM(1) && m <= BAR_ITEM(20))
|
|
{
|
|
_last_choice = m;
|
|
do_config((m - BAR_ITEM(0))/100);
|
|
}
|
|
return xvt_test_menu_tag(BAR_ITEM(2));
|
|
}
|
|
|
|
void TConfig_application::do_config(int m)
|
|
{
|
|
for (;;)
|
|
{
|
|
TString par = name();
|
|
if (m < _paragraphs.items())
|
|
par = (TString&)_paragraphs[m];
|
|
else par.cut(2);
|
|
|
|
TConfig cnf(_which_config, par);
|
|
|
|
TString maskname(cnf.get("EdMask"));
|
|
if (!maskname.empty())
|
|
{
|
|
TMask m(maskname);
|
|
|
|
// carica campi
|
|
for (int i = 0; i < m.fields(); i++)
|
|
{
|
|
TMask_field& f = m.fld(i);
|
|
const TFieldref* fref = f.field();
|
|
if (fref != NULL)
|
|
{
|
|
const char* fname = fref->name();
|
|
if (fname != NULL)
|
|
{
|
|
TString& oldvl = cnf.get(fname);
|
|
if (!oldvl.empty())
|
|
f.set(oldvl);
|
|
}
|
|
}
|
|
}
|
|
|
|
// run mask
|
|
if (!preprocess_config(m,cnf))
|
|
break;
|
|
|
|
int k = m.run();
|
|
if (!postprocess_config(m,cnf))
|
|
break;
|
|
|
|
if (k == K_ENTER)
|
|
{
|
|
// aggiusta campi
|
|
for (i = 0; i < m.fields(); i++)
|
|
{
|
|
TMask_field& f = m.fld(i);
|
|
if (f.dirty())
|
|
{
|
|
const TFieldref* fref = f.field();
|
|
if (fref != NULL)
|
|
{
|
|
const char* fname = fref->name();
|
|
const char* value = f.get();
|
|
const char* oldvl = cnf.get(fname);
|
|
if (postprocess_config_changed(par,fname,
|
|
oldvl,value))
|
|
cnf.set(fname, value, NULL, TRUE);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else break;
|
|
}
|
|
else
|
|
{
|
|
warning_box("Nessun parametro da configurare");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool TConfig_application::preprocess_config (TMask& mask, TConfig& config)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
bool TConfig_application::postprocess_config (TMask& mask, TConfig& config)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
bool TConfig_application::postprocess_config_changed(const char* par,
|
|
const char* var,
|
|
const char* oldv,
|
|
const char* newv)
|
|
{
|
|
return TRUE;
|
|
}
|