# HG changeset patch # User Thinker K.F. Li # Date 1289966325 -28800 # Node ID 2346d3238e0317c0f36c9a30e2c6d555a4170f1c # Parent 88bf64efcc1dbbb738642b7d997ed071ee9aa4cf frame-button-press event of frameline diff -r 88bf64efcc1d -r 2346d3238e03 pyink/frameline.py --- a/pyink/frameline.py Wed Nov 17 11:18:44 2010 +0800 +++ b/pyink/frameline.py Wed Nov 17 11:58:45 2010 +0800 @@ -104,6 +104,10 @@ ## Show frame status of a layer # +# \section frameline_sigs Signals +# - 'frame-button-pree' for user press on a frame. +# - callback(widget, frame_idx, button) +# class frameline(gtk.DrawingArea): _type = 0 _frame_width = 10 # Width for each frame is 10 pixels @@ -116,10 +120,19 @@ _normal_bgcolors = [0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xcccccc] _normal_border = 0xaaaaaa # border color of normal frames. _active_border = 0xff3030 # border color of an active frame + + FRAME_BUT_PRESS = 'frame-button-press' def __new__(clz, *args): if not frameline._type: frameline._type = gobject.type_register(frameline) + but_press = gobject.signal_new(frameline.FRAME_BUT_PRESS, + frameline._type, + gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, + (gobject.TYPE_INT, + gobject.TYPE_INT)) + frameline._sig_frame_but_press = but_press pass fl_obj = gobject.new(frameline._type) return fl_obj @@ -133,8 +146,9 @@ pass def _press_hdl(self, widget, event): - button = event.x / self._frame_width - print 'button %d - %d,%d' % (button, event.x, event.y) + frame = event.x / self._frame_width + but = event.button + self.emit(frameline.FRAME_BUT_PRESS, frame, but) pass def _fl_expose(self, widget, event): @@ -391,6 +405,11 @@ fl.active_frame(15) print 'num of frames: %d' % (len(fl)) + def press_sig(fl, frame, but): + print 'press_sig button %d for frame %d' % (but, frame) + pass + fl.connect(frameline.FRAME_BUT_PRESS, press_sig) + box = gtk.VBox() box.pack_start(fr, False)