Aggiunto semi-smart-menu a ba0

Proposta directory temporanea per i files di carico/scarico


git-svn-id: svn://10.65.10.50/trunk@353 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-10-12 12:58:08 +00:00
parent 0b55fb6316
commit b35804cf0e
4 changed files with 78 additions and 38 deletions

View File

@ -106,6 +106,9 @@ class TMenu_application : public TApplication
int _level, _max; int _level, _max;
static int _last_button;
static bool _find_button;
protected: protected:
void test_temp() const; void test_temp() const;
void load_menu(); void load_menu();
@ -121,8 +124,8 @@ public:
TMenu_application(const char* name) : _name(name) {} TMenu_application(const char* name) : _name(name) {}
}; };
static short last_button = 0; int TMenu_application::_last_button = 0;
static bool find_button = FALSE; bool TMenu_application::_find_button = FALSE;
inline TMenu_application& app() inline TMenu_application& app()
{ return (TMenu_application&)main_app(); } { return (TMenu_application&)main_app(); }
@ -171,7 +174,7 @@ int TMenu_application::find_menu(const char* s) const
TString80 v(l.get()); v.upper(); TString80 v(l.get()); v.upper();
if (v.find(str) >= 0) if (v.find(str) >= 0)
{ {
found = m; found = i;
if (isalpha(l.get_char())) break; if (isalpha(l.get_char())) break;
} }
} }
@ -183,8 +186,8 @@ bool TMenu_application::menu_item_handler(TMask_field&f, KEY k)
{ {
if (k == K_SPACE) if (k == K_SPACE)
{ {
last_button = f.dlg(); _last_button = f.dlg();
find_button = FALSE; _find_button = FALSE;
f.mask().stop_run(K_AUTO_ENTER); f.mask().stop_run(K_AUTO_ENTER);
} }
return TRUE; return TRUE;
@ -198,10 +201,10 @@ bool TMenu_application::menu_find_handler(TMask_field&f, KEY k)
const TString& v = f.get(); const TString& v = f.get();
if (v.not_empty()) if (v.not_empty())
{ {
last_button = app().find_menu(v); _last_button = app().find_menu(v);
if (last_button >= 0) if (_last_button >= 0)
{ {
find_button = TRUE; _find_button = TRUE;
f.mask().stop_run(K_AUTO_ENTER); f.mask().stop_run(K_AUTO_ENTER);
} }
} }
@ -250,6 +253,11 @@ int TMenu_application::do_level()
if (first) if (first)
menu.add_button(DLG_QUIT, 0, "Fine", -12, -1, bwidth, 2); menu.add_button(DLG_QUIT, 0, "Fine", -12, -1, bwidth, 2);
if (_find_button && _last_button > first)
menu.first_focus(100+_last_button-first);
_last_button = _find_button = 0;
const int k = menu.run(); const int k = menu.run();
int m = 0; int m = 0;
switch (k) switch (k)
@ -260,10 +268,10 @@ int TMenu_application::do_level()
menu.reset(); menu.reset();
m = -2; break; m = -2; break;
default: default:
if (find_button) if (_find_button)
m = -1; m = -1;
else else
m = first+last_button-100; m = first+_last_button-100;
break; break;
} }
return m; return m;
@ -303,6 +311,8 @@ bool TMenu_application::create()
bool TMenu_application::menu(MENU_TAG) bool TMenu_application::menu(MENU_TAG)
{ {
int refarray[256]; int refarray[256];
memset(refarray, 0, sizeof(refarray));
int i = 0; int i = 0;
_level = 0; _level = 0;
@ -334,10 +344,16 @@ bool TMenu_application::menu(MENU_TAG)
else else
{ {
if (m < -1) break; if (m < -1) break;
if (find_button) if (_find_button)
_level = last_button; {
TToken_string& row = (TToken_string&)_menu[_last_button];
_level = row.get_int(0);
}
else else
_level = (--i >= 0) ? refarray[i] : 0; {
_level = (i > 0) ? refarray[--i] : 0;
if (_level == 0) i = 0;
}
} }
} }

View File

