Patch level : 10.0 1024
Files correlati : ba0, ba1, ba8 Ricompilazione Demo : [ ] Commento : Corretta gestione permessi utente per esecuzione delle singole applcazioni (Possamai) Corretto aggiornamento albero quando si elimina una sezione nell'editor di report git-svn-id: svn://10.65.10.50/branches/R_10_00@22247 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
89d22e2b8c
commit
01d48b37a9
@ -189,8 +189,8 @@ bool TMenuitem::create(const char* t)
|
||||
_exist = _enabled = false;
|
||||
|
||||
// Controlla lo stato di aggiornamento
|
||||
if (_enabled && is_program())
|
||||
_enabled = !menu().is_dangerous(_action) && !menu().is_vanished(_action);
|
||||
//if (_enabled && is_program())
|
||||
// _enabled = !menu().is_dangerous(_action) && !menu().is_vanished(_action);
|
||||
|
||||
return visible;
|
||||
}
|
||||
@ -221,7 +221,8 @@ bool TMenuitem::enabled() const
|
||||
}
|
||||
else
|
||||
{
|
||||
yes = !menu().is_dangerous(_action);
|
||||
// Controlla lo stato di aggiornamento
|
||||
yes = !menu().is_dangerous(_action) && !menu().is_vanished(_action);
|
||||
if (yes)
|
||||
{
|
||||
const int endname = _action.find(' ');
|
||||
@ -337,6 +338,12 @@ bool TMenuitem::perform_program() const
|
||||
{
|
||||
TCurrency::force_cache_update(); // Chiude cache valute
|
||||
TExternal_app a(_action);
|
||||
if (!a.can_run())
|
||||
{
|
||||
((TMenuitem*)this)->_enabled = false; // Controllo sfuggito al caricamento del menu
|
||||
return error_box(FR("L'utente %s non è abilitato all'uso del programma\n%s"),
|
||||
(const char*)user(), (const char*)caption());
|
||||
}
|
||||
|
||||
const bool install_app = _action.starts_with("ba1 -6", true);
|
||||
if (install_app)
|
||||
|
27
ba/ba1.cpp
27
ba/ba1.cpp
@ -10,24 +10,15 @@ int main(int argc,char** argv)
|
||||
|
||||
switch (r)
|
||||
{
|
||||
case 1:
|
||||
ba1200(argc,argv); break; // Test file
|
||||
case 2:
|
||||
ba1300(argc,argv); break; // Compattazione files
|
||||
case 3:
|
||||
ba1400(argc,argv); break; // Configurazione utenti
|
||||
case 4:
|
||||
ba1500(argc,argv); break; // Attivazione moduli
|
||||
case 5:
|
||||
ba1600(argc,argv); break; // Creazione dischi e fascicolatore
|
||||
case 6:
|
||||
ba1700(argc,argv); break; // Installazione moduli
|
||||
case 7:
|
||||
ba1800(argc,argv); break; // Utility(?)
|
||||
case 8:
|
||||
ba1900(argc,argv); break; // Dizionario
|
||||
default:
|
||||
ba1100(argc,argv); break; // Manutenzione
|
||||
case 1: ba1200(argc,argv); break; // Test file
|
||||
case 2: ba1300(argc,argv); break; // Compattazione files
|
||||
case 3: ba1400(argc,argv); break; // Configurazione utenti
|
||||
case 4: ba1500(argc,argv); break; // Attivazione moduli
|
||||
case 5: ba1600(argc,argv); break; // Creazione dischi e fascicolatore
|
||||
case 6: ba1700(argc,argv); break; // Installazione moduli
|
||||
case 7: ba1800(argc,argv); break; // Utility(?)
|
||||
case 8: ba1900(argc,argv); break; // Dizionario
|
||||
default: ba1100(argc,argv); break; // Manutenzione
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -20,6 +20,9 @@
|
||||
class TMenu_item : public TString
|
||||
{
|
||||
TString _cmd;
|
||||
|
||||
protected:
|
||||
int get_next_string(const char* s, int from, TString& str, char& brace) const;
|
||||
|
||||
public:
|
||||
virtual TObject* dup() const { return new TMenu_item(*this); }
|
||||
@ -31,20 +34,65 @@ public:
|
||||
virtual ~TMenu_item() { }
|
||||
};
|
||||
|
||||
int TMenu_item::get_next_string(const char* s, int from, TString& str, char& brace) const
|
||||
{
|
||||
if (from < 0)
|
||||
return -1;
|
||||
|
||||
char closing = '\0';
|
||||
int start = 0;
|
||||
|
||||
for (int i = from; s[i]; i++)
|
||||
{
|
||||
if (s[i] == closing)
|
||||
{
|
||||
char* fine = (char*)(s + i);
|
||||
const char old = *fine;
|
||||
*fine = '\0';
|
||||
str = s + start;
|
||||
*fine = old;
|
||||
return i+1;
|
||||
}
|
||||
|
||||
if (!closing)
|
||||
{
|
||||
switch(s[i])
|
||||
{
|
||||
case '\'':
|
||||
case '"' : closing = s[i]; break;
|
||||
case '<' : closing = '>' ; break;
|
||||
case '[' : closing = ']' ; break;
|
||||
default : break;
|
||||
}
|
||||
if (closing)
|
||||
{
|
||||
start = i+1;
|
||||
brace = s[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
TMenu_item::TMenu_item(const TMenu_item& mi)
|
||||
: _cmd(mi._cmd)
|
||||
{ set(*this); }
|
||||
|
||||
TMenu_item::TMenu_item(const char* line)
|
||||
{
|
||||
TToken_string ts(line, ',');
|
||||
set(ts.get(0)); trim();
|
||||
if (operator[](0) == '"')
|
||||
{ ltrim(1); rtrim(1); }
|
||||
|
||||
_cmd = ts.get(); _cmd.trim();
|
||||
if (_cmd[0] == '"')
|
||||
{ _cmd.ltrim(1); _cmd.rtrim(1); }
|
||||
char brace;
|
||||
int start = 0;
|
||||
start = get_next_string(line, start, *this, brace);
|
||||
start = get_next_string(line, start, _cmd, brace);
|
||||
if (brace == '[') // Preserva il tipo submenu
|
||||
{
|
||||
_cmd.insert("[");
|
||||
_cmd << ']';
|
||||
}
|
||||
|
||||
if (_cmd.starts_with("ve0 -1 "))
|
||||
int cazzone = 1;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -535,7 +583,7 @@ bool TSet_users::p_notify(TSheet_field& f, int r, KEY k)
|
||||
case K_INS:
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (m.get(F_APPLICAT).empty())
|
||||
if (m.field(F_APPLICAT).empty())
|
||||
return error_box(TR("Nessun programma selezionato"));
|
||||
}
|
||||
default:
|
||||
@ -774,7 +822,7 @@ int TSet_user_passwd::rewrite(const TMask& m)
|
||||
|
||||
bool TSet_users::remove()
|
||||
{
|
||||
const TString16 u = get_relation()->curr().get(USR_USERNAME);
|
||||
const TString u = get_relation()->curr().get(USR_USERNAME);
|
||||
const bool ok = TRelation_application::remove();
|
||||
if (ok && u.full())
|
||||
{
|
||||
|
@ -1781,7 +1781,7 @@ TInstaller_mask::TInstaller_mask()
|
||||
0x18, 4)
|
||||
{
|
||||
add_button(F_INSTALL, TR("Installa"), '\0', TOOL_ELABORA); // NON mettere 'I'
|
||||
add_button(F_UPDATE, TR("Rileggi"), '\0', TOOL_CONVERT);
|
||||
add_button(F_UPDATE, TR("Aggiorna Lista"), '\0', TOOL_CONVERT);
|
||||
add_button(DLG_NULL, "", '\0');
|
||||
add_button(DLG_INFO, TR("Info"), K_F2, TOOL_INFO);
|
||||
add_button(DLG_HELP, TR("Help"), K_F1, TOOL_HELP);
|
||||
|
@ -923,12 +923,14 @@ void TReport_mask::section_properties()
|
||||
{
|
||||
TReport_section& rs = curr_section();
|
||||
TSection_properties_mask m(rs);
|
||||
bool dirty = false;
|
||||
switch (m.run())
|
||||
{
|
||||
case K_ENTER:
|
||||
m.get_section(rs);
|
||||
_tree.goto_node(rs.type(), rs.level());
|
||||
_is_dirty = true;
|
||||
select_section(true);
|
||||
break;
|
||||
case K_DEL:
|
||||
if (yesno_box(TR("Confermare l'eliminazione della sezione")))
|
||||
@ -938,13 +940,12 @@ void TReport_mask::section_properties()
|
||||
rs.report().kill_section(t, l);
|
||||
_tree.goto_node(t, l-1);
|
||||
_is_dirty = true;
|
||||
select_section(true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (_is_dirty)
|
||||
select_section();
|
||||
}
|
||||
|
||||
void TReport_mask::report_properties()
|
||||
|
Loading…
x
Reference in New Issue
Block a user