mac9416 has proposed merging lp:~mac9416/keryx/unstable into lp:keryx/unstable.

    Requested reviews:
    Keryx Admins (keryx-admins)


apt-get is now called properly - package installation is looking good
Improved installation dialogs - made some translatable

-- 
https://code.launchpad.net/~mac9416/keryx/unstable/+merge/17081
Your team Keryx Development Team is subscribed to branch lp:keryx/unstable.
=== modified file 'lib/wxkeryx/main.py'
--- lib/wxkeryx/main.py	2010-01-06 03:53:01 +0000
+++ lib/wxkeryx/main.py	2010-01-09 21:39:14 +0000
@@ -223,9 +223,9 @@
     def Closing(self, event): # Cleanup cleanup, everybody do your share
         #self.thread.StopThreads()
         #self.thread.Destroy()
-        log.info(_('Cleaning up plugins'))
+        log.info(_("Cleaning up plugins"))
         for name, instance, type, version in plugins.InterfacePluginList: instance.cleanup()
-        log.info(_('Shutting down'))
+        log.info(_("Shutting down"))
         self.Destroy()
 
     def OnClose(self, event):
@@ -347,29 +347,17 @@
         #list of failed files now stored in frame[1] as returned by download.py
 
     def OnInstall(self, event):
-
-#        dlg = wx.MessageDialog(None, _("This procedure will first make the downloaded packages available to the OS in a format suitable for installation, then will call the OS to install them.  " + \
-#                          "These steps both require 'root' access to the machine, so keryx will write the commands to a script and then run it as 'root'.  " + \
-#                          "Would you like to continue? (got root?)"),
-#                          _("Intro of Install"), wx.YES_NO | wx.ICON_QUESTION)
         dlg = InstallProjectDialog(None, -1, _("Install Project"))
         result = dlg.ShowModal()
-        if dlg.sys_cache_radio.GetValue():
-            sys_cache = True
-            local_repo = False
-            move = dlg.move_checkbox.GetValue()
-        elif dlg.local_repo_radio.GetValue():
-            local_repo = True
-            sys_cache = False
+        move = dlg.move_checkbox.GetValue()
         dlg.Destroy()
 
+        # Actually, I was just kidding about wanting to install.
         if result == wx.ID_CANCEL:
             return
 