@ -1,15 +1,14 @@
#include <stdlib.h> #include <stdlib.h>
#include <applicat.h> #include <applicat.h>
#include <xvtility.h>
#include <utility.h> #include <utility.h>
#include <prefix.h> #include <prefix.h>
#include <mask.h>
#include <isam.h> #include <isam.h>
#include <string.h>
#include <sheet.h>
#include <msksheet.h> #include <msksheet.h>
#include <urldefid.h> #include <urldefid.h>
#include <validate.h> #include <validate.h>
#include <xvtility.h>
#include "ba1.h" #include "ba1.h"
#include "ba1100.h" #include "ba1100.h"
@ -33,6 +32,7 @@ protected:
void update_dir(); void update_dir();
void convert_dir(); void convert_dir();
virtual void print(); virtual void print();
const char* dumpfilename(const FileDes& dep) const;
public: public:
BA1100_application() : _browse(NULL), _rec(NULL), _mask(NULL) {} BA1100_application() : _browse(NULL), _rec(NULL), _mask(NULL) {}
@ -166,6 +166,23 @@ void BA1100_application::insert_riga (long riga_sel, TToken_string& riga)
} }
} }
const char* BA1100_application::dumpfilename(const FileDes& dep) const
{
TFilename n; n.tempdir();
#if XVT_OS == XVT_OS_SCOUNIX
n << '/';
#else
n << '\\';
#endif
n << dep.SysName;
n.strip("$%");
n.ext("txt");
n.lower();
strcpy(__tmp_string, n);
return __tmp_string;
}
void BA1100_application::edit_riga (long riga_sel, TToken_string& riga) void BA1100_application::edit_riga (long riga_sel, TToken_string& riga)
{ {
@ -258,9 +275,7 @@ void BA1100_application::edit_riga (long riga_sel, TToken_string& riga)
{ {
TMask m("ba1100b"); TMask m("ba1100b");
TFilename nout(dep.SysName); TFilename nout(dumpfilename(dep));
nout.strip("$%");
nout.ext("txt");
m.set(FLD_OUTFILE, nout); m.set(FLD_OUTFILE, nout);
if (m.run() == K_ENTER) if (m.run() == K_ENTER)
@ -281,18 +296,15 @@ void BA1100_application::edit_riga (long riga_sel, TToken_string& riga)
if (tasto == K_F8) if (tasto == K_F8)
{ {
TMask m("ba1100c"); TMask m("ba1100c");
TFilename ninp(dep.SysName); TFilename ninp(dumpfilename(dep));
ninp.strip("$%");
ninp.ext("txt");
m.set(FLD_INFILE, ninp); m.set(FLD_INFILE, ninp);
if (m.run() == K_ENTER) if (m.run() == K_ENTER)
{ {
char fs = *esc(m.get(FLD_FS)); char fs = *esc(m.get(FLD_FS));
char fd = *esc(m.get(FLD_FD)); char fd = *esc(m.get(FLD_FD));
char rs = *esc(m.get(FLD_RS)); char rs = *esc(m.get(FLD_RS));
ninp = m.get(FLD_INFILE);
f.load(m.get(FLD_INFILE), fs, fd, rs); f.load(ninp, fs, fd, rs);
} }
} }
} }
@ -312,7 +324,7 @@ void BA1100_application::delete_riga ()
int logicnum = (int)_browse->items(); int logicnum = (int)_browse->items();
_browse->dir()->get(logicnum); _browse->dir()->get(logicnum);
if (yesnocancel_box("Vuoi davvero eliminare l' archivio %s", _browse->dir()->name()) != K_YES) return; if (yesnocancel_box("Confermare l'eliminzione dell'archivio %s", _browse->dir()->name()) != K_YES) return;
_browse->dir()->get(LF_DIR); _browse->dir()->get(LF_DIR);
_browse->dir()->eod()--; _browse->dir()->eod()--;
_browse->set_items(_browse->dir()->eod()); _browse->set_items(_browse->dir()->eod());

View File

@ -1,6 +1,10 @@
#ifndef __BA1100_H #ifndef __BA1100_H
#define __BA1100_H #define __BA1100_H
#ifndef __SHEET_H
#include <sheet.h>
#endif
#include "ba1100a.h" #include "ba1100a.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////

View File

@ -115,20 +115,28 @@ HIDDEN bool len_handler(TMask_field& f, KEY key)
switch (typef) switch (typef)
{ {
case _alfafld: return len <= 254; case _alfafld:
case _intfld: return len <= 5; return len <= 254;
case _longfld: return len <= 10; case _intfld:
case _realfld: return len <= 18; return len <= 5;
case _wordfld: return len <= 5; case _longfld:
case _intzerofld: return len <= 5; return len <= 10;
case _longzerofld: return len <= 10; case _realfld:
default: return TRUE; return len <= 18;
case _wordfld:
return len <= 5;
case _intzerofld:
return len <= 5;
case _longzerofld:
return len <= 10;
default:
return TRUE;
} }
return TRUE; return TRUE;
} }
bool TRec_sheet::fld_notify(int r, KEY k)
bool TRec_sheet::fld_notify(int r, KEY k)
{ {
const TSheet_field& f = (const TSheet_field&) _mask->field(F_FIELDS); const TSheet_field& f = (const TSheet_field&) _mask->field(F_FIELDS);
@ -141,8 +149,8 @@ bool TRec_sheet::fld_notify(int r, KEY k)
return TRUE; return TRUE;
} }
bool TRec_sheet::key_notify(int r, KEY k)
bool TRec_sheet::key_notify(int r, KEY k)
{ {
const TSheet_field& f = (const TSheet_field&) _mask->field(F_KEYS); const TSheet_field& f = (const TSheet_field&) _mask->field(F_KEYS);