Patch level : 10.0

Files correlati     : tutti
Ricompilazione Demo : [ ]
Commento            :
Corretta gestione copia/incolla (da tastiera e da menu) in finestre multi-pagina


git-svn-id: svn://10.65.10.50/trunk@16817 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2008-06-26 09:46:51 +00:00
parent cb98b4b1fc
commit 3572128134
4 changed files with 90 additions and 97 deletions

View File

@ -3,10 +3,10 @@
#include <dongle.h> #include <dongle.h>
#include <extcdecl.h> #include <extcdecl.h>
#include <isam.h> #include <isam.h>
#include <mask.h>
#include <modaut.h> #include <modaut.h>
#include <printer.h> #include <printer.h>
#include <progind.h> #include <progind.h>
#include <sheet.h>
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
@ -19,43 +19,20 @@
// Finestra informazioni // Finestra informazioni
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TInfo_mask : public TMask class TInfo_mask : public TArray_sheet
{ {
int _row, _col;
public: public:
void add_row(const char* prompt, const char* value); void add_row(const char* prompt, const char* value);
void add_row(const char* prompt, unsigned long value); void add_row(const char* prompt, unsigned long value);
TInfo_mask(); TInfo_mask();
}; };
void TInfo_mask::add_row(const char* prompt, const char* value) void TInfo_mask::add_row(const char* prompt, const char* value)
{ {
const int MASK_WIDTH = 78; TToken_string* r = new TToken_string;
const int MASK_WIDTH2 = MASK_WIDTH/2; r->add(prompt);
const int PROMPT_WIDTH = 12; r->add(value);
add(r);
TString val(value); val.trim();
const int len = val.len();
const int estim_len = 120 * (PROMPT_WIDTH + len) / 100;
if (_col + estim_len > MASK_WIDTH)
{
_row++;
_col = 1;
}
TString16 pr(prompt);
pr.left_just(PROMPT_WIDTH);
const short id = 101 + _row*10 + (_col > 1);
TEdit_field& e = add_string(id, 0, pr, _col, _row, len, "", len > 50 ? 50 : len);
e.set(value);
if (_col == 1)
_col = (estim_len+2 >= MASK_WIDTH2) ? MASK_WIDTH : MASK_WIDTH2;
else
_col = MASK_WIDTH;
} }
void TInfo_mask::add_row(const char* prompt, unsigned long value) void TInfo_mask::add_row(const char* prompt, unsigned long value)
@ -65,24 +42,17 @@ void TInfo_mask::add_row(const char* prompt, unsigned long value)
} }
TInfo_mask::TInfo_mask() TInfo_mask::TInfo_mask()
: TMask("Informazioni", 1, 72, 11, -1, -1), _row(0), _col(1) : TArray_sheet(-1, -1, 78, 18, "Informazioni", "@16|@60")
{ {
const word ser_no = dongle().number(); const word ser_no = dongle().number();
//pezzo commentato per la 10.0!! NON eliminare!!! int year = 2008, release = 10, tag = 0, patch = 1;
/*int year = 2008, release = 10, tag = 0, patch = 1; TString80 versione = "2008.10.00 Patch 0001";
TString16 versione = "2008.10";
TString16 strpatch = "00.0001";*/
int year = 2008, release = 4, tag = 0, patch = 1;
TString16 versione = "2008.04";
TString16 strpatch = "00.0001";
if (main_app().get_version_info(year, release, tag, patch)) if (main_app().get_version_info(year, release, tag, patch))
{ versione.format("%d.%02d.%02d Patch %04d", year, release, tag, patch);
versione.format("%d.%02d", year, release);
strpatch.format("%02d.%04d", tag, patch); TString80 stros, strwx;
} xvt_sys_get_version(stros.get_buffer(), strwx.get_buffer(), stros.size());
TString arg; TString arg;
for (int a = 0; a < main_app().argc(); a++) for (int a = 0; a < main_app().argc(); a++)
@ -93,7 +63,8 @@ TInfo_mask::TInfo_mask()
TConfig userini(CONFIG_GUI, "Printer"); TConfig userini(CONFIG_GUI, "Printer");
TString prot; TString prot;
switch (dongle().hardware()) const TDongleHardware dhw = dongle().hardware();
switch (dhw)
{ {
case _dongle_hardlock: prot = "Hardlock"; break; case _dongle_hardlock: prot = "Hardlock"; break;
case _dongle_eutron : prot = "Eutron"; break; case _dongle_eutron : prot = "Eutron"; break;
@ -101,53 +72,54 @@ TInfo_mask::TInfo_mask()
default : prot = TR("Nessuna"); break; default : prot = TR("Nessuna"); break;
} }
add_row(TR("Versione"), versione);
add_row(TR("Patch"), strpatch);
add_row(TR("N. di serie"), ser_no);
add_row(TR("Protezione"), prot);
add_row(TR("Assistenza"), dongle().year_assist());
add_row(TR("Utente"), user());
add_row(TR("Programma"), arg);
add_row(TR("Config"), campoini.name());
add_row(TR("Studio"), firm2dir(-1));
add_row(TR("Ditta"), campoini.get("Firm", "Main"));
const int type = campoini.get_int("Type"); const int type = campoini.get_int("Type");
TString tipo = TR("Postazione singola"); const char* tipo = NULL;
switch (type) switch (type)
{ {
case 1: case 1: tipo = TR("Postazione singola"); break;
break; case 2: tipo = TR("Server"); break;
case 2: case 3: tipo = TR("Client"); break;
tipo = TR("Server");
break;
case 3:
tipo = TR("Client");
break;
default: default:
if (campoini.get_bool("TestDatabase"))
{ {
const bool td = campoini.get_bool("TestDatabase"); if (dhw == _dongle_network)
const bool tp = campoini.get_bool("TestPrograms");
if (td && tp)
tipo = TR("Server"); tipo = TR("Server");
if (!td) else
tipo = TR("Client");
if (td && !tp)
tipo = TR("Server o Postazione singola"); tipo = TR("Server o Postazione singola");
} }
else
tipo = TR("Client");
break; break;
} }
TFilename temp;
temp.tempdir();
add_row(TR("Versione"), versione);
add_row(TR("Protezione"), prot);
add_row(TR("N. di serie"), ser_no);
add_row(TR("Assistenza"), dongle().year_assist());
add_row(TR("Installazione"), tipo); add_row(TR("Installazione"), tipo);
add_row(TR("Sistema"), stros);
add_row(TR("Libreria"), strwx);
add_row(TR("Utente"), user());
add_row(TR("Studio"), firm2dir(-1));
add_row(TR("Ditta"), campoini.get("Firm", "Main"));
if (prefix_valid()) if (prefix_valid())
add_row(TR("Valuta"), TCurrency::get_firm_val()); {
const TFirm& f = prefix().firm();
add_row(TR("Ragione Sociale"), f.ragione_sociale());
add_row(TR("Valuta"), f.codice_valuta());
}
add_row(TR("Programma"), arg);
add_row(TR("Config locale"), campoini.name());
add_row(TR("Config utente"), userini.name());
add_row(TR("File temporanei"), temp);
add_row(TR("Spazio su disco"), xvt_fsys_get_disk_free_space(firm2dir(-1), 'M'));
add_row(TR("Stampante"), userini.get("Name", "Printer")); add_row(TR("Stampante"), userini.get("Name", "Printer"));
add_row(TR("Mb su disco"), xvt_fsys_get_disk_free_space(firm2dir(-1), 'M'));
add_button(DLG_OK, 0, "", -11, -1, 10, 2);
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Metodi di accesso globali all'applicazione corrente // Metodi di accesso globali all'applicazione corrente
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -291,7 +263,6 @@ long TApplication::task_eh(WINDOW win, EVENT *ep)
void TApplication::dispatch_e_menu(MENU_TAG tag) void TApplication::dispatch_e_menu(MENU_TAG tag)
{ {
// ::dispatch_e_menu(TASK_WIN, tag);
EVENT e; memset(&e, 0, sizeof(e)); EVENT e; memset(&e, 0, sizeof(e));
e.type = E_COMMAND; e.type = E_COMMAND;
e.v.cmd.tag = tag; e.v.cmd.tag = tag;
@ -351,7 +322,7 @@ long TApplication::handler(WINDOW win, EVENT* ep)
{ {
WINDOW w = cur_win(); WINDOW w = cur_win();
if (w != NULL_WIN && w != win) if (w != NULL_WIN && w != win)
dispatch_event(w, *ep, TRUE); dispatch_event(w, *ep, true);
} }
else else
{ {

View File

@ -706,7 +706,15 @@ HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev)
if (notify_xvt && xiev->v.xvte.type != 0) if (notify_xvt && xiev->v.xvte.type != 0)
{ {
TWindow* w = (TWindow*)xi_get_app_data(itf); TWindow* w = (TWindow*)xi_get_app_data(itf);
if (w != NULL && w->win() != NULL_WIN) WINDOW win = NULL_WIN;
if (w != NULL)
{
if (w->is_kind_of(CLASS_MASK))
win = ((TMask*)w)->curr_win();
else
win = w->win();
}
if (win != NULL_WIN)
{ {
switch (xiev->v.xvte.type) switch (xiev->v.xvte.type)
{ {
@ -718,7 +726,7 @@ HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev)
case WC_CHECKBOX: case WC_CHECKBOX:
break; // Ignora i bottoni altrimenti li preme due volte se nativi break; // Ignora i bottoni altrimenti li preme due volte se nativi
default: default:
w->handler(w->win(), &xiev->v.xvte); w->handler(win, &xiev->v.xvte);
break; break;
} }
break; break;
@ -726,7 +734,7 @@ HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev)
_button_blocked = false; _button_blocked = false;
// fall down // fall down
default: default:
w->handler(w->win(), &xiev->v.xvte); w->handler(win, &xiev->v.xvte);
break; break;
} }
} }

View File

@ -766,18 +766,18 @@ void TMask::on_button(short)
/* Non devo fare niente !!! non essendo una TWindow */ /* Non devo fare niente !!! non essendo una TWindow */
} }
void TMask::handler(WINDOW win, EVENT* ep) void TMask::handler(WINDOW w, EVENT* ep)
{ {
static TSheet_field* _last_sheet = NULL; static TSheet_field* _last_sheet = NULL;
if (ep->type == E_MOUSE_DOWN && ep->v.mouse.button == 1) if (ep->type == E_MOUSE_DOWN && ep->v.mouse.button == 1)
{ {
_last_sheet = NULL; _last_sheet = NULL;
win = curr_win(); w = curr_win();
for (int f = fields()-1; f >= 0; f--) for (int f = fields()-1; f >= 0; f--)
{ {
TMask_field& cur_fld = fld(f); TMask_field& cur_fld = fld(f);
if (cur_fld.shown() && cur_fld.parent() == win) if (cur_fld.shown() && cur_fld.parent() == w)
{ {
RCT rct; cur_fld.get_rect(rct); RCT rct; cur_fld.get_rect(rct);
if (xvt_rect_has_point(&rct, ep->v.mouse.where)) if (xvt_rect_has_point(&rct, ep->v.mouse.where))
@ -797,23 +797,38 @@ void TMask::handler(WINDOW win, EVENT* ep)
if (menu != NULL) if (menu != NULL)
{ {
const PNT& p = ep->v.mouse.where; const PNT& p = ep->v.mouse.where;
xvt_menu_popup(menu->child, win, p, XVT_POPUP_CENTER, 0); // verificare xvt_menu_popup(menu->child, w, p, XVT_POPUP_CENTER, 0); // verificare
xvt_res_free_menu_tree(menu); xvt_res_free_menu_tree(menu);
} }
} }
return; return;
} }
if (ep->type == E_COMMAND && _last_sheet != NULL) if (ep->type == E_COMMAND)
{ {
switch (ep->v.cmd.tag) const int tag = ep->v.cmd.tag;
{ if (_last_sheet != NULL)
case BROWSE_BAR+1: _last_sheet->save_columns_order(); break; {
case BROWSE_BAR+2: _last_sheet->reset_columns_order(); break; switch (tag)
case BROWSE_BAR+3: _last_sheet->on_key(K_F11); break; {
case BROWSE_BAR+4: _last_sheet->esporta(); break; case BROWSE_BAR+1: _last_sheet->save_columns_order(); break;
default: break; case BROWSE_BAR+2: _last_sheet->reset_columns_order(); break;
case BROWSE_BAR+3: _last_sheet->on_key(K_F11); break;
case BROWSE_BAR+4: _last_sheet->esporta(); break;
default: break;
}
return;
}
if (tag >= M_EDIT && tag <= M_EDIT_CLIPBOARD && notebook() != NULL_WIN)
{
static long _last_tag = 0;
const long curr_tag = w ^ tag;
if (curr_tag != _last_tag)
{
_last_tag = curr_tag;
xvt_win_post_event(curr_win(), ep);
}
return;
} }
return;
} }
if (ep->type == E_VSCROLL) if (ep->type == E_VSCROLL)
@ -868,7 +883,7 @@ void TMask::handler(WINDOW win, EVENT* ep)
return; return;
} }
TWindow::handler(win, ep); TWindow::handler(w, ep);
} }

View File

@ -286,8 +286,7 @@ void dispatch_e_menu(
EVENT e; memset(&e, 0, sizeof(e)); EVENT e; memset(&e, 0, sizeof(e));
e.type = E_COMMAND; e.type = E_COMMAND;
e.v.cmd.tag = item; e.v.cmd.tag = item;
// xvt_win_post_event(win, &e); dispatch_event(win, e, true);
dispatch_event(win, e, TRUE);
} }
// @doc EXTERNAL // @doc EXTERNAL