def __init__(self): gtk.EventBox.__init__(self) self.box = FloatBox() self.pref_box = gtk.EventBox() self.form = Target() self.element_factory = ElementFactory() self.element_view = ElementView(self.element_factory) self.add(self.box) self.box.connect('key-press-event', self._on_box_key_press) self.box.connect('motion-notify-event', self._on_box_motion_notify) self.box.connect('button-press-event', self._on_box_button_press) self.box.connect('button-release-event', self._on_box_button_release) self.element_view.connect('element-button-press-event', self._on_element_button_press_event) hbox = gtk.HBox() vbox = gtk.VBox() vbox.pack_start(self.element_view, False) hbox.pack_start(vbox, False) hbox.pack_start(self.form) hbox.pack_start(self.pref_box, False) hbox.set_spacing(6) self.box.add_bg_widget(hbox) self.pref_box.set_size_request(200, -1) self.selected = None self.mouse_button = None # Load built-in widgets. for name in sorted(Elements.__all__): if name in ('Element', 'Target'): continue element_class = Elements.__dict__[name] if type(element_class) != gobject.GObjectMeta: continue self.element_factory.register(element_class)