view Geplaatst: 18 oktober 2007 Geplaatst: 18 oktober 2007 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
Gast Geplaatst: 18 oktober 2007 Geplaatst: 18 oktober 2007 heb je dat al geprobeerd? Volgens mij moet dat wel werken.
view Geplaatst: 18 oktober 2007 Auteur Geplaatst: 18 oktober 2007 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
view Geplaatst: 26 oktober 2007 Auteur Geplaatst: 26 oktober 2007 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
Gast Geplaatst: 26 oktober 2007 Geplaatst: 26 oktober 2007 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.
Aanbevolen berichten
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 accountInloggen
Heb je reeds een account? Log hier in.
Nu inloggen