Changeset 929

Show
Ignore:
Timestamp:
06/07/06 01:59:52 (2 years ago)
Author:
arjanmol
Message:

Added text edit tool

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphas/trunk/README.txt

    r890 r929  
    3636 
    3737Stage 3: 
     38 - make double and triple click work. 
    3839 - text edit tool (gtk.Edit in popup window?) 
    3940 
  • gaphas/trunk/tool.py

    r887 r929  
    141141    """A ToolChain can be used to chain tools together, for example HoverTool, 
    142142    HandleTool, SelectionTool. 
     143 
     144    The grabbed item is bypassed in case a double or tripple click event 
     145    is received. Should make sure this doesn't end up in dangling states. 
    143146    """ 
    144147 
     
    168171        """ 
    169172        context = ToolChainContext(tool_chain=self, tool_context=context) 
    170         if self._grabbed_tool
     173        if self._grabbed_tool and event.type not in (gtk.gdk._2BUTTON_PRESS, gtk.gdk._3BUTTON_PRESS)
    171174            context.set_tool(self._grabbed_tool) 
    172175            return getattr(self._grabbed_tool, func)(context, event) 
     
    467470            return False 
    468471 
     472class TextEditTool(Tool): 
     473 
     474    def __init__(self): 
     475        pass 
     476 
     477    def on_double_click(self, context, event): 
     478        """Create a popup window with some editable text. 
     479        """ 
     480        print 'Double click' 
     481        window = gtk.Window() 
     482        window.set_property('decorated', False) 
     483        window.set_resize_mode(gtk.RESIZE_IMMEDIATE) 
     484        #window.set_modal(True) 
     485        window.set_parent_window(context.view.window) 
     486        buffer = gtk.TextBuffer() 
     487        text_view = gtk.TextView() 
     488        text_view.set_buffer(buffer) 
     489        text_view.show() 
     490        window.add(text_view) 
     491        window.size_allocate(gtk.gdk.Rectangle(int(event.x), int(event.y), 50, 50)) 
     492        #window.move(int(event.x), int(event.y)) 
     493        cursor_pos = context.view.get_toplevel().get_screen().get_display().get_pointer() 
     494        print 'cursor_pos', cursor_pos 
     495        window.move(cursor_pos[1], cursor_pos[2]) 
     496        window.connect('focus-out-event', self._on_focus_out_event, buffer) 
     497        text_view.connect('key-press-event', self._on_key_press_event, buffer) 
     498        #text_view.set_size_request(50, 50) 
     499        window.show() 
     500        #text_view.grab_focus() 
     501        #window.set_uposition(event.x, event.y) 
     502        #window.focus 
     503        return True 
     504 
     505    def _on_key_press_event(self, widget, event, buffer): 
     506        if event.keyval == gtk.keysyms.Return: 
     507            print 'Enter!' 
     508            #widget.get_toplevel().destroy() 
     509        elif event.keyval == gtk.keysyms.Escape: 
     510            print 'Escape!' 
     511            widget.get_toplevel().destroy() 
     512 
     513    def _on_focus_out_event(self, widget, event, buffer): 
     514        print 'focus out!', buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter()) 
     515        widget.destroy() 
    469516 
    470517def DefaultTool(): 
     
    475522    chain.append(HandleTool()) 
    476523    chain.append(ItemTool()) 
     524    chain.append(TextEditTool()) 
    477525    chain.append(RubberbandTool()) 
    478526    return chain