/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to mandos-monitor

  • Committer: Teddy Hogeborn
  • Date: 2024-11-24 14:41:36 UTC
  • mfrom: (237.7.863 trunk)
  • Revision ID: teddy@recompile.se-20241124144136-0fej6fm6woitsooj
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#
24
24
# Contact the authors at <mandos@recompile.se>.
25
25
#
26
 
 
27
26
from __future__ import (division, absolute_import, print_function,
28
27
                        unicode_literals)
 
28
 
29
29
try:
30
30
    from future_builtins import *
31
31
except ImportError:
32
32
    pass
33
33
 
34
34
import sys
 
35
import logging
35
36
import os
36
37
import warnings
37
38
import datetime
38
39
import locale
39
 
import logging
40
40
 
41
41
import urwid.curses_display
42
42
import urwid
47
47
import dbus
48
48
 
49
49
if sys.version_info.major == 2:
 
50
    __metaclass__ = type
50
51
    str = unicode
 
52
    input = raw_input
 
53
 
 
54
# Show warnings by default
 
55
if not sys.warnoptions:
 
56
    warnings.simplefilter("default")
51
57
 
52
58
log = logging.getLogger(os.path.basename(sys.argv[0]))
53
59
logging.basicConfig(level="NOTSET", # Show all messages
58
64
locale.setlocale(locale.LC_ALL, "")
59
65
 
60
66
logging.getLogger("dbus.proxies").setLevel(logging.CRITICAL)
 
67
logging.getLogger("urwid").setLevel(logging.INFO)
61
68
 
62
69
# Some useful constants
63
70
domain = "se.recompile"
64
71
server_interface = domain + ".Mandos"
65
72
client_interface = domain + ".Mandos.Client"
66
 
version = "1.8.9"
 
73
version = "1.8.17"
67
74
 
68
75
try:
69
76
    dbus.OBJECT_MANAGER_IFACE
88
95
                             int(fraction*1000000))  # Microseconds
89
96
 
90
97
 
91
 
class MandosClientPropertyCache(object):
 
98
class MandosClientPropertyCache:
92
99
    """This wraps a Mandos Client D-Bus proxy object, caches the
93
100
    properties and calls a hook function when any of them are
94
101
    changed.
121
128
        self.property_changed_match.remove()
122
129
 
123
130
 
124
 
class MandosClientWidget(urwid.FlowWidget, MandosClientPropertyCache):
 
131
class MandosClientWidget(MandosClientPropertyCache, urwid.Widget):
125
132
    """A Mandos Client which is visible on the screen.
126
133
    """
127
134
 
 
135
    _sizing = frozenset(["flow"])
 
136
 
128
137
    def __init__(self, server_proxy_object=None, update_hook=None,
129
138
                 delete_hook=None, **kwargs):
130
139
        # Called on update
219
228
 
220
229
    def selectable(self):
221
230
        """Make this a "selectable" widget.
222
 
        This overrides the method from urwid.FlowWidget."""
 
231
        This overrides the method from urwid.Widget."""
223
232
        return True
224
233
 
225
234
    def rows(self, maxcolrow, focus=False):
226
235
        """How many rows this widget will occupy might depend on
227
236
        whether we have focus or not.
228
 
        This overrides the method from urwid.FlowWidget"""
 
237
        This overrides the method from urwid.Widget"""
229
238
        return self.current_widget(focus).rows(maxcolrow, focus=focus)
230
239
 
231
240
    def current_widget(self, focus=False):
323
332
 
324
333
    def render(self, maxcolrow, focus=False):
325
334
        """Render differently if we have focus.
326
 
        This overrides the method from urwid.FlowWidget"""
 
335
        This overrides the method from urwid.Widget"""
327
336
        return self.current_widget(focus).render(maxcolrow,
328
337
                                                 focus=focus)
329
338
 
330
339
    def keypress(self, maxcolrow, key):
331
340
        """Handle keys.
332
 
        This overrides the method from urwid.FlowWidget"""
 
341
        This overrides the method from urwid.Widget"""
333
342
        if key == "+":
334
343
            self.proxy.Set(client_interface, "Enabled",
335
344
                           dbus.Boolean(True), ignore_reply=True,
406
415
        return ret
407
416
 
408
417
 
409
 
class UserInterface(object):
 
418
class UserInterface:
410
419
    """This is the entire user interface - the whole screen
411
420
    with boxes, lists of client widgets, etc.
412
421
    """