[{TableOfContents }]\\
!!! Logica per la ricerca delle immagini\\
La ricerca delle immagini e delle icone in Looc.up avviene in due fasi distinte.
La prima consiste nel determinare la directory che fisicamente conterrà le immagini.
Una volta che è stata determinata la directory che contiene le immagini, viene fatta al suo interno una ricerca per risalita sul tipo-parametro-codice per determinare il file fisico che contiene l'immagine da usare.

!!! Definizione della cartella in cui vengono cercate le immagini\\
%%quote
|  C:
|  |
|  --- DIR1
|      |
|      ---- LOOCUP (1)
|      |        |
|      |        ----- LOOCUP_IMG (2)
|      |        |
|      |        ------LOOCUP_ICO (2)
|      |
|      ----- LOOCUP_IMG (3)
|                |
|               ----- DEFAULT (4)
|               |
|               ----- AMB1 (5)
/%
----
__Assunti:__
* Looc.up è installato nella directory (1), nell'esempio specifico C:/DIR1/LOOCUP.\\
* La directory di installazione contiene due directory LOOCUP_IMG e LOOCUP_ICO (2) che contengono le  immagini e le icone di default. Queste due directory sono installate dal setup.\\
* Allo stesso livello della directory di installazione di Looc.up (1) ci possono essere altre due directory LOOCUP_IMG e LOOCUP_ICO (3) che vanno usate quando si vogliono definire immagini ed icone diverse a seconda dell'ambiente. Queste directory non sono create dal setup e possono contenere delle sottodirectory di personalizzazione di un ambiente.\\

__Esempi:__
* L'utente vuole usare le immagini e le icone di default di Looc.up.\\
In questo caso l'utente si limita alla normale installazione di Looc.up che creerà le directory (1) e le directory (2) già popolate con le immagini e le icone. Le directory (3), (4) e (5) possono non essere create.   Nel caso in figura:\\
DIRECTORY DELLE IMMAGINI ---> C:/DIR1/LOOCUP/LOOCUP_IMG;\\
DIRECTORY DELLE ICONE    ---> C:/DIR1/LOOCUP/LOOCUP_IMG.\\
* L'utente vuole personalizzare le immagini di default di Sme.up ma non vuole modificare le immagini installate dal setup.\\
In questo caso è necessario creare le directory (3) e (4) e popolarle con le immagini personalizzate. Il nome della directory (4) deve essere per forza DEFAULT, che sta a indicare "ambiente non specificato".\\
Nel caso in figura:\\
DIRECTORY DELLE IMMAGINI ---> C:/DIR1/LOOCUP_IMG/DEFAULT;\\
DIRECTORY DELLE ICONE    ---> C:/DIR1/LOOCUP_IMG/DEFAULT.\\
* L'utente vuole creare delle immagini e delle icone personalizzate per un suo ambiente AMB1.\\
In questo caso è necessario creare le directory (3) e (5) dove quest'ultime devono avere lo stesso nome dell'ambiente che si sta definendo (in questo caso AMB1).\\
Nell'esempio in figura:\\
DIRECTORY DELLE IMMAGINI ---> C:/DIR1/LOOCUP_IMG/AMB1;\\
DIRECTORY DELLE ICONE    ---> C:/DIR1/LOOCUP_IMG/AMB1.\\
__N.B.: __a livello di determinazione delle directory delle immagini/icone non viene effettuata alcuna risalita. Una volta che viene determinata la directory in cui cercare le immagini e le icone, i file vengono cercati in queste directory e basta.\\



!!! Modalità alternativa di ricerca delle immagini di Oggetto\\
Se negli script di configurazione di Loocup sono definite le variabili (almeno una) IMG.001, IMG.002 e IMG.003, la ricerca della cartella LOOCUP_IMG avviene nella modalità illustrata di seguito.

Quando viene chiesta l'immagine di un'oggetto, Loocup per prima cosa individua la cartella LOOCUP_IMG verificando che esista la gerarchia di cartelle tipo/parametro all'interno del percorso indicato nella variabile IMG.003:
\\SMEA.IT\DFS_ROOT\aziende\smea\Programmi\LOOCUP_IMG\Standard Smeup/TIPO/PARAMETRO/
Se la gerarchia di cartelle non viene trovata, le ricerca si sposterà nella directory contenuta nella variabile IMG.002 e, in caso le cartelle non vengano trovate, la ricerca si sposterà nuovamente nel percorso indicato dalla variabile IMG.001.

