Patch level :4.0 700

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :sistemato il problema del lancio di ba0close in caso di installazione con menu old stylish (ripreso dalla 3.0 e 3.1)


git-svn-id: svn://10.65.10.50/trunk@15312 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-05-09 12:50:42 +00:00
parent b3d672e6dd
commit 3d7c536a25
3 changed files with 62 additions and 52 deletions

View File

@ -2,9 +2,9 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <colors.h> //#include <colors.h>
#include <config.h> //#include <config.h>
#include <controls.h> #include <controls.h>
#include <dongle.h> #include <dongle.h>
#include <modaut.h> #include <modaut.h>
@ -13,13 +13,13 @@
#include <relation.h> #include <relation.h>
#include <msksheet.h> #include <msksheet.h>
#include <progind.h> #include <progind.h>
#include <prefix.h> //#include <prefix.h>
#include <sheet.h> #include <sheet.h>
#include <utility.h> #include <utility.h>
#include <urldefid.h> #include <urldefid.h>
#include <agasys.h> //#include <agasys.h>
#include <nditte.h> #include <nditte.h>
#include <user.h> #include <user.h>
@ -372,11 +372,18 @@ bool TExplorer_mask::stop_run(KEY k)
for (i = 2; i >= 0; i--) for (i = 2; i >= 0; i--)
xvt_image_destroy(image[i]); xvt_image_destroy(image[i]);
if (!yesno_box(TR("Si desidera uscire?"))) //..altrimenti chiede educatamente se si desidera uscire if (installing()) //se e' stata lanciata la installazione moduli...
{
xvt_sys_sleep(1); //..aspetta un attimo poi forza l'uscita
}
else
{ {
for (i = 0; i < 3; i++) if (!yesno_box(TR("Si desidera uscire?"))) //..altrimenti chiede educatamente se si desidera uscire
xvt_dwin_invalidate_rect(window[i], NULL); {
return false; for (i = 0; i < 3; i++)
xvt_dwin_invalidate_rect(window[i], NULL);
return false;
}
} }
} }
} }
@ -1188,7 +1195,7 @@ bool TMenu_application::test_programs()
if (remote_name.exist()) if (remote_name.exist())
{ {
TProgind pi(3, TR("Controllo aggiornamento programmi"), false, TRUE); TProgind pi(3, TR("Controllo aggiornamento programmi"), false, true);
TConfig remote_install(remote_name, "Main"); TConfig remote_install(remote_name, "Main");
remote_install.write_protect(); remote_install.write_protect();
@ -1249,15 +1256,12 @@ bool TMenu_application::test_programs()
(!more && !yesno_box(TR("Si desidera aggiornare i moduli adesso?")))) (!more && !yesno_box(TR("Si desidera aggiornare i moduli adesso?"))))
break; break;
const TString old_user = user();
user() = dongle().administrator(); // Divento temporaneamente amministratore user() = dongle().administrator(); // Divento temporaneamente amministratore
TExternal_app app("ba1 -6"); TExternal_app app("ba1 -6");
app.run(true); //lancia ba1 senza ba0 app.run(true);
user() = old_user; // Ripristino utente normale set_installing_flag();
more = true; // ricontrolla //se lancia un'installazione->esce!!!
return false;
//if (sys_dll_changed()) //costringe ad uscire dal programma se si e' installato il modulo SY
return false;
} }
_menu.set_dangerous_modules(dangerous); _menu.set_dangerous_modules(dangerous);
return true; return true;
@ -1349,6 +1353,9 @@ void TMenu_application::main_loop()
_menu.perform(); _menu.perform();
else else
run = m >= -1; run = m >= -1;
if (installing()) //esce dal ciclo se ha lanciato una installazione moduli
break;
} }
} }

View File

