--- /dev/null
+# -*- coding: utf-8 -*-\r
+# for localized messages\r
+from __init__ import _\r
+from Screens.Screen import Screen\r
+from Screens.MessageBox import MessageBox\r
+from Screens.VirtualKeyBoard import VirtualKeyBoard\r
+from enigma import loadPNG, eListboxPythonMultiContent, gFont, eTimer\r
+from Components.Label import Label\r
+from Components.Pixmap import Pixmap\r
+from Components.ActionMap import ActionMap\r
+from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest\r
+from Components.Network import iNetwork\r
+from Components.Sources.List import List\r
+from Tools.LoadPixmap import LoadPixmap\r
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE\r
+from os import system, popen, path as os_path, listdir\r
+\r
+from MountView import AutoMountView\r
+from MountEdit import AutoMountEdit\r
+from AutoMount import iAutoMount, AutoMount\r
+from UserManager import UserManager\r
+\r
+\r
+class AutoMountManager(Screen):\r
+ skin = """\r
+ <screen name="AutoMountManager" position="90,140" size="560,350" title="AutoMountManager">\r
+ <widget source="config" render="Listbox" position="10,10" size="540,220" scrollbarMode="showOnDemand" >\r
+ <convert type="TemplatedMultiContent">\r
+ {"template": [\r
+ MultiContentEntryText(pos = (0, 3), size = (480, 25), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 2 is the Menu Titel\r
+ MultiContentEntryText(pos = (10, 29), size = (480, 17), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 3 is the Description\r
+ MultiContentEntryPixmapAlphaTest(pos = (500, 1), size = (48, 48), png = 3), # index 4 is the pixmap\r
+ ],\r
+ "fonts": [gFont("Regular", 20),gFont("Regular", 14)],\r
+ "itemHeight": 50\r
+ }\r
+ </convert>\r
+ </widget>\r
+ <widget name="introduction" position="90,260" size="300,20" zPosition="10" font="Regular;21" halign="center" transparent="1" />\r
+ <widget name="ButtonRedtext" position="410,305" size="140,21" zPosition="10" font="Regular;21" transparent="1" />\r
+ <widget name="ButtonRed" pixmap="skin_default/buttons/button_red.png" position="390,305" zPosition="10" size="15,16" transparent="1" alphatest="on" />\r
+ <ePixmap pixmap="skin_default/bottombar.png" position="10,250" size="540,120" zPosition="1" transparent="1" alphatest="on" />\r
+ </screen>"""\r
+ def __init__(self, session, iface ,plugin_path):\r
+ self.skin_path = plugin_path\r
+ self.session = session\r
+ self.hostname = None\r
+ self.restartLanRef = None\r
+ Screen.__init__(self, session)\r
+ self["shortcuts"] = ActionMap(["ShortcutActions", "WizardActions"],\r
+ {\r
+ "ok": self.keyOK,\r
+ "back": self.exit,\r
+ "cancel": self.exit,\r
+ "red": self.exit,\r
+ })\r
+ self["ButtonRed"] = Pixmap()\r
+ self["ButtonRedtext"] = Label(_("Close"))\r
+ self["introduction"] = Label(_("Press OK to select."))\r
+ \r
+ self.list = []\r
+ self["config"] = List(self.list)\r
+ self.updateList()\r
+ self.onClose.append(self.cleanup) \r
+ self.onShown.append(self.setWindowTitle)\r
+\r
+ def setWindowTitle(self):\r
+ self.setTitle(_("MountManager"))\r
+ \r
+ def cleanup(self):\r
+ iNetwork.stopRestartConsole()\r
+ iNetwork.stopGetInterfacesConsole()\r
+\r
+ def updateList(self):\r
+ self.list = []\r
+ okpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkBrowser/icons/ok.png"))\r
+ self.list.append((_("Add new network mount point"),"add", _("Add a new NFS or CIFS mount point to your Dreambox."), okpng ))\r
+ self.list.append((_("Mountpoints management"),"view", _("View, edit or delete mountpoints on your Dreambox."), okpng ))\r
+ self.list.append((_("User management"),"user", _("View, edit or delete usernames and passwords for your network."), okpng))\r
+ self.list.append((_("Change hostname"),"hostname", _("Change the hostname of your Dreambox."), okpng))\r
+ self["config"].setList(self.list)\r
+\r
+\r
+ def exit(self):\r
+ self.close()\r
+ \r
+ def keyOK(self, returnValue = None):\r
+ if returnValue == None:\r
+ returnValue = self["config"].getCurrent()[1]\r
+ if returnValue is "add":\r
+ self.addMount()\r
+ elif returnValue is "view":\r
+ self.viewMounts()\r
+ elif returnValue is "user":\r
+ self.userEdit()\r
+ elif returnValue is "hostname":\r
+ self.hostEdit()\r
+ def addMount(self):\r
+ self.session.open(AutoMountEdit, self.skin_path)\r
+\r
+ def viewMounts(self):\r
+ self.session.open(AutoMountView, self.skin_path)\r
+ \r
+ def userEdit(self):\r
+ self.session.open(UserManager, self.skin_path)\r
+\r
+ def hostEdit(self):\r
+ if os_path.exists("/etc/hostname"):\r
+ fp = open('/etc/hostname', 'r')\r
+ self.hostname = fp.read()\r
+ fp.close()\r
+ self.session.openWithCallback(self.hostnameCallback, VirtualKeyBoard, title = (_("Enter new hostname for your Dreambox")), text = self.hostname)\r
+ \r
+ def hostnameCallback(self, callback = None):\r
+ if callback is not None and len(callback):\r
+ fp = open('/etc/hostname', 'w+')\r
+ fp.write(callback)\r
+ fp.close()\r
+ self.restartLan()\r
+\r
+ def restartLan(self):\r
+ iNetwork.restartNetwork(self.restartLanDataAvail)\r
+ self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while your network is restarting..."), type = MessageBox.TYPE_INFO, enable_input = False)\r
+ \r
+ def restartLanDataAvail(self, data):\r
+ if data is True:\r
+ iNetwork.getInterfaces(self.getInterfacesDataAvail)\r
+\r
+ def getInterfacesDataAvail(self, data):\r
+ if data is True:\r
+ if self.restartLanRef.execing:\r
+ self.restartLanRef.close(True)\r
+\r
+ def restartfinishedCB(self,data):\r
+ if data is True:\r
+ self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)\r
+\r