[PyQt] Weird behavior in fromMimeData method (pyScintilla)

Salvatore Larosa lrssvtml at gmail.com
Wed Sep 19 23:48:10 BST 2012


Hi,

2012/9/19 Phil Thompson <phil at riverbankcomputing.com>

> 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.
>
>
I thought it would work like insertFromMimeData [1].
I tested it with QTextEdit widget and works fine!

I need that to execute multi-line command in my shell i.e.:
>>> if True:
. . .    print "Hello"
. . . if False:
. . .    print "Bye Bye"

so the last command line only paste the text doesnt run it!

Also, I implemented dropEvent() and has worked only for drag and drop event
and not to paste :-(

Anyway, thanks a lot!


Regards

-SL

[1] -
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtextedit.html#insertFromMimeData


> Phil
>



-- 
Salvatore Larosa
linkedIn: http://linkedin.com/in/larosasalvatore
twitter: @lrssvt
skype: s.larosa
IRC: lrssvt on freenode
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20120920/136db237/attachment.html>


More information about the PyQt mailing list