Merge commit 'dm/experimental' into test_0108
authorschon <schon@dev03-server>
Sat, 8 Jan 2011 06:45:37 +0000 (15:45 +0900)
committerschon <schon@dev03-server>
Sat, 8 Jan 2011 06:45:37 +0000 (15:45 +0900)
1  2 
RecordTimer.py
configure.ac
lib/python/Components/Harddisk.py
lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py
lib/python/Screens/AudioSelection.py
lib/service/servicedvb.cpp

diff --combined RecordTimer.py
@@@ -297,13 -297,13 +297,13 @@@ class RecordTimerEntry(timer.TimerEntry
                                self.record_service = None
                        if self.afterEvent == AFTEREVENT.STANDBY:
                                if not Screens.Standby.inStandby: # not already in standby
 -                                      Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A finished record timer wants to set your\nDreambox to standby. Do that now?"), timeout = 20)
 +                                      Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A finished record timer wants to set your\nSTB to standby. Do that now?"), timeout = 20)
                        elif self.afterEvent == AFTEREVENT.DEEPSTANDBY:
                                if not Screens.Standby.inTryQuitMainloop: # not a shutdown messagebox is open
                                        if Screens.Standby.inStandby: # in standby
                                                RecordTimerEntry.TryQuitMainloop() # start shutdown handling without screen
                                        else:
 -                                              Notifications.AddNotificationWithCallback(self.sendTryQuitMainloopNotification, MessageBox, _("A finished record timer wants to shut down\nyour Dreambox. Shutdown now?"), timeout = 20)
 +                                              Notifications.AddNotificationWithCallback(self.sendTryQuitMainloopNotification, MessageBox, _("A finished record timer wants to shut down\nyour STB. Shutdown now?"), timeout = 20)
                        return True
  
        def setAutoincreaseEnd(self, entry = None):
@@@ -517,7 -517,7 +517,7 @@@ class RecordTimer(timer.Timer)
                checkit = True
                for timer in root.findall("timer"):
                        newTimer = createTimer(timer)
-                       if (self.record(newTimer, True, True) is not None) and (checkit == True):
+                       if (self.record(newTimer, True, dosave=False) is not None) and (checkit == True):
                                from Tools.Notifications import AddPopup
                                from Screens.MessageBox import MessageBox
                                AddPopup(_("Timer overlap in timers.xml detected!\nPlease recheck it!"), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")
diff --combined configure.ac
@@@ -1,4 -1,4 +1,4 @@@
- AC_INIT([enigma2],[2.8.0],[enigma2-devel@lists.elitedvb.net])
+ AC_INIT([enigma2],[3.0.0],[enigma2-devel@lists.elitedvb.net])
  AM_INIT_AUTOMAKE([dist-bzip2 no-define tar-pax -Wno-portability])
  AC_CONFIG_HEADERS([enigma2_config.h])
  
@@@ -16,14 -16,7 +16,7 @@@ AC_CONFIG_MACRO_DIR([m4]
  
  AC_CHECK_HEADERS([dbox/fp.h dbox/lcd-ks0713.h])
  
- AC_PATH_PROG(MSGFMT,[msgfmt])
- AC_PATH_PROG(MSGINIT,[msginit])
- AC_PATH_PROG(MSGMERGE,[msgmerge])
- AC_PATH_PROG(MSGUNIQ,[msguniq])
- AC_PATH_PROG(XGETTEXT,[xgettext])
- if test -z "$MSGFMT" -o -z "$MSGINIT" -o -z "$MSGMERGE" -o -z "$MSGUNIQ" -o -z "$XGETTEXT"; then
-       AC_MSG_ERROR([Could not find required gettext tools])
- fi
+ AC_PATH_PROG(MSGFMT, msgfmt, AC_MSG_ERROR(Could not find msgfmt))
  
  AM_PATH_PYTHON
  AX_PYTHON_DEVEL
@@@ -88,10 -81,23 +81,23 @@@ f
  AC_ARG_WITH(po,
        AS_HELP_STRING([--with-po],[enable updating of po files]),
        [with_po="$withval"],[with_po="no"])
+ if test "$with_po" = "yes"; then
+       AC_PATH_PROG(MSGINIT, msginit)
+       AC_PATH_PROG(MSGMERGE, msgmerge)
+       AC_PATH_PROG(MSGUNIQ, msguniq)
+       AC_PATH_PROG(XGETTEXT, xgettext)
+       if test -z "$MSGINIT" -o -z "$MSGMERGE" -o -z "$MSGUNIQ" -o -z "$XGETTEXT"; then
+               AC_MSG_ERROR([Could not find required gettext tools])
+       fi
+ fi
  AM_CONDITIONAL(UPDATE_PO, test "$with_po" = "yes")
  
+ ENIGMA2_CFLAGS="-fno-rtti -fno-exceptions"
+ AC_SUBST(ENIGMA2_CFLAGS)
  CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS"
- CXXFLAGS="$CXXFLAGS $BASE_CFLAGS $PTHREAD_CFLAGS $DEBUG_CFLAGS -fno-rtti -fno-exceptions -Wall"
+ CFLAGS="$CFLAGS $DEBUG_CFLAGS -Wall"
+ CXXFLAGS="$CXXFLAGS $DEBUG_CFLAGS -Wall $BASE_CFLAGS $ENIGMA2_CFLAGS $PTHREAD_CFLAGS"
  
  AC_CONFIG_FILES([
  Makefile
@@@ -194,9 -200,6 +200,9 @@@ lib/python/Plugins/SystemPlugins/Videom
  lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile
  lib/python/Plugins/SystemPlugins/WirelessLan/Makefile
  lib/python/Plugins/SystemPlugins/WirelessLan/meta/Makefile
 +lib/python/Plugins/SystemPlugins/FactoryTest/Makefile
 +lib/python/Plugins/SystemPlugins/Fancontrol/Makefile
 +lib/python/Plugins/SystemPlugins/Fancontrol/meta/Makefile
  lib/python/Tools/Makefile
  lib/service/Makefile
  lib/components/Makefile
@@@ -206,5 -209,4 +212,5 @@@ tools/Makefil
  tools/enigma2.sh
  enigma2.pc
  ])
 +AC_DEFINE(BUILD_VUPLUS,1,[Define to 1 for vuplus])
  AC_OUTPUT
@@@ -1,7 -1,5 +1,7 @@@
  from os import system, listdir, statvfs, popen, makedirs, stat, major, minor, path, access
 -from Tools.Directories import SCOPE_HDD, resolveFilename
 +#     ikseong
 +from Tools.Directories import SCOPE_HDD, resolveFilename, fileExists
 +
  from Tools.CList import CList
  from SystemInfo import SystemInfo
  import time
@@@ -97,13 -95,7 +97,13 @@@ class Harddisk
                return ret
  
        def diskSize(self):
 -              line = readFile(self.sysfsPath('size'))
 +              #       ikseong
 +              try:
 +                      line = readFile(self.sysfsPath('size'))
 +              except:
 +                      harddiskmanager.removeHotplugPartition(self.device)
 +                      print "error remove",self.device
 +                      return -1
                try:
                        cap = int(line)
                except:
                return "%d.%03d GB" % (cap/1000, cap%1000)
  
        def model(self):
 -              if self.device[:2] == "hd":
 -                      return readFile('/proc/ide/' + self.device + '/model')
 -              elif self.device[:2] == "sd":
 -                      vendor = readFile(self.sysfsPath('device/vendor'))
 -                      model = readFile(self.sysfsPath('device/model'))
 -                      return vendor + '(' + model + ')'
 -              else:
 -                      assert False, "no hdX or sdX"
 +              #       ikseong
 +              try:
 +                      if self.device[:2] == "hd":
 +                              return readFile('/proc/ide/' + self.device + '/model')
 +                      elif self.device[:2] == "sd":
 +                              vendor = readFile(self.sysfsPath('device/vendor'))
 +                              model = readFile(self.sysfsPath('device/model'))
 +                              return vendor + '(' + model + ')'
 +                      else:
 +                              assert False, "no hdX or sdX"
 +              except:
 +                      harddiskmanager.removeHotplugPartition(self.device)
 +                      print "error remove",self.device
 +                      return -1
  
        def free(self):
                try:
                return (res >> 8)
  
        def createPartition(self):
-               cmd = 'printf "0,\n;\n;\n;\ny\n" | sfdisk -f ' + self.disk_path
+               cmd = 'printf "8,\n;0,0\n;0,0\n;0,0\ny\n" | sfdisk -f -uS ' + self.disk_path
                res = system(cmd)
                return (res >> 8)
  
                return (res >> 8)
  
        def createMovieFolder(self):
 +#     ikseong
                try:
 +                      if not fileExists("/hdd", 0):
 +                              print "not found /hdd"
 +                              system("ln -s /media/hdd /hdd")
 +#                             
                        makedirs(resolveFilename(SCOPE_HDD))
                except OSError:
                        return -1
                idle_time = t - self.last_access
  
                stats = self.readStats()
 +              #       ikseong
 +              if stats == -1:
 +                      self.setIdleTime(0)
 +                      return
                print "nr_read", stats[0], "nr_write", stats[1]
                l = sum(stats)
                print "sum", l, "prev_sum", self.last_stat
@@@ -556,7 -533,6 +556,7 @@@ class HarddiskManager
        def getAutofsMountpoint(self, device):
                return "/autofs/%s/" % (device)
  
 +
        def is_hard_mounted(self, device):
                mounts = file('/proc/mounts').read().split('\n')
                for x in mounts:
        def HDDList(self):
                list = [ ]
                for hd in self.hdd:
 +                      #       ikseong
 +                      if hd.model() == -1:
 +                              continue
                        hdd = hd.model() + " - " + hd.bus()
                        cap = hd.capacity()
                        if cap != "":
@@@ -125,11 -125,11 +125,11 @@@ class UpdatePluginMenu(Screen)
                self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value )
                if self.menu == 0:
                        print "building menu entries"
 -                      self.list.append(("install-extensions", _("Manage extensions"), _("\nManage extensions or plugins for your Dreambox" ) + self.oktext, None))
 -                      self.list.append(("software-update", _("Software update"), _("\nOnline update of your Dreambox software." ) + self.oktext, None))
 -                      self.list.append(("software-restore", _("Software restore"), _("\nRestore your Dreambox with a new firmware." ) + self.oktext, None))
 -                      self.list.append(("system-backup", _("Backup system settings"), _("\nBackup your Dreambox settings." ) + self.oktext + "\n\n" + self.infotext, None))
 -                      self.list.append(("system-restore",_("Restore system settings"), _("\nRestore your Dreambox settings." ) + self.oktext, None))
 +                      self.list.append(("install-extensions", _("Manage extensions"), _("\nManage extensions or plugins for your STB" ) + self.oktext, None))
 +                      self.list.append(("software-update", _("Software update"), _("\nOnline update of your STB software." ) + self.oktext, None))
 +                      self.list.append(("software-restore", _("Software restore"), _("\nRestore your STB with a new firmware." ) + self.oktext, None))
 +                      self.list.append(("system-backup", _("Backup system settings"), _("\nBackup your STB settings." ) + self.oktext + "\n\n" + self.infotext, None))
 +                      self.list.append(("system-restore",_("Restore system settings"), _("\nRestore your STB settings." ) + self.oktext, None))
                        self.list.append(("ipkg-install", _("Install local extension"),  _("\nScan for local extensions and install them." ) + self.oktext, None))
                        for p in plugins.getPlugins(PluginDescriptor.WHERE_SOFTWAREMANAGER):
                                if p.__call__.has_key("SoftwareSupported"):
                        currentEntry = current[0]
                        if self.menu == 0:
                                if (currentEntry == "software-update"):
 -                                      self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?")+"\n"+_("\nAfter pressing OK, please wait!"))
 +                                      self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your STB?")+"\n"+_("\nAfter pressing OK, please wait!"))
                                elif (currentEntry == "software-restore"):
                                        self.session.open(ImageWizard)
                                elif (currentEntry == "install-extensions"):
                                        for x in parts:
                                                if not access(x[1], F_OK|R_OK|W_OK) or x[1] == '/':
                                                        parts.remove(x)
-                                       for x in parts:
-                                               if x[1].startswith('/autofs/'):
-                                                       parts.remove(x)
                                        if len(parts):
                                                self.session.openWithCallback(self.backuplocation_choosen, ChoiceBox, title = _("Please select medium to use as backup location"), list = parts)
                                elif (currentEntry == "backupfiles"):
  
        def backupfiles_choosen(self, ret):
                self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value )
+               config.plugins.configurationbackup.backupdirs.save()
+               config.plugins.configurationbackup.save()
+               config.save()
+               
        def backuplocation_choosen(self, option):
+               oldpath = config.plugins.configurationbackup.backuplocation.getValue()
                if option is not None:
                        config.plugins.configurationbackup.backuplocation.value = str(option[1])
                config.plugins.configurationbackup.backuplocation.save()
                config.plugins.configurationbackup.save()
                config.save()
-               self.createBackupfolders()
+               newpath = config.plugins.configurationbackup.backuplocation.getValue()
+               if newpath != oldpath:
+                       self.createBackupfolders()
  
        def runUpgrade(self, result):
                if result:
@@@ -918,7 -921,7 +921,7 @@@ class PluginManager(Screen, DreamInfoHa
                        self.close()
  
        def runExecuteFinished(self):
 -              self.session.openWithCallback(self.ExecuteReboot, MessageBox, _("Install or remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
 +              self.session.openWithCallback(self.ExecuteReboot, MessageBox, _("Install or remove finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
  
        def ExecuteReboot(self, result):
                if result is None:
@@@ -1003,7 -1006,7 +1006,7 @@@ class PluginManagerInfo(Screen)
                                elif cmd == 2:
                                        info = args['package']
                                else:
 -                                      info = _("Dreambox software because updates are available.")
 +                                      info = _("STB software because updates are available.")
  
                                self.list.append(self.buildEntryComponent(action,info))
                        self['list'].setList(self.list)
@@@ -1284,7 -1287,7 +1287,7 @@@ class PluginDetails(Screen, DreamInfoHa
                        self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList)
  
        def runUpgradeFinished(self):
 -              self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Installation finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
 +              self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Installation finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
  
        def UpgradeReboot(self, result):
                if result is None:
                        self.session.openWithCallback(self.runRemoveFinished, Ipkg, cmdList = self.cmdList)
  
        def runRemoveFinished(self):
 -              self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
 +              self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
  
        def RemoveReboot(self, result):
                if result is None:
@@@ -1437,11 -1440,11 +1440,11 @@@ class UpdatePlugin(Screen)
                        else:
                                self.activityTimer.stop()
                                self.activityslider.setValue(0)
 -                              error = _("your dreambox might be unusable now. Please consult the manual for further assistance before rebooting your dreambox.")
 +                              error = _("your STB might be unusable now. Please consult the manual for further assistance before rebooting your STB.")
                                if self.packages == 0:
                                        error = _("No packages were upgraded yet. So you can check your network and try again.")
                                if self.updating:
 -                                      error = _("Your dreambox isn't connected to the internet properly. Please check it and try again.")
 +                                      error = _("Your STB isn't connected to the internet properly. Please check it and try again.")
                                self.status.setText(_("Error") +  " - " + error)
                #print event, "-", param
                pass
        def exit(self):
                if not self.ipkg.isRunning():
                        if self.packages != 0 and self.error == 0:
 -                              self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"))
 +                              self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your STB?"))
                        else:
                                self.close()
                else:
@@@ -1811,7 -1814,7 +1814,7 @@@ class PacketManager(Screen, NumericalTe
                        self.session.openWithCallback(self.runRemoveFinished, Ipkg, cmdList = self.cmdList)
  
        def runRemoveFinished(self):
 -              self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
 +              self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
  
        def RemoveReboot(self, result):
                if result is None:
                        self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList)
  
        def runUpgradeFinished(self):
 -              self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
 +              self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
                
        def UpgradeReboot(self, result):
                if result is None:
@@@ -46,7 -46,7 +46,7 @@@ class AudioSelection(Screen, ConfigList
                        "cancel": self.cancel,
                        "up": self.keyUp,
                        "down": self.keyDown,
-               }, -3)
+               }, -2)
  
                self.settings = ConfigSubsection()
                choicelist = [(PAGE_AUDIO,_("audio tracks")), (PAGE_SUBTITLES,_("Subtitles"))]
                streams = []
                conflist = []
                selectedidx = 0
-               
-               service = self.session.nav.getCurrentService()
-               self.audioTracks = audio = service and service.audioTracks()
-               n = audio and audio.getNumberOfTracks() or 0
-               
                if self.settings.menupage.getValue() == PAGE_AUDIO:
                        self.setTitle(_("Select audio track"))
+                       service = self.session.nav.getCurrentService()
+                       self.audioTracks = audio = service and service.audioTracks()
+                       n = audio and audio.getNumberOfTracks() or 0
                        if SystemInfo["CanDownmixAC3"]:
                                self.settings.downmix = ConfigOnOff(default=config.av.downmix_ac3.value)
                                self.settings.downmix.addNotifier(self.changeAC3Downmix, initial_call = False)
 -                              conflist.append(getConfigListEntry(_("AC3 downmix"), self.settings.downmix))
 +                              conflist.append(getConfigListEntry(_("Dolby Digital downmix"), self.settings.downmix))
                                self["key_red"].setBoolean(True)
  
                        if n > 0:
                                                number = "%x%02x" % (x[3],x[2])
  
                                        elif x[0] == 2:
-                                               types = ("UTF-8 text","SSA / AAS",".SRT file")
+                                               types = (_("<unknown>"), "UTF-8 text", "SSA", "AAS", ".SRT file", "VOB", "PGS (unsupported)")
                                                description = types[x[2]]
  
                                        streams.append((x, "", number, description, language, selected))
                                conflist.append(getConfigListEntry(Plugins[0][0], ConfigNothing()))
                                self.plugincallfunc = Plugins[0][1]
                        if len(Plugins) > 1:
-                               print "these plugins are installed but not displayed in the dialog box:", Plugins[1:]
+                               print "plugin(s) installed but not displayed in the dialog box:", Plugins[1:]
  
                self["config"].list = conflist
                self["config"].l.setList(conflist)
@@@ -905,7 -905,7 +905,7 @@@ RESULT eServiceFactoryDVB::lookupServic
                /* we are sure to have a ..DVB reference as the info() call was forwarded here according to it's ID. */
                if ((err = db->getService((eServiceReferenceDVB&)ref, service)) != 0)
                {
                      eDebug("getService failed!");
//                    eDebug("getService failed!");
                        return err;
                }
        }
@@@ -1794,7 -1794,7 +1794,7 @@@ RESULT eDVBServicePlay::getTrackInfo(st
        if (program.audioStreams[i].type == eDVBServicePMTHandler::audioStream::atMPEG)
                info.m_description = "MPEG";
        else if (program.audioStreams[i].type == eDVBServicePMTHandler::audioStream::atAC3)
 -              info.m_description = "AC3";
 +              info.m_description = "Dolby Digital";
        else if (program.audioStreams[i].type == eDVBServicePMTHandler::audioStream::atAAC)
                info.m_description = "AAC";
        else if (program.audioStreams[i].type == eDVBServicePMTHandler::audioStream::atAACHE)