You are not logged in.

Dear visitor, welcome to Dreamboard. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Tuesday, January 18th 2011, 8:45pm

Zwei 'MenuList' in einem Screen

Hallo,

ich habe einen Screen mit 2 MenuList-Objekte; der Screen ist horizontal verteil.
Wie kann ich die Selection(Kontrolle) von einer List zur anderen übertragen( z.B beim Drucken auf 'ok' oder 'right' Buttons)? ?(


Source code

1
2
3
4
<screen position="%d,%d" size="%d,%d" title="%s" >
	<widget name="wPagesList" position="0,0" size="%d,%d" scrollbarMode="showOnDemand" />
	<widget name="entrieslist" position="%d,%d" size="%d,%d" scrollbarMode="showOnDemand" />
..............................

2

Wednesday, January 19th 2011, 10:18am

Hi,

das ist eigentlich ganz einfach (achtung unvollständiger Beispielcode):

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def __init_(self, session):
	Screen.__init__(self, session)
	self.focusPages = True

def changeFocus(self):
	self.focusPages = not self.focusPages
	self["wPagesList"].selectionEnabled(self.focusPages)
	self["entriesList"].selectionEnabled(not self.focusPages)
	
def up(self):
	if self.focusPages:
		self["wPagesList"].up()
	else:
		self["entrieslist"].up()
		
		



focusPages setzt du dann für die entsprechend andere Taste um.
Ich empfehle dir beim legen des Focus in der Liste die gerad jeweils nicht den Focus hat die Methode MenuList.selectionEnabled(False) zu nutzen (und für die aktuell aktive Liste natürlich mit True wieder zu aktivieren).

Dann kann der Nutzer sofort erkennen in welcher Liste sich was bewegt wenn er eine taste drückt ;)
Falls du wissen möchtest welche Methoden so eine MenuList bietet kannst du das hier nachlesen: http://e2devel.com/apidoc/enigma2/db/d9c…_1MenuList.html
mfg ,
Reichi

"Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


3

Wednesday, January 19th 2011, 1:01pm

focusPages setzt du dann für die entsprechend andere Taste um.
Ich empfehle dir beim legen des Focus in der Liste die gerad jeweils nicht den Focus hat die Methode MenuList.selectionEnabled(False) zu nutzen (und für die aktuell aktive Liste natürlich mit True wieder zu aktivieren).

Danke das funktioniert problemlos :thumbsup:

Doch leider die Navigation bleibt bei der ersten MenuList :(

Habe folgendes probiert:

Source code

1
2
3
4
5
def Up(self):
	if self.Pagesfocus:
		self["wPagesList"].up()
	else:
		self["entrieslist"].up()


und hier meine Actionmap:

Source code

1
2
3
4
5
self["testActionMap"] = ActionMap(["ListboxActions", "ColorActions"],
							{
								"green":self.toggleList,
								"moveUp": self.Up,
								}, -1)


Wenn ich die Taste 'up' drücke, sollte eigentlich die Funktion self.Up gerufen werden und genau hier ist das Problem. Die Funktion self.Up wird überhaupt nicht gerufen ?(

4

Wednesday, January 19th 2011, 1:22pm

heißt deine Variable wirklich self.Pagesfocus?
Im Beispiel heißt die ja self.focusPages

ergänz doch mal deine Up(self) methode wie folgt:

Source code

1
2
3
4
5
6
def Up(self):
	print "[xyz].Up, focus is %s" %self.Pagesfocus
	if self.Pagesfocus:
		self["wPagesList"].up()
	else:
		self["entrieslist"].up()


dann kannst du enigma2 auf der Konsole starten (via telnet/ssh anmelden, dann: init 5 dann: enigma2 zurück zu normal geht es dann mit init 3) und dir die Ausgabe ansehen.
mfg ,
Reichi

"Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


5

Wednesday, January 19th 2011, 1:46pm

[gelöst] Danke für die Unterstützung :)

dann kannst du enigma2 auf der Konsole starten (via telnet/ssh anmelden, dann: init 5 dann: enigma2 zurück zu normal geht es dann mit init 3) und dir die Ausgabe ansehen.

Das habe ich getan(ich benutze e2log.log...ist irgendwie komfortabler ;) ). Die Funktion self.Up wurde wirklich nicht gerufen.

Das Problem war in der Actionmap, 'ListboxActions' musste duch 'WizardActions' ersetzt werden. So sieht meine Actionmap jetzt:

Source code

1
2
3
4
5
self["testActionMap"] = ActionMap(["WizardActions", "ColorActions"],
							{
								"green":self.toggleList,
								"up": self.Up,
								}, -1)


Habe noch 2 kurze Fragen(ich weiß nicht ob ich dafür einen neuen Thread öffnen soll):

1. Welche Bedeutung hat die '-1' am Ende der Actionmap ?
2. Gibt es einen Möglichkeit, die 'backgroundColorSelected' Eigenschaft einer MenuList dynamisch zu ändern, z.B von #221122 auf #AAAAAA ohne die Plugin neustarten zu müssen?

This post has been edited 1 times, last edit by "mfsmdvb" (Jan 19th 2011, 1:55pm)