Una volta definita la directory delle immagini secondo la logica del punto precedente, la ricerca dell'immagine vera e propria da usare avviene secondo una logica di risalita:
# IMAGE_DIR/TIPO/PARAMETRO/CODICE.gif\\
# IMAGE_DIR/TIPO/PARAMETRO/CODICE.jpg\\
# IMAGE_DIR/TIPO/PARAMETRO/CODICE.png\\
# IMAGE_DIR/TIPO/PARAMETRO/default.gif\\
# IMAGE_DIR/TIPO/PARAMETRO/default.jpg\\
# IMAGE_DIR/TIPO/PARAMETRO/default.png\\
# IMAGE_DIR/TIPO/default.gif\\
# IMAGE_DIR/TIPO/default.jpg\\
# IMAGE_DIR/TIPO/default.png\\
# IMAGE_DIR/default.gif\\
# IMAGE_DIR/default.jpg\\
# IMAGE_DIR/default.png\\

!!! Caratteri non consentiti nel percorso delle immagini\\
Qualore gli identificativi dell'oggetto di cui si sta ricercando l'immagine contengano catarreti non consentiti in un percorso di file system, tali caratteri andranno sostituiti con il carattere meno (-). Quindi l'immagine dell'oggetto di tipo ** sarà contenuto nella cartella --. Gli oggetti di tipo OJ-*USRPRF avranno le loro immagini nella cartella 'USRPRF contenuta nella cartella OJ.

!!! Forzatura Path di Immagini e di Icone da Sme.Up\\
E' possibile forzare la directory base delle immagini e delle icone di LoocUp attraverso la dichiarazione di variabili opportune nel file di configurazione SCP_CLO/DEFAULT:
C.SEZ Cod="Path"
C.PAT Cod="ICO" Txt="Icone" Type="TREE" Value="PERCORSO_IMG"
C.PAT Cod="IMG" Txt="Immagini" Type="FLAT"  Value="PERCORSO_ICO"
Il percorso va sempre concepito a partire dalla directory di installazione di LoocUp.

!!! Icone profili utente\\
Le icone dei profili  utente sono un caso particolare e vanno elencate nella cartella LOOCUP_PRF/USR con codice = al codice utente

!!! Logica per la ricerca delle icone\\
La directory che contiene le icone di Loocup risiede sul filesystem e si chiama LOOCUP_ICO.
Con l'installazione di Loocup questa cartella viene creata all'interno della cartella di installazione di Loocup.

Quando viene chiesta l'icona di un oggetto Loocup utilizza il seguente meccanismo per reperire la posizone della cartella LOOCUP_ICO:
1) se nel setup è definito l'elemento  Path con attributo uguale a ICO (XPATH=Setup/Program/BAS/Paths/Path[@Cod='ICO']) viene utilizzato l'attributo Value.
2) Se nel path indicato dall'attributo Value non c'è la cartella LOOCUP_ICO, viene ricercata nella cartella di installazione di loocup, la cartella LOOCUP_ICO/AMBIENTE.
3) Se non esiste la cartella al punto 2, si passa alla cartella di default.

Una volta identificata la posizone della cartella LOOCUP_ICO, come per la ricerca delle immagini, viene fatta una ricerca per risalita di tipo/parametro/codice all'interno della cartella LOOCUP_ICO, in modo da individuare il file fisico che contiene l'immagine da usare.

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_LOOCUP_ICO.PNG' caption='cartella delle icone nel file system' }]

* Looc.up è installato nella directory LOOCUP, nell'esempio specifico C:/PROGRAMMI/LOOCUP.\\
* La directory di installazione LOOCUP contiene la directory LOOCUP_ICO che contiene le icone di default. Questa directory viene creata durante l'installazione iniziale di Loocup.\\

!!! Tipi di icone\\
Le icone in Loocup possono rappresentare:
* oggetti\\
* funzioni (verbo/azione)\\
* comandi\\

