summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNecoro <>2007-11-13 22:18:41 +0000
committerNecoro <>2007-11-13 22:18:41 +0000
commit7019c5dfa800871a431d9ee254ad09b95274bc4c (patch)
tree423073f174a9af9cb325b9060c0b09b0c28bb08e
parent69122abc3e2156e3b3a9a82f4ab5b0b68f694aad (diff)
downloadportato-7019c5dfa800871a431d9ee254ad09b95274bc4c.tar.gz
portato-7019c5dfa800871a431d9ee254ad09b95274bc4c.tar.bz2
portato-7019c5dfa800871a431d9ee254ad09b95274bc4c.zip
r546@Devoty: necoro | 2007-11-13 19:08:28 +0100
Added log tab r547@Devoty: necoro | 2007-11-13 23:10:39 +0100 added ebuild and changelog tab r548@Devoty: necoro | 2007-11-13 23:14:17 +0100 removed EbuildWindow and '--ebuild' option r549@Devoty: necoro | 2007-11-13 23:17:51 +0100 small change
-rwxr-xr-xportato.py9
-rw-r--r--portato/TEST_helper.py4
-rw-r--r--portato/gui/gtk/__init__.py29
-rw-r--r--portato/gui/gtk/windows.py177
-rw-r--r--portato/gui/templates/portato.glade891
5 files changed, 406 insertions, 704 deletions
diff --git a/portato.py b/portato.py
index 61fb8d3..b051a4a 100755
--- a/portato.py
+++ b/portato.py
@@ -49,9 +49,6 @@ def main ():
parser.add_option("-f", "--frontend", action = "store", choices = FRONTENDS, default = STD_FRONTEND, dest = "frontend",
help = _("the frontend to use - possible values are: %s [default: %%default]") % get_frontend_list())
- parser.add_option("-e", "--ebuild", action = "store", dest = "ebuild",
- help = _("opens the ebuild viewer instead of launching Portato"))
-
parser.add_option("--shm", action = "store", nargs = 3, type="long", dest = "shm",
help = SUPPRESS_HELP)
@@ -78,14 +75,12 @@ def main ():
options.frontend = arg
try:
- exec ("from portato.gui.%s import run, show_ebuild" % options.frontend)
+ exec ("from portato.gui.%s import run" % options.frontend)
except ImportError, e:
print _("'%(frontend)s' should be installed, but cannot be imported. This is definitely a bug. (%(error)s)") % {"frontend": options.frontend, "error": e[0]}
sys.exit(1)
- if options.ebuild: # show ebuild
- show_ebuild(options.ebuild)
- elif options.validate: # validate a plugin
+ if options.validate: # validate a plugin
from lxml import etree
try:
etree.XMLSchema(file = XSD_LOCATION).assertValid(etree.parse(options.validate))
diff --git a/portato/TEST_helper.py b/portato/TEST_helper.py
index ef438d8..cce0b61 100644
--- a/portato/TEST_helper.py
+++ b/portato/TEST_helper.py
@@ -1,9 +1,7 @@
#!/usr/bin/python
-from __future__ import absolute_import
-
import unittest
-from . import helper
+import helper
class HelperTest (unittest.TestCase):
diff --git a/portato/gui/gtk/__init__.py b/portato/gui/gtk/__init__.py
index 14424b9..9a5338b 100644
--- a/portato/gui/gtk/__init__.py
+++ b/portato/gui/gtk/__init__.py
@@ -3,7 +3,7 @@
# File: portato/gui/gtk/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
-# Copyright (C) 2006 René 'Necoro' Neumann
+# Copyright (C) 2006-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.
@@ -31,30 +31,3 @@ def run ():
pass
get_listener().close()
-
-def show_ebuild (pkg):
- import gtk
- from ... import plugin
- from ...backend import system
- from .windows import SearchWindow, EbuildWindow
-
- plugin.load_plugins("gtk")
- register_ex_handler()
-
- def _show (pkg):
- gtk.main_quit()
-
- pkg = system.new_package(pkg)
- hook = plugin.hook("open_ebuild", pkg, None)
-
- ew = hook(EbuildWindow)(None, pkg)
- ew.window.connect("destroy", lambda *x: gtk.main_quit())
- ew.window.set_title("Portato Ebuild Viewer - %s" % pkg.get_cpv())
-
- gtk.main()
-
- s = SearchWindow(None, [x.get_cpv() for x in system.sort_package_list(system.find_all_packages(pkg, True))], _show)
- s.window.set_title("Portato Ebuild Viewer - Search")
- s.window.connect("destroy", lambda *x: gtk.main_quit())
-
- gtk.main()
diff --git a/portato/gui/gtk/windows.py b/portato/gui/gtk/windows.py
index 11f245b..b630cb3 100644
--- a/portato/gui/gtk/windows.py
+++ b/portato/gui/gtk/windows.py
@@ -10,12 +10,13 @@
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>
-from __future__ import absolute_import
+from __future__ import absolute_import, with_statement
# gtk stuff
import gtk
import gobject
import gtksourceview2
+import pango
# other
import types, logging
@@ -351,66 +352,51 @@ class PreferenceWindow (AbstractDialog):
"""Just closes - w/o saving."""
self.window.destroy()
-class EbuildWindow (AbstractDialog):
- """The window showing the ebuild."""
+class HighlightView (gtksourceview2.View):
- def __init__ (self, parent, package):
- """Constructor.
+ def __init__ (self, get_file_fn, languages = []):
+ self.get_fn = get_file_fn
- @param parent: the parent window
- @type parent: gtk.Window
- @param package: the actual package
- @type package: backend.Package"""
-
- AbstractDialog.__init__(self,parent)
+ man = gtksourceview2.LanguageManager()
- # we want it to get minimized
- self.window.set_transient_for(None)
+ language = None
+ old_lang = None
+ for lang in languages:
+ if old_lang and not language:
+ warning(_("No %(old)s language file installed. Falling back to %(new)s."), {"old" : old_lang, "new" : lang})
+ language = man.get_language(lang)
+ old_lang = lang
- self.window.set_title(package.get_cpv())
-
- # set geometry (same as MainWindow)
- mHeight = 800
- if gtk.gdk.screen_height() <= 800: mHeight = 600
- self.window.set_geometry_hints (self.window, min_width = 800, min_height = mHeight, max_height = gtk.gdk.screen_height(), max_width = gtk.gdk.screen_width())
+ if not language and old_lang:
+ warning(_("No %(old)s language file installed. Disable highlighting."), {"old" : old_lang})
- self.package = package
+ buf = gtksourceview2.Buffer()
+ buf.set_language(language)
- self._build_view()
- self._show()
+ gtksourceview2.View.__init__(self, buf)
- def _build_view(self):
- """Creates the buffer and the view."""
+ self.set_editable(False)
+ self.set_cursor_visible(False)
+ self.connect("map", self.cb_mapped)
- man = gtksourceview2.LanguageManager()
- language = man.get_language("gentoo")
+ self.pkg = None
+ self.updated = False
- if language is None:
- warning(_("No gentoo language file installed. Falling back to shell."))
- language = man.get_language("sh")
-
- # set buffer and view
- self.buf = gtksourceview2.Buffer()
- self.buf.set_language(language)
- self.view = gtksourceview2.View(self.buf)
-
- def _show (self):
- """Fill the buffer with content and shows the window."""
- self.view.set_editable(False)
- self.view.set_cursor_visible(False)
-
- try: # read ebuild
- f = open(self.package.get_ebuild_path(), "r")
- lines = f.readlines()
- f.close()
- except IOError,e:
- io_ex_dialog(e)
- return
+ def update (self, pkg):
+ self.pkg = pkg
+ self.updated = True
+
+ def cb_mapped (self, *args):
+ if self.updated and self.pkg:
+ try:
+ with open(self.get_fn(self.pkg)) as f:
+ lines = f.readlines()
+ except IOError, e:
+ lines = _("Error: %s") % e.strerror
- self.buf.set_text("".join(lines))
+ self.get_buffer().set_text("".join(lines))
- self.tree.get_widget("ebuildScroll").add(self.view)
- self.window.show_all()
+ return False
class PackageTable:
"""A window with data about a specfic package."""
@@ -643,6 +629,10 @@ class PackageTable:
def cb_vers_list_changed (self, *args):
pkg = self.actual_package()
+ self.main.ebuildView.update(pkg)
+ self.main.ebuildView.get_parent().show_all()
+ self.main.changelogView.update(pkg)
+ self.main.changelogView.get_parent().show_all()
self.set_desc_label()
@@ -653,6 +643,7 @@ class PackageTable:
# set use list
self.useList.get_model().clear()
+ self.useList.columns_autosize()
self.fill_use_list()
#
@@ -743,11 +734,6 @@ class PackageTable:
self.main.notebook.set_current_page(self.main.QUEUE_PAGE)
return True
- def cb_package_ebuild_clicked(self, button):
- hook = plugin.hook("open_ebuild", package = self.actual_package(), parent = self.window)
- hook(EbuildWindow)(self.window, self.actual_package())
- return True
-
def cb_testing_toggled (self, button):
"""Callback for toggled testing-checkbox."""
status = button.get_active()
@@ -825,51 +811,50 @@ class PackageTable:
return True
-class LogWindow (AbstractDialog, logging.Handler):
+class LogView (logging.Handler):
- def __init__ (self, parent):
- AbstractDialog.__init__(self, parent)
- logging.Handler.__init__(self, logging.INFO)
+ colors = (
+ (logging.DEBUG, "debug", "blue"),
+ (logging.INFO, "info", "green"),
+ (logging.WARNING, "warning", "yellow"),
+ (-1, "error", "red")
+ )
- self.logView = self.tree.get_widget("logView")
- logging.getLogger("portatoLogger").addHandler(self)
+ def __init__ (self, view):
+ logging.Handler.__init__(self, logging.DEBUG)
- self.deleteIsOk = False
-
- def format (self, record):
+ self.view = view
+ self.buf = view.get_buffer()
+
+ # set tags
+ for lvl, name, color in self.colors:
+ self.buf.create_tag("log_%s" % name, foreground = color,weight = pango.WEIGHT_BOLD)
- if (record.levelno > logging.INFO):
- return "%s: %s" % (record.levelname, record.getMessage())
- else:
- return record.getMessage()
+ logging.getLogger("portatoLogger").addHandler(self)
def emit (self, record):
- self.logView.get_buffer().insert_at_cursor(self.format(record)+"\n")
-
- def show (self):
- self.window.show()
-
- def close (self):
- self.window.hide()
-
- def destroy (self):
- self.deleteIsOk = True
- self.window.destroy()
+ iter = self.buf.get_end_iter()
+
+ for lvl, name, color in self.colors:
+ if lvl == -1 or record.levelno <= lvl:
+ tag = "log_%s" % name
+ break
- def cb_delete (self, *args):
- if not self.deleteIsOk:
- self.close()
- return True
- else:
- return False
+ self.buf.insert_with_tags_by_name(iter, "* ", tag)
+ self.buf.insert_at_cursor(record.getMessage()+"\n")
class MainWindow (Window):
"""Application main window."""
# NOTEBOOK PAGE CONSTANTS
- PKG_PAGE = 0
- QUEUE_PAGE = 1
- CONSOLE_PAGE = 2
+ (
+ PKG_PAGE,
+ EBUILD_PAGE,
+ CHANGELOG_PAGE,
+ QUEUE_PAGE,
+ CONSOLE_PAGE,
+ LOG_PAGE
+ ) = range(6)
def __init__ (self, splash = None):
"""Build up window"""
@@ -895,7 +880,7 @@ class MainWindow (Window):
self.instPixbuf = self.window.render_icon(gtk.STOCK_YES, gtk.ICON_SIZE_MENU)
# get the logging window as soon as possible
- self.logWindow = LogWindow(self.window)
+ self.logView = LogView(self.tree.get_widget("logView"))
# config
splash(_("Loading Config"))
@@ -974,6 +959,16 @@ class MainWindow (Window):
self.notebook = self.tree.get_widget("notebook")
self.window.show_all()
+ ebuildScroll = self.tree.get_widget("ebuildScroll")
+ self.ebuildView = HighlightView(lambda p: p.get_ebuild_path(), ["gentoo", "sh"])
+ ebuildScroll.add(self.ebuildView)
+ ebuildScroll.hide_all()
+
+ changelogScroll = self.tree.get_widget("changelogScroll")
+ self.changelogView = HighlightView(lambda p: os.path.join(p.get_package_path(), "ChangeLog"), ["changelog"])
+ changelogScroll.add(self.changelogView)
+ changelogScroll.hide_all()
+
# table
self.packageTable = PackageTable(self)
self.packageTable.hide()
@@ -1390,9 +1385,6 @@ class MainWindow (Window):
PluginWindow(self.window, queue)
return True
- def cb_show_log_clicked (self, btn):
- self.logWindow.show()
-
def cb_show_updates_clicked (self, button):
def __update():
@@ -1535,7 +1527,6 @@ class MainWindow (Window):
def cb_destroy (self, widget):
"""Calls main_quit()."""
- self.logWindow.destroy()
gtk.main_quit()
def main (self):
diff --git a/portato/gui/templates/portato.glade b/portato/gui/templates/portato.glade
index d6f5537..86c97e5 100644
--- a/portato/gui/templates/portato.glade
+++ b/portato/gui/templates/portato.glade
@@ -17,7 +17,6 @@
<child>
<widget class="GtkMenuItem" id="fileMenuItem">
<property name="visible">True</property>
- <property name="submenu">fileMenu</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
<child>
@@ -79,7 +78,6 @@
<child>
<widget class="GtkMenuItem" id="emergeMenuItem">
<property name="visible">True</property>
- <property name="submenu">emergeMenu</property>
<property name="label" translatable="yes">_Emerge</property>
<property name="use_underline">True</property>
<child>
@@ -217,9 +215,7 @@
<widget class="GtkMenuItem" id="hiddenQueueMenu">
<property name="sensitive">False</property>
<property name="no_show_all">True</property>
- <property name="submenu">queuePopup</property>
- <property name="label" translatable="yes">_Queue</property>
- <property name="use_underline">True</property>
+ <property name="label" translatable="yes">Queue</property>
<child>
<widget class="GtkMenu" id="queuePopup">
<property name="visible">True</property>
@@ -238,9 +234,7 @@
<widget class="GtkMenuItem" id="hiddenConsoleMenu">
<property name="sensitive">False</property>
<property name="no_show_all">True</property>
- <property name="submenu">consolePopup</property>
- <property name="label" translatable="yes">_Console</property>
- <property name="use_underline">True</property>
+ <property name="label" translatable="yes">Console</property>
<child>
<widget class="GtkMenu" id="consolePopup">
<property name="visible">True</property>
@@ -293,8 +287,7 @@
<child>
<widget class="GtkMenuItem" id="pluginMenuItem">
<property name="no_show_all">True</property>
- <property name="submenu">pluginMenu</property>
- <property name="label" translatable="yes">_Plugins</property>
+ <property name="label" translatable="yes">Plu_gins</property>
<property name="use_underline">True</property>
<child>
<widget class="GtkMenu" id="pluginMenu">
@@ -306,7 +299,6 @@
<child>
<widget class="GtkMenuItem" id="helpMenuItem">
<property name="visible">True</property>
- <property name="submenu">helpMenu</property>
<property name="label" translatable="yes">_?</property>
<property name="use_underline">True</property>
<child>
@@ -345,15 +337,6 @@
</child>
</widget>
</child>
- <child>
- <widget class="GtkMenuItem" id="logItem">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">Show _Log</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="cb_show_log_clicked"/>
- </widget>
- </child>
</widget>
</child>
</widget>
@@ -403,6 +386,7 @@
<child>
<widget class="GtkFrame" id="listFrame">
<property name="visible">True</property>
+ <property name="label_xalign">0</property>
<property name="label_yalign">0</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
@@ -461,115 +445,61 @@
<child>
<widget class="GtkNotebook" id="notebook">
<property name="visible">True</property>
+ <property name="homogeneous">True</property>
<child>
<widget class="GtkTable" id="PackageTable">
<property name="visible">True</property>
<property name="n_rows">5</property>
<property name="n_columns">3</property>
<child>
- <widget class="GtkHBox" id="pkgLinkBox">
+ <widget class="GtkHBox" id="checkHB">
<property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">1</property>
+ <property name="homogeneous">True</property>
<child>
- <placeholder/>
+ <widget class="GtkCheckButton" id="installedCheck">
+ <property name="visible">True</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">Installed</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="button_press_event" handler="cb_button_pressed"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_EXPAND</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="notInSysLabel">
- <property name="visible">True</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Installed, but not in portage anymore&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">5</property>
<child>
- <widget class="GtkScrolledWindow" id="versionListScroll">
+ <widget class="GtkCheckButton" id="maskedCheck">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <child>
- <widget class="GtkTreeView" id="versionList">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="headers_clickable">True</property>
- <property name="show_expanders">False</property>
- <signal name="cursor_changed" handler="cb_vers_list_changed"/>
- </widget>
- </child>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">Masked</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="cb_masked_toggled"/>
</widget>
<packing>
- <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkScrolledWindow" id="useListScroll">
+ <widget class="GtkCheckButton" id="testingCheck">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <child>
- <widget class="GtkTreeView" id="useList">
- <property name="visible">True</property>
- </widget>
- </child>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">Testing</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="cb_testing_toggled"/>
</widget>
<packing>
- <property name="position">1</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="right_attach">3</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_padding">5</property>
- <property name="y_padding">5</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="descLabel">
- <property name="visible">True</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">True</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="y_padding">10</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="missingLabel">
- <property name="visible">True</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes">&lt;span foreground='red'&gt;&lt;b&gt;MISSING KEYWORD&lt;/b&gt;&lt;/span&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options">GTK_FILL</property>
@@ -686,19 +616,6 @@
<property name="position">2</property>
</packing>
</child>
- <child>
- <widget class="GtkButton" id="pkgEbuildBtn">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Show the ebuild for this package</property>
- <property name="label" translatable="yes">E_build</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="cb_package_ebuild_clicked"/>
- </widget>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
</widget>
<packing>
<property name="right_attach">3</property>
@@ -708,51 +625,90 @@
</packing>
</child>
<child>
- <widget class="GtkHBox" id="checkHB">
+ <widget class="GtkLabel" id="missingLabel">
<property name="visible">True</property>
- <property name="spacing">1</property>
- <property name="homogeneous">True</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">&lt;span foreground='red'&gt;&lt;b&gt;MISSING KEYWORD&lt;/b&gt;&lt;/span&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="descLabel">
+ <property name="visible">True</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">True</property>
+ </widget>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ <property name="y_padding">10</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">5</property>
<child>
- <widget class="GtkCheckButton" id="installedCheck">
+ <widget class="GtkScrolledWindow" id="versionListScroll">
<property name="visible">True</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes">Installed</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="button_press_event" handler="cb_button_pressed"/>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <widget class="GtkTreeView" id="versionList">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_clickable">True</property>
+ <property name="show_expanders">False</property>
+ <signal name="cursor_changed" handler="cb_vers_list_changed"/>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="fill">False</property>
+ <property name="expand">False</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="maskedCheck">
+ <widget class="GtkScrolledWindow" id="useListScroll">
<property name="visible">True</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes">Masked</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="cb_masked_toggled"/>
+ <property name="can_focus">False</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <widget class="GtkTreeView" id="useList">
+ <property name="visible">True</property>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- <child>
- <widget class="GtkCheckButton" id="testingCheck">
- <property name="visible">True</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes">Testing</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="cb_testing_toggled"/>
- </widget>
- <packing>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
+ </widget>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_padding">5</property>
+ <property name="y_padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="notInSysLabel">
+ <property name="visible">True</property>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Installed, but not in portage anymore&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
@@ -761,6 +717,22 @@
<property name="y_options">GTK_FILL</property>
</packing>
</child>
+ <child>
+ <widget class="GtkHBox" id="pkgLinkBox">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_EXPAND</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="tab_fill">False</property>
@@ -769,10 +741,67 @@
<child>
<widget class="GtkLabel" id="label">
<property name="visible">True</property>
- <property name="label" translatable="yes">Package</property>
+ <property name="label" translatable="yes">_Package</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="ebuildScroll">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATI