Gestione maschere limitate per pagine e campi browsefile
git-svn-id: svn://10.65.10.50/trunk@683 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8bcb52a949
commit
6f39cd2f4e
@ -1,8 +1,8 @@
|
||||
#ifndef __BROWFILE_H
|
||||
#define __BROWFILE_H
|
||||
|
||||
#ifndef __SCANNER_H
|
||||
#include <scanner.h>
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#endif
|
||||
|
||||
class TViswin;
|
||||
|
@ -26,8 +26,8 @@ bool TExternal_app::can_run() const
|
||||
{
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
const TFixed_string p(_path);
|
||||
const bool clifo = p.find("cg0") == 0 && p.find("-1") > 0;
|
||||
const int richieste = clifo ? 45 : 15;
|
||||
const bool clifo = p.find("cg0") == 0 && p.right(2) == "-1";
|
||||
const int richieste = clifo ? 50 : 15;
|
||||
const int libere = GetFreeSystemResources(GFSR_SYSTEMRESOURCES);
|
||||
return libere >= richieste;
|
||||
#else
|
||||
|
@ -855,7 +855,7 @@ int TSystemisamfile::build(TRecnotype eox)
|
||||
{
|
||||
TFilename lf;
|
||||
|
||||
lf.format("std/lf%04d.txt", num());
|
||||
lf.format("%sstd/lf%04d.txt", __ptprf, num());
|
||||
if (fexist(lf))
|
||||
load(lf);
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ void TMask::handler(WINDOW win, EVENT* ep)
|
||||
TWindow::handler(win, ep);
|
||||
}
|
||||
|
||||
void TMask::init_mask(int mode)
|
||||
void TMask::init_mask()
|
||||
{
|
||||
_sheets = _pages = 0; // Azzera numero pagine e sheets
|
||||
|
||||
@ -170,7 +170,7 @@ void TMask::init_mask(int mode)
|
||||
_focus = _first_focus = 0; // Nessuno ha il focus
|
||||
_page = -1; // Nessuna pagina corrente
|
||||
_handler = NULL; // Nessun handler utente
|
||||
_mode = mode; // Inizializza modo
|
||||
_mode = NO_MODE; // Inizializza modo
|
||||
_exchange = 1.0; // Il cambio per la valuta e' la lira
|
||||
|
||||
memset(_pagewin, 0, sizeof(_pagewin));
|
||||
@ -180,20 +180,22 @@ void TMask::init_mask(int mode)
|
||||
|
||||
|
||||
TMask::TMask(const char* title, int pages, int cols, int rows, int xpos,
|
||||
int ypos, int mode)
|
||||
int ypos)
|
||||
{
|
||||
init_mask(mode);
|
||||
init_mask();
|
||||
for (_pages = 0; _pages < pages; _pages++)
|
||||
_pagewin[_pages] = create(xpos, ypos, cols, rows, title, WSF_CLOSE, WD_MODAL);
|
||||
_pagewin[_pages] = create(xpos, ypos, cols, rows, title, WSF_CLOSE, WD_MODAL);
|
||||
set_win(NULL_WIN);
|
||||
add_buttons();
|
||||
}
|
||||
|
||||
|
||||
void TMask::read_mask(const char* name, int mode, int num)
|
||||
void TMask::read_mask(const char* name, int num, int max)
|
||||
{
|
||||
clock1 = clock();
|
||||
|
||||
|
||||
if (max <= 0) max = MAX_PAGES;
|
||||
|
||||
_source_file = name;
|
||||
_source_file.ext(MASK_EXT);
|
||||
TScanner scanner(_source_file);
|
||||
@ -205,7 +207,7 @@ void TMask::read_mask(const char* name, int mode, int num)
|
||||
if (scanner.line() == "ENDMASK") break;
|
||||
}
|
||||
|
||||
init_mask(mode);
|
||||
init_mask();
|
||||
|
||||
const CURSOR old = get_cursor(TASK_WIN);
|
||||
set_cursor(TASK_WIN, CURSOR_WAIT);
|
||||
@ -216,6 +218,8 @@ void TMask::read_mask(const char* name, int mode, int num)
|
||||
{
|
||||
CHECKD(_pages < MAX_PAGES, "Maschera con troppe pagine: ", _pages);
|
||||
_pagewin[_pages++] = read_page(scanner, FALSE);
|
||||
if (_pages >= max)
|
||||
break;
|
||||
} else
|
||||
if (scanner.key() == "TO")
|
||||
{
|
||||
@ -270,10 +274,10 @@ void TMask::add_buttons()
|
||||
}
|
||||
|
||||
|
||||
TMask::TMask(const char* maskname, int mode, int num)
|
||||
TMask::TMask(const char* maskname, int num, int max)
|
||||
{
|
||||
if (maskname && *maskname)
|
||||
read_mask(maskname, mode, num);
|
||||
read_mask(maskname, num, max);
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,9 +66,9 @@ protected:
|
||||
virtual void start_run(); // called when the mask starts to run
|
||||
virtual TMask_field* parse_field(TScanner& scanner);
|
||||
|
||||
void init_mask(int mode);
|
||||
void init_mask();
|
||||
WINDOW read_page(TScanner& scanner, bool toolbar = FALSE);
|
||||
void read_mask(const char* name, int mode, int num);
|
||||
void read_mask(const char* name, int num, int max);
|
||||
void add_buttons();
|
||||
|
||||
int find_parent_page(const TMask_field&) const;
|
||||
@ -85,11 +85,11 @@ protected:
|
||||
public:
|
||||
// @FPUB
|
||||
// crea leggendo descrizione da file .msk
|
||||
TMask(const char* name, int mode = NO_MODE, int num = 0);
|
||||
TMask(const char* name, int num = 0, int max = MAX_PAGES);
|
||||
|
||||
// crea mask vuota con parametri dati
|
||||
TMask(const char* title, int pages, int cols, int rows, int xpos = -1,
|
||||
int ypos = -1, int mode = NO_MODE);
|
||||
int ypos = -1);
|
||||
|
||||
virtual ~TMask();
|
||||
|
||||
|
@ -1 +1 @@
|
||||
#define VERSION 1.15
|
||||
#define VERSION 1.16
|
||||
|
@ -438,7 +438,7 @@ _dirty (FALSE), _istemp (FALSE), _item (0), _line (256), _cur_line (-1),
|
||||
_hotspots (4), _accept (TRUE)
|
||||
{
|
||||
// open file & build index
|
||||
if (file == NULL)
|
||||
if (file == NULL || *file <= ' ')
|
||||
{
|
||||
_filename.temp ();
|
||||
_istemp = TRUE;
|
||||
@ -450,7 +450,7 @@ _hotspots (4), _accept (TRUE)
|
||||
|
||||
if (_index == NULL || _instr == NULL)
|
||||
{
|
||||
error_box ("Impossibile aprire files temporanei");
|
||||
yesnofatal_box ("Impossibile aprire files temporanei");
|
||||
freeze ();
|
||||
}
|
||||
if (file != NULL)
|
||||
|
@ -7,6 +7,7 @@
|
||||
#define ALIAS AL
|
||||
#define BEGIN BE
|
||||
#define BOOLEAN BO
|
||||
#define BROWSEFILE BR
|
||||
#define BUTTON BU
|
||||
#define CHECKTYPE CH
|
||||
#define COPY CO
|
||||
|
@ -1,13 +1,14 @@
|
||||
#include <xvtility.h>
|
||||
#include <browfile.h>
|
||||
#include <colors.h>
|
||||
#include <config.h>
|
||||
#include <defmask.h>
|
||||
#include <execp.h>
|
||||
#include <mailbox.h>
|
||||
#include <utility.h>
|
||||
#include <printapp.h>
|
||||
#include <urldefid.h>
|
||||
#include <utility.h>
|
||||
#include <viswin.h>
|
||||
#include <xvtility.h>
|
||||
|
||||
#ifndef __PRINTER_H
|
||||
typedef void (*LINKHANDLER) (int, const char *);
|
||||
@ -1823,7 +1824,7 @@ TViswin ::TViswin (const char *fname,
|
||||
if (title == NULL)
|
||||
title = (fname ? fname : "Anteprima di stampa");
|
||||
|
||||
_isopen = fname == NULL;
|
||||
_isopen = fname == NULL || *fname <= ' ';
|
||||
if (_isopen)
|
||||
_filename = _txt.name ();
|
||||
|
||||
@ -1931,3 +1932,53 @@ TViswin ::~TViswin ()
|
||||
picture_free (_picture[i]);
|
||||
#endif
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Campo di visualizzazione sulle maschere
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
// Certified 100%
|
||||
TBrowsefile_field::TBrowsefile_field(TMask* m)
|
||||
: TMask_field(m), _viswin(NULL)
|
||||
{}
|
||||
|
||||
// Certified 100%
|
||||
word TBrowsefile_field::class_id() const
|
||||
{
|
||||
return CLASS_BROWSEFILE_FIELD;
|
||||
}
|
||||
|
||||
// Certified 100%
|
||||
TBrowsefile_field::~TBrowsefile_field()
|
||||
{
|
||||
CHECK(_viswin, "Can't delete NULL sheet");
|
||||
delete _viswin;
|
||||
}
|
||||
|
||||
void TBrowsefile_field::parse_head(TScanner& scanner)
|
||||
{
|
||||
_size = scanner.integer();
|
||||
}
|
||||
|
||||
// Certified 100%
|
||||
bool TBrowsefile_field::parse_item(TScanner& scanner)
|
||||
{
|
||||
if (scanner.key() == "FI")
|
||||
{
|
||||
_prompt = scanner.string();
|
||||
return TRUE;
|
||||
}
|
||||
return TMask_field::parse_item(scanner);
|
||||
}
|
||||
|
||||
// Certified 100%
|
||||
void TBrowsefile_field::create(WINDOW parent)
|
||||
{
|
||||
const TMask& m = mask();
|
||||
_viswin = new TViswin(_prompt, _prompt, FALSE, FALSE, FALSE, _size, parent);
|
||||
_win = _viswin->win();
|
||||
enable_window(_win, enabled());
|
||||
show_window(_win, showed());
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user