Pluginove rozhrani vzniklo postupne, tedy rozdilne pristupy tu jiste budou. Bohuzel si za ty roky mnohdy nepamatuji, proc konkretne ktery parametr je ci neni v te ci one metode rozhrani. Prosim omezme se na konkretni problemy, pokud potrebujes neco, co ted neni mozne udelat, popis situaci a uvidime co s tim jde delat.zarevak wrote:AddCustomUnpacker definuje popis/název pluginu, AddPanelArchiver nikoliv - v konfiguraci "Archivers Associations in Panels" se použije Salamanderem generovaný název. CPluginDataInterfaceAbstract je pro potřeby Archive browser pluginu z velké části prázdný - na wiki by mohla být šablona. Skoro všechny CPluginInterfaceAbstract metody obsahují parametr HWND parent. Pro archiver je však třeba používat CSalamanderGeneralAbstract::GetMainWindowHWND (zde si nejsem jist, zda nestačí metodám dialogů předávat NULL - dokumentace mlčí). CSalamanderSafeFileAbstract::SafeFileCreate obsahuje parametry const char *srcFileName a const char *srcFileInfo - fungují však jen dohromady. srcFileInfo má obsahovat datum a velikost souboru, ale není popsán přesný formát řetězce (pro sjednocení mezi pluginy) - hodila by se metoda, která by tento řetězec vytvořila při zadání velikosti a FILETIME struktury. ...
Rozhodne je lepsi odrazit se pri tvorbe pluginu minimalne z DemoPluginu nebo lepe z jineho funkcniho pluginu (napr. UnFAT). V SDK je DemoPlug, UnFAT zatim ne, je to v planu, nejspis na to dojde po prekladech. Zdrojaky UnFATu ti poslu, pripadne i jine zdrojaky, prirozene mame zajem, aby nove pluginy vznikaly.
Co se tyce parentu oken: v dobe zavadeni rozhrani pro archivatory, jsme meli pocit, ze by se okna mela sjednotit, kvuli designu a zjednoduseni kodu pluginu, a ze je rozumne parenty resit za plugin, viz metoda ShowMessageBox a GetMsgBoxParent v CSalamanderGeneralAbstract. Tedy v metodach archivatoru se pouziva bud ShowMessageBox (nema parametr parent) nebo toto:
HWND parent = SalamanderGeneral->GetMsgBoxParent();
Pouziti SafeFileCreate viz UnFAT. Souhlasim, ze by se metoda pro generovani srcFileInfo hodila, tyto navrhy na vylepseni mi posilej nebo nekde stradej, az budu mit dojem, ze mam chvilku na ozdravovani kodu pluginu, budu to realizovat. Tohle konkretne jsem si prihodil na todo.
Wiki na tyhle vecicky bude vazne idealni, urcite neni nasim cilem mit uzasne vypiplane pluginove rozhrani na ukor dalsich veci, ale cas od casu si to jiste nejake ty upravy zaslouzi. Dalsi neprijemnost je, ze jak roste pocet metod rozhrani, tak se toto stava mene prehlednym a snadno muze potencionalni vyvojare polekat (to se jiste deje uz dnes).