Patch level : 2.0 664
Files correlati : librerie, ma soprattutto ve Ricompilazione Demo : [ ] Commento : array.cpp indentazione controls.cpp doppio click sui listbox form.cpp indentazione isamrpc.cpp migliore generazione password per dongle server printer.cpp migliore get_printer_name progind.cpp migliore calcolo dei tempi di attesa relapp.cpp corretta gestione tasto ESC git-svn-id: svn://10.65.10.50/trunk@11679 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
94e00bac25
commit
5e957d628a
@ -672,13 +672,15 @@ TBit_array::~TBit_array()
|
||||
// Certified 100%
|
||||
void TBit_array::set()
|
||||
{
|
||||
if (_bit) memset(_bit, 0xFF, _size);
|
||||
if (_bit)
|
||||
memset(_bit, 0xFF, _size);
|
||||
}
|
||||
|
||||
// Certified 100%
|
||||
void TBit_array::reset()
|
||||
{
|
||||
if (_bit) memset(_bit, 0x0, _size);
|
||||
if (_bit)
|
||||
memset(_bit, 0x0, _size);
|
||||
}
|
||||
|
||||
// Certified 99%
|
||||
|
@ -1971,18 +1971,26 @@ void TDropDownList::ddl_str_eh(XI_OBJ* itf, XI_EVENT* xiev)
|
||||
}
|
||||
break;
|
||||
case XIE_XVT_EVENT:
|
||||
if (xiev->v.xvte.type == E_CHAR)
|
||||
switch (xiev->v.xvte.type)
|
||||
{
|
||||
const KEY k = xiev->v.xvte.v.chr.ch;
|
||||
if (k == K_ENTER || k == K_ESC)
|
||||
ddl->close();
|
||||
else
|
||||
case E_CHAR:
|
||||
{
|
||||
if (k >= ' ' && k <= 'z')
|
||||
ddl->select_by_initial(char(k));
|
||||
}
|
||||
const KEY k = xiev->v.xvte.v.chr.ch;
|
||||
if (k == K_ENTER || k == K_ESC)
|
||||
ddl->close();
|
||||
else
|
||||
{
|
||||
if (k >= ' ' && k <= 'z')
|
||||
ddl->select_by_initial(char(k));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case E_MOUSE_DBL:
|
||||
ddl->close();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2235,8 +2243,13 @@ bool TListbox_control::event_handler(XI_OBJ* itf, XI_EVENT* xiev)
|
||||
{
|
||||
case XIE_DBL_FIELD:
|
||||
case XIE_BUTTON:
|
||||
if (!_ddl->is_open() && !_button_blocked)
|
||||
_ddl->open();
|
||||
if (!_button_blocked)
|
||||
{
|
||||
if (_ddl->is_open())
|
||||
_ddl->close();
|
||||
else
|
||||
_ddl->open();
|
||||
}
|
||||
break;
|
||||
case XIE_CHAR_FIELD:
|
||||
{
|
||||
@ -2269,6 +2282,11 @@ void TDropDownList::on_mouse_down(const PNT& pt)
|
||||
if (_open)
|
||||
{
|
||||
RCT rct;
|
||||
|
||||
xi_get_rect(_obj, (XinRect*)&rct);
|
||||
if (xvt_rect_has_point(&rct, pt))
|
||||
return; // E' nel campo di testo proprietario della lista
|
||||
|
||||
xvt_vobj_get_outer_rect((WINDOW)xi_get_window(_xi_lst->itf), &rct);
|
||||
if (!xvt_rect_has_point(&rct, pt))
|
||||
close();
|
||||
|
@ -2425,7 +2425,7 @@ void TPrint_section::reset()
|
||||
// Aggiorna tutti i campi
|
||||
bool TPrint_section::update()
|
||||
{
|
||||
bool ok = TRUE;
|
||||
bool ok = true;
|
||||
|
||||
reset();
|
||||
for (word i = 0; i < fields(); i++)
|
||||
@ -2433,7 +2433,8 @@ bool TPrint_section::update()
|
||||
if (!field(i).is_section())
|
||||
{
|
||||
const bool esito = field(i).update();
|
||||
if (!esito) ok = FALSE;
|
||||
if (!esito)
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2445,7 +2446,6 @@ bool TPrint_section::update()
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
TForm_item* TPrint_section::exist_field(short id) const
|
||||
{
|
||||
TForm_item* f = find_field_everywhere(id,this);
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <checks.h>
|
||||
@ -18,6 +17,7 @@ bool rpc_Start()
|
||||
bool ok = TRUE;
|
||||
if (_client == NULL)
|
||||
{
|
||||
srand(clock());
|
||||
_client = new TSocketClient;
|
||||
if (!_client->IsOk())
|
||||
{
|
||||
@ -216,7 +216,6 @@ unsigned rpc_DongleYear()
|
||||
static unsigned int CreatePassword(TString& pass)
|
||||
{
|
||||
const int BASE = 19;
|
||||
srand(clock());
|
||||
unsigned int num = 0;
|
||||
do
|
||||
{
|
||||
@ -235,7 +234,7 @@ static unsigned int CreatePassword(TString& pass)
|
||||
num /= BASE;
|
||||
pass.insert(str);
|
||||
}
|
||||
} while (pass.len() < 6);
|
||||
} while (pass.len() < 5);
|
||||
return num;
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ void TPrinter_setup_mask::set_print_rcd(PRINT_RCD* pcd, int size)
|
||||
{
|
||||
_pcd = pcd;
|
||||
_pcd_size = size;
|
||||
_pdev = ((const char*)pcd)+4;
|
||||
xvt_print_get_name(pcd, _pdev.get_buffer(), _pdev.size());
|
||||
}
|
||||
|
||||
PRINT_RCD* TPrinter_setup_mask::get_print_rcd(int& size) const
|
||||
@ -148,9 +148,9 @@ bool TPrinter_setup_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
||||
if (xvt_dm_post_page_setup(_pcd))
|
||||
{
|
||||
// see if user has changed printer
|
||||
// determine index of currently selected printer
|
||||
// ACTHUNG! Deep hacking of XVT internals! NON PORTABLE!
|
||||
const char* name = (const char *)(_pcd) + 4;
|
||||
// determine name of currently selected printer
|
||||
TString name;
|
||||
xvt_print_get_name(_pcd, name.get_buffer(), name.size());
|
||||
set(MSK_PRINTERS, name, 0x1);
|
||||
}
|
||||
}
|
||||
@ -1104,18 +1104,15 @@ void TPrinter::set_printrcd()
|
||||
{
|
||||
_print_rcd = xvt_print_create_by_name(&_print_rcd_size, _prname);
|
||||
ok = xvt_print_is_valid(_print_rcd) != 0;
|
||||
if (!ok)
|
||||
error_box(FR("Errore di inizializzazione della stampante %s"), (const char*)_prname);
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
_print_rcd = xvt_print_create(&_print_rcd_size);
|
||||
xvt_print_get_name(_print_rcd, _prname.get_buffer(), _prname.size());
|
||||
ok = xvt_print_is_valid(_print_rcd) != 0;
|
||||
if (ok)
|
||||
_prname = ((const char*)_print_rcd)+4;
|
||||
else
|
||||
error_box(TR("Errore di inizializzazione della stampante corrente"));
|
||||
}
|
||||
if (!ok)
|
||||
error_box(FR("Errore di inizializzazione della stampante %s"), (const char*)_prname);
|
||||
}
|
||||
|
||||
PRINT_RCD* TPrinter::get_printrcd(int *size)
|
||||
@ -1294,7 +1291,7 @@ void TPrinter::read_configuration(
|
||||
if (xvt_print_is_valid(_print_rcd))
|
||||
{
|
||||
init_formlen();
|
||||
_prname = (const char*)_print_rcd + 4; // Deep hacking
|
||||
xvt_print_get_name(_print_rcd, _prname.get_buffer(), _prname.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -22,13 +22,10 @@ word TIndwin::measure_text(TToken_string& s, word& maxlen) const
|
||||
}
|
||||
|
||||
// Certified 70%
|
||||
TIndwin::TIndwin(long max, const char* txt, bool cancel, bool bar, int div)
|
||||
TIndwin::TIndwin(long tot, const char* txt, bool cancel, bool bar, int div)
|
||||
: _text(NULL), _cancel(NULL), _bar(0),
|
||||
_status(0L), _max(max), _flags(0x0)
|
||||
_status(0L), _max(tot), _flags(0x0)
|
||||
{
|
||||
if (_max <= 0)
|
||||
_max = 1;
|
||||
|
||||
TToken_string testo(txt, '\n');
|
||||
word maxlen = div;
|
||||
const word lines = measure_text(testo, maxlen);
|
||||
@ -57,7 +54,7 @@ TIndwin::TIndwin(long max, const char* txt, bool cancel, bool bar, int div)
|
||||
do_events();
|
||||
|
||||
_indwin_count++;
|
||||
_start_time = clock();
|
||||
setmax(tot);
|
||||
}
|
||||
|
||||
// @doc EXTERNAL
|
||||
@ -86,6 +83,12 @@ void TIndwin::set_text(
|
||||
}
|
||||
}
|
||||
|
||||
void TIndwin::setmax(long m)
|
||||
{
|
||||
_max = m <= 0 ? 1 : m;
|
||||
_start_time = clock();
|
||||
}
|
||||
|
||||
TIndwin::~TIndwin()
|
||||
{
|
||||
if (is_open())
|
||||
|
@ -90,6 +90,9 @@ public:
|
||||
// @cmember Setta il testo della finestra
|
||||
void set_text(const char* t);
|
||||
|
||||
// @cmember Setta il valore massimo della barra d'attesa
|
||||
void setmax(long m);
|
||||
|
||||
// @cmember Costruttore
|
||||
TIndwin(long max, const char* txt, bool cancel = TRUE, bool bar = TRUE, int div = 60);
|
||||
// @cmember Distruttore
|
||||
@ -106,9 +109,6 @@ class TProgind : public TIndwin
|
||||
{
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Setta il valore massimo della barra d'attesa
|
||||
void setmax(long m)
|
||||
{ _max = m; }
|
||||
// @cmember Setta lo stato della barra d'attesa
|
||||
bool setstatus(long l);
|
||||
// @cmember Aggiorna la barra d'attesa aggiungendo l'incremento fatto dell'applicazione
|
||||
|
@ -1030,8 +1030,19 @@ bool TRelation_application::save(bool check_dirty)
|
||||
|
||||
if (annulla)
|
||||
{
|
||||
TMask_field& ff = _mask->focus_field();
|
||||
if (ff.focusdirty() && ff.is_edit()) // I need simulate tab on the current field!
|
||||
{
|
||||
if (!ff.on_key(K_TAB))
|
||||
{
|
||||
_mask->first_focus(-ff.dlg());
|
||||
was_dirty = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if (!_mask->check_fields()) // Exit with ESC didn't check values
|
||||
{
|
||||
// check_fields sets the focus on the blocking field
|
||||
_mask->first_focus(-_mask->focus_field().dlg());
|
||||
was_dirty = TRUE;
|
||||
return FALSE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user