Le icone-oggetto sono catalogate nelle diverse classi note di Smeup (AR per gli articoli, CN per i contatti ...).
Le icone-funzione sono icone che rappresentano azioni generiche, che non sono associate ad un oggetto specifico. Ad esempio l'azione "taglia", l'azione "copia" generica. Queste icone sono catalogate con tipo __J1__ e parametro __FUN__.
Le icone-comando sono icone che rappresentano comandi, ovvero azioni riferite ad un oggetto specifico. Ad esempio l'icona "copia testo" dovrà essere diversa dall'icona "copia cliente" poichè è differente l'oggetto a cui è riferita l'azione, e differente quindi il comando. Queste icone sono catalogate con tipo __J1__ e parametro __KEY__.

!!! Meccanismo di ricerca delle icone\\
Ogni oggetto, comando e azione può avere icone specifiche o generiche definite da tipo/parametro/codice di appartenenza.
Se l'icona dell'oggetto (tipo/parametro/codice) così definita non è presente sul filesystem interviene la logica di risalita, che permette la ricerca di icone più generiche come l'icona dell'istanza (tipo/parametro) o l'icona ancora più generica della classe (tipo).
Si andrà quindi a ricercare l'icona rispettando il seguente ordine:
* tipo/parametro/codice icona specifica\\
* tipo/parametro/codice icona generica\\
* tipo/parametro icona specifica\\
* tipo/parametro icona generica\\
* tipo icona specifica\\
* tipo icona generica\\

Nel filesystem tipo/parametro/codice sono associati a cartelle e file.
La ricerca dell'icona sarà quindi associata ai seguenti percorsi:
* LOOCUP_ICO\tipo\parametro\codice.gif\\
* LOOCUP_ICO\tipo\parametro\default.gif\\
* LOOCUP_ICO\tipo\parametro.gif\\
* LOOCUP_ICO\tipo\default.gif\\
* LOOCUP_ICO\tipo.gif\\
* LOOCUP_ICO\default.gif\\

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_FSYS_LOOCUP.PNG' caption='visualizzazione icona CN;; CN;CLI; e CN;CLI;001 nel filesystem e nella scheda' }]
Nell'esempio in figura possiamo notare dove sono posizionate le icone nel filesystem (in alto) e la loro visualizzazione nel componente albero della scheda (in basso). In particolare notiamo l'icona specifica assegnata all'oggetto CN;CLI;001 (recuperata dal filesystem nel percorso LOOCUP_ICO\CN\CLI\001.gif, vedi etichetta (1) ) e l'icona generica dell'oggetto CN;CLI;005 (non trovata nel filesystem l'icona specifica nel percorso LOOCUP_ICO\CN\CLI\005.gif viene recuperata l'icona generica nel percorso LOOCUP_ICO\CN\CLI\default.gif, vedi etichetta (2) ).

Per avere performance maggiori le schede di Loocup leggono le icone da __file DLL__. La sostituzione e l'aggiunta delle icone nei percorsi specificati ha effetto sulle schede SOLO dopo la ricompilazione del file DLL.
Per la parte Java le icone vengono lette all'avvio di Loocup, è quindi necessario solo il riavvio di Loocup perchè le modifiche sulle icone abbiano effetto.

%%quote
|Per ogni modifica sulle icone è consigliabile ricompilare anche il file DLL per non avere incongruenze tra Java e Delphi.
/%
----