-        if sys_cache:
-            install = project.projects[len(project.projects) - 1].plugin.installCache(project.projects[len(project.projects) -1].dir, 'installcache', move=move)
-        elif local_repo:
-            wx.MessageBox(_("This feature is not implemented yet. Sorry."),_("Not Implemented"))
+        # Start the installation
+        install = project.projects[len(project.projects) - 1].plugin.installCache(project.projects[len(project.projects) -1].dir, 'installcache', move=move)
 
         if install:  # If installCache was successful...
             dlg = wx.MessageDialog(None, _("The packages were successfully " \
@@ -380,17 +368,19 @@
             result = dlg.ShowModal()
             dlg.Destroy()
         else:
-            wx.MessageBox(_("Oh no! A error occurred when doing the transfer." \
-                        " Check the log for more details. Make sure no other " \
-                        "package manager is running when you try to transfer " \
-                        "the files.\n\nYou may attempt to transfer the files " \
-                        "by hand (experienced users only)."), _("Install Error"),
-                        wx.ICON_ERROR)
-            return
-        if result == wx.ID_NO:  # Don't want to install packages now...
-            return
-
-        # Install the packages
+            wx.MessageBox(_("An error occurred when doing the transfer. Make " \
+                            "sure no other package manager is running when " \
+                            "you try to transfer the files. Check the log " \
+                            "for more details.\n\nYou may attempt to " \
+                            "transfer the files by hand (experienced users " \
+                            "only)."), _("Install Error"), wx.ICON_ERROR)
+            return
+
+        # Don't want to install packages now.
+        if result == wx.ID_NO:  
+            return
+
+        # Get the necessary information for package installation
         projdir = project.projects[len(project.projects) -1].dir
         spacksdir = os.path.join(projdir, 'packages')
         spacks = [x for x in os.listdir(spacksdir) if os.path.isfile(os.path.join(spacksdir, x)) and (os.path.splitext(x)[1] == '.deb')]
@@ -403,58 +393,22 @@
         packnames = dlg.GetSelected()
         dlg.Destroy()
 
-        if result == wx.ID_CANCEL:  # Never mind about installing packages now...
+        # Never mind about installing packages now...
+        if result == wx.ID_CANCEL:
             return
 
         result = project.projects[len(project.projects) - 1].plugin.installPacks(' '.join(packnames))
         if result:
-            wx.MessageBox(_("All packages successfully installed."), _("Install Succeessful"))
+            wx.MessageBox(_("All packages successfully installed."), 
+                            _("Install Succeessful"))
         else:
-            wx.MessageBox(_("Oh no! A error occurred while installing your packages. Check the log for more details. Make sure no other package manager is running when you try to Install the packages.\n" + \
-            "Another option is installing the packages by hand (Knowledged users only)."), _("Install Error"))
-
-#        if result == wx.ID_YES:
-#            dlg = wx.MessageDialog(None, _("There are two methods for making the packages available. First, mimicing a Repository and informing the OS of it and letting it use the repo to retrieve its updates, " + \
-#                          "or moving the packages directly into the OS'es cache so that the OS thinks its already downloaded them and only needs to install them. This way is easier.  " + \
-#                          "Would you like to use the cache method? Selecting 'No' will use the Repo method."), \
-#                          _("Choose Install method"), wx.YES_NO | wx.ICON_QUESTION)
-#            result = dlg.ShowModal()
-#            dlg.Destroy()
-#            install = True
-#            if result == wx.ID_YES:  # Cache method
-#                dlg = wx.MessageDialog(None, _("You can either move your packages you have downloaded to the cache, or just copy them.\n" + \
-#                               "Moving them will free up space in your project again. Move?\nPlease ensure no package manager is running before continuing! The script will be run next."), \
-#                               _("Move Packages?"), wx.YES_NO | wx.ICON_QUESTION)
-#                result = dlg.ShowModal()
-#                dlg.Destroy()
-#                if result == wx.ID_YES:
-#                    move = True
-#                else:
-#                    move = False
-#                install = project.projects[len(project.projects) - 1].plugin.installCache(project.projects[len(project.projects) -1].dir, 'installcache', move=move)
-#
-#                # Let's install them packages!
-#                if install:  # The cache needs to have been successfully filled.
-#                    projdir = project.projects[len(project.projects) -1].dir
-#                    spacksdir = os.path.join(projdir, 'packages')
-#                    spacks = [x for x in os.listdir(spacksdir) if os.path.isfile(os.path.join(spacksdir, x)) and (os.path.splitext(x)[1] == '.deb')]
-#                    packnames = ' '.join([x[:x.find('_')] for x in spacks])
-#                    #TODO: prompt the user for which of these to install
-#                    if not project.projects[len(project.projects) - 1].plugin.installPacks(packnames):
-#                         wx.MessageBox(_("Oh no! A error occurred while installing your packages. Check the log for more details. Make sure no other package manager is running when you try to Install the packages.\n" + \
-#                         "Another option is installing the packages by hand (Knowledged users only)."), _("Install Error"))
-#                    else:
-#                        log.info(_("Package installation succeeded"))
-
-#            elif result == wx.ID_NO:  # Repo method
-#                wx.MessageBox(_("This feature is not implemented yet. Sorry."),_("Not Implemented"))
-#                #install = project.projects[len(project.projects) - 1].installRepo()
-#            if not install:
-#                wx.MessageBox(_("Oh no! A error occurred when doing the transfer. Check the log for more details. Make sure no other package manager is running when you try to transfer the files.\n" + \
-#                         "Another option is transferring the files by hand (Knowledged users only)."), _("Install Error"))
-#            else:
-#                wx.MessageBox(_("Install finished."), _("Finished"))
-
+            wx.MessageBox(_("An error occurred while installing your " \
+                            "packages. Make sure no other package manager is " \
+                            "running when you try to Install the packages. " \
+                            "Check the log for more details.\n\nAnother " \
+                            "option is installing the packages by hand using " \
+                            "apt-get."), 
+                            _("Install Error"))
 
     def OnUpdates(self, event):
         updates = []
@@ -610,30 +564,28 @@
 
 class InstallProjectDialog(wx.Dialog):
     def __init__(self, parent, id, title):
-        wx.Dialog.__init__(self, parent, id, title, size=(480, 190))
+        wx.Dialog.__init__(self, parent, id, title, size=(480, 160))
 
         panel = wx.Panel(self, -1)
         vbox = wx.BoxSizer(wx.VERTICAL)
 
-        wx.StaticBox(panel, -1, _("Installation method"), (5, 5), (470, 115))
-
-        self.sys_cache_radio = wx.RadioButton(panel, -1, _("Move packages to system cache"), (15, 30), style=wx.RB_GROUP)
-        self.Bind(wx.EVT_RADIOBUTTON, self.OnSysCache, self.sys_cache_radio)
-        self.local_repo_radio = wx.RadioButton(panel, -1, _("Create local repository"), (15, 55))
-        self.Bind(wx.EVT_RADIOBUTTON, self.OnLocalRepo, self.local_repo_radio)
-
-
-        self.browse_btn = filebrowse.DirBrowseButton(self, -1, pos=(35, 80), size=(430, 30))
-        self.browse_btn.Disable()
-        self.Bind(wx.EVT_BUTTON, self.OnBrowse, self.browse_btn)
-
-        self.move_checkbox = wx.CheckBox(panel, -1, _("Delete packages from project folder after installation"), (5, 125))
+        text = wx.StaticText(panel, -1, _("All downloaded package files will " \
+                        "be copied to the APT cache so that APT will believe " \
+                        "they have been downloaded. In the next step, " \
+                        "apt-get will be called to install the packages."), 
+                        (15, 10), (470, 80))
+
+        #All downloaded package files will be copied to the APT cache ao that APT will believe they have been downloaded. In the next step, apt-get will be called to install the packages.
+
+        self.move_checkbox = wx.CheckBox(panel, -1, 
+                    _("Delete packages from project folder after installation"),
+                    (5, 95))
 
         btnSizer = wx.StdDialogButtonSizer()
-        btn = wx.Button(self, wx.ID_CANCEL, 'Cancel')
+        btn = wx.Button(self, wx.ID_CANCEL, _("Cancel"))
         btnSizer.SetCancelButton(btn)
         btnSizer.AddButton(btn)
-        btn = wx.Button(self, wx.ID_OK, 'Continue')
+        btn = wx.Button(self, wx.ID_OK, _("Continue"))
         btnSizer.SetAffirmativeButton(btn)
         btnSizer.AddButton(btn)
         btnSizer.Realize()
@@ -643,15 +595,6 @@
 
         self.SetSizer(vbox)
 
-    def OnBrowse(self, evt):
-        log.info(_('Browsing: Not implemted.'))
-
-    def OnLocalRepo(self, evt):
-        self.browse_btn.Enable()
-
-    def OnSysCache(self, evt):
-        self.browse_btn.Disable()
-
 class SelectPackagesDialog(wx.Dialog):
     """Dialog for selection of packages to be installed"""
     def __init__(self, parent, id, title, items):
@@ -660,10 +603,10 @@
         vbox = wx.BoxSizer(wx.VERTICAL)
 
         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
-        btn = wx.Button(self, wx.ID_ANY, 'Select All')
+        btn = wx.Button(self, wx.ID_ANY, _("Select All"))
         self.Bind(wx.EVT_BUTTON, self.OnSelectAll, btn)
         btnSizer.Add(btn)
-        btn = wx.Button(self, wx.ID_ANY, 'Select None')
+        btn = wx.Button(self, wx.ID_ANY, _("Select None"))
         self.Bind(wx.EVT_BUTTON, self.OnSelectNone, btn)
         btnSizer.Add(btn)
 
@@ -718,7 +661,7 @@
         sizer.Add(self.list, 1, wx.EXPAND)
         self.SetSizer(sizer)
 
-        self.list.InsertColumn(0, "Package")
+        self.list.InsertColumn(0, _("Package"))
 
         for key, data in items.iteritems():
             index = self.list.InsertStringItem(sys.maxint, data)

=== modified file 'plugins/Debian.py'
--- plugins/Debian.py	2010-01-06 03:53:01 +0000
+++ plugins/Debian.py	2010-01-09 21:39:14 +0000
@@ -48,7 +48,7 @@
             outfile.close()
             return True
         except:
-            log.error('Problem writing to project settings file')
+            log.error(_('Problem writing to project settings file'))
         return False
 
     def loadProject(self, directory):
@@ -146,7 +146,14 @@
         return os.path.join(os.path.join(dir, 'sources'), 'sources.list')
 
     def installCache(self, projdir, scriptname, move=False):
-        """ Transfers all downloaded packages to the OS cache. Uses sh script called as 'root'"""
+        """ Transfers all downloaded packages to the OS cache. 
+        Uses sh script called as 'root'
+        """
+        # Make sure there are packages to install
+        if not os.path.exists(os.path.join(projdir, 'packages')):
+            log.error(_("%s does not exist: no packages to be installed") % \
+                        (os.path.join(projdir, 'packages')))
+            return False
         scriptpath = os.path.join(projdir, scriptname+'.sh')
         #slistsdir = os.path.join(projdir, 'lists')
         spacksdir = os.path.join(projdir, 'packages')
@@ -272,9 +279,11 @@
         return True
 
     def installPacks(self, packnames):
-        run = self.__runRoot('apt-get', 'install -y %s <\\`tty\\`' % (packnames), term='xterm -hold -e')
+        run = self.__runRoot('xterm', 
+                    '-e sh -c \"apt-get install -y %s; echo \\\"Press any key to exit.\\\"; read x\"' % \
+                    (packnames))
         if run[0] != 0:
-            log.error('exit code:%i\n%s' % (run[0], run[1]))
+            log.error(_('exit code:%i\n%s' % (run[0], run[1])))
             log.info(_('installCache: failed'))
             return False
         log.info(_('installCache: success'))
@@ -462,7 +471,7 @@
         status.close()
         return installed
 
-    def __runRoot(self, program, args, term=None):
+    def __runRoot(self, program, args):
         root = ''
         for a in ('gksu', 'gksudo', 'kdesu', 'kdesudo'):
             if commands.getstatusoutput('which '+a)[0] == 0:
@@ -477,10 +486,9 @@
             description = ''
         if root == '': return (64, 'Could not find superuser access')
         try:
-            if term:
-                exit = commands.getstatusoutput('%s "%s %s %s %s"' % (term, root, description, program, args))
-            else:
-                exit = commands.getstatusoutput('%s %s "%s %s"' % (root, description, program, args))
+            print '%s %s -- %s %s' % (root, description, program, args)
+            exit = commands.getstatusoutput('%s %s -- %s %s' % \
+                                            (root, description, program, args))
         except:
             exit = (64, 'Error spawning shell command')
         return exit

_______________________________________________
Mailing list: https://launchpad.net/~keryx
Post to     : keryx@lists.launchpad.net
Unsubscribe : https://launchpad.net/~keryx
More help   : https://help.launchpad.net/ListHelp

Reply via email to