ba0*.* Gestione menu editors per i golem

ba1600?.*  Aggiunto gestore delle installazioni


git-svn-id: svn://10.65.10.50/trunk@5355 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-10-13 14:07:29 +00:00
parent b7b5f606a8
commit 1a74003000
10 changed files with 587 additions and 38 deletions

@ -7,7 +7,7 @@
#include <colors.h>
#include <config.h>
#include <execp.h>
#include <mask.h>
#include <msksheet.h>
#include <isam.h>
#include <prefix.h>
#include <progind.h>
@ -1166,9 +1166,30 @@ void TMenu_application::test_temp()
}
}
#ifdef DBG
HIDDEN bool pwd_handler(TMask_field& fld, KEY key)
{
if (key == K_F8)
{
TMask& m = fld.mask();
m.set(F_USER, "PRASSI");
m.set(F_PASSWORD, "pr.assi");
m.stop_run(K_ENTER);
}
return TRUE;
}
#endif
bool TMenu_application::check_user()
{
TMask m("ba0100a");
#ifdef DBG
m.set_handler(F_USER, pwd_handler);
m.set_handler(F_PASSWORD, pwd_handler);
#endif
TLocalisamfile users(LF_USER);
TString utente(user()), pwd;
@ -1334,10 +1355,11 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
if (k == K_F9)
{
FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC));
xvt_fsys_convert_str_to_dir(".", &fs.dir);
strcpy(fs.type, "EXE");
strcpy(fs.name, f.get());
strcpy(fs.creator, "ba0");
xvt_fsys_get_default_dir(&fs.dir);
xvt_fsys_save_dir();
if (xvt_dm_post_file_open(&fs, "Selezione programma") == FL_OK)
{
@ -1352,19 +1374,58 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
return TRUE;
}
HIDDEN bool link_notify(TSheet_field& s, int r, KEY k)
{
bool ok = TRUE;
if (k == K_INS)
{
ok = s.items() < 29; // Accetta 29 righe al massimo
}
return ok;
}
bool TMenu_application::choose_editors()
{
disable_menu_item(M_FONT);
TConfig link(CONFIG_USER, "Link");
TMask editor("ba0300a");
editor.set_handler(101, browse_file_handler);
editor.set(101, link.get("Editor"));
TMask* msk = new TMask("ba0300a");
TMask& m = *msk;
if (editor.run() == K_ENTER)
TSheet_field& sheet = m.sfield(201);
sheet.set_notify(link_notify);
TMask& sm = sheet.sheet_mask();
sm.set_handler(102, browse_file_handler);
TAssoc_array& var = (TAssoc_array&)link.list_variables();
var.restart();
for (THash_object* hobj = var.get_hashobj(); hobj; hobj = var.get_hashobj())
{
link.set("Editor", editor.get(101));
TToken_string& row = sheet.row(-1);
row = hobj->key();
if (row.compare("txt", -1, TRUE) == 0)
sheet.disable_cell(sheet.items()-1, 0);
row.add((TString&)hobj->obj());
}
if (m.run() == K_ENTER)
{
var.destroy();
for (int r = sheet.items()-1; r >= 0; r--)
{
TToken_string& row = sheet.row(r);
TString16 ext = row.get(0);
if (!ext.blank())
{
TFilename prg = row.get();
link.set(ext, prg);
}
}
}
delete msk;
enable_menu_item(M_FONT);
return TRUE;
@ -1507,8 +1568,10 @@ int main(int argc, char** argv)
exit(1);
}
TMenu_application ma(menu);
ma.run(argc, argv, "Menu Principale");
TMenu_application* ma = new TMenu_application(menu);
ma->run(argc, argv, "Menu Principale");
delete ma;
exit(0);
return TRUE;
}

@ -7,4 +7,4 @@ MENU TASK_MENUBAR
MENU M_FONT
ITEM M_FONT_SELECT "~Font"
ITEM MENU_ITEM(2) "~Colori"
ITEM MENU_ITEM(3) "~Editor"
ITEM MENU_ITEM(3) "~Editors"

@ -1,22 +1,51 @@
PAGE "Editor" -1 -1 62 5
STRING 101 50
BEGIN
PROMPT 1 1 "Comando "
FLAGS "B"
FIELD Editor
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 "Conferma"
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 "Annulla"
END
ENDPAGE
ENDMASK
PAGE "Editors" -1 -1 62 15
SPREADSHEET 201 58 12
BEGIN
PROMPT 1 1 ""
ITEM "Tipo"
ITEM "Programma@40"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 "Conferma"
PICTURE BMP_OK
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 "Annulla"
END
ENDPAGE
ENDMASK
PAGE "Editor" -1 -1 52 5
STRING 101 3
BEGIN
PROMPT 1 1 "Tipo "
END
STRING 102 40
BEGIN
PROMPT 1 2 "Comando "
FLAGS "B"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 "Conferma"
PICTURE BMP_OK
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 "Annulla"
END
ENDPAGE
ENDMASK

@ -1,10 +1,7 @@
#include <applicat.h>
#include <checks.h>
#include "ba1.h"
#define usage "Errore - uso : ba1 [-{0|1|2|3|4}]"
int main(int argc,char** argv)
{
TApplication::check_parameters(argc, argv);
@ -13,8 +10,6 @@ int main(int argc,char** argv)
switch (r)
{
case 0:
ba1100(argc,argv); break;
case 1:
ba1200(argc,argv); break;
case 2:
@ -23,8 +18,10 @@ int main(int argc,char** argv)
ba1400(argc,argv); break;
case 4:
ba1500(argc,argv); break;
case 5:
ba1600(argc,argv); break;
default:
error_box(usage); break;
ba1100(argc,argv); break;
}
exit(0);

@ -6,6 +6,7 @@ int ba1200(int argc, char** argv);
int ba1300(int argc, char** argv);
int ba1400(int argc, char** argv);
int ba1500(int argc, char** argv);
int ba1600(int argc, char* argv[]);
#endif // __BA1_H

@ -31,4 +31,9 @@ MENUBAR MENU_BAR(4)
MENU MENU_BAR(4)
SUBMENU MENU_FILE "~File"
/* ba1 -5 */
MENUBAR MENU_BAR(5)
MENU MENU_BAR(5)
SUBMENU MENU_FILE "~File"

271
ba/ba1600.cpp Executable file

@ -0,0 +1,271 @@
#include <applicat.h>
#include <config.h>
#include <msksheet.h>
#include <utility.h>
#include "ba1.h"
#include "ba1600.h"
///////////////////////////////////////////////////////////
// Configurazione per installazione
///////////////////////////////////////////////////////////
class TInstall_ini : public TConfig
{
public:
TInstall_ini() : TConfig("install.ini") { }
virtual ~TInstall_ini() { }
};
///////////////////////////////////////////////////////////
// Maschera modulo
///////////////////////////////////////////////////////////
class TModule_mask : public TMask
{
protected:
static bool link_handler(TMask_field& f, KEY k);
public:
TModule_mask(const TString& module);
virtual ~TModule_mask() { }
};
bool TModule_mask::link_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
TMask& modmask = f.mask();
TSheet_field* sf = modmask.get_sheet();
TMask& mainmask = sf->mask();
TSheet_field& sheet = mainmask.sfield(F_SHEET);
TToken_string& newrow = sheet.row(-1);
newrow = modmask.get(101);
TString16 submod = newrow.left(2);
submod << '0';
newrow.add(submod);
if (modmask.is_running())
{
modmask.stop_run(K_ESC);
do_events();
}
sf->destroy(sf->selected());
sheet.force_update();
sf->force_update();
}
return TRUE;
}
TModule_mask::TModule_mask(const TString& module)
: TMask("ba1600b")
{
TInstall_ini ini;
TString paragraph, file;
TSheet_field& s = sfield(F_SHEET);
for (int sub = 0; ; sub++)
{
paragraph = module;
paragraph << sub;
if (ini.set_paragraph(paragraph))
{
for (int index = 0; ini.exist("File", index); index++)
{
file = ini.get("File", NULL, index);
file.lower();
TToken_string& row = s.row(-1);
row = file;
row.add(paragraph);
}
}
else
break;
}
TToken_string externals(ini.get("Esterni", module), ' ');
for (TString16 e = externals.get(0); !e.blank(); e = externals.get())
{
if (ini.set_paragraph(e))
{
for (int index = 0; ini.exist("File", index); index++)
{
file = ini.get("File", NULL, index);
file.lower();
TToken_string& row = s.row(-1);
row = file;
row.add(e);
s.disable_cell(s.items()-1, -1);
}
}
else
break;
}
TSheet_field& miss = sfield(F_MISSING);
miss.disable(); // Read-only sheet
TMask& sm = miss.sheet_mask();
sm.set_handler(100, link_handler);
TFilename mask;
mask << module << "*.*";
TString_array& arr = miss.rows_array();
list_files(mask, arr);
const char* goodext[] = { "exe", "msk", "frm", "rpt", NULL };
for (int index = arr.items()-1; index >= 0; index--)
{
bool keep = FALSE;
mask = arr.row(index);
mask.lower();
const TString16 ext = mask.ext();
for (int e = 0; goodext[e]; e++)
{
if (ext.compare(goodext[e], -1, TRUE) == 0)
{
TString_array& sarr = s.rows_array();
for (int i = sarr.items()-1; i >= 0; i--)
{
if (mask.compare(sarr.row(i).get(0), -1, TRUE) == 0)
break;
}
keep = i < 0;
break;
}
}
if (keep)
arr.row(index) = mask;
else
arr.destroy(index);
}
arr.pack();
miss.force_update();
}
///////////////////////////////////////////////////////////
// Maschera principale
///////////////////////////////////////////////////////////
class TFascicolator_mask : public TMask
{
protected:
static bool list_handler(TMask_field& f, KEY k);
public:
TFascicolator_mask();
virtual ~TFascicolator_mask() { }
};
bool TFascicolator_mask::list_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
const TMask& m = f.mask();
const TString& module = m.get(S_MODULE);
TModule_mask mm(module);
if (mm.run() == K_ENTER)
{
TInstall_ini ini;
int index;
for (index = 0; ; index++)
{
TString16 sub; sub << module << index;
if (ini.set_paragraph(sub))
{
TAssoc_array& list = (TAssoc_array&)ini.list_variables();
list.destroy();
}
else
break;
}
TSheet_field& sheet = mm.sfield(F_SHEET);
index = 0;
for (int r = sheet.items()-1; r >= 0; r--)
{
if (!sheet.cell_disabled(r, 0))
{
TToken_string& row = sheet.row(r);
TString16 sub = row.get(1);
if (isdigit(sub[0]) || sub.left(2) == module)
{
if (isdigit(sub[0]))
sub.insert(module, 0);
ini.set("File", row.get(0), sub, TRUE, index++);
}
}
}
}
}
return TRUE;
}
TFascicolator_mask::TFascicolator_mask()
: TMask("ba1600a")
{
TSheet_field& s = sfield(F_SHEET);
TMask& m = s.sheet_mask();
m.set_handler(S_LIST, list_handler);
TScanner scanner("prassi.aut");
TString tmp;
TInstall_ini ini;
for (int modulo = 0; ;modulo++)
{
const TString& lin = scanner.line();
if (lin.empty())
break;
TToken_string& row = s.row(modulo);
tmp = lin.left(2);
row = lin.mid(3);
row.add(tmp);
if (tmp != "xx")
{
ini.set_paragraph(tmp);
tmp = ini.get("Versione");
row.add(tmp.left(2));
row.add(tmp.mid(2));
tmp = ini.get("Data");
row.add(tmp);
tmp = ini.get("Moduli");
row.add(tmp);
}
else
s.disable_cell(modulo, -1);
}
}
///////////////////////////////////////////////////////////
// Programma principale
///////////////////////////////////////////////////////////
class TFascicolator : public TSkeleton_application
{
protected:
virtual bool use_files() const { return FALSE; }
virtual void main_loop();
};
void TFascicolator::main_loop()
{
TFascicolator_mask m;
m.run();
}
int ba1600(int argc, char* argv[])
{
TFascicolator app;
app.run(argc, argv, "The Fascicolator");
return 0;
}

