1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
# -*- coding: utf-8 -*-
#
# File: portato/gui/gtk/wrapper.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 2006-2008 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>
from __future__ import absolute_import
import vte
from gettext import lgettext as _
from ..wrapper import Tree, Console
from ...helper import debug
class GtkTree (Tree):
"""The implementation of the abstract tree."""
def __init__ (self, tree, col = 0):
"""Constructor.
@param tree: original tree
@type tree: gtk.TreeStore
@param col: the column where the cpv is stored
@type col: int"""
self.tree = tree
self.cpv_col = col
self.emergeIt = None
self.unmergeIt = None
self.updateIt = None
def build_append_value (self, cpv, oneshot = False, update = False, downgrade = False, version = None, useChange = []):
string = ""
if oneshot:
string += "<i>%s</i>" % _("oneshot")
if update:
if oneshot: string += "; "
if version is not None:
string += "<i>%s</i>" % (_("updating from version %s") % version)
else:
string += "<i>%s</i>" % _("updating")
elif downgrade:
if oneshot: string += "; "
if version is not None:
string += "<i>%s</i>" % (_("downgrading from version %s") % version)
else:
string += "<i>%s</i>" % _("downgrading")
if useChange:
if update or downgrade or oneshot: string += "; "
string += "<i><b>%s </b></i>" % _("IUSE changes:")
useChange.sort()
string += "<i>%s</i>" % " ".join(useChange)
return [cpv, string, False]
def set_in_progress (self, it, to = True):
iter = self.first_iter(it)
if to:
self.tree.set_value(iter, 1, "<b>%s</b>" % _("(In Progress)"))
else:
self.tree.set_value(iter, 1, "")
self.tree.set_value(iter, 2, to)
def is_in_progress (self, it):
return self.tree.get_value(it, 2)
def get_emerge_it (self):
if self.emergeIt is None:
self.emergeIt = self.append(None, ["<b>%s</b>" % _("Install"), "", False])
return self.emergeIt
def get_unmerge_it (self):
if self.unmergeIt is None:
self.unmergeIt = self.append(None, ["<b>%s</b>" % _("Uninstall"), "", False])
return self.unmergeIt
def get_update_it (self):
if self.updateIt is None:
self.updateIt = self.append(None, ["<b>%s</b>" % _("Update"), "", False])
return self.updateIt
def first_iter (self, it):
return self.tree.get_iter_from_string(self.tree.get_string_from_iter(it).split(":")[0])
def is_in (self, it, in_it):
return in_it and self.iter_equal(self.first_iter(it), in_it)
def is_in_emerge (self, it):
return self.is_in(it, self.emergeIt)
def is_in_unmerge (self, it):
return self.is_in(it, self.unmergeIt)
def is_in_update (self, it):
return self.is_in(it, self.updateIt)
def iter_has_parent (self, it):
return (self.tree.iter_parent(it) != None)
def parent_iter (self, it):
return self.tree.iter_parent(it)
def first_child_iter (self, it):
return self.tree.iter_children(it)
def iter_has_children (self, it):
return self.tree.iter_has_child(it)
def next_iter (self, it):
return self.tree.iter_next(it)
def get_value (self, it, column):
return self.tree.get_value(it, column)
def iter_equal (self, it, other_it):
return self.tree.get_string_from_iter(it) == self.tree.get_string_from_iter(other_it)
def append (self, parent = None, values = None):
return self.tree.append(parent, values)
def remove (self, it):
if self.emergeIt and self.iter_equal(it, self.emergeIt) : self.emergeIt = None
elif self.unmergeIt and self.iter_equal(it, self.unmergeIt) : self.unmergeIt = None
elif self.updateIt and self.iter_equal(it, self.updateIt) : self.updateIt = None
self.tree.remove(it)
def get_original (self):
return self.tree
def get_cpv_column (self):
return self.cpv_col
class GtkConsole (vte.Terminal, Console):
"""The implementation of the abstract Console for GTK."""
def reset (self):
vte.Terminal.reset(self, True, True)
|