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;
static int _last_button;
static bool _find_button;
protected:
void test_temp() const;
void load_menu();
@ -121,8 +124,8 @@ public:
TMenu_application(const char* name) : _name(name) {}
};
static short last_button = 0;
static bool find_button = FALSE;
int TMenu_application::_last_button = 0;
bool TMenu_application::_find_button = FALSE;
inline TMenu_application& 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();
if (v.find(str) >= 0)
{
found = m;
found = i;
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)
{
last_button = f.dlg();
find_button = FALSE;
_last_button = f.dlg();
_find_button = FALSE;
f.mask().stop_run(K_AUTO_ENTER);
}
return TRUE;
@ -198,10 +201,10 @@ bool TMenu_application::menu_find_handler(TMask_field&f, KEY k)
const TString& v = f.get();
if (v.not_empty())
{
last_button = app().find_menu(v);
if (last_button >= 0)
_last_button = app().find_menu(v);
if (_last_button >= 0)
{
find_button = TRUE;
_find_button = TRUE;
f.mask().stop_run(K_AUTO_ENTER);
}
}
@ -249,6 +252,11 @@ int TMenu_application::do_level()
menu.add_button(first ? DLG_CANCEL : DLG_QUIT, 0, t, -22, -1, bwidth, 2);
if (first)
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();
int m = 0;
@ -260,10 +268,10 @@ int TMenu_application::do_level()
menu.reset();
m = -2; break;
default:
if (find_button)
if (_find_button)
m = -1;
else
m = first+last_button-100;
m = first+_last_button-100;
break;
}
return m;
@ -303,6 +311,8 @@ bool TMenu_application::create()
bool TMenu_application::menu(MENU_TAG)
{
int refarray[256];
memset(refarray, 0, sizeof(refarray));
int i = 0;
_level = 0;
@ -334,10 +344,16 @@ bool TMenu_application::menu(MENU_TAG)
else
{
if (m < -1) break;
if (find_button)
_level = last_button;
if (_find_button)
{
TToken_string& row = (TToken_string&)_menu[_last_button];
_level = row.get_int(0);
}
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 <applicat.h>
#include <xvtility.h>
#include <utility.h>
#include <prefix.h>
#include <mask.h>
#include <isam.h>
#include <string.h>
#include <sheet.h>
#include <msksheet.h>
#include <urldefid.h>
#include <validate.h>
#include <xvtility.h>
#include "ba1.h"
#include "ba1100.h"
@ -33,6 +32,7 @@ protected:
void update_dir();
void convert_dir();
virtual void print();
const char* dumpfilename(const FileDes& dep) const;
public:
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)
{
@ -258,9 +275,7 @@ void BA1100_application::edit_riga (long riga_sel, TToken_string& riga)
{
TMask m("ba1100b");
TFilename nout(dep.SysName);
nout.strip("$%");
nout.ext("txt");
TFilename nout(dumpfilename(dep));
m.set(FLD_OUTFILE, nout);
if (m.run() == K_ENTER)
@ -281,18 +296,15 @@ void BA1100_application::edit_riga (long riga_sel, TToken_string& riga)
if (tasto == K_F8)
{
TMask m("ba1100c");
TFilename ninp(dep.SysName);
ninp.strip("$%");
ninp.ext("txt");
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));
f.load(m.get(FLD_INFILE), fs, fd, rs);
ninp = m.get(FLD_INFILE);
f.load(ninp, fs, fd, rs);
}
}
}
@ -312,7 +324,7 @@ void BA1100_application::delete_riga ()
int logicnum = (int)_browse->items();
_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()->eod()--;
_browse->set_items(_browse->dir()->eod());

View File

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

View File

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