Migliorato caricamento immagini del menu, modificata richiesta ditta
modifica alle maschere del libro unico e relativi indici Gestiti permessi d'uso del programma di manutenzione(Superprassi-Umano mortale) git-svn-id: svn://10.65.10.50/trunk@1331 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
caea7e7e46
commit
5ee2fbbd4c
133
ba/ba0.cpp
133
ba/ba0.cpp
@ -8,20 +8,6 @@
|
||||
#include <utility.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
/*
|
||||
#if XVT_OS == XVT_OS_SCOUNIX
|
||||
#include <sys/stat.h>
|
||||
#else
|
||||
#include <direct.h>
|
||||
#endif
|
||||
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
#include <dos.h>
|
||||
#else
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
*/
|
||||
|
||||
#include "ba0.h"
|
||||
#include "ba0100a.h"
|
||||
|
||||
@ -37,22 +23,16 @@ protected:
|
||||
virtual void handler(WINDOW win, EVENT* ep);
|
||||
|
||||
public:
|
||||
TPicture_mask(const char* name, int dx, int dy, TImage & image, bool remap);
|
||||
TPicture_mask(const char* name, int dx, int dy, TImage& image);
|
||||
virtual ~TPicture_mask() {}
|
||||
};
|
||||
|
||||
|
||||
TPicture_mask::TPicture_mask(const char* name, int dx, int dy, TImage & image, bool remap)
|
||||
TPicture_mask::TPicture_mask(const char* name, int dx, int dy, TImage& image)
|
||||
: TMask(name, 1, dx, dy), _image(image)
|
||||
{
|
||||
if (_image.ok())
|
||||
{
|
||||
if (!remap && MASK_BACK_COLOR != COLOR_DKCYAN)
|
||||
_image.set_clut(6, MASK_BACK_COLOR);
|
||||
else
|
||||
_image.set_palette(win());
|
||||
_image.set_pos(1, 1);
|
||||
}
|
||||
_image.set_palette(win());
|
||||
}
|
||||
|
||||
|
||||
@ -66,21 +46,15 @@ void TPicture_mask::handler(WINDOW win, EVENT* ep)
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
if (_image.ok())
|
||||
{
|
||||
RCT src; xvt_rect_set(&src, 0, 0, _image.width(), _image.height());
|
||||
const short maxx = 42*CHARX;
|
||||
const short maxy = short((long)maxx*src.bottom/src.right);
|
||||
RCT dst; xvt_rect_set(&dst, 1, 1, maxx, maxy);
|
||||
_image.draw(win, dst);
|
||||
_image.draw(win);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
TTemp_window w(win);
|
||||
const int max = 16;
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
TTemp_window w(win);
|
||||
w.rect(i*2, i, max-i*2, max-i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -100,7 +74,7 @@ class TMenu_application : public TApplication
|
||||
TArray _modules, _images;
|
||||
|
||||
int _level, _max;
|
||||
bool _ditta_asked;
|
||||
/* bool _ditta_asked; */
|
||||
|
||||
static int _last_button;
|
||||
static bool _find_button;
|
||||
@ -112,6 +86,7 @@ protected:
|
||||
int find_menu(const char* s) const;
|
||||
bool check_user();
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
virtual bool build_firm_data(long cod, bool flagcom = FALSE);
|
||||
|
||||
@ -121,7 +96,7 @@ protected:
|
||||
bool module_enabled(int module) const { return has_module(module);}
|
||||
|
||||
public:
|
||||
TMenu_application(const char* name) : _name(name), _ditta_asked(FALSE) {}
|
||||
TMenu_application(const char* name) : _name(name) /*, _ditta_asked(FALSE) */ {}
|
||||
};
|
||||
|
||||
int TMenu_application::_last_button = 0;
|
||||
@ -371,7 +346,7 @@ int TMenu_application::do_level()
|
||||
const int width = 78;
|
||||
const int height = 18;
|
||||
const int bwidth = 20;
|
||||
const int x = width-bwidth-12;
|
||||
const int x = width / 2;
|
||||
short id = (short)row.get_int();
|
||||
|
||||
if (_images.objptr(id) == NULL)
|
||||
@ -379,12 +354,21 @@ int TMenu_application::do_level()
|
||||
char* n = format("ba%02d.bmp", id);
|
||||
if (id > 0 && !fexist(n))
|
||||
n = format("ba%02d.bmp", id = 0);
|
||||
TImage * image = new TImage(n);
|
||||
|
||||
TImage orig(n);
|
||||
RCT src; xvt_rect_set(&src, 0, 0, orig.width(), orig.height());
|
||||
const short maxx = width * CHARX / 2 - 4;
|
||||
const short maxy = short((long)maxx*src.bottom/src.right);
|
||||
|
||||
TImage* image = new TImage(orig, maxx, maxy);
|
||||
if (id == 0 && MASK_BACK_COLOR != COLOR_DKCYAN)
|
||||
image->set_clut(6, MASK_BACK_COLOR);
|
||||
image->set_pos(1, 1);
|
||||
|
||||
_images.add(image, id);
|
||||
}
|
||||
|
||||
TPicture_mask menu(head, width, height, (TImage &) _images[id], id != 0);
|
||||
TPicture_mask menu(head, width, height, (TImage &) _images[id]);
|
||||
|
||||
int y = 1;
|
||||
|
||||
@ -480,21 +464,54 @@ bool TMenu_application::check_user()
|
||||
users.put("USERNAME", utente);
|
||||
|
||||
pwd = "";
|
||||
if (users.read() == NOERR)
|
||||
|
||||
int err = users.read(_isequal, _lock);
|
||||
if (err == NOERR)
|
||||
{
|
||||
pwd = decode(users.get("PASSWORD"));
|
||||
}
|
||||
else
|
||||
if (utente == "PRASSI")
|
||||
pwd = "pr.assi";
|
||||
{
|
||||
pwd = "pr.assi";
|
||||
users.zero();
|
||||
users.put("USERNAME", utente);
|
||||
users.put("USERDESC", utente);
|
||||
users.put("PASSWORD", encode(pwd));
|
||||
users.write();
|
||||
err = users.read(_isequal, _lock);
|
||||
}
|
||||
|
||||
ok = pwd.not_empty() && pwd == m.get(F_PASSWORD);
|
||||
|
||||
if (ok)
|
||||
user() = utente;
|
||||
{
|
||||
ok = !users.get_bool("CONNECTED");
|
||||
if (!ok)
|
||||
{
|
||||
ok = yesno_box("L'utente %s risulta essere gia' collegato\n"
|
||||
"Si desidera continuare ugualmente?", (const char*)utente);
|
||||
}
|
||||
if (ok)
|
||||
user() = utente;
|
||||
}
|
||||
else
|
||||
{
|
||||
error_box("Utente e/o password errata:\nfare attenzione alle maiuscole");
|
||||
m.set(F_PASSWORD,"");
|
||||
}
|
||||
}
|
||||
|
||||
if (err == NOERR)
|
||||
{
|
||||
if (ok)
|
||||
{
|
||||
users.put("CONNECTED", "X");
|
||||
users.rewrite();
|
||||
}
|
||||
else users.read(_isequal, _unlock);
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
@ -515,6 +532,19 @@ bool TMenu_application::create()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TMenu_application::destroy()
|
||||
{
|
||||
TLocalisamfile users(LF_USER);
|
||||
users.put("USERNAME", user());
|
||||
int err = users.read(_isequal, _lock);
|
||||
if (err == NOERR)
|
||||
{
|
||||
users.zero("CONNECTED");
|
||||
users.rewrite();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TMenu_application::menu(MENU_TAG)
|
||||
{
|
||||
@ -540,7 +570,7 @@ bool TMenu_application::menu(MENU_TAG)
|
||||
{
|
||||
const TString16 flags(row.get());
|
||||
if (flags.find('F') >= 0)
|
||||
_ditta_asked = ok = set_firm();
|
||||
/*_ditta_asked = */ ok = set_firm();
|
||||
if (ok)
|
||||
{
|
||||
refarray[i++] = _level;
|
||||
@ -549,15 +579,16 @@ bool TMenu_application::menu(MENU_TAG)
|
||||
}
|
||||
else
|
||||
{
|
||||
const TString16 module(cmd2name(option));
|
||||
if (!_ditta_asked && module.left(2) == "cg" && module != "cg5100")
|
||||
_ditta_asked = ok = set_firm();
|
||||
if (ok)
|
||||
{
|
||||
prefix().set("DEF"); // Aggiorna prefix
|
||||
TExternal_app a(option);
|
||||
a.run();
|
||||
}
|
||||
/*
|
||||
const TString16 module(cmd2name(option));
|
||||
if (!_ditta_asked && module.left(2) == "cg" && module.left(3) != "cg5")
|
||||
_ditta_asked = ok = set_firm();
|
||||
*/
|
||||
prefix().set("DEF"); // Aggiorna prefix
|
||||
if (get_firm() == 0)
|
||||
set_firm();
|
||||
TExternal_app a(option);
|
||||
a.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -580,6 +611,8 @@ bool TMenu_application::menu(MENU_TAG)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
TApplication::check_parameters(argc, argv);
|
||||
|
232
ba/ba1100.cpp
232
ba/ba1100.cpp
@ -31,10 +31,10 @@ struct direct
|
||||
|
||||
class TManutenzione_app : public TApplication
|
||||
{
|
||||
TDir_sheet * _browse;
|
||||
TMask * _mask;
|
||||
long _firm;
|
||||
TRec_sheet* _rec;
|
||||
TDir_sheet* _browse;
|
||||
TMask* _mask;
|
||||
long _firm;
|
||||
TRec_sheet* _rec;
|
||||
|
||||
protected:
|
||||
virtual bool menu (MENU_TAG);
|
||||
@ -52,7 +52,7 @@ protected:
|
||||
const char* dumpfilename(const FileDes& dep) const;
|
||||
|
||||
public:
|
||||
TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL) {}
|
||||
TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0) {}
|
||||
|
||||
};
|
||||
|
||||
@ -253,12 +253,23 @@ bool TManutenzione_app::create() // initvar e arrmask
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!set_firm())
|
||||
return FALSE;
|
||||
|
||||
const bool superprassi = user() == "PRASSI";
|
||||
|
||||
_mask = new TMask ("ba1100a");
|
||||
set_firm();
|
||||
_browse = new TDir_sheet ("Manutenzione file di sistema") ;
|
||||
_browse->add_button(DLG_INSFILE, "Inserisce", K_F6);
|
||||
_browse->add_button(DLG_CONVERT, "Converte", K_F7);
|
||||
_browse->add_button(DLG_ADDFILE, "Aggiunge", K_F8);
|
||||
_browse = new TDir_sheet ("Manutenzione file di sistema", superprassi ? 0xC : 0x8);
|
||||
|
||||
if (superprassi)
|
||||
{
|
||||
_mask->enable(-1); // Abilita campi privilegiati
|
||||
|
||||
_browse->add_button(DLG_INSFILE, "~Inserisci", K_F6);
|
||||
_browse->add_button(DLG_CONVERT, "~Converti", K_F7);
|
||||
_browse->add_button(DLG_ADDFILE, "~Aggiungi", K_F8);
|
||||
}
|
||||
|
||||
dispatch_e_menu(BAR_ITEM(1));
|
||||
}
|
||||
enable_menu_item(M_FILE_PRINT);
|
||||
@ -337,11 +348,14 @@ void TManutenzione_app::edit_riga (long riga_sel, TToken_string& riga)
|
||||
FileDes dep;
|
||||
TDir d;
|
||||
const int logicnum = int(riga_sel) + 1;
|
||||
|
||||
_mask->enable(DLG_PACK);
|
||||
_mask->enable(DLG_RECORD);
|
||||
_mask->enable(DLG_LOAD);
|
||||
|
||||
const bool superprassi = user() == "PRASSI";
|
||||
|
||||
_mask->enable(DLG_PACK, superprassi);
|
||||
_mask->enable(DLG_RECORD, superprassi);
|
||||
_mask->enable(DLG_LOAD, superprassi);
|
||||
_mask->enable(DLG_DUMP);
|
||||
|
||||
_mask->show(F_TAB, logicnum >= LF_TABGEN && logicnum <= LF_TAB);
|
||||
_mask->set (FLD_NUM, riga.get(0));
|
||||
_mask->set (FLD_NOME, riga.get());
|
||||
@ -366,100 +380,102 @@ void TManutenzione_app::edit_riga (long riga_sel, TToken_string& riga)
|
||||
switch (tasto)
|
||||
{
|
||||
case K_F4:
|
||||
{
|
||||
const TFilename filename(_mask->get(FLD_NOME));
|
||||
|
||||
if (logicnum > 1)
|
||||
{
|
||||
const TFilename filename(_mask->get(FLD_NOME));
|
||||
TEdit_file ef;
|
||||
ef.browse(logicnum, filename);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case K_F5:
|
||||
case K_F6:
|
||||
case K_F7:
|
||||
case K_F8:
|
||||
case K_ENTER:
|
||||
{
|
||||
strcpy (dep.SysName,_mask->get (FLD_NOME));
|
||||
dep.EOD = atol(_mask->get (FLD_EOD));
|
||||
dep.Flags = atol(_mask->get (FLD_FLAG));
|
||||
strcpy (dep.Des,_mask->get (FLD_DESC));
|
||||
strcpy (dep.FCalc,_mask->get (FLD_FORMULA));
|
||||
const TRecnotype eox = atol(_mask->get(FLD_EOX));
|
||||
|
||||
_browse->dir()->get(logicnum, _lock, _nordir, _sysdirop);
|
||||
_browse->dir()->set(dep.SysName, dep.EOD, dep.Flags,
|
||||
dep.Des, dep.FCalc);
|
||||
_browse->dir()->put(logicnum, _nordir, _sysdirop);
|
||||
|
||||
{
|
||||
TSystemisamfile f(logicnum);
|
||||
|
||||
if (eox != oldeox)
|
||||
{
|
||||
d.get(logicnum);
|
||||
if (!fexist(d.name())) f.build(eox);
|
||||
else f.extend(eox);
|
||||
_browse->dir()->get(logicnum, _nolock, _nordir, _sysdirop);
|
||||
}
|
||||
if (tasto == K_F5)
|
||||
{
|
||||
f.packfile();
|
||||
f.packindex();
|
||||
}
|
||||
else
|
||||
if (tasto == K_F6)
|
||||
break;
|
||||
case K_F5:
|
||||
case K_F6:
|
||||
case K_F8:
|
||||
if (!superprassi)
|
||||
{
|
||||
_rec = new TRec_sheet(logicnum, _mask->get(F_TAB));
|
||||
_rec->edit();
|
||||
delete _rec;
|
||||
_rec = NULL;
|
||||
error_box("Funzione non ammessa per l'utente %s", (const char*)user());
|
||||
break;
|
||||
}
|
||||
case K_F7:
|
||||
case K_ENTER:
|
||||
{
|
||||
strcpy (dep.SysName,_mask->get (FLD_NOME));
|
||||
dep.EOD = atol(_mask->get (FLD_EOD));
|
||||
dep.Flags = atol(_mask->get (FLD_FLAG));
|
||||
strcpy (dep.Des,_mask->get (FLD_DESC));
|
||||
strcpy (dep.FCalc,_mask->get (FLD_FORMULA));
|
||||
const TRecnotype eox = atol(_mask->get(FLD_EOX));
|
||||
|
||||
_browse->dir()->get(logicnum, _lock, _nordir, _sysdirop);
|
||||
_browse->dir()->set(dep.SysName, dep.EOD, dep.Flags,
|
||||
dep.Des, dep.FCalc);
|
||||
_browse->dir()->put(logicnum, _nordir, _sysdirop);
|
||||
|
||||
{
|
||||
TSystemisamfile f(logicnum);
|
||||
|
||||
if (eox != oldeox)
|
||||
{
|
||||
d.get(logicnum);
|
||||
if (!fexist(d.name())) f.build(eox);
|
||||
else f.extend(eox);
|
||||
_browse->dir()->get(logicnum, _nolock, _nordir, _sysdirop);
|
||||
}
|
||||
if (tasto == K_F5)
|
||||
{
|
||||
f.packfile();
|
||||
f.packindex();
|
||||
}
|
||||
else
|
||||
if (tasto == K_F7)
|
||||
if (tasto == K_F6)
|
||||
{
|
||||
TMask m("ba1100b");
|
||||
|
||||
TFilename nout(dumpfilename(dep));
|
||||
m.set(FLD_OUTFILE, nout);
|
||||
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
nout = m.get(FLD_OUTFILE);
|
||||
if (nout.not_empty())
|
||||
{
|
||||
const char fs = *esc(m.get(FLD_FS));
|
||||
const char fd = *esc(m.get(FLD_FD));
|
||||
const char rs = *esc(m.get(FLD_RS));
|
||||
const bool withdel = m.get_bool(FLD_WITHDEL);
|
||||
const int keyno = m.get_int(FLD_KEYNO);
|
||||
f.dump(nout, keyno, fs, fd, rs, withdel);
|
||||
}
|
||||
}
|
||||
_rec = new TRec_sheet(logicnum, _mask->get(F_TAB));
|
||||
_rec->edit();
|
||||
delete _rec;
|
||||
_rec = NULL;
|
||||
}
|
||||
else
|
||||
if (tasto == K_F8)
|
||||
if (tasto == K_F7)
|
||||
{
|
||||
TMask m("ba1100c");
|
||||
TFilename ninp(dumpfilename(dep));
|
||||
m.set(FLD_INFILE, ninp);
|
||||
TMask m("ba1100b");
|
||||
|
||||
TFilename nout(dumpfilename(dep));
|
||||
m.set(FLD_OUTFILE, nout);
|
||||
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
char fs = *esc(m.get(FLD_FS));
|
||||
char fd = *esc(m.get(FLD_FD));
|
||||
char rs = *esc(m.get(FLD_RS));
|
||||
ninp = m.get(FLD_INFILE);
|
||||
f.load(ninp, fs, fd, rs);
|
||||
nout = m.get(FLD_OUTFILE);
|
||||
if (nout.not_empty())
|
||||
{
|
||||
const char fs = *esc(m.get(FLD_FS));
|
||||
const char fd = *esc(m.get(FLD_FD));
|
||||
const char rs = *esc(m.get(FLD_RS));
|
||||
const bool withdel = m.get_bool(FLD_WITHDEL);
|
||||
const int keyno = m.get_int(FLD_KEYNO);
|
||||
f.dump(nout, keyno, fs, fd, rs, withdel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
else
|
||||
if (tasto == K_F8)
|
||||
{
|
||||
TMask m("ba1100c");
|
||||
TFilename ninp(dumpfilename(dep));
|
||||
m.set(FLD_INFILE, ninp);
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
char fs = *esc(m.get(FLD_FS));
|
||||
char fd = *esc(m.get(FLD_FD));
|
||||
char rs = *esc(m.get(FLD_RS));
|
||||
ninp = m.get(FLD_INFILE);
|
||||
f.load(ninp, fs, fd, rs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TManutenzione_app::delete_riga ()
|
||||
@ -648,8 +664,22 @@ void TManutenzione_app::convert_dir()
|
||||
}
|
||||
|
||||
void TManutenzione_app::update()
|
||||
|
||||
{
|
||||
TIsamfile utenti(LF_USER, FALSE);
|
||||
utenti.open(_excllock);
|
||||
|
||||
for (int err = utenti.first(); err == NOERR; err = utenti.next())
|
||||
{
|
||||
const TString16 u = utenti.get("USERNAME");
|
||||
if (u != "PRASSI" && utenti.get_bool("CONNECTED"))
|
||||
{
|
||||
error_box("La conversione non puo' essere effettuata\n"
|
||||
"se ci sono utenti collegati: %s", (const char*)u);
|
||||
utenti.close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
long firm = get_firm();
|
||||
TString pref;
|
||||
if (firm == 0) pref = prefix().name();
|
||||
@ -691,6 +721,7 @@ void TManutenzione_app::update()
|
||||
if (firm > 0) set_firm(firm);
|
||||
else prefix().set(pref);
|
||||
|
||||
utenti.close();
|
||||
end_wait();
|
||||
}
|
||||
|
||||
@ -707,7 +738,15 @@ bool TManutenzione_app::menu(MENU_TAG m)
|
||||
|
||||
disable_menu_item(M_FILE_NEW);
|
||||
|
||||
switch (_browse->run())
|
||||
KEY key = _browse->run();
|
||||
|
||||
if (key != K_ENTER && key != K_ESC && user() != "PRASSI")
|
||||
{
|
||||
error_box("Operazione non permessa all'utente %s", (const char*)user());
|
||||
key = 0;
|
||||
}
|
||||
|
||||
switch (key)
|
||||
{
|
||||
case K_F6:
|
||||
riga_selezionata = _browse->selected();
|
||||
@ -724,8 +763,9 @@ bool TManutenzione_app::menu(MENU_TAG m)
|
||||
case K_DEL: delete_riga(); break;
|
||||
|
||||
case K_ESC: done = TRUE; break;
|
||||
|
||||
case K_F7: update(); break;
|
||||
|
||||
case K_F7:
|
||||
update(); break;
|
||||
|
||||
case K_F8:
|
||||
_browse->add();
|
||||
|
@ -22,12 +22,12 @@ class TDir_sheet : public TSheet
|
||||
FileDes _s_dir;
|
||||
long _items;
|
||||
|
||||
protected: set_firm();
|
||||
|
||||
void page_build(long first, byte rows);
|
||||
protected:
|
||||
virtual void page_build(long first, byte rows);
|
||||
virtual bool on_key(KEY k);
|
||||
|
||||
public:
|
||||
TDir_sheet(const char* title,const char* columns="N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Formula@33|Flags@7",byte buttons=0xC);
|
||||
TDir_sheet(const char* title,byte buttons=0x8,const char* col = "N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Formula@33|Flags@7");
|
||||
~TDir_sheet();
|
||||
TDir* dir() const { return _dir; }
|
||||
TTrec* rec() const { return _rec; }
|
||||
|
@ -1,117 +1,136 @@
|
||||
#include <defmask.h>
|
||||
#include <tokens.h>
|
||||
|
||||
#include "ba1100a.h"
|
||||
|
||||
PAGE "Modifica Archivio" -1 -1 70 15
|
||||
|
||||
NUMBER FLD_NUM 4
|
||||
NUMBER FLD_NUM 4
|
||||
BEGIN
|
||||
FLAGS "RD"
|
||||
FLAGS "RD"
|
||||
PROMPT 2 1 "Numero "
|
||||
END
|
||||
|
||||
STRING FLD_NOME 43
|
||||
STRING FLD_NOME 43
|
||||
BEGIN
|
||||
PROMPT 2 2 "Nome "
|
||||
HELP "Nome del file"
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING FLD_DESC 43
|
||||
STRING FLD_DESC 43
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
HELP "Descrizione assegnata al file"
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING FLD_FORMULA 43
|
||||
STRING FLD_FORMULA 43
|
||||
BEGIN
|
||||
PROMPT 2 4 "Formula "
|
||||
HELP "Formula per il calcolo su file"
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER FLD_EOD 7
|
||||
NUMBER FLD_EOD 7
|
||||
BEGIN
|
||||
PROMPT 2 5 "Record usati "
|
||||
HELP "Numero di record utilizzati"
|
||||
WARNING "Numero di record errato"
|
||||
NUM_EXPR {(#THIS_FIELD>=0) && (#THIS_FIELD<=#FLD_EOX)}
|
||||
FLAGS "R"
|
||||
WARNING "Numero di record errato"
|
||||
NUM_EXPR {(#THIS_FIELD>=0) && (#THIS_FIELD<=#FLD_EOX)}
|
||||
FLAGS "DR"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN FLD_EXTEND
|
||||
BEGIN
|
||||
PROMPT 2 6 "Cambia dimensione"
|
||||
HELP "Indicare se si desidera cambiare la dimensione del file"
|
||||
MESSAGE FALSE DISABLE,FLD_EOX|UNDO,FLD_EOX
|
||||
MESSAGE TRUE ENABLE,FLD_EOX
|
||||
MESSAGE FALSE DISABLE,FLD_EOX|UNDO,FLD_EOX
|
||||
MESSAGE TRUE ENABLE,FLD_EOX
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER FLD_EOX 7
|
||||
NUMBER FLD_EOX 7
|
||||
BEGIN
|
||||
PROMPT 30 6 "Dimensione "
|
||||
HELP "Dimensione da assegnare al file"
|
||||
WARNING "Dimensione non corretta"
|
||||
NUM_EXPR {#THIS_FIELD>=#FLD_EOD}
|
||||
FLAGS "RD"
|
||||
WARNING "Dimensione non corretta"
|
||||
NUM_EXPR {#THIS_FIELD>=#FLD_EOD}
|
||||
FLAGS "DR"
|
||||
END
|
||||
|
||||
NUMBER FLD_FLAG 7
|
||||
NUMBER FLD_FLAG 7
|
||||
BEGIN
|
||||
PROMPT 2 7 "Flags "
|
||||
HELP "Flags del file"
|
||||
FLAGS "R"
|
||||
FLAGS "DR"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_LEN 7
|
||||
NUMBER F_LEN 7
|
||||
BEGIN
|
||||
PROMPT 30 7 "Lunghezza "
|
||||
FLAGS "RD"
|
||||
FLAGS "RD"
|
||||
END
|
||||
|
||||
STRING F_TAB 3
|
||||
BEGIN
|
||||
PROMPT 2 9 "Tabella "
|
||||
FLAGS "U"
|
||||
FLAGS "DU"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -14 -3 ""
|
||||
PROMPT -14 -3 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -24 -3 ""
|
||||
PROMPT -24 -3 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_PACK 9 2
|
||||
BEGIN
|
||||
PROMPT -34 -3 "Compatta"
|
||||
MESSAGE EXIT,K_F5
|
||||
PROMPT -34 -3 "Compatta"
|
||||
MESSAGE EXIT,K_F5
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_RECORD 9 2
|
||||
BEGIN
|
||||
PROMPT -44 -3 "Record"
|
||||
MESSAGE EXIT,K_F6
|
||||
PROMPT -44 -3 "Record"
|
||||
MESSAGE EXIT,K_F6
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_DUMP 9 2
|
||||
BEGIN
|
||||
PROMPT -14 -1 "Scarica"
|
||||
MESSAGE EXIT,K_F7
|
||||
PROMPT -14 -1 "Scarica"
|
||||
MESSAGE EXIT,K_F7
|
||||
END
|
||||
|
||||
BUTTON DLG_LOAD 9 2
|
||||
BEGIN
|
||||
PROMPT -24 -1 "Carica"
|
||||
MESSAGE EXIT,K_F8
|
||||
PROMPT -24 -1 "Carica"
|
||||
MESSAGE EXIT,K_F8
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 9 2
|
||||
BEGIN
|
||||
PROMPT -34 -1 "Modifica"
|
||||
MESSAGE EXIT,K_F4
|
||||
PROMPT -34 -1 "Modifica"
|
||||
MESSAGE EXIT,K_F4
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -59,14 +59,14 @@ BEGIN
|
||||
HELP "Carattere delimitatore di record"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -14 -1 ""
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -24 -1 ""
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -36,11 +36,13 @@ void TDir_sheet::add ()
|
||||
update();
|
||||
}
|
||||
|
||||
TDir_sheet::TDir_sheet(const char* title, const char * columns, byte buttons)
|
||||
:TSheet(-1,-1, 0, 0, title,columns,buttons)
|
||||
TDir_sheet::TDir_sheet(const char* title, byte buttons, const char* colonne)
|
||||
:TSheet(-1,-1, 0, 0, title, colonne, buttons)
|
||||
{
|
||||
_dir = new TDir;
|
||||
_rec = new TTrec;
|
||||
|
||||
maximize();
|
||||
rebuild();
|
||||
}
|
||||
|
||||
@ -50,6 +52,26 @@ TDir_sheet::~TDir_sheet()
|
||||
delete _rec;
|
||||
}
|
||||
|
||||
|
||||
bool TDir_sheet::on_key(KEY key)
|
||||
{
|
||||
if (key > K_CTRL)
|
||||
switch (key-K_CTRL)
|
||||
{
|
||||
case 'A':
|
||||
key = K_F8; break;
|
||||
case 'C':
|
||||
key = K_F7; break;
|
||||
case 'E':
|
||||
key = K_DEL; break;
|
||||
case 'I':
|
||||
key = K_INS; break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TSheet::on_key(key);
|
||||
}
|
||||
|
||||
void TDir_sheet::page_build(long first, byte rows)
|
||||
|
||||
{
|
||||
|
@ -1,8 +1,9 @@
|
||||
#include <relation.h>
|
||||
#include <mask.h>
|
||||
#include <sheet.h>
|
||||
#include <progind.h>
|
||||
#include <defmask.h>
|
||||
#include <mask.h>
|
||||
#include <relation.h>
|
||||
#include <prefix.h>
|
||||
#include <progind.h>
|
||||
#include <sheet.h>
|
||||
|
||||
#include "ba1100.h"
|
||||
|
||||
@ -34,12 +35,20 @@ bool TEdit_file::browse(int logicnum, const char* name)
|
||||
if (t == _realfld || t == _intfld || t == _longfld || t == _wordfld || t == _realfld)
|
||||
head << 'R';
|
||||
}
|
||||
|
||||
const bool superprassi = user() == "PRASSI";
|
||||
|
||||
KEY ch;
|
||||
TCursor_sheet sheet(&cursor, trac, name, head, 6);
|
||||
TCursor_sheet sheet(&cursor, trac, name, head, superprassi ? 6 : 0);
|
||||
|
||||
while ((ch = sheet.run()) != K_ESC)
|
||||
{
|
||||
{
|
||||
if (!superprassi)
|
||||
{
|
||||
error_box("Funzione non ammessa per l'utente %s", (const char*)user());
|
||||
ch = K_ESC;
|
||||
}
|
||||
|
||||
if (ch == K_DEL && sheet.one_checked())
|
||||
{
|
||||
TProgind* pind = NULL;
|
||||
@ -52,8 +61,7 @@ bool TEdit_file::browse(int logicnum, const char* name)
|
||||
if (sheet.checked(j))
|
||||
{
|
||||
if (!go && !first)
|
||||
go = yesno_box("Confermi la cancellazione dei %d "
|
||||
"record indicati?", sheet.checked());
|
||||
go = yesno_box("Si desidera cancellare i %d record indicati?", sheet.checked());
|
||||
first = TRUE;
|
||||
|
||||
if (!pind)
|
||||
@ -110,6 +118,8 @@ bool TEdit_file::browse(int logicnum, const char* name)
|
||||
if (edit_record(curr,FALSE) == K_ENTER)
|
||||
cursor.file().write();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
sheet.force_update();
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ class TTestSheet : public TDir_sheet
|
||||
protected:
|
||||
void page_build(long first, byte rows);
|
||||
public:
|
||||
TTestSheet(const char* titolo, const char* colonne="@1|N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Flags@7", byte bottoni=0x0);
|
||||
TTestSheet(const char* titolo, byte bottoni = 0x0);
|
||||
~TTestSheet() ;
|
||||
void sr_status(bool save=TRUE);
|
||||
};
|
||||
|
@ -22,8 +22,8 @@ extern "C" {
|
||||
void cgettime(char *);
|
||||
}
|
||||
|
||||
TTestSheet::TTestSheet(const char* titolo, const char* colonne,byte bottoni)
|
||||
:TDir_sheet(titolo, colonne, bottoni)
|
||||
TTestSheet::TTestSheet(const char* titolo, byte bottoni)
|
||||
:TDir_sheet(titolo, bottoni, "@1|N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Flags@7")
|
||||
{}
|
||||
|
||||
TTestSheet::~TTestSheet()
|
||||
|
@ -28,6 +28,8 @@ int main(int argc, char** argv)
|
||||
rt = ba3700(argc,argv) ; break;
|
||||
case 7:
|
||||
rt = ba3800(argc,argv) ; break;
|
||||
case 8:
|
||||
rt = ba3900(argc,argv) ; break;
|
||||
default:
|
||||
error_box(usage, argv[0]) ; break;
|
||||
}
|
||||
|
1
ba/ba3.h
1
ba/ba3.h
@ -9,5 +9,6 @@ int ba3500(int argc, char* argv[]);
|
||||
int ba3600(int argc, char* argv[]);
|
||||
int ba3700(int argc, char* argv[]);
|
||||
int ba3800(int argc, char* argv[]);
|
||||
int ba3900(int argc, char* argv[]);
|
||||
|
||||
#endif // __BA3_H
|
||||
|
@ -53,3 +53,12 @@ MENUBAR MENU_BAR(7)
|
||||
MENU MENU_BAR(7)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
/*
|
||||
* ba3 -8
|
||||
*/
|
||||
|
||||
MENUBAR MENU_BAR(8)
|
||||
|
||||
MENU MENU_BAR(8)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
#include "batbban.h"
|
||||
|
||||
TOOLBAR "" 0 18 0 3
|
||||
|
||||
/*
|
||||
BUTTON DLG_NULL 8
|
||||
BEGIN
|
||||
PROMPT -16 -3 "~Delega"
|
||||
MESSAGE RUN,ba2,-0,del#F_CODICEABI
|
||||
END
|
||||
|
||||
*/
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
@ -42,14 +42,17 @@ BEGIN
|
||||
FLAGS "U"
|
||||
FIELD NUMREG
|
||||
USE LF_INDLIB
|
||||
JOIN %LBU INTO CODTAB=ANNO+CODLIB
|
||||
// JOIN %LBU INTO CODTAB=ANNO+CODLIB
|
||||
INPUT ANNO F_ANNO
|
||||
INPUT CODLIB F_CODLIB
|
||||
INPUT NUMREG F_INDEX
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Codice Libro Unico" CODLIB
|
||||
// DISPLAY "Descrizione@50" %LBU->S0
|
||||
DISPLAY "Indice@7" NUMREG
|
||||
DISPLAY "Descrizione@50" %LBU->S0
|
||||
DISPLAY "Ditta" CODDITTA
|
||||
DISPLAY "Mese" MESEREG
|
||||
DISPLAY "Registro" CODREG
|
||||
OUTPUT F_ANNO ANNO
|
||||
OUTPUT F_CODLIB CODLIB
|
||||
OUTPUT F_INDEX NUMREG
|
||||
|
@ -101,7 +101,7 @@ BEGIN
|
||||
HELP "Codice del libro sociale a cui fa riferimento il registro"
|
||||
END
|
||||
|
||||
LIST F_TIPO 26
|
||||
LIST F_TIPO 1 26
|
||||
BEGIN
|
||||
PROMPT 30 5 "Tipo "
|
||||
HELP "Tipo di registro"
|
||||
|
@ -90,7 +90,7 @@
|
||||
8|IV direttiva CEE|ba3 -7 D
|
||||
9|Prima nota|2|7
|
||||
9|Prima nota|cg2 -0
|
||||
9|Elimina movimenti provvisori|cg2 -1
|
||||
9|Gestione movimenti provvisori|cg2 -1
|
||||
9|IVA|10|5
|
||||
9|Lista movimenti|cg3 -0
|
||||
9|Stampa Mastrini|cg3 -1
|
||||
@ -103,6 +103,8 @@
|
||||
10|IVA|2|5
|
||||
10|Parametri liquidazione|cg5 -3
|
||||
10|Liquidazione|cg4 -2
|
||||
10|Estrazione deleghe|cg4 -2 -D
|
||||
10|Calcolo acconti|cg4 -2 -A
|
||||
10|Visualizzazione liquidazione|cg5 -5
|
||||
10|Deleghe|ba3 -0 %del
|
||||
10|Stampa deleghe|cg1 -3
|
||||
@ -129,7 +131,7 @@
|
||||
13|Servizio|16|7
|
||||
14|Gestione libro unico|2|7
|
||||
14|Gestione libro unico|ba3 -0 %lbu
|
||||
14|Gestione indici libro unico|ba3 -0 %inl
|
||||
14|Gestione indici libro unico|ba3 -8
|
||||
14|Tabella vidimazioni|ba3 -0 %vid
|
||||
14|Stampa indici libro unico|ba3 -5
|
||||
14|Ripristino indici libro unico|cg5 -4 inl
|
||||
|
Loading…
x
Reference in New Issue
Block a user