Automatically inject a UUID into any factory object, rather than special-casing terminals. This will be very useful for introspection via dbus

This commit is contained in:
Chris Jones 2012-10-18 11:39:28 -07:00
parent 68847a9bb9
commit 6a4e47090b
3 changed files with 18 additions and 7 deletions

View File

@ -20,7 +20,7 @@ True
"""
from borg import Borg
from util import dbg, err
from util import dbg, err, inject_uuid
# pylint: disable-msg=R0201
# pylint: disable-msg=W0613
@ -91,7 +91,9 @@ class Factory(Borg):
return(None)
dbg('Factory::make: created a %s' % product)
return(func(**kwargs))
output = func(**kwargs)
inject_uuid(output)
return(output)
def make_window(self, **kwargs):
"""Make a Window"""

View File

@ -14,7 +14,6 @@ import gobject
import pango
import subprocess
import urllib
import uuid
from util import dbg, err, gerr
import util
@ -89,7 +88,6 @@ class Terminal(gtk.VBox):
command = None
clipboard = None
pid = None
uuid = None
matches = None
config = None
@ -133,9 +131,6 @@ class Terminal(gtk.VBox):
self.pending_on_vte_size_allocate = False
self.uuid = uuid.uuid4()
dbg('assigning Terminal a TERMINATOR_UUID of: %s' % self.uuid.urn)
self.vte = vte.Terminal()
self.vte._expose_data = None
if not hasattr(self.vte, "set_opacity") or \

View File

@ -28,6 +28,7 @@ import gtk
import os
import pwd
import inspect
import uuid
# set this to true to enable debugging output
DEBUG = False
@ -276,3 +277,16 @@ def enumerate_descendants(parent):
len(terminals), parent))
return(containers, terminals)
def make_uuid():
"""Generate a UUID for an object"""
return uuid.uuid4()
def inject_uuid(target):
"""Inject a UUID into an existing object"""
uuid = make_uuid()
if not hasattr(target, "uuid") or target.uuid == None:
dbg("Injecting UUID %s into: %s" % (uuid, target))
target.uuid = uuid
else:
dbg("Object already has a UUID: %s" % target)