When you call a label or button from a source they also can be updated as the label is given in the source as render.
Edited by littlesat, 18 January 2018 - 07:32.
Posted 18 January 2018 - 07:28
Edited by littlesat, 18 January 2018 - 07:32.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 09:44
In Label() and Button() the source methods are faked... avoiding an update being possible....?
However I could not find the connectDown/Up stream functions are used anyway...
# fake Source methods: def connectDownstream(self, downstream): pass def checkSuspend(self): pass def disconnectDownstream(self, downstream): pass
Edited by littlesat, 18 January 2018 - 10:01.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 10:59
In Label() and Button() the source methods are faked... avoiding an update being possible....?
However I could not find the connectDown/Up stream functions are used anyway...
# fake Source methods: def connectDownstream(self, downstream): pass def checkSuspend(self): pass def disconnectDownstream(self, downstream): pass
Well they are used because if you comment them out everything goes wrong.
Posted 18 January 2018 - 11:16
Where is your fix suggestion?
We can autohide the png's via ConditionalShowHide when we arrange that StaticText can return a boolean property based on having contents in the text or having an empty string.
Then I see we have 4 types of buttons in the string...
1. without source (direct label), named key_color
2. with source, named key_color
3. without source (direct label) named color
4. with source, named color
Also 'history' stuff you cannot get easily rid of due to the hsitory and plugins
Well they are used because if you comment them out everything goes wrong.
And that is why you cannot change these values in the code....
Edited by littlesat, 18 January 2018 - 11:26.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 11:26
Littlesat, why are you confusing this with coloured buttons. The problem is when you send setText it does not arrive at "source". That is the bug.
If you don't think that is a bug it must then be a feature. If it is a feature please explain why you would send setText and not want it to arrive at the display.
Posted 18 January 2018 - 11:53
Yep and they are overruled as they cannot work... which mean the text cannot be updated...
<screen name="ButtonRed"> <widget conditional="key_red" source="key_red" render="ePixmap" pixmap="PLi-FullNightHD/buttons/red.png" position="192,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> <widget conditional="red" source="red" render="ePixmap" pixmap="PLi-FullNightHD/buttons/red.png" position="192,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> </screen> <screen name="ButtonGreen"> <widget conditional="key_green" source="key_green" render="ePixmap" pixmap="PLi-FullNightHD/buttons/green.png" position="628,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> <widget conditional="green" source="green" render="ePixmap" pixmap="PLi-FullNightHD/buttons/green.png" position="628,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> </screen> <screen name="ButtonYellow"> <widget conditional="key_yellow" source="key_yellow" render="ePixmap" pixmap="PLi-FullNightHD/buttons/yellow.png" position="1064,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> <widget conditional="yellow" source="yellow" render="ePixmap" pixmap="PLi-FullNightHD/buttons/yellow.png" position="1064,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> </screen> <screen name="ButtonBlue"> <widget conditional="key_blue" source="key_blue" render="ePixmap" pixmap="PLi-FullNightHD/buttons/blue.png" position="1500,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> <widget conditional="blue" source="blue" render="ePixmap" pixmap="PLi-FullNightHD/buttons/blue.png" position="1500,1032" size="34,34" alphatest="blend"> <convert type="ConditionalShowHide"/> </widget> </screen> <screen name="ButtonTemplate"> <panel name="ButtonRed"/> <widget conditional="key_red" name="key_red" position="242,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="key_red" source="key_red" render="Label" position="242,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <widget conditional="red" name="red" position="242,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="red" source="red" render="Label" position="242,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <panel name="ButtonGreen"/> <widget conditional="key_green" name="key_green" position="678,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="key_green" source="key_green" render="Label" position="678,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <widget conditional="green" name="green" position="678,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="green" source="green" render="Label" position="678,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <panel name="ButtonYellow"/> <widget conditional="key_yellow" name="key_yellow" position="1114,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="key_yellow" source="key_yellow" render="Label" position="1114,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <widget conditional="yellow" name="yellow" position="1114,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="yellow" source="yellow" render="Label" position="1114,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <panel name="ButtonBlue"/> <widget conditional="key_blue" name="key_blue" position="1550,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="key_blue" source="key_blue" render="Label" position="1550,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <widget conditional="blue" name="blue" position="1550,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="blue" source="blue" render="Label" position="1550,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> </screen>
Edited by littlesat, 18 January 2018 - 11:54.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 11:56
self.timer.stop() def calcVisibility(self): - b = self.source.boolean - if b is None: - b = False - b ^= self.invert - return b + try: + return bool(self.source.boolean) ^ self.invert + except: + return True def changed(self, what): vis = self.calcVisibility() diff --git a/lib/python/Components/Sources/StaticText.py b/lib/python/Components/Sources/StaticText.py index 8e6f824ef..c5c22df72 100644 --- a/lib/python/Components/Sources/StaticText.py +++ b/lib/python/Components/Sources/StaticText.py @@ -22,3 +22,9 @@ class StaticText(Source): self.changed((self.CHANGED_ALL,)) text = property(getText, setText) + + @cached + def getBoolean(self): + return bool(self.__text) + + boolean = property(getBoolean)
Edited by littlesat, 18 January 2018 - 12:04.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 12:12
Yep and they are overruled as they cannot work... which mean the text cannot be updated...
What do you mean can't? Why not? You can write what you want into code. Never known something yet that cant be coded. And this is just a simple text being pushed to a display. That is the first thing a coder learns. "HELLO WORLD!"
Edited by Huevos, 18 January 2018 - 12:14.
Posted 18 January 2018 - 13:14
self.timer.stop() def calcVisibility(self): - b = self.source.boolean - if b is None: - b = False - b ^= self.invert - return b + try: + return bool(self.source.boolean) ^ self.invert + except: + return True def changed(self, what): vis = self.calcVisibility() diff --git a/lib/python/Components/Sources/StaticText.py b/lib/python/Components/Sources/StaticText.py index 8e6f824ef..c5c22df72 100644 --- a/lib/python/Components/Sources/StaticText.py +++ b/lib/python/Components/Sources/StaticText.py @@ -22,3 +22,9 @@ class StaticText(Source): self.changed((self.CHANGED_ALL,)) text = property(getText, setText) + + @cached + def getBoolean(self): + return bool(self.__text) + + boolean = property(getBoolean)
But this idea requires all buttons texts to be staticText(). That is not backwards compatible. Most of your screens are not compatible. And is it going to break conditional that is using Label/Button?
Posted 18 January 2018 - 13:41
This is not the only thing that needs to be changed... Where you talking about I do not have a solution.... And as far I can see it can't be done.
The try/except should here accomplished that for label and button the png is always shown when defined.
Edited by littlesat, 18 January 2018 - 13:42.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 13:53
This is not the only thing that needs to be changed... Where you talking about I do not have a solution.... And as far I can see it can't be done.
The try/except should here accomplished that for label and button the png is always shown when defined.
It already is shown when defined in the current code without this change. So pointless change.
Also, you posted this above:
<widget conditional="key_green" name="key_green" position="678,1030" size="370,38" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> <widget conditional="key_green" source="key_green" render="Label" position="678,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/>
That is no good and part of the reason I started this thread in the first place. Look at the YELLOW button in the attached screengrab.
cron.png 120.03KB 3 downloads
Posted 18 January 2018 - 15:26
It is much better to use staticText -or- button -or- label in the python code whichever button you want to present... I see that as ONLY correct solution... however this seems to be an utopie (for E2 it is doable... but think about al those plugins).
The 'overlay' in the taskmanager is caused because one source that will be updated is created and probably one label that is not being updated when the text changes...
It might be some 'small' changes on some screens might be required..... But also I need a big investigation and asking should we 'spend' time on it... I think it would be nice if we can more easily hide the png buttons in case the color key does not exists in the screen's dictionary and when the text is empty...
The screenshot demonstrates possibly we need to make a fix on the crond manager... or do you have more of such screens?
Edited by littlesat, 18 January 2018 - 15:30.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 15:41
Much better to fix the python object that is broken than doing a hack like that.
[repeat mode]Do you already have the idea how to 'fix' this?[/repeat mode]
Because I could not find a good method...
Edited by littlesat, 18 January 2018 - 15:41.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 15:47
The crond manager demonstrates it might work when we make a fake/dummy thing...
It seems the source take it over... I even just remove the whole line?
Actually the biggest mistake in phython here is the mixt usage of Label, Button and staticText
<screen name="ButtonTemplate"> <panel name="ButtonRed"/> <widget conditional="key_red" name="key_red" position="242,1030" size="0,0" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> #dummy as size is 0,0 <widget conditional="key_red" source="key_red" render="Label" position="242,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> <widget conditional="red" name="red" position="242,1030" size="0,0" backgroundColor="black" zPosition="1" transparent="1" font="Regular;34" halign="left"/> #dummy as size is 0,0 <widget conditional="red" source="red" render="Label" position="242,1030" size="370,38" backgroundColor="darkgrey" zPosition="2" transparent="1" foregroundColor="grey" font="Regular;34" halign="left"/> ...
Edited by littlesat, 18 January 2018 - 15:48.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
Posted 18 January 2018 - 16:23
To me it seems there appears to be confusion about the problem. To help clarify it, can I make up two terms?
"button_graphic"
"button_text"
The problem is "button_text" not updating. Talking about "button_graphic" distracts from acknowledging/dealing with the problem about "button_text".
IMO, we could code it so that "button_text" automatically displays "button_text". By definition, if you want "button_text", it will be next to a "button_graphic". Lets keep that for the future for time being and focus on getting "button_text" to work properly.
We can have freestanding labels/text so that is probably where the button/label/text confusion is happening.
To further explain the problem, please find attached a screenshot. I have two "button_text" on top of each other. "Satellites" and "Extended".
Edited by Abu Baniaz, 18 January 2018 - 16:24.
Posted 18 January 2018 - 16:33
Again... As far I understand when you want to update texts after the screen is 'made' it is mandatory to use a
<widget source="key_red" render="Label"... structure in the skin....
-unless-
Someone finds a trick to do it without it....
With the python code change I gave above I suggest it should be possible to hide the button_graphic when the text is an empty string or None.
Edited by littlesat, 18 January 2018 - 16:34.
WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W
0 members, 20 guests, 0 anonymous users