Page 1 of 1
Thumbnail plugin při selhání zamezí načtení ikony souboru
Posted: 18 Jan 2009, 22:14
by zarevak
Dobrý den,
při testování
Explorer Thumbnails pluginu jsem narazil na drobný problém (AS 2.51): Pokud plugin nenačte náhled souboru (vrátí
FALSE z
CPluginInterfaceForThumbLoader::LoadThumbnail), tak Salamander zkusí (podle dokumentace) další pluginy, ale už nenačte případné ikony, pokud se žádnému pluginu náhled načíst nepodaří.
Posted: 20 Jan 2009, 11:03
by Petr Solin
Pokud se nepodari nacist thumbnail, v panelu zustava "staticka" ikona, ktera tam je i kvuli tomu, aby se melo co ukazat nez se thumbnail podari nacist. Ted je tedy asi problem v tom, ze se thumbnaily delaji pro vsechny soubory, tedy i pro ty, ze kterych se musi ikony nacist (treba .exe, .ico, atd.). Explorer Thumbnails plugin pro tyhle soubory thumbnail nevraci nebo to ma byt jen opatreni pro pripad, ze by z neznamych duvodu cteni thumbnailu selhalo?
Posted: 20 Jan 2009, 11:28
by zarevak
Jedná se o oba případy. Explorer Thumbnails se registruje jako Thumbnail plugin pro všechny typy souborů (nevím, kdo co má nainstalované a je možné, že může existovat Thumbnail Shell Extension i pro EXE soubory).
Pokud se však generování náhledu nepodaří (ať už proto, že je soubor poškozen nebo nepodporován), tak Explorer Thumbnails vrátí FALSE, čímž by měl umožnit načíst náhled dalším pluginům (podle dokumentace). Toto funguje krásně v případě Eroica Vieweru, který vytvoří náhledy pro dokumenty.
Bohužel pokud žádný plugin náhled nenačte (všechny s odpovidající registrací vrátí FALSE), tak by se měla načíst normální ikona souboru.
Pseudokód, který zkusí všechny možné pluginy (vím, že architektura je jiná, ale toto ukazuje myšlenku):
Code: Select all
GetThumbnail(filename)
{
thumbnail = NULL;
i = 0;
while (thumbnail == NULL && (thumbnailplugin = GetThumbPluginForFile(filename, i) != NULL))
{
thumbnail = thumbnailplugin->GetThumbnail(filename);
i++;
}
if (thumbnail == NULL) thumbnail = GetFileIcon(filename); //tenhle řádek v současnosti chybí
return thumbnail;
}
Posted: 20 Jan 2009, 13:27
by Petr Solin
Chapu, casem na to mrknu. Nevidim to jako nic fatalniho, je tam staticka ikona, takze to v mnohych pripadech funguje uz ted.
Posted: 20 Jan 2009, 14:26
by zarevak
Nejdřív jsem pochopil "statické ikony" jako ikony, které nevyžadují žádné Shell Extension (např .txt). Ale koukám, že statické ikony jsou "simple icons", které mohu nastavit v konfiguraci Salamandera.
Narazil jsem na 4 "simple icons":
- neznámý typ souboru
- známý typ souboru
- spustitelný soubor
- soubor archivu
To nám trochu komplikuje situaci, protože zavádí celkem 4 úrovně ikon:
- simple icons (viz výše)
-
file type icons (statické na základě přípony: .txt, .ini, ...) - nevyžadují žádné načítání obsahu; jsou použity v archivech
- self-containing icons (rozšíření předchozí: .ico, .cur, .exe, ...)
- content dependand icons (Shell Extension na základě obsahu dodá ikonu - .html po instalaci MS Office)
(+ pátá úroveň pro ikony s náhledem/samotné náhledy - viz
vedlejší diskuze)
Zpět k tématu: Před načtením náhledů je
Simple icons postačující (i když uvítal bych
File type icons). Avšak pro soubory, pro které se náhled nepodařilo načíst, a na disku, kde je to povolené, by Salamander měl zobrazit stejné ikony jako v ostatních stylech panelu - tedy v případě .html i za použití Shell Extension.
Posted: 20 Jan 2009, 14:54
by Petr Solin
Jako "staticke" ikony jsem myslel ty, ktere nezavisi na obsahu souboru (pro vsechny soubory s jednou priponou jsou shodne). Tady komplikuje situaci to, ze i tyto ikony se musi nejdrive nacist do cache, a pak teprve se muzou ukazovat pri selhani thumbnaileru (pri selhani se neresi jejich nacitani ze systemu). Tedy prepnete na Tiles, pockejte az se nactou, a pak na Thumbnails a uvidite je tam.