5
ba/ba1600.h Executable file

@ -0,0 +1,5 @@
#define F_SHEET 201
#define F_MISSING 202
#define S_MODULE 102
#define S_LIST 200

94
ba/ba1600a.uml Executable file

@ -0,0 +1,94 @@
#include "ba1600.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -33 -11 ""
END
ENDPAGE
PAGE "Generazione dischetti" -1 -1 78 20
SPREADSHEET F_SHEET
BEGIN
PROMPT 1 1 ""
ITEM "Modulo@30"
ITEM "Codice"
ITEM "Anno"
ITEM "N."
ITEM "Rilascio"
ITEM "Moduli esterni@30"
END
ENDPAGE
ENDMASK
PAGE "Modulo" -1 -1 42 7
STRING 101 30
BEGIN
PROMPT 1 1 "Modulo "
FLAGS "D"
END
STRING S_MODULE 2
BEGIN
PROMPT 1 0 "Codice "
FLAGS "D"
END
NUMBER 103 2
BEGIN
PROMPT 1 2 "Versione "
END
NUMBER 104 2
BEGIN
PROMPT 14 2 ""
FLAGS "Z"
END
DATE 105
BEGIN
PROMPT 21 2 "Rilascio "
END
STRING 106 30
BEGIN
PROMPT 1 3 "Esterni "
END
BUTTON S_LIST
BEGIN
PROMPT -13 4 "Lista file"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON 100 10 2
BEGIN
PROMPT -23 -1 ""
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK

84
ba/ba1600b.uml Executable file

@ -0,0 +1,84 @@
#include "ba1600.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Lista" -1 -1 78 20
SPREADSHEET F_SHEET 46
BEGIN
PROMPT 1 1 ""
ITEM "File@20"
ITEM "Sottomodulo"
END
SPREADSHEET F_MISSING 20
BEGIN
PROMPT 50 1 ""
ITEM "File@20"
FLAGS "D"
END
ENDPAGE
ENDMASK
PAGE "File" -1 -1 42 5
STRING 101 30
BEGIN
PROMPT 1 1 "File "
END
STRING S_MODULE 3
BEGIN
PROMPT 1 2 "Sottomodulo "
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK
PAGE "File" -1 -1 42 5
STRING 101 30
BEGIN
PROMPT 1 1 "File "
END
BUTTON 100 10 2
BEGIN
PROMPT -12 -1 "~Collega"
PICTURE BMP_LINK
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK