Skip to content

Commit

Permalink
Merge branch '7.3-dev' into 7.3-dev-sigc3
Browse files Browse the repository at this point in the history
  • Loading branch information
teamblue-e2 committed Jun 26, 2024
2 parents f86f430 + c05c8b3 commit 7db034d
Show file tree
Hide file tree
Showing 69 changed files with 5,974 additions and 4,502 deletions.
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

> Ubuntu 22.04 LTS
## teamBlue 7.2 (based on openPLi) is build using oe-alliance build-environment "7.2" and several git repositories: ##
## teamBlue 7.3 (based on openPLi) is build using oe-alliance build-environment "7.3" and several git repositories: ##

> [https://github.com/oe-alliance/oe-alliance-core/tree/5.2](https://github.com/oe-alliance/oe-alliance-core/tree/5.2 "OE-Alliance")
> [https://github.com/oe-alliance/oe-alliance-core/tree/5.3](https://github.com/oe-alliance/oe-alliance-core/tree/5.3 "OE-Alliance")
>
> [https://github.com/teamblue-e2/enigma2/tree/7.2](https://github.com/teamblue-e2/enigma2/tree/7.2 "teamBlue E2")
> [https://github.com/teamblue-e2/enigma2/tree/7.3](https://github.com/teamblue-e2/enigma2/tree/7.3 "teamBlue E2")
>
> [https://github.com/teamblue-e2/skin/tree/master](https://github.com/teamblue-e2/skin/tree/master "teamBlue Skin")
Expand Down Expand Up @@ -61,22 +61,22 @@
su - teambluebuilder
```

1. Create folder teamblue7.2
1. Create folder teamblue73

```sh
mkdir -p teamblue7.2
mkdir -p teamblue73
```

1. Switch to folder teamblue7.2
1. Switch to folder teamblue73

```sh
cd teamblue7.2
cd teamblue73
```

1. Clone oe-alliance repository

```sh
git clone https://github.com/oe-alliance/build-enviroment.git -b 5.2
git clone https://github.com/oe-alliance/build-enviroment.git -b 5.3
```

1. Switch to folder build-enviroment
Expand Down Expand Up @@ -120,13 +120,13 @@
source env.source
bitbake nfs-utils rcpbind ...
bitbake nfs-utils rpcbind ...
```





Build Status - branch 7.2: [![Build Status](https://travis-ci.org/teamblue-e2/enigma2.svg?branch=7.2)](https://travis-ci.org/teamblue-e2/enigma2)
Build Status - branch 7.3: [![Build Status](https://travis-ci.org/teamblue-e2/enigma2.svg?branch=7.3)](https://travis-ci.org/teamblue-e2/enigma2)

Build Status - branch 7.2: [![Build Status](https://circleci.com/gh/teamblue-e2/enigma2.svg?style=shield&branch=7.2)]()
Build Status - branch 7.3: [![Build Status](https://circleci.com/gh/teamblue-e2/enigma2.svg?style=shield&branch=7.3)]()
2 changes: 1 addition & 1 deletion data/menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@

<!-- Menu / Settings / System / Frontpanel Menu -->
<menu key="frontpanel_menu" weight="15" level="0" text="Frontpanel">
<item weight="0" level="0" text="Basic settings" requires="Display"><setup level="1" id="lcd" /></item>
<item key="lcd_setup" weight="0" level="0" text="Display setup" requires="Display"><setup id="lcd"/></item>
<item key="display_skin_selector" weight="5" level="0" text="Display Skin" requires="OledDisplay"><screen module="SkinSelector" screen="LcdSkinSelector"/></item>
<item key="clock_skin_selector" weight="10" level="0" text="Clock Skin" requires="OledDisplay"><screen module="SkinSelector" screen="ClockSkinSelector"/></item>
</menu>
Expand Down
1 change: 1 addition & 0 deletions data/setup.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
</setup>
<setup key="userinterface" title="User interface">
<item level="1" text="Show animation while busy" description="Show busy indicator when the system is busy.">config.usage.show_spinner</item>
<item level="1" text="Use default spinner" description="When enabled, spinners that come with the activated skin are ignored.">config.usage.usedefaultspinner</item>
<item level="1" text="Show positioner movement" requires="isRotorTuner" description="Configure whether or not an icon should be shown when your motorized dish is moving.">config.usage.showdish</item>
<item level="1" text="Show positioner position" requires="isRotorTuner" description="Configure whether or not a rotor position will be displayed on the infobar">config.misc.showrotorposition</item>
<item level="0" text="Include CI assignment" description="Set CI assignment for detection of available services." >config.misc.use_ci_assignment</item>
Expand Down
4 changes: 2 additions & 2 deletions doc/MENU
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ In skin.xml add the list of images to the "menus" section based on menu KEY.
In skin.xml add the widget to MainMenu and Menu screens:
<screen name="MainMenu" ... >
...
<widget name="menuimage" position="0,50" size="200,400" alphatest="blend" conditional="menuimage" transparent="1" />
<widget name="Image" position="0,50" size="200,400" alphatest="blend" conditional="menuimage" transparent="1" />
...
</screen>
<screen name="Menu" ... >
...
<widget name="menuimage" position="0,50" size="200,400" alphatest="blend" conditional="menuimage" transparent="1" />
<widget name="Image" position="0,50" size="200,400" alphatest="blend" conditional="menuimage" transparent="1" />
...
</screen>

Expand Down
69 changes: 51 additions & 18 deletions lib/python/Components/Addons/ScreenHeader.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@

from skin import applySkinFactor, parseFont, parseColor

from Components.MultiContent import MultiContentEntryText
from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaBlend
from Components.Sources.StaticText import StaticText
from Components.Pixmap import Pixmap



Expand All @@ -26,7 +27,7 @@ def __init__(self):

def onContainerShown(self):
for x, val in self.sources.items():
if self.constructTitleItem not in val.onChanged:
if hasattr(val, "onChanged") and self.constructTitleItem not in val.onChanged:
val.onChanged.append(self.constructTitleItem)
self.l.setItemHeight(self.instance.size().height())
self.l.setItemWidth(self.instance.size().width())
Expand All @@ -41,24 +42,53 @@ def updateAddon(self, sequence):

def buildEntry(self, sequence):
yPos = 0
xPos = 0
textItemsCount = 0
textItemsOffset = -1

res = [None]
isOneItem = len(sequence) == 1

for idx, x in enumerate(sequence):
foreColor = self.titleForeground if idx == 0 else self.pathForeground
if isOneItem:
itemHeight = self.instance.size().height()
if not isOneItem and idx == 0:
itemHeight = self.instance.size().height()*2 // 3
elif idx == 1:
yPos = self.instance.size().height()*2 // 3 - 3
itemHeight = self.instance.size().height() // 3
res.append(MultiContentEntryText(
pos=(0, yPos),
size=(self.instance.size().width(), itemHeight),
font=2 if isOneItem and idx == 0 else idx, flags=RT_HALIGN_LEFT | RT_VALIGN_CENTER,
text=x.text.rstrip(">"),
if isinstance(x, StaticText):
textItemsCount += 1
if textItemsOffset == -1:
textItemsOffset = idx

isOneItem = textItemsCount == 1

itemHeight = self.instance.size().height()

for idx, x in enumerate(sequence):
if not isinstance(x, StaticText): # assume it is Pixmap
if x.pixmap:
itemHeight = self.instance.size().height()
pix_size = x.pixmap.size()
pixWidth = pix_size.width()
pixHeight = pix_size.height()
offset = (itemHeight - pixHeight) // 2
res.append(MultiContentEntryPixmapAlphaBlend(
pos=(0, offset),
size=(pixWidth, pixHeight),
png=x.pixmap))
xPos += pixWidth + offset
else:
foreColor = self.titleForeground if idx == 0 else self.pathForeground
if isOneItem:
itemHeight = self.instance.size().height()
yPos = 3
if not isOneItem and idx == textItemsOffset:
itemHeight = self.instance.size().height() * 2 // 3
elif idx == 1 + textItemsOffset:
yPos = self.instance.size().height() * 2 // 3 - 5
itemHeight = self.instance.size().height() // 3

fontIndex = 2 if isOneItem and idx == textItemsOffset else idx - textItemsOffset

res.append(MultiContentEntryText(
pos=(xPos, yPos),
size=(self.instance.size().width() - xPos, itemHeight),
font=fontIndex, flags=RT_HALIGN_LEFT | RT_VALIGN_CENTER,
text=x.text,
color=foreColor, color_sel=foreColor,
backcolor=self.backgroundColor, backcolor_sel=self.backgroundColor))
return res
Expand All @@ -71,8 +101,11 @@ def postWidgetCreate(self, instance):
def constructTitleItem(self):
sequence = []
for x, val in self.sources.items():
if isinstance(val, StaticText) and val.text:
if val not in sequence:
if isinstance(val, StaticText):
if hasattr(val, "text") and val.text and val not in sequence:
sequence.append(val)
elif isinstance(val, Pixmap):
if val and val not in sequence:
sequence.append(val)

self.updateAddon(sequence)
Expand Down
7 changes: 6 additions & 1 deletion lib/python/Components/Pixmap.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,17 @@
class Pixmap(GUIComponent):
GUI_WIDGET = ePixmap

def __init__(self):
GUIComponent.__init__(self)
self.pixmap = None

def getSize(self):
s = self.instance.size()
return (s.width(), s.height())

def setPixmap(self, pixmap):
self.instance.setPixmap(pixmap)
self.pixmap = pixmap
self.instance.setPixmap(self.pixmap)


class PixmapConditional(ConditionalWidget, Pixmap):
Expand Down
1 change: 1 addition & 0 deletions lib/python/Components/UsageConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ def alternativeNumberModeChange(configElement):
config.usage.volume_instead_of_channelselection = ConfigYesNo(default=False)
config.usage.channelselection_preview = ConfigYesNo(default=False)
config.usage.show_spinner = ConfigYesNo(default=True)
config.usage.usedefaultspinner = ConfigYesNo(default=False)
config.usage.disable_blinking = ConfigYesNo(default=True)
config.usage.menu_sort_weight = ConfigDictionarySet(default={"mainmenu": {"submenu": {}}})
config.usage.menu_sort_mode = ConfigSelection(default="default", choices=[("a_z", _("alphabetical")), ("default", _("Default")), ("user", _("user defined")), ("user_hidden", _("user defined hidden"))])
Expand Down
54 changes: 13 additions & 41 deletions lib/python/Plugins/SystemPlugins/CableScan/plugin.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from Screens.Screen import Screen
from Screens.Setup import Setup
from Screens.MessageBox import MessageBox
from Plugins.Plugin import PluginDescriptor
from Components.Label import Label
from Components.ActionMap import ActionMap
from Components.NimManager import nimmanager
from Components.config import config, ConfigSubsection, ConfigSelection, ConfigYesNo, ConfigInteger, ConfigFloat
from Components.ConfigList import ConfigListScreen
from Components.Sources.StaticText import StaticText
from Components.ProgressBar import ProgressBar
from Components.Pixmap import Pixmap
Expand Down Expand Up @@ -113,45 +113,21 @@ def cancel(self):
config.plugins.CableScan.auto = ConfigYesNo(default=False)


class CableScanScreen(ConfigListScreen, Screen):
skin = """
<screen position="center,115" size="520,390" title="Cable Scan">
<widget name="config" position="10,10" size="500,250" scrollbarMode="showOnDemand" />
<widget name="introduction" position="10,265" size="500,50" font="Regular;20" halign="center" />
<ePixmap pixmap="buttons/red.png" position="100,330" size="140,40" alphatest="on"/>
<ePixmap pixmap="buttons/green.png" position="270,330" size="140,40" alphatest="on"/>
<widget source="key_red" render="Label" position="100,330" zPosition="1" size="135,40" font="Regular;19" halign="center" valign="center" backgroundColor="#9f1313" transparent="1"/>
<widget source="key_green" render="Label" position="270,330" zPosition="1" size="135,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1"/>
</screen>"""

class CableScanScreen(Setup):
def __init__(self, session, nimlist):
Screen.__init__(self, session)
Setup.__init__(self, session, blue_button={'function': self.startScan, 'text': _("Start CableScan"), 'helptext': _("Start Cablescan")})
self.setTitle(_("Cable Scan"))
self["key_red"] = StaticText(_("Cancel"))
self["key_green"] = StaticText(_("Save"))

self["actions"] = ActionMap(["SetupActions", "MenuActions"],
{
"ok": self.keyGo,
"cancel": self.keyCancel,
"save": self.keySave,
"menu": self.closeRecursive,
}, -2)

self.nimlist = nimlist
self.prevservice = None

self.list = []
self.list.append((_('Frequency'), config.plugins.CableScan.frequency))
self.list.append((_('Symbol rate'), config.plugins.CableScan.symbolrate))
self.list.append((_('Modulation'), config.plugins.CableScan.modulation))
self.list.append((_('Network ID') + _(' (0 - all networks)'), config.plugins.CableScan.networkid))
self.list.append((_("Use official channel numbering"), config.plugins.CableScan.keepnumbering))
self.list.append((_("HD list"), config.plugins.CableScan.hdlist))
self.list.append((_("Enable auto cable scan"), config.plugins.CableScan.auto))

ConfigListScreen.__init__(self, self.list, session)
self["introduction"] = Label(_("Configure your network settings and press OK to scan"))
self.nimlist = nimlist
self["config"].list = [
(_('Frequency'), config.plugins.CableScan.frequency),
(_('Symbol rate'), config.plugins.CableScan.symbolrate),
(_('Modulation'), config.plugins.CableScan.modulation),
(_('Network ID') + _(' (0 - all networks)'), config.plugins.CableScan.networkid),
(_("Use official channel numbering"), config.plugins.CableScan.keepnumbering),
(_("HD list"), config.plugins.CableScan.hdlist),
(_("Enable auto cable scan"), config.plugins.CableScan.auto)
]

def restoreService(self):
if self.prevservice:
Expand All @@ -162,10 +138,6 @@ def keySave(self):
config.plugins.CableScan.save()
self.close()

def keyGo(self):
config.plugins.CableScan.save()
self.startScan()

def getFreeTuner(self):
dvbc_tuners_mask = sum([2**int(x) for x in self.nimlist])
freeTunerMask = dvbc_tuners_mask - (self.session.screen["TunerInfo"].tuner_use_mask & dvbc_tuners_mask)
Expand Down
5 changes: 2 additions & 3 deletions lib/python/Plugins/SystemPlugins/FastScan/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,8 @@ def providerChanged(configEntry):
auto_providers = config.misc.fastscan.autoproviders.value.split(",")
for provider in providers:
self.config_autoproviders[provider[0]] = ConfigYesNo(default=provider[0] in auto_providers)
Setup.__init__(self, session, blue_button={'function': self.startScan, 'helptext': _("Start fastscan")})
Setup.__init__(self, session, blue_button={'function': self.startScan, 'helptext': _("Start Fastscan")}, menu_button={'function': self.startScan, 'helptext': _("Start Fastscan")})
self.setTitle(_("FastScan"))
self.createSetup()
self.finished_cb = None

def createSetup(self):
Expand All @@ -210,7 +209,7 @@ def createSetup(self):
if nimmanager.getNimListForSat(transponders[provider[1][0]][3]):
self.list.append((_("Enable auto fastscan for %s") % provider[0], self.config_autoproviders[provider[0]]))
self["config"].list = self.list
self["key_blue"].text = _("Scan") if self.scan_provider.value else ""
self["key_blue"].text = _("Start Fastscan") if self.scan_provider.value else ""

def saveConfiguration(self):
if self.scan_provider.value:
Expand Down
6 changes: 5 additions & 1 deletion lib/python/RecordTimer.py
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,11 @@ def activate(self):
# i.e. cable / sat.. then the second recording needs an own extension... when we create the file
# here than calculateFilename is happy
if not self.justplay:
open(self.Filename + self.record_service.getFilenameExtension(), "w").close()
try:
open(self.Filename + self.record_service.getFilenameExtension(), "w").close()
except Exception as e:
AddNotification(MessageBox, _("Timer recording failed. No space left on device!\n"), type=MessageBox.TYPE_ERROR, timeout=0)
print("[TIMER] Error:", e)
# Give the Trashcan a chance to clean up
try:
trashcan_instance.cleanIfIdle(self.Filename)
Expand Down
Loading

0 comments on commit 7db034d

Please sign in to comment.