Patch level : 10.0

Files correlati     : ba0 ba8
Ricompilazione Demo : [ ]
Commento            :
Aggiornato uso alberi corretti in menu e report
Sistemata interazione tra menu e programmi di manutenzione


git-svn-id: svn://10.65.10.50/trunk@16616 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2008-05-14 09:34:11 +00:00
parent 06f1cf32e3
commit 49950ba913
8 changed files with 115 additions and 62 deletions

View File

@ -303,15 +303,15 @@ bool TMenuitem::perform_program() const
}
else
{
prefix().set(NULL); // Chiude prefix
if (submenu().menu().mask_mode() == 3)
if (submenu().menu().mask_mode() == 3 && !_action.starts_with("ba1 -"))
a.run(true, 3, false); //e' un programma asincrono
else
{
a.run(false, 3); //e' un programma sincrono
printer_destroy(); // Forza rilettura parametri della stampante
prefix().set(NULL); // Chiude prefix
a.run(false, 3); // e' un programma sincrono
printer_destroy(); // Forza rilettura parametri della stampante
prefix().set("DEF"); // Riapre prefix
}
prefix().set("DEF"); // Riapre prefix
}
}

View File

@ -271,12 +271,19 @@ long TMenu_tree::find_node(const TString& id)
return data._count;
}
void TMenu_tree::change_root(const char* rid)
{
_root_id = rid;
const int dot = _root_id.find('.');
if (dot > 0)
_root_id.cut(dot);
goto_root();
}
TMenu_tree::TMenu_tree(TMenu& menu)
: _menu(&menu), _curr_id(128, '/')
{
// _root_id = _menu->current().name();
_root_id = "MENU_000"; // Triste necessita' per sicurezza
goto_root();
change_root("MENU_000");
}
///////////////////////////////////////////////////////////

View File

@ -54,6 +54,7 @@ public:
bool find_leaf(const TString& str);
bool find_string(const TString& str);
long find_node(const TString& id);
void change_root(const char* id);
TMenu_tree(TMenu& menu);
virtual ~TMenu_tree() { }

View File