%%quote
|Nei casi particolari delle icone di programma (come per esempio l'icona di Microsoft Word, Microsoft Office ...) l'icona viene richiesta direttamente al sistema operativo e non è quindi inclusa in nessun percorso di Loocup.
/%
----

!! Caratteri non consentiti nel percorso delle immagini\\
Qualora gli identificativi dell'oggetto di cui si sta ricercando l'immagine contengano caratteri non consentiti in un percorso di file system, tali caratteri andranno sostituiti con il carattere meno (-). Quindi tutte le icone dell'oggetto di tipo ** saranno contenute nella cartella --.
Ad esempio glli oggetti di tipo OJ;*USRPRF; avranno le loro icone nella cartella LOOCUP_ICO\OJ\-USRPRF\ .

!!! il file DLL\\
Per avere performance maggiori le schede di Loocup leggono le icone da file DLL.
Per permettere alle schede di visualizzare icone modificate o aggiunte è necessario quindi aggiornare il file DLL con una compilazione.
Esiste un programma interno aziendale che permette la ricompilazione del file DLL.

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_DLLFILEGENERATOR1.PNG' caption='programma DLLfileGenerator per la ricompilazione del file DLL delle icone di Loocup' }]
Per l'aggiornamento del file DLL sono necessari 3 semplici passi, eseguibili con 3 semplici click del mouse sulla bottoniera:
# eventuale copia in locale di icone da includere nel file DLL e generazione del file delle risorse (RC file), premendo il tasto __"crea RC file"__ ed eventualmente spuntando l'opzione __"copia file da cartella sorgente"__ per la copia delle icone in locale (mostrato in figura ImgRef(RCFILE) )\\
# generazione del file DLL, premendo il tasto __"crea DLL file"__ (mostrato in figura ImgRef(LOGFILE) )\\
# esportazione del file DLL nel percorso sorgente (generalmente il percorso di Loocup), premendo il tasto __"esporta DLL file"__\\

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_RCFILE.PNG' caption='RCFILE: file delle risorse loocupicons.rc generato al primo dei 3 passi' }]
E' possibile avere conferma della corretta compilazione del file DLL leggendo il file di log generato dal programma stesso.

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_DLLFILEGENERATOR2.PNG' caption='LOGFILE: file di log del programma DLLfileGenerator' }]
!!! Le icone nei componenti\\
In alcuni componenti di Loocup è possibile visualizzare icone specifiche e generiche dell'oggetto come descritto. Inoltre, in alternativa, su alcuni componenti è anche possibile visualizzare delle icone differenti da quelle standard, semplicemente definendo nell'attributo __i="..."__ del nodo dell'xml a cui appartiene l'oggetto, l'azione o il comando un percorso specifico dal quale attingere l'icona.

!! I bottoni\\
Nel componente bottone è possibile visualizzare icone oggetto in vari modi.
L'icona può dipendere esclusivamente dall'oggetto a cui fa riferimento il bottone: in questo caso l'xml del componente bottone vengono assegnati gli attributi tipo, parametro e codice dai quali è possibile risalire all'icona visualizzata.
...
<Oggetto Nome="Bottone" Tipo="CN" Parametro="CLI" Codice="" Testo="Bottone" />
...

In alternativa è possibile assegnare altre icone al componente assegnando all'attributo i='...' valori differenti. Le icone possono essere:
* icone dirette (es. : con i="M1")\\
* riferite ad oggetti (es. : con i="CN;CLI;001")\\
* specificando il pathfile (es. : con Tipo="J1" Parametro="PATHFILE" e i="[*ICON_PATH]\Verde.gif")\\

...
<Oggetto Tipo="" Parametro="" Codice="" Testo="" i="M1"  />
...
<Oggetto Tipo="" Parametro="" Codice="" Testo="" i="CN;CLI;001"  />
...
<Oggetto Tipo="J1" Parametro="PATHFILE" Codice="" Testo="" i="[*ICON_PATH]\Verde.gif"  />
...

!! L'albero\\
Nel componente albero è possibile visualizzare icone generiche, icone oggetto o icone specifiche valorizzando nel setup l'attributo __icone='...'__ con i seguenti valori:
* __icone="no"__ per visualizzare le icone generiche dei nodi (la cartella per i nodi con figli, il punto per i nodi foglia senza figli)\\
* __icone="yes"__ per visualizzare le icone oggetto che dipendono dal tipo, parametro e codice del nodo\\
* __icone="specific"__ per visualizzare solo le icone specificate nell'attributo __i='...'__ (vedi di seguito)\\

Nell'xml del componente albero vengono assegnati gli attributi tipo, parametro e codice dai quali è possibile risalire all'icona visualizzata.
<Oggetto>
...
<Oggetto Tipo="CN" Parametro="CLI" Codice="001" Testo="Cliente" />
...
</Oggetto>

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_ALBERO1.PNG' caption='esempio icone oggetto nell'albero' }]
In alternativa è possibile assegnare altre icone al componente assegnando all'attributo i='...' valori differenti. Le icone possono essere:
* icone dirette (es. : con i="M1")\\
* riferite ad oggetti (es. : con i="CN;CLI;001")\\
* specificando il pathfile (es. : con Tipo="J1" Parametro="PATHFILE" e i="[*ICON_PATH]\Verde.gif")\\

