lib/clevic/qt/text_delegate.rb in clevic-0.13.0.b9 vs lib/clevic/qt/text_delegate.rb in clevic-0.13.0.b10

- old
+ new

@@ -1,16 +1,16 @@ require 'clevic/qt/delegate.rb' module Clevic class TextDelegate < Delegate - + # Doesn't do anything useful yet, but I'm leaving # it here so I don't have to change other code. class TextEditor < Qt::PlainTextEdit end - + # this is overridden in Qt::ItemDelegate, but that # always catches the return key. Which we want for text editing. # Instead, we use Ctrl-Enter to save the edited text. # return true if event is handled, false otherwise def eventFilter( object, event ) @@ -21,25 +21,25 @@ # close and save # copied from QItemDelegate. emit commitData( object ) emit closeEditor( object ) true - + # send an enter or return to the text editor when event.enter? || event.return? object.event( event ) true end end retval || super end - + # maybe open in a separate window? def full_edit puts "#{self.class.name} full_edit" end - + # Override the Qt method def createEditor( parent_widget, style_option_view_item, model_index ) if false && model_index.edit_value.count("\n") == 0 # futzing about here, really @editor = Qt::LineEdit.new( parent_widget ) @@ -47,20 +47,20 @@ @editor = TextEditor.new( parent_widget ) @editor.install_event_filter( self ) end @editor end - + # Override the Qt::ItemDelegate method. def updateEditorGeometry( editor, style_option_view_item, model_index ) rect = Qt::Rect.new( style_option_view_item.rect.top_left, style_option_view_item.rect.size ) - + # ask the editor for how much space it wants, and set the editor # to that size when it displays in the table rect.set_width( [editor.size_hint.width,rect.width].max ) rect.set_height( editor.size_hint.height ) - + unless editor.parent.rect.contains( rect ) # 46 because TableView returns an incorrect bottom. # And I can't find out how to get the correct value. rect.move_bottom( parent.contents_rect.bottom - 46 ) end @@ -69,10 +69,10 @@ # Override the Qt method to send data to the editor from the model. def setEditorData( editor, model_index ) editor.plain_text = model_index.edit_value end - + # Send the data from the editor to the model. The data will # be translated by translate_from_editor_text, def setModelData( editor, abstract_item_model, model_index ) model_index.edit_value = editor.to_plain_text abstract_item_model.data_changed( model_index )