[PyQt] Weird behavior in fromMimeData method (pyScintilla)

Phil Thompson phil at riverbankcomputing.com
Wed Sep 19 17:29:20 BST 2012


On Wed, 19 Sep 2012 14:54:57 +0200, Salvatore Larosa <lrssvtml at gmail.com>
wrote:
> Hi Phil,
> 
> 2012/9/19 Phil Thompson <phil at riverbankcomputing.com>
> 
>> On Wed, 19 Sep 2012 08:05:42 +0200, Salvatore Larosa
<lrssvtml at gmail.com>
>> wrote:
>> > Hi,
>> >
>> > 2012/9/19 Phil Thompson <phil at riverbankcomputing.com>
>> >
>> >> On Tue, 18 Sep 2012 23:16:00 +0200, Salvatore Larosa
>> <lrssvtml at gmail.com>
>> >> wrote:
>> >> > Hi all,
>> >> > I am not sure if this is the rigth place to ask!
>> >> >
>> >> > I created a small console to execute python command by using
>> Qscintilla
>> >> > python bindings but something doesnt work with MIME data.
>> >> >
>> >> > My code is:
>> >> >
>> >> > def fromMimeData(self, source):
>> >> >         if source.hasText():
>> >> >             pasteList = QStringList()
>> >> >             pasteList = source.text().split("\n")
>> >> >             if (len(pasteList) > 1):
>> >> >               self.move_cursor_to_end()
>> >> >             for line in pasteList[:-1]:
>> >> >                 self.append(line)
>> >> >                 self.move_cursor_to_end()
>> >> >                 self.runCommand(unicode(self.currentCommand()))
>> >> >             self.append(unicode(pasteList[-1]))
>> >> >             self.move_cursor_to_end()
>> >> >
>> >> > First question: when I paste some text in console and run command
I
>> >> > get:
>> >> >
>> >> > TypeError: invalid result type from PythonEdit.fromMimeData()
>> >> >
>> >> > How I can avoid it?
>> >>
>> >> fromMimeData() should return a 2-tuple of the text as a QByteArray
and
>> a
>> >> bool set if the selection is rectangular.
>> >>
>> >
>> > Thanks for your reply.
>> >
>> > oddly the paste command works well although returns that error!
>> > how should I manage the contents of tuple?
>>
>> I don't know what your code is supposed to do. If  your implementation
of
>> fromMimeData() is adding extra behaviour (rather than changing the
>> default
>> behaviour) then call the super-class implementation, ie. add the
>> following
>> at the end...
>>
>>         return super(MyClass, self).fromMimeData(source)
>>
>>
> That solve the problem about typeError, but now it paste twice the same
> word!
> You can see the source code here [1] (MIME data stuff is at line 418).

The purpose of fromMimeData() is to allow you to specify how MIME data is
converted to text. It looks like you are trying to use it for another
purpose. You should probably look at reimplementing dropEvent() instead.

Phil


More information about the PyQt mailing list