[PyQt] Weird behavior in fromMimeData method (pyScintilla)

Salvatore Larosa lrssvtml at gmail.com
Wed Sep 19 13:54:57 BST 2012


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).

Thanks for your help!

Regards,

[1] - https://gist.github.com/3749286




>  >> > Second question: If in my console I typed some text ( e.g def
> >> > blablabla(self): ) and then
> >> > I want edit it by replacing "self" with "source" by using paste
> >> > command,
> >> > the pasted text
> >> > is placed at the end of the current line and not between brace
> getting
> >> the
> >> > following result:
> >> >
> >> > def blablabla(self):source
> >> >
> >> > Any idea on how I can solve it?
> >>
> >> I can't reproduce that. What does move_cursor_to_end() do in the above
> >> code?
> >>
> >
> > move_cursor_to_end() move the cursor at the end of the current line!.
> > the result doesnt change if I comment out it!
> > if in my code I don't use the fromMimeData method, paste and drag/frop
> > event does work  as expected!
> > But I need it to execute command when multi-line text is dropped or
> pasted!
> >
> >
> >> Phil
> >>
> >
> > Regards,
> >
> > -SL
>
> 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/20120919/1789008f/attachment.html>


More information about the PyQt mailing list