From 6a49e2d869d4e04b7fac56465182fac65b38dfb5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20H=C3=B6rist?= <forenjunkie@chello.at>
Date: Sun, 25 Jun 2017 20:42:15 +0200
Subject: [PATCH] Fix plugin installation from zip

---
 src/plugins/gui.py           | 4 ++--
 src/plugins/pluginmanager.py | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/plugins/gui.py b/src/plugins/gui.py
index b318707811..15aee42955 100644
--- a/src/plugins/gui.py
+++ b/src/plugins/gui.py
@@ -281,7 +281,7 @@ class PluginsWindow(object):
 
                 for i, row in enumerate(model):
                     if plugin == row[Column.PLUGIN]:
-                        model.remove(model.get_iter((i, Column.PLUGIN)))
+                        model.remove(row.iter)
                         break
 
                 iter_ = model.append([plugin, plugin.name, False,
@@ -308,7 +308,7 @@ class PluginsWindow(object):
                 return
             model = self.installed_plugins_model
             iter_ = model.append([plugin, plugin.name, False,
-                plugin.activatable], self.get_plugin_icon(plugin))
+                plugin.activatable, self.get_plugin_icon(plugin)])
             sel = self.installed_plugins_treeview.get_selection()
             sel.select_iter(iter_)
 
diff --git a/src/plugins/pluginmanager.py b/src/plugins/pluginmanager.py
index dc7e867eb6..13c64b4992 100644
--- a/src/plugins/pluginmanager.py
+++ b/src/plugins/pluginmanager.py
@@ -573,7 +573,7 @@ class PluginManager(metaclass=Singleton):
 
     def install_from_zip(self, zip_filename, owerwrite=None):
         '''
-        Install plagin from zip and return plugin
+        Install plugin from zip and return plugin
         '''
         try:
             zip_file = zipfile.ZipFile(zip_filename)
@@ -595,7 +595,7 @@ class PluginManager(metaclass=Singleton):
                 # members not safe
                 raise PluginsystemError(_('Archive is malformed'))
             if filename.endswith('/') and filename.find('/', 0, -1) < 0:
-                dirs.append(filename)
+                dirs.append(filename.strip('/'))
             if 'manifest.ini' in filename.split('/')[1]:
                 manifest = True
         if not manifest:
@@ -614,8 +614,8 @@ class PluginManager(metaclass=Singleton):
 
         zip_file.extractall(user_dir)
         zip_file.close()
-        path = os.path.join(user_dir, dirs[0])
-        plugins = self.scan_dir_for_plugins(plugin_dir, False)
+
+        plugins = self.scan_dir_for_plugins(plugin_dir, package=True)
         if not plugins:
             return
         self.add_plugin(plugins[0])
-- 
GitLab