<Oggetto>
...
<Oggetto Tipo="" Parametro="" Codice="" Testo="Cliente" i="M1" />
<Oggetto Tipo="" Parametro="" Codice="" Testo="Cliente" i="CN;CLI;001" />
<Oggetto Tipo="J1" Parametro="PATHFILE" Codice="" Testo="Cliente" i="[*ICON_PATH]\Verde.gif" />
...
</Oggetto>

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_ALBERO2.PNG' caption='esempio icone specifiche nell'albero' }]
!! La matrice\\
Nel componente matrice è possibile visualizzare icone oggetto sull'intestazione o nella cella con i seguenti valori:
* __iconeTesta="no"__ per non visualizzare le icone oggetto nell'inetastazione\\
* __iconeTesta="yes"__ per visualizzare le icone oggetto nell'intestazione\\
* __icone="no"__ per non visualizzare le icone oggetto nella cella\\
* __icone="yes"__ per visualizzare le icone oggetto nella cella\\

Per visualizzare un'__icona sull'intestazione__ della matrice è sufficiente assegnare all'attributo oggetto (ogg) della colonna l'oggetto a cui è riferita la colonna. Ad esempio per visualizzare nell'intestazione della colonna l'icona con tipo="CN" e parametro="CLI" è sufficiente scrivere nell'xml Ogg="CNCLI", come segue:
<Griglia>
...
<Colonna Cod="ID colonna" Txt="Descrizione colonna" Tip="" Lun="3" IO="O" Ogg="CNCLI" />
...
</Griglia>

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_MATRICE1.PNG' caption='esempio matrice con colonna oggettizzata' }]
Per visualizzare un'__icona nella cella__ della matrice è sufficiente assegnare all'attributo oggetto (ogg) della colonna il codice della colonna che specifica l'icona tra parentesi quadre ed eventualmente il tipo e/o parametro comuni a tutte le celle della colonna.
Ad esempio per visualizzare nelle celle della seconda colonna le icone ;; CN;; CN;CLI; AR;; e AR;ART; è sufficiente scrivere nell'xml Ogg="[ID1]", e nelle celle della colonna con codice ID1 specificare gli oggetti per ogni singola riga come segue:
<Griglia>
<Colonna Cod="ID1" Txt="colonna1" Tip="" Lun="3" IO="O" Ogg="" />
<Colonna Cod="ID2" Txt="colonna2" Tip="" Lun="15" IO="O" Ogg="[ID1]" />
</Griglia>
<Righe>
...
<Riga Fld="|00001"/>
<Riga Fld="CN|00001"/>
<Riga Fld="CNCLI|00001"/>
<Riga Fld="AR|00001"/>
<Riga Fld="ARART|00001"/>
...
</Righe>

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_MATRICE2.PNG' caption='esempio matrice con cella oggettizzata e tipo colonna eterogeneo' }]
Nel caso in cui le celle della colonna siano di uno stesso tipo, ad esempio CN;; CN;CLI; e CN;COL; , è sufficiente scrivere nell'xml Ogg="CN[ID1]", e nelle celle della colonna con codice ID1 specificare i parametri di ogni singola riga come segue:
<Griglia>
<Colonna Cod="ID1" Txt="colonna1" Tip="" Lun="3" IO="O" Ogg="" />
<Colonna Cod="ID2" Txt="colonna2" Tip="" Lun="15" IO="O" Ogg="CN[ID1]" />
</Griglia>
<Righe>
...
<Riga Fld="|00001"/>
<Riga Fld="CLI|00001"/>
<Riga Fld="COL|00001"/>
...
</Righe>

[{Image src='http://gilberto.smea.it/SmeImg/TAB%C2%A3A/LO/LOBASE/LOBASE_03_MATRICE3.PNG' caption='esempio matrice con cella oggettizzata e tipo colonna omogeneo' }]