Ga naar inhoud


[Enigma 1] Plugin oproepen vanuit het menu


Aanbevolen berichten

Geplaatst:

Ik heb een vraagje aan de image ontwikkelaars op Sat4all.

 

In het "expert menu" ben ik zover dat ik een extra regel kan maken die oproepbaar is.

Dit wordt gedaan in de system_settings.cpp

Maar ik kan op dit moment alleen dingen oproepen die in de image zelf zitten zoals audio instellingen en meer van die dingen.

Maar inplaats van deze standaard optie's wil ik een externe plugin oproepen.

Dit krijg ik niet voor mekaar en weet zo 123 niet hoe ik een externe file kan oproepen en executen.

 

Hieronder een voorbeeld hoe ik het wil doen en misschien geeft het een duidelijker beeld over mijn vraag.

 

Code:
/* * system_settings.cpp * * Copyright © 2003 Andreas Monzner <ghostrider@tuxbox.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id: system_settings.cpp,v 1.9 2006/02/05 23:41:01 pieterg Exp $ */#include <system_settings.h>#include <setup_osd.h>#include <wizard_language.h>#include <time_settings.h>#include <setup_rfmod.h>#include <setup_lcd.h>#include <setup_harddisk.h>#include <setup_keyboard.h>#include <setupvideo.h>#include <lib/dvb/edvb.h>#include <lib/gui/emessage.h>#include <lib/system/info.h>eSystemSettings::eSystemSettings()	:eSetupWindow(_("System Settings"), 10, 350){	move(ePoint(180, 100));	int entry=0;	CONNECT((new eListBoxEntryMenu(&list, _("Time Settings"), eString().sprintf("(%d) %s", ++entry, _("open time settings")) ))->selected, eSystemSettings::time_settings);	new eListBoxEntryMenuSeparator(&list, eSkin::getActive()->queryImage("listbox.separator"), 0, true );	CONNECT((new eListBoxEntryMenu(&list, _("A/V Settings"), eString().sprintf("(%d) %s", ++entry, _("open A/V settings")) ))->selected, eSystemSettings::av_settings);//begin patch 1/2	CONNECT((new eListBoxEntryMenu(&list, _("mijn plugin"), eString().sprintf("(%d) %s", ++entry, _("Plugin")) ))->selected, eSystemSettings::plugin_menu);//einde patch 1/2

 

Het volgende gedeelte is een stuk verder in de file, als voorbeeld roep ik nu de audio instellingen op.

 

Code:
//begin patch 2/2	eZapVideoSetup setup;#ifndef DISABLE_LCD	setup.setLCD(LCDTitle, LCDElement);#endif	setup.show();	setup.exec();	setup.hide();	show();}//einde patch 2/2

 

Wat moet ik precies veranderen om een plugin te starten vanaf dit punt?

Ik was zelf aan het denken om de enigma_main.cpp te veranderen en de execpluginByName op te roepen.

 

Code:
{ hide(); eZapPlugins plugins(2); plugins.execPluginByName("plugin_name.cfg"); if (!doHideInfobar()) show(); }

 

Groeten, view


Geplaatst:

Hallo Pieterg,

 

de aanpassing van de system_settings.cpp is getest en ziet er wel "stoer" uit.

Maar het oproepen van de execPluginByName heb ik er nog niet ingezet.

 

Maar het nadeel van deze oplossing is dan dat je ook de plugin onder je blauwe knopje van je afstandsbediening hebt zitten en dat wilde ik net voorkomen.

Mijn idee was om het puur en alleen via het menu te starten.

 

Toch zal ik dit evengoed testen of het werkt. <img src="/forums/images/graemlins/xyxthumbs.gif" alt="" />

 

view

Geplaatst:

Deel 2.....

 

ik ben al een stapje verder

Ik heb het menu-punt opgeschoven naar een eerder menu en staat nu in de rij van Zenders zoken en config enz. Dus heb ik het in de Enigma_setup.cpp gedaan maar het wil nog niet vlotten.

 

Dit is de patch van het geheel:

Code:
// patch start 1/2	CONNECT((new eListBoxEntryMenu(&list, _("VIP"), eString().sprintf("(%d) %s", ++entry, _("VIP")) ))->selected, eZapSetup::eview_menu);	void eZapSetup::eview_menu()// patch end 1/2

 

En een stuk verder naar onderen:

 

Code:
// patch start 2/2void eZapSetup::eview_menu(){		hide();	eZapPlugins plugins;	if ( plugins.execPluginByName("view.cfg") != "OK" )		plugins.execPluginByName("_view.cfg");		close(0);}// patch end 2/2

 

Maar de compiler is het er niet mee eens <img src="/forums/images/graemlins/smirk.gif" alt="" />

Citaat:

enigma_setup.cpp: In constructor `eZapSetup::eZapSetup()':

enigma_setup.cpp:52: error: `eview_menu' is not a member of `eZapSetup'

enigma_setup.cpp:53: error: expected primary-expression before "void"

enigma_setup.cpp:53: error: expected `;' before "void"

enigma_setup.cpp: At global scope:

enigma_setup.cpp:142: error: no `void eZapSetup::eview_menu()' member functiondeclared in class `eZapSetup'

enigma_setup.cpp: In member function `void eZapSetup::eview_menu()':

enigma_setup.cpp:144: error: `eZapPlugins' undeclared (first use this function)

enigma_setup.cpp:144: error: (Each undeclared identifier is reported only oncefor each function it appears in.)

enigma_setup.cpp:144: error: expected `;' before "plugins"

enigma_setup.cpp:146: error: `plugins' undeclared (first use this function)

enigma_setup.cpp:150:2: warning: no newline at end of file

make[3]: *** [enigma_setup.o] Error 1

make[3]: Leaving directory `/home/view/tuxbox-cvs/apps/tuxbox/enigma/src'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/home/view/tuxbox-cvs/apps/tuxbox/enigma'

make[1]: *** [all] Error 2

make[1]: Leaving directory `/home/view/tuxbox-cvs/apps/tuxbox/enigma'

make: *** [.enigma] Error 2

view@box:~/tuxbox-cvs/cdk$

 

Dus we buffelen nog even door..

 

Groeten, view

Geplaatst:

Ik neem aan dat je vantevoren voldoende c++ kennis vergaard hebt om te weten dat je een nieuwe member functie ook moet declareren (in de header file).

 

Aan de compiler error te zien lijkt het er op dat je een typo hebt gemaakt in de header file, en de naam van je nieuwe memberfunctie declaratie niet overeen komt met die van de definitie.

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...