@ -1,6 +1,7 @@
#include "ba0103.h"
#include <defmask.h>
#include <prefix.h>
#include <xvtility.h>
enum { DLG_TREE = 101, DLG_LOOK = 102, DLG_MAIN = 103 };
@ -199,11 +200,12 @@ bool TBook_window::remove_page(WINDOW page)
for (int p = pages()-1; p >= 0; p--)
{
WINDOW win = xvt_notebk_get_page(_ctrl, p);
if (win == page)
if (win == page || page == NULL_WIN)
{
xvt_notebk_rem_page(_ctrl, p);
bFound = true;
break;
if (page != NULL_WIN)
break;
}
}
if (bFound)
@ -257,6 +259,7 @@ public:
short add_page(const TString& caption);
void set_page_caption(short page, const TString& caption);
void remove_all_pages();
TBook_field(TMask* m) : TWindowed_field(m) {}
};
@ -272,6 +275,12 @@ void TBook_field::set_page_caption(short page, const TString& caption)
bw.set_page_caption(page, caption);
}
void TBook_field::remove_all_pages()
{
TBook_window& bw = (TBook_window&)win();
bw.remove_page(NULL_WIN);
}
TField_window* TBook_field::create_window(int x, int y, int dx, int dy, WINDOW parent)
{
return new TBook_window(x, y, dx, dy, parent, this);
@ -304,7 +313,7 @@ bool TOutlook_mask::on_field_event(TOperable_field& o, TField_event e, long joll
switch (o.dlg())
{
case DLG_TREE:
if (e == fe_modify)
if (e == fe_button)
{
const TMenuitem& mi = _tree.curr_item();
if (mi.enabled())
@ -316,21 +325,25 @@ bool TOutlook_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
else
{
if (mi.action() != "ba1 -5")
const bool manu = mi.action().starts_with("ba1 -");
if (manu) // Manutenzione di qualsiasi cosa
{
const short pg = add_page(mi.caption());
if (pg >= 0)
{
mi.perform();
xvt_sys_sleep(1000);
set_page_caption(pg, mi.caption());
}
TBook_field& bf = (TBook_field&)field(DLG_MAIN);
bf.remove_all_pages(); // Chiude tutti i programmi in corso
mi.perform(); // Esegui in sincrono e a tutto schermo
if (installing()) // when ba1 -6
stop_run(K_FORCE_CLOSE);
}
else
{
mi.perform();
if (installing()) // Always true
stop_run(K_FORCE_CLOSE);
// Crea una pagina per accogliere la nuova applicazione asincrona
const short pg = add_page(mi.caption());
if (pg >= 0)
{
mi.perform(); // Esegui in asincrono in pagina nuova
xvt_sys_sleep(1000);
set_page_caption(pg, mi.caption());
}
}
}
}
@ -339,10 +352,14 @@ bool TOutlook_mask::on_field_event(TOperable_field& o, TField_event e, long joll
case DLG_LOOK:
if (e == fe_modify)
{
TToken_string id("MENU_000", '/');
_tree.change_root(id); // Torna alla radice standard
const int sel = atoi(o.get());
_tree.goto_root();
for (int i = 0; i < sel; i++)
_tree.goto_rbrother();
_tree.goto_rbrother(); // Seglie l'opportuno ramo principale
_tree.goto_firstson();
_tree.curr_id(id);
_tree.change_root(id.get(1)); // Imposta una nuova radice
synchronize_tree_field(tfield(DLG_TREE));
}
break;

View File

@ -1,4 +1,4 @@
PAGE "Colori" -1 -1 54 19
PAGE "Colori" -1 -1 54 17
GROUPBOX DLG_NULL 16 5
BEGIN
@ -60,7 +60,6 @@ BEGIN
PROMPT 38 3 "Obbligatorio"
END
GROUPBOX DLG_NULL 16 4
BEGIN
PROMPT 37 5 "@bAttivo"
@ -91,34 +90,24 @@ BEGIN
PROMPT 38 11 "Sfondo"
END
GROUPBOX DLG_NULL 16 4
GROUPBOX DLG_NULL 32 3
BEGIN
PROMPT 37 13 "@bTemi predefiniti"
PROMPT 1 12 "@bTemi predefiniti"
END
BUTTON 211 12
BEGIN
PROMPT 38 14 "Campo"
PROMPT 2 13 "Campo"
END
BUTTON 212 12
BEGIN
PROMPT 38 15 "Sistema"
PROMPT 18 13 "Sistema"
END
BOOLEAN 213
BUTTON DLG_USER 12 2
BEGIN
PROMPT 2 17 "Campi 3D"
END
BOOLEAN 214
BEGIN
PROMPT 15 17 "Bottoni di sistema"
END
BOOLEAN 215
BEGIN
PROMPT 36 17 "Grafica avanzata"
PROMPT -33 13 "Font"
END
BUTTON DLG_OK 12 2
@ -126,10 +115,53 @@ BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_EDIT 12 2
BUTTON DLG_CANCEL 12 2
BEGIN
PROMPT -23 -1 "Font"
PICTURE 116
PROMPT -33 -1 ""
END
ENDPAGE
PAGE "Avanzate" -1 -1 54 17
BOOLEAN 213
BEGIN
PROMPT 1 1 "Campi 3D"
END
BOOLEAN 214
BEGIN
PROMPT 1 2 "Bottoni di sistema"
END
BOOLEAN 215
BEGIN
PROMPT 1 3 "Grafica avanzata"
END
RADIOBUTTON 216 1 16
BEGIN
PROMPT 24 0 "Tipo di Menu"
ITEM "0|Normale"
ITEM "1|Albero"
ITEM "2|Explorer"
ITEM "3|Outlook"
END
TEXT DLG_NULL
BEGIN
PROMPT -11 8 "Dimensione barra degli strumenti"
END
SLIDER 217 50 1
BEGIN
PROMPT 1 9 "Dimensione icone"
RANGE 0 14
END
BUTTON DLG_OK 12 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 12 2

View File

@ -1,4 +1,3 @@
#define F_PREF_TREE 200
#define F_PREF_SHEET 201
#define F_PREF_UP 202
#define F_PREF_DN 203

View File

@ -2,15 +2,6 @@
PAGE "Preferiti" -1 -1 70 16
LIST F_PREF_TREE 1 10
BEGIN
PROMPT 1 0 "Tipo di Menu"
ITEM " |Normale"
ITEM "1|Albero"
ITEM "2|Explorer"
ITEM "3|Outlook"
END
SPREADSHEET F_PREF_SHEET 63 -3
BEGIN
PROMPT 1 1 ""

View File

@ -459,8 +459,8 @@ protected:
protected:
bool select_report();
void select_section();
void update_report() const;
void select_section(bool rebuild_tree = false);
void update_report(bool rebuild_tree = false) const;
TReport_section& curr_section();
void add_field();
@ -586,7 +586,7 @@ bool TReport_mask::load_report()
TTree_field& sections = tfield(F_SECTIONS);
_tree.goto_node('B', 1);
sections.select_current();
select_section();
select_section(true);
xvt_notebk_set_tab_title(notebook(), 0, path); // Mette il titolo nel tab button
}
}
@ -633,7 +633,7 @@ TReport_section& TReport_mask::curr_section()
return *_curr_section;
}
void TReport_mask::select_section()
void TReport_mask::select_section(bool rebuild)
{
TTree_field& tf = tfield(F_SECTIONS);
tf.select_current();
@ -699,13 +699,19 @@ void TReport_mask::select_section()
TReport_drawer& rdh = (TReport_drawer&)field(F_REPORTH);
rdh.set_report_section(_report.section(htype, hlevel));
update_report();
update_report(rebuild);
}
void TReport_mask::update_report() const
void TReport_mask::update_report(bool rebuild) const
{
TTree_field& tf = tfield(F_SECTIONS);
tf.win().TWindow::force_update(); // Redraw only, not rebuild
if (rebuild)
{
tf.tree()->goto_root();
tf.win().force_update(); // Rebuild tree
}
else
tf.win().TWindow::force_update(); // Redraw only, do NOT rebuild
TReport_drawer& rdh = (TReport_drawer&)field(F_REPORTH);
rdh.win().force_update();