Patch level :10.0 CD 210

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :roba per il cd multiproducer (fighissima); da terminare il funzionamento sui diversi formati di menu


git-svn-id: svn://10.65.10.50/trunk@18009 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-01-12 16:52:14 +00:00
parent c0350045af
commit 318605e86c
6 changed files with 82 additions and 24 deletions

@ -260,7 +260,11 @@ TPicture_mask::TPicture_mask(const char* name, int dx, int dy,
: TMask(name, 1, dx, dy, x, y), _submenu(NULL), _logo(NULL)
{
set_current(submenu);
_logo = new TImage("menulogo");
//trova il logo corretto in base al producer
const TString& currlogo = get_logo();
_logo = new TImage(currlogo);
if (_logo->ok())
{
if (can_be_transparent(*_logo))

@ -1,3 +1,4 @@
#include <config.h>
#include <controls.h>
#include <diction.h>
#include <prefix.h>
@ -399,7 +400,7 @@ TObject* TMenulist_images::key2obj(const char* key)
const double max_img = (double)_max_side;
const double max_lgo = rct.right - _max_side;
if (xvt_str_compare_ignoring_case(key,"menulogo") != 0)
if (xvt_str_compare_ignoring_case(key, get_logo()) != 0)
{
const double ratiox = max_img / image.width();
const double ratioy = max_img / image.height();
@ -451,7 +452,7 @@ TImage* TMenulist_images::image(const char* name)
TObject* obj = objptr(name);
if (obj == NULL &&
xvt_str_compare_ignoring_case(name, "ba00") != 0 &&
xvt_str_compare_ignoring_case(name, "menulogo") != 0)
xvt_str_compare_ignoring_case(name, get_logo()) != 0)
obj = objptr("ba00");
return (TImage*)obj;
}
@ -602,7 +603,7 @@ void TMenulist_window::update()
img->draw(win(), x, y);
}
TImage* logo = db ? _images.image("menulogo") : NULL; //logo del programma
TImage* logo = db ? _images.image(get_logo()) : NULL; //logo del programma
if (logo != NULL) //disegna il logo
{
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
@ -1254,3 +1255,28 @@ TExplorer_mask::TExplorer_mask(TMenu& menu) : _tree(menu)
xvt_pane_add(panel, dlg2win(DLG_TREE), "Menu", 1, 0); // Left pane
set_handlers();
}
const TString& get_logo()
{
static TFilename currlogo;
if (currlogo.blank())
{
//seleziona il logo da usare in base al producer!!
TConfig oemini(CONFIG_OEM, "MAIN");
const int oem = oemini.get_int("OEM", NULL, -1, -1);
if (oem >= 0)
{
TString8 para; para << "OEM_" << oem;
currlogo = oemini.get("Logo", para);
if (currlogo.full())
currlogo.insert("setup/");
}
//se non trova il logo del producer usa il logo standard
if (currlogo.blank())
currlogo = "menulogo.jpg";
}
return currlogo;
}

@ -126,5 +126,6 @@ void synchronize_tree_field(TTree_field& tf);
bool can_be_transparent(const TImage& i);
void draw_spider(WINDOW win, int mode, const PNT& mouse);
void enable_options_menu(bool on);
const TString& get_logo();
#endif

@ -295,9 +295,9 @@ void TBook_window::set_logo(const char* logo)
TBook_window::TBook_window(int x, int y, int dx, int dy,
WINDOW parent, TWindowed_field* owner)
: TControl_host_window(x, y, dx, dy, parent, owner), _logo("menulogo")
{
set_logo("menulogo");
: TControl_host_window(x, y, dx, dy, parent, owner), _logo("")
{
set_logo(get_logo());
}
TBook_window::~TBook_window()

@ -758,15 +758,36 @@ bool TAttivazione_moduli::aga_handler(TMask_field& fld, KEY key)
mask.add_button(DLG_OK, 0, "", -12, -1, 10, 2);
mask.add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2);
TConfig ini("install.ini", "Main");
mask.set(101, ::decode(ini.get("Producer")));
mask.set(102, ::decode(ini.get("Administrator")));
mask.set(103, ::decode(ini.get("Password")));
//nuovo modo di gettare il producer da oem.ini
TConfig oemini(CONFIG_OEM, "MAIN");
const int oem = oemini.get_int("OEM", NULL, -1, -1);
if (oem >= 0)
{
TString8 para; para << "OEM_" << oem;
oemini.set_paragraph(para);
mask.set(101, ::decode(oemini.get("Name")));
mask.set(102, ::decode(oemini.get("Administrator")));
mask.set(103, ::decode(oemini.get("Password")));
}
else //vecchio modo; già che c'è elimina i vecchi valori dall'install.ini
{
TConfig ini("install.ini", "Main");
mask.set(101, ::decode(ini.get("Producer")));
mask.set(102, ::decode(ini.get("Administrator")));
mask.set(103, ::decode(ini.get("Password")));
ini.remove("Producer");
ini.remove("Administrator");
ini.remove("Password");
}
//setta comunque nel nuovo modo con producer = 0 se eventualmente ignoto
if (mask.run() == K_ENTER)
{
ini.set("Producer", ::encode(mask.get(101)));
ini.set("Administrator", ::encode(mask.get(102)));
ini.set("Password", ::encode(mask.get(103)));
oemini.set("Name", ::encode(mask.get(101)));
oemini.set("Administrator", ::encode(mask.get(102)));
oemini.set("Password", ::encode(mask.get(103)));
if (oem < 0)
oemini.set("OEM", "0", "MIAN", true);
}
}
return true;

@ -32,10 +32,21 @@
///////////////////////////////////////////////////////
// Metodi di utility
///////////////////////////////////////////////////////
HIDDEN const char* http_default_path()
HIDDEN const TString& http_default_path()
{
//da compilare in base al producer!
return "www.aga.it/agarel100/";
//nuovo modo di gettare il producer da oem.ini
TConfig oemini(CONFIG_OEM, "MAIN");
const int oem = oemini.get_int("OEM", NULL, -1, -1);
TString& tmp = get_tmp_string();
if (oem >= 0)
{
TString8 para; para << "OEM_" << oem;
tmp = oemini.get("Web", para);
}
if (tmp.blank())
tmp = "www.aga.it/release100/";
return tmp;
}
HIDDEN int compare_version(const char* v1, int p1, const char* v2, int p2)
@ -387,15 +398,12 @@ bool TInstaller_mask::autoload()
force_update();
TString_array modules;
TString producer;
//cerca sull'install.ini di origine se lo trova (ininame e' il path dell'install.ini remoto)
if (ininame.exist())
{
// Presente il file ini generale "install.ini" (moduli;immagine cd)
TInstall_ini ini(ininame);
//prende il producer dall'install.ini di origine installazione...non si sa mai che sia cambiato..
producer = ini.get("Producer", "Main");
ini.list_paragraphs(modules); //riempie modules con la lista dei paragrafi sul .ini ***
FOR_EACH_ARRAY_ROW(modules, i, row)
@ -483,10 +491,8 @@ bool TInstaller_mask::autoload()
TFilename file;
installini.list_paragraphs(paragrafi);
//settaggio del produttore sull'install.ini locale nel caso sia cambiato..
//..ovvero ad ogni nuova versione prassi..no partners..cioe' doubleone..volevo dire sirio..
if (producer.full())
installini.set("Producer", (const char*)producer, "Main");
// rimozione del produttore sull'install.ini locale ora obsoleto..
installini.remove("Producer");
FOR_EACH_ARRAY_ROW(modules, am, arow)
{