Armed with a text editor

mu's views on program and recipe! design

#!/usr/bin/env python

#  Copyright (C) 2006  Michael Urman
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2, or (at your option)
#  any later version.
#

import gtk
import epiphany

def _changed(entry, zws=u'\u200b'.encode('utf-8')):
    text = entry.get_text()
    if zws in text:
        stripped = text.replace(zws, '')
        entry.set_text(stripped)

def find(container, typename):
    try:
        children = container.get_children()
    except:
        return None

    for obj in children:
        objname = type(obj).__name__
        if objname == typename or objname.endswith('.' + typename):
            return obj
        else:
            obj = find(obj, typename)
            if obj is not None:
                return obj

def attach_window(window):
    loc_entry = find(find(window, 'EphyIconEntry'), 'Entry')
    if loc_entry is not None:
        loc_entry._strip_zero_width_sig = loc_entry.connect("changed", _changed)

def detach_window(window):
    loc_entry = find(find(window, 'EphyIconEntry'), 'Entry')
    if loc_entry is not None:
        try:
            sig = loc_entry._strip_zero_width_sig
        except AttributeError:
            pass
        else:
            loc_entry.disconnect(sig)
            del loc_entry._strip_zero_width_sig