summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/TODO3
-rw-r--r--plugins/noroot.xml12
-rw-r--r--portato/gui/templates/ui/AboutDialog.ui3
-rw-r--r--portato/helper.py15
-rw-r--r--portato/plugin.py10
-rw-r--r--portato/plugins/etc_proposals.py10
-rw-r--r--portato/plugins/noroot.py15
7 files changed, 57 insertions, 11 deletions
diff --git a/doc/TODO b/doc/TODO
index c931da1..c388cb7 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -13,11 +13,14 @@ Backend:
- only remove already merged packages from queue
- make sure, a package being removed from the queue is not needed as a dependency by another package
+- allow emerging & co. as user by a useflag
+
GUI:
====
- Systray
+- allow sorting of packages by installation
GTK:
----
diff --git a/plugins/noroot.xml b/plugins/noroot.xml
new file mode 100644
index 0000000..7e744ef
--- /dev/null
+++ b/plugins/noroot.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<plugin
+ author="René 'Necoro' Neumann"
+ name="No Root">
+ <import>portato.plugins.noroot</import>
+
+ <hook
+ hook = "am_i_root"
+ call = "i_am_root">
+ <connect type="override" />
+ </hook>
+</plugin>
diff --git a/portato/gui/templates/ui/AboutDialog.ui b/portato/gui/templates/ui/AboutDialog.ui
index 1424270..b4064dd 100644
--- a/portato/gui/templates/ui/AboutDialog.ui
+++ b/portato/gui/templates/ui/AboutDialog.ui
@@ -85,6 +85,9 @@
<property name="showDropIndicator" stdset="0" >
<bool>false</bool>
</property>
+ <property name="alternatingRowColors" >
+ <bool>true</bool>
+ </property>
<property name="rootIsDecorated" >
<bool>false</bool>
</property>
diff --git a/portato/helper.py b/portato/helper.py
index 537d631..40aff44 100644
--- a/portato/helper.py
+++ b/portato/helper.py
@@ -79,10 +79,17 @@ def debug(*args, **kwargs):
def am_i_root ():
"""Returns True if the current user is root, False otherwise.
@rtype: boolean"""
- if os.getuid() == 0:
- return True
- else:
- return False
+
+ from plugin import hook
+
+ @hook("am_i_root")
+ def __am_i_root():
+ if os.getuid() == 0:
+ return True
+ else:
+ return False
+
+ return __am_i_root()
def flatten (listOfLists):
"""Flattens the given list of lists.
diff --git a/portato/plugin.py b/portato/plugin.py
index 4c5070e..3d67f5b 100644
--- a/portato/plugin.py
+++ b/portato/plugin.py
@@ -299,7 +299,7 @@ class PluginQueue:
except AttributeError:
debug(cmd.hook.call,"cannot be imported", error = 1)
- f(*hargs, **hkwargs) # call function
+ return f(*hargs, **hkwargs) # call function
def hook_decorator (func):
"""This is the real decorator."""
@@ -310,6 +310,8 @@ class PluginQueue:
def wrapper (*args, **kwargs):
+ ret = None
+
# before
for cmd in list[0]:
debug("Accessing hook '%s' of plugin '%s' (before)" % (hook, cmd.hook.plugin.name))
@@ -317,15 +319,17 @@ class PluginQueue:
if list[1]: # override
debug("Overriding hook '%s' with plugin '%s'" % (hook, list[1][0].hook.plugin.name))
- call(list[1][0])
+ ret = call(list[1][0])
else: # normal
- func(*args, **kwargs)
+ ret = func(*args, **kwargs)
# after
for cmd in list[2]:
debug("Accessing hook '%s' of plugin '%s' (after)" % (hook, cmd.hook.plugin.name))
call(cmd)
+ return ret
+
return wrapper
return hook_decorator
diff --git a/portato/plugins/etc_proposals.py b/portato/plugins/etc_proposals.py
index a064fff..6cf53ad 100644
--- a/portato/plugins/etc_proposals.py
+++ b/portato/plugins/etc_proposals.py
@@ -16,6 +16,8 @@ from portato.backend import system
from subprocess import Popen
from etcproposals.etcproposals_lib import EtcProposals, __version__
+PROG="/usr/sbin/etc-proposals"
+
class PortatoEtcProposals(EtcProposals):
"""Subclassed EtcProposals using portato.backend.system during __init__."""
@@ -34,15 +36,15 @@ def etc_prop (*args, **kwargs):
debug(l,"files to update")
if l > 0:
- Popen("etc-proposals")
+ Popen(PROG)
else:
- Popen(["etc-proposals", "--frontend", "gtk", "--fastexit"])
+ Popen([PROG, "--frontend", "gtk", "--fastexit"])
def etc_prop_menu (*args, **kwargs):
if am_i_root():
if float(__version__) < 1.1:
- Popen("etc-proposals")
+ Popen(PROG)
else:
- Popen(["etc-proposals", "--frontend", "gtk"])
+ Popen([PROG, "--frontend", "gtk"])
else:
debug("Cannot start etc-proposals. Not root!", error = 1)
diff --git a/portato/plugins/noroot.py b/portato/plugins/noroot.py
new file mode 100644
index 0000000..a28ef85
--- /dev/null
+++ b/portato/plugins/noroot.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+#
+# File: portato/plugins/noroot.py
+# This file is part of the Portato-Project, a graphical portage-frontend.
+#
+# Copyright (C) 2007 René 'Necoro' Neumann
+# This is free software. You may redistribute copies of it under the terms of
+# the GNU General Public License version 2.
+# There is NO WARRANTY, to the extent permitted by law.
+#
+# Written by René 'Necoro' Neumann <necoro@necoro.net>
+
+def i_am_root (*args):
+ """Pretend we are root."""
+ return True