Dočasný workaround pre vnorené archívy

Podpora vývojářů nových pluginů, oznámení o nových pluginech nezávislých autorů a diskuse o nich.
Stybi

Dočasný workaround pre vnorené archívy

Post by Stybi »

Nemohol som si nevšimnúť, že máte v niektorých pluginoch urobený workaround pre vnorené archívy (alebo to tak aspoň vyzerá). Napríklad som sa snažil otvoriť archív rootfs.cpio.gz a Salamander automaticky otvoril strom adresárov a súborov. Podobne pri .tgz alebo tar.gz.

Moja otázka je, či sa nedá nejakým spôsobom zavolať z pluginu iný plugin, ktorý by otvoril daný súbor (v mojom prípade z pluginu na čítanie špeciálneho archívu otvoriť rootfs.cpio.gz). Niečo ako rozpakovanie do dočasného súboru a zavolanie nejakej funkcie daného pluginu?

Vďaka.
User avatar
Ether
Posts: 1471
Joined: 10 May 2007, 16:08
Location: Czech Republic
Contact:

Post by Ether »

To je zajímavé zjištění. Překvapuje mě, že jsem na to nepřišel taky. Myslím, že dokud nebude plně funkční vrstvení filesystemových a/nebo archivních pluginů, tak použití dočasného rozbalení by mohlo být řešením, které by mnoho uživatelů uvítalo.

Přece jenom dneska už jsou počítače dost rychlé a kdybyste pořád váhali, jestli se má taková pomalá záležitost implementovat, tak můžete třeba před rozbalováním archivu vyplivnout potvrzovací dialog s varovnou hláškou.
Jan Patera
Plugin Developer
Plugin Developer
Posts: 707
Joined: 08 Dec 2005, 14:33
Location: Prague, Czech Republic
Contact:

Re: Dočasný workaround pre vnorené archívy

Post by Jan Patera »

Stybi wrote:Nemohol som si nevšimnúť, že máte v niektorých pluginoch urobený workaround pre vnorené archívy (alebo to tak aspoň vyzerá). Napríklad som sa snažil otvoriť archív rootfs.cpio.gz a Salamander automaticky otvoril strom adresárov a súborov. Podobne pri .tgz alebo tar.gz.
V tomto konkretnim pripade TAR plugin provede rozbaleni vnejsiho gzipu (nebo compressu nebo bzip2u) a vnitrniho taru najednou. Zadny dalsi ci vnoreny plugin se nevola.
User avatar
Ether
Posts: 1471
Joined: 10 May 2007, 16:08
Location: Czech Republic
Contact:

Post by Ether »

To se mi zdá jako velice nesystémové řešení, téměř nehodné programátorů vašich kvalit. Nicméně návrh stále platí, co říkáte na použití tohoto workaroundu do doby, než příjdete s lepším řešením?
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5229
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Zatím jsme veškeré pluginy v Salamanderu koncipovali tak, že jsou závislé pouze na jádře Salamandera, ale už ne na jiném pluginu. Jedním z mnoha důvodů je snaha o udržení interface (SDK) ve zvládnutelné podobě.

Pokud si porovnáte SDK Salamandera a TC, uvidíte obrovský (minimálně řádový) rozdíl v komplexitě. Důvodem je naše přesvědčení, že plugin by měl z hlediska uživatele být plnohodnotná součást aplikace, nabízející téměř stejný komfort a možnosti, jako funkce implementované v jádře.

Z tohoto důvodu bylo potřeba udělat jisté kompromisy a na jeden jste právě narazili. Pokud zaznamenáme větší množství žádostí na toto téma, jsme ochotni tímto směrem vynaložit další čas a žádané funkce se pokusit doplnit.

V současné době tento problém řešíme tak, že si každý plugin nese vše potřebné pro svůj chod (mimo RTL, které je pro úsporu místa sdílené se Salamanderem). Zde ještě zmíním další výhodu tohoto řešení: nemusíme řešit interakci různých verzí pluginů, nemusíme uživatelům vysvětlovat, že daná část pluginu nefunguje, protože nemají nainstalovaný zdánlivě naprosto nesouvisející plugin XYZ nebo ho mají ve staré verzi.
User avatar
Ether
Posts: 1471
Joined: 10 May 2007, 16:08
Location: Czech Republic
Contact:

