campo-sirio/lv/lv0200.cpp

97 lines
2.2 KiB
C++
Executable File

#include <applicat.h>
#include <reprint.h>
#include "lvlib.h"
#include "lv0201.h"
#include "lv0b00.h"
class TStampa_tabelle_lv : public TSkeleton_application
{
protected:
virtual void main_loop();
virtual void print();
};
void TStampa_tabelle_lv::print()
{
WINDOW win = cur_win(); // Trova la finestra corrente di XVT
if (win != NULL_WIN && win != TASK_WIN) // E' una finestra valida?
{
TWindow* w = (TWindow*)xvt_vobj_get_data(win); // Risale alla classe originale
if (w != NULL) // E' una TWindow valida? (sarebbe TMask)
w->stop_run(K_ENTER); // Simula la pressione del bottone stampa
}
}
void TStampa_tabelle_lv::main_loop()
{
bool repcom = false;
// Costruisce il nome del report in base alla riga di comando
TFilename rep;
if (argc() > 2)
{
rep = argv(2); rep.lower();
if (rep == "repcom")
{
rep.cut(0);
repcom = true;
}
else
{
rep.strip("-&%$^");
if (rep.len() == 3)
rep.insert("lvst");
rep.ext("rep");
}
}
TLV_report r;
bool ok = true;
while (ok)
{
if (repcom)
ok = handle_repcom(r);
else
{
if (rep.starts_with("lv0a00"))
ok = handle_lv0a00(r, rep);
else
{
TFilename mskname(rep); mskname.ext("");
TMask m(mskname);
if (m.find_by_id(F_REPORT))
{
ok = m.run() == K_ENTER;
if (ok)
{
TFilename crep = m.get(F_REPORT);
ok = r.load(crep.full() ? crep : rep);
r.mask2report(m);
}
}
else
ok = r.load(rep);
}
}
if (ok)
{
TReport_book b;
ok = b.add(r); // Richiede parametri di stampa in base alla maschera omonima
if (ok)
if (b.pages() > 0)
b.print_or_preview(); // Stampa effettivamente
else
warning_box (TR("Nessun record estratto per i parametri inseriti"));
}
}
}
int lv0200(int argc, char* argv[])
{
TStampa_tabelle_lv app;
app.run(argc, argv, TR("Stampe lavanderie"));
return 0;
}