@ -3,12 +3,11 @@
#include <execp.h> #include <execp.h>
#include <mask.h> #include <mask.h>
#include <modaut.h> #include <modaut.h>
#include <nditte.h>
#include <printer.h> #include <printer.h>
#include <relation.h> #include <relation.h>
#include <utility.h> #include <utility.h>
#include <nditte.h>
#include "ba0100a.h" #include "ba0100a.h"
#include "ba0101.h" #include "ba0101.h"
#include "ba0100.h" #include "ba0100.h"
@ -26,6 +25,17 @@ bool sys_dll_changed()
return k > 0; return k > 0;
} }
static bool _installing = false;
void set_installing_flag()
{
_installing = true;
}
bool installing()
{
return _installing;
}
static bool is_visible(const int cod) static bool is_visible(const int cod)
{ {
@ -134,7 +144,7 @@ public:
TMenuitem::TMenuitem(TSubmenu* sm) TMenuitem::TMenuitem(TSubmenu* sm)
: _submenu(sm), _icon(0),_color(NORMAL_COLOR), _exist(-1), : _submenu(sm), _icon(0),_color(NORMAL_COLOR), _exist(-1),
_firm(FALSE), _password(FALSE), _reloadmenu(FALSE) _firm(false), _password(false), _reloadmenu(false)
{ } { }
@ -175,10 +185,10 @@ bool TMenuitem::create(const char* t)
{ {
switch(toupper(flags[i])) switch(toupper(flags[i]))
{ {
case 'D': _exist = FALSE; break; case 'D': _exist = false; break;
case 'F': _firm = TRUE; break; case 'F': _firm = true; break;
case 'P': _password = TRUE; break; case 'P': _password = true; break;
case 'R': _reloadmenu = TRUE; break; case 'R': _reloadmenu = true; break;
case 'E': visible = dongle().active(EEAUT); // Nascondi i moduli dipendenti da EE case 'E': visible = dongle().active(EEAUT); // Nascondi i moduli dipendenti da EE
default : break; default : break;
} }
@ -221,7 +231,7 @@ int TMenuitem::icon() const
bool TMenuitem::enabled() const bool TMenuitem::enabled() const
{ {
bool yes = FALSE; bool yes = false;
if (_exist) if (_exist)
{ {
if (is_submenu()) if (is_submenu())
@ -283,14 +293,14 @@ bool TMenuitem::perform_submenu() const
bool TMenuitem::perform_program() const bool TMenuitem::perform_program() const
{ {
bool ok = TRUE; bool ok = true;
if (_password) if (_password)
{ {
TMask mask("ba0100a"); TMask mask("ba0100a");
mask.disable(F_USER); mask.disable(F_USER);
mask.set(F_USER, "SERVIZIO"); mask.set(F_USER, "SERVIZIO");
ok = FALSE; ok = false;
if (mask.run() == K_ENTER) if (mask.run() == K_ENTER)
{ {
const TDate oggi(TODAY); const TDate oggi(TODAY);
@ -309,30 +319,22 @@ bool TMenuitem::perform_program() const
if (ok) if (ok)
{ {
// const bool maintenance_app = _action.starts_with("ba1 -0", true);
const bool install_app = _action.starts_with("ba1 -6", true);
TCurrency::force_cache_update(); // Chiude cache valute TCurrency::force_cache_update(); // Chiude cache valute
prefix().set(NULL); // Chiude prefix prefix().set(NULL); // Chiude prefix
TExternal_app a(_action); TExternal_app a(_action);
const bool async = install_app; // Lancio l'installazione moduli sempre asincrona
a.run(async, 3); const bool install_app = _action.starts_with("ba1 -6", true);
if (install_app)
{
user() = dongle().administrator(); // Divento temporaneamente amministratore
a.run(true,3); //e' una installazione -> applicazione in asincrono
set_installing_flag();
}
else
a.run(false,3); //e' un programma normale->sincrono
prefix().set("DEF"); // Aggiorna prefix prefix().set("DEF"); // Aggiorna prefix
if (install_app)
{
WINDOW w = cur_win();
if (w != NULL_WIN) //TExplorer_mask
dispatch_e_char(w, K_FORCE_CLOSE); //chiude senza chiedere conferma (installazione e roba simile)
else
{
EVENT e; memset(&e, 0, sizeof(e));
e.type = E_CLOSE;
dispatch_event(TASK_WIN, e, true);
}
}
printer_destroy(); // Forza rilettura parametri della stampante printer_destroy(); // Forza rilettura parametri della stampante
} }
@ -358,7 +360,7 @@ bool TMenuitem::perform() const
TSubmenu::TSubmenu(TMenu* menu, const char* name) TSubmenu::TSubmenu(TMenu* menu, const char* name)
: _menu(menu), _name(name), _items(12), : _menu(menu), _name(name), _items(12),
_enabled(TRUE), _firm(FALSE) _enabled(true), _firm(false)
{ {
} }
@ -413,7 +415,7 @@ void TSubmenu::read(TScanner& scanner)
TString16 flags; TString16 flags;
get_next_string(line, 6, flags, brace); get_next_string(line, 6, flags, brace);
if (flags.find('D') >= 0) if (flags.find('D') >= 0)
_enabled = FALSE; _enabled = false;
if (flags.find('F') >= 0) if (flags.find('F') >= 0)
_firm = true; _firm = true;
} else } else
@ -667,12 +669,12 @@ bool TMenu::can_be_transparent(const TImage& i) const
const int h = i.height()-1; const int h = i.height()-1;
const COLOR col = i.get_pixel(0,0); const COLOR col = i.get_pixel(0,0);
if (i.get_pixel(w,0) != col) if (i.get_pixel(w,0) != col)
return FALSE; return false;
if (i.get_pixel(w,h) != col) if (i.get_pixel(w,h) != col)
return FALSE; return false;
if (i.get_pixel(0,h) != col) if (i.get_pixel(0,h) != col)
return FALSE; return false;
return TRUE; return true;
} }
TImage& TMenu::image(const char* name) TImage& TMenu::image(const char* name)
@ -684,7 +686,6 @@ TImage& TMenu::image(const char* name)
const char* ext[4] = { "jpg", "gif", "bmp", "png" }; const char* ext[4] = { "jpg", "gif", "bmp", "png" };
bool bFound = false; bool bFound = false;
for (int i = 0; i < 4 && !bFound; i++) for (int i = 0; i < 4 && !bFound; i++)
{ {
realname = name; realname = name;
realname.ext(ext[i]); realname.ext(ext[i]);

View File

@ -169,5 +169,7 @@ public:
bool sys_dll_changed(); bool sys_dll_changed();
void set_installing_flag();
bool installing();
#endif #endif