Post by Ether »

Děkuji za vyjádření, ovšem domnívám se, že můj návrh nebyl zcela pochopen. Nemyslel jsem tím vynucenou spolupráci pluginů, spíše jejich navázání. V aktuální verzi AS, když se pokusím otevřít archiv v archivu/v externím FS, Salamander se chová, jako by to byl jakýkoli jiný soubor, tj. rozbalí jej a otevře v externím programu/neudělá nic. Navrhuji tedy možnost, že se daný soubor rozbalí/zkopíruje do dočasného adresáře na lokální FS a poté otevře pluginem.

Plugin o ničem nemusí vědět, úpravy souborů v archivech máte již vyřešeny podobně a omezení plynoucí z nespolupráce pluginů se tímto obchází.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5229
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Podpora pro vnořené archivy, případně archivy na file systémech je určitě reálná. Pokud na tomto fóru bude žádaná, můžeme se pokusit problematiku vyřešit.
Petr Solin
ALTAP Staff
ALTAP Staff
Posts: 1112
Joined: 08 Dec 2005, 09:13
Location: Novy Bor, Czech Republic
Contact:

Re: Dočasný workaround pre vnorené archívy

Post by Petr Solin »

Stybi wrote:Moja otázka je, či sa nedá nejakým spôsobom zavolať z pluginu iný plugin, ktorý by otvoril daný súbor (v mojom prípade z pluginu na čítanie špeciálneho archívu otvoriť rootfs.cpio.gz). Niečo ako rozpakovanie do dočasného súboru a zavolanie nejakej funkcie daného pluginu?
Tato akce je relativne snadno dostupna, staci zavolat SalamanderGeneral->ChangePanelPathToArchive. Problem je, kdy tuto metodu zavolat. Idealni by bylo pri snaze o otevreni souboru ve vasem archivu (na klavesu Enter nebo dvojklikem mysi). Bohuzel toto neni podporeno (otevreni resi komplet Salamander, archivu si rekne jen o vybaleni souboru). Takze jako zatim jedina moznost me napada zavest prikaz do menu (da se mu i priradit klavesa), na ktery plugin zareaguje vybalenim vybraneho souboru do TEMPu a naslednym volanim SalamanderGeneral->ChangePanelPathToArchive. Dalsi otazka je, kdy by se mel soubor z TEMPu odstranit a jak zajistit, aby uzivatel archiv nemenil (protoze nebude zapakovan zpet, ale jen vymazan z TEMPu). I kdyz to by se vlastne tez dalo resit (vite co a z jakeho sveho archivu jste vybalil, tak to muzete po zmenach zase zabalit zpet).

Jeste me napada jedno "neciste" reseni: v metode UnpackOneFile si zjistite, ze se Salamander snazi vybalit .gz soubor, pres PostMenuExtCommand(waitForSalIdle=TRUE) si poslete svuj prikaz a z UnpackOneFile vratite chybu vybalovani. Salamander otevirani svou metodou prerusi a nasledne vam doruci vas prikaz poslany pres PostMenuExtCommand, na ktery muzete zareagovat vybalenim .gz souboru do TEMPu + volanim ChangePanelPathToArchive. Nevyhoda tohoto reseni: View (F3) a Edit (F4) prestanou fungovat (budou tez otvirat .gz soubor v panelu).

Vnorene archivy chceme resit, mame je na seznamu praci, ale zatim jsme vzdycky meli prioritnejsi ukoly a bohuzel jich mame nalozeno jeste na hodne dlouho dopredu.
User avatar
Ether
Posts: 1471
Joined: 10 May 2007, 16:08
Location: Czech Republic
Contact:

Post by Ether »

Opět děkuji za vyjádření, na podporu vnořených archivu a spol se těším. Přestože bych si rád daný plugin rád sestrojil sám, k programování ve Visual C se bohužel moc nemám, takže si hezky počkám až na Vás.
Post Reply