Ik heb een tijd geleden een GStreamer/linux/Gnome based applicatie geschreven om video/audio op te nemen. GStreamer is het multimedia framework van Gnome/linux, Gnome is de GUI. Nou leek het me leuk om gebruik te gaan maken van het Gnome object model, bonobo, en op die manier op termijn te kunnen worden toegevoegd aan andere programma's (als component), bv. gnonlin (een non-lineair video editor) e.d. Dus, ik wil een component worden!

Dat is de applicatie in de simpelste mode. Je hebt een video widget (grijs, omdat ik geen TV-kaart in de laptop heb), een control scherm (video image, audio volume, video kanaal, etc.) en een preferences scherm (video size, audio rate/bitsize, audio/video device, audio/video codec, etc.).
Okee, nu de vraag: hoe ga ik dit componentizeren? Logischerwijs moet de TV widget een component worden, met "record", "pause" en "stop" als drie actions/states, de timing statistieken als signal. Maar dan? Moet ik het control scherm een component maken? Of moet ik de objecten daarin (video image, audio volume, video channel) componenten maken? Of moet ik dit alles property van het TV scherm (de hoofdcomponent) maken? En wat doe ik met het preferences scherm? Property? Component? Iets anders?
Wat ook belangrijk is, wie is er verantwoordelijk voor het opslaan van de settings (via GConf, soort van registry - denk aan "welk video device" etc.)? De applicatie? Of de component zelf?
Ik ben compleet niet thuis in de componentenwereld en heb dus geen idee hoe dit normaal gebeurd. Het doel is dat andere multimedia applicaties a la gnonlin een recorder kunnen aanroepen zonder die zelf te hoeven programmeren. Binnen dat kader wil ik zo goed als mogelijk in de applicatie integreren. Wat dat betreft zou het dus onlogisch zijn om een eigen preferences scherm aan te houden, maar ja - wat doe je dan?
Oftewel, wat is "normaal" in de componentenwereld?

Dat is de applicatie in de simpelste mode. Je hebt een video widget (grijs, omdat ik geen TV-kaart in de laptop heb), een control scherm (video image, audio volume, video kanaal, etc.) en een preferences scherm (video size, audio rate/bitsize, audio/video device, audio/video codec, etc.).
Okee, nu de vraag: hoe ga ik dit componentizeren? Logischerwijs moet de TV widget een component worden, met "record", "pause" en "stop" als drie actions/states, de timing statistieken als signal. Maar dan? Moet ik het control scherm een component maken? Of moet ik de objecten daarin (video image, audio volume, video channel) componenten maken? Of moet ik dit alles property van het TV scherm (de hoofdcomponent) maken? En wat doe ik met het preferences scherm? Property? Component? Iets anders?
Wat ook belangrijk is, wie is er verantwoordelijk voor het opslaan van de settings (via GConf, soort van registry - denk aan "welk video device" etc.)? De applicatie? Of de component zelf?
Ik ben compleet niet thuis in de componentenwereld en heb dus geen idee hoe dit normaal gebeurd. Het doel is dat andere multimedia applicaties a la gnonlin een recorder kunnen aanroepen zonder die zelf te hoeven programmeren. Binnen dat kader wil ik zo goed als mogelijk in de applicatie integreren. Wat dat betreft zou het dus onlogisch zijn om een eigen preferences scherm aan te houden, maar ja - wat doe je dan?
Oftewel, wat is "normaal" in de componentenwereld?