update latex plugin to py3
This commit is contained in:
@@ -1 +1 @@
|
|||||||
from latex import LatexPlugin
|
from .latex import LatexPlugin
|
||||||
|
|||||||
@@ -23,8 +23,11 @@
|
|||||||
|
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import os
|
import os
|
||||||
import gtk
|
from gi.repository import Gtk
|
||||||
import gobject
|
from gi.repository import Gdk
|
||||||
|
from gi.repository import GdkPixbuf
|
||||||
|
from gi.repository import Pango
|
||||||
|
from gi.repository import GObject
|
||||||
from tempfile import mkstemp, mkdtemp
|
from tempfile import mkstemp, mkdtemp
|
||||||
import random
|
import random
|
||||||
from subprocess import Popen, PIPE
|
from subprocess import Popen, PIPE
|
||||||
@@ -35,7 +38,7 @@ from plugins import GajimPlugin
|
|||||||
from plugins.helpers import log, log_calls
|
from plugins.helpers import log, log_calls
|
||||||
from plugins.gui import GajimPluginConfigDialog
|
from plugins.gui import GajimPluginConfigDialog
|
||||||
|
|
||||||
gtk.gdk.threads_init() # for gtk.gdk.thread_[enter|leave]()
|
Gdk.threads_init()
|
||||||
|
|
||||||
def latex_template(code):
|
def latex_template(code):
|
||||||
return '''\\documentclass[12pt]{article}
|
return '''\\documentclass[12pt]{article}
|
||||||
@@ -73,7 +76,7 @@ def try_run(argv, directory):
|
|||||||
out = p.communicate()[0]
|
out = p.communicate()[0]
|
||||||
log.info(out)
|
log.info(out)
|
||||||
return p.wait()
|
return p.wait()
|
||||||
except Exception, e:
|
except Exception as e:
|
||||||
return _('Error executing "%(command)s": %(error)s') % {
|
return _('Error executing "%(command)s": %(error)s') % {
|
||||||
'command': " ".join(argv),
|
'command': " ".join(argv),
|
||||||
'error': helpers.decode_string(str(e))}
|
'error': helpers.decode_string(str(e))}
|
||||||
@@ -114,8 +117,8 @@ class LatexRenderer(Thread):
|
|||||||
self.show_image()
|
self.show_image()
|
||||||
else:
|
else:
|
||||||
self.show_error(_('There are bad commands!'))
|
self.show_error(_('There are bad commands!'))
|
||||||
except:
|
except Exception:
|
||||||
pass
|
self.show_error(_('Error processing LaTeX'))
|
||||||
finally:
|
finally:
|
||||||
self.buffer_.delete_mark(self.mark)
|
self.buffer_.delete_mark(self.mark)
|
||||||
|
|
||||||
@@ -123,16 +126,16 @@ class LatexRenderer(Thread):
|
|||||||
"""
|
"""
|
||||||
String -> TextBuffer
|
String -> TextBuffer
|
||||||
"""
|
"""
|
||||||
gtk.gdk.threads_enter()
|
Gdk.threads_enter()
|
||||||
iter_mark = self.buffer_.get_iter_at_mark(self.mark)
|
iter_mark = self.buffer_.get_iter_at_mark(self.mark)
|
||||||
iter_end = iter_mark.copy().forward_search(_('Processing LaTeX'),
|
iter_end = iter_mark.copy().forward_search(_('Processing LaTeX'),
|
||||||
gtk.TEXT_SEARCH_TEXT_ONLY)[1]
|
Gtk.TextSearchFlags.TEXT_ONLY, None)[1]
|
||||||
self.buffer_.delete(iter_mark, iter_end)
|
self.buffer_.delete(iter_mark, iter_end)
|
||||||
|
|
||||||
pixbuf = self.widget.render_icon(gtk.STOCK_STOP, gtk.ICON_SIZE_BUTTON)
|
pixbuf = self.widget.render_icon(Gtk.STOCK_STOP, Gtk.IconSize.BUTTON)
|
||||||
self.buffer_.insert_pixbuf(iter_end, pixbuf)
|
self.buffer_.insert_pixbuf(iter_end, pixbuf)
|
||||||
self.buffer_.insert(iter_end, message)
|
self.buffer_.insert(iter_end, message)
|
||||||
gtk.gdk.threads_leave()
|
Gdk.threads_leave()
|
||||||
|
|
||||||
@log_calls('LatexRenderer')
|
@log_calls('LatexRenderer')
|
||||||
def show_image(self):
|
def show_image(self):
|
||||||
@@ -207,21 +210,21 @@ class LatexRenderer(Thread):
|
|||||||
|
|
||||||
log.debug('Loading PNG %s' % tmppng)
|
log.debug('Loading PNG %s' % tmppng)
|
||||||
try:
|
try:
|
||||||
gtk.gdk.threads_enter()
|
Gdk.threads_enter()
|
||||||
pixbuf = gtk.gdk.pixbuf_new_from_file(tmppng)
|
pixbuf = GdkPixbuf.Pixbuf.new_from_file(tmppng)
|
||||||
log.debug('png loaded')
|
log.debug('png loaded')
|
||||||
iter_mark = self.buffer_.get_iter_at_mark(self.mark)
|
iter_mark = self.buffer_.get_iter_at_mark(self.mark)
|
||||||
iter_end = iter_mark.copy().forward_search('Processing LaTeX',
|
iter_end = iter_mark.copy().forward_search('Processing LaTeX',
|
||||||
gtk.TEXT_SEARCH_TEXT_ONLY)[1]
|
Gtk.TextSearchFlags.TEXT_ONLY, None)[1]
|
||||||
log.debug('Delete old Text')
|
log.debug('Delete old Text')
|
||||||
self.buffer_.delete(iter_mark, iter_end)
|
self.buffer_.delete(iter_mark, iter_end)
|
||||||
log.debug('Insert pixbuf')
|
log.debug('Insert pixbuf')
|
||||||
self.buffer_.insert_pixbuf(iter_end, pixbuf)
|
self.buffer_.insert_pixbuf(iter_end, pixbuf)
|
||||||
except gobject.GError:
|
except GObject.GError:
|
||||||
self.show_error(_('Cannot open %s for reading') % tmppng)
|
self.show_error(_('Cannot open %s for reading') % tmppng)
|
||||||
log.debug('Cant open %s for reading' % tmppng)
|
log.debug('Cant open %s for reading' % tmppng)
|
||||||
finally:
|
finally:
|
||||||
gtk.gdk.threads_leave()
|
Gdk.threads_leave()
|
||||||
os.remove(tmppng)
|
os.remove(tmppng)
|
||||||
|
|
||||||
def check_code(self):
|
def check_code(self):
|
||||||
@@ -235,11 +238,11 @@ class LatexPluginConfiguration(GajimPluginConfigDialog):
|
|||||||
def init(self):
|
def init(self):
|
||||||
self.GTK_BUILDER_FILE_PATH = self.plugin.local_file_path(
|
self.GTK_BUILDER_FILE_PATH = self.plugin.local_file_path(
|
||||||
'config_dialog.ui')
|
'config_dialog.ui')
|
||||||
self.xml = gtk.Builder()
|
self.xml = Gtk.Builder()
|
||||||
self.xml.set_translation_domain('gajim_plugins')
|
self.xml.set_translation_domain('gajim_plugins')
|
||||||
self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH, ['vbox1'])
|
self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH, ['vbox1'])
|
||||||
hbox = self.xml.get_object('vbox1')
|
hbox = self.xml.get_object('vbox1')
|
||||||
self.child.pack_start(hbox)
|
self.get_child().pack_start(hbox, False, False, 0)
|
||||||
self.result_label = self.xml.get_object('result_label')
|
self.result_label = self.xml.get_object('result_label')
|
||||||
|
|
||||||
self.xml.connect_signals(self)
|
self.xml.connect_signals(self)
|
||||||
@@ -340,16 +343,17 @@ class LatexPlugin(GajimPlugin):
|
|||||||
self.activatable = False
|
self.activatable = False
|
||||||
self.available_text += _('. Install %s') % pkgs
|
self.available_text += _('. Install %s') % pkgs
|
||||||
|
|
||||||
def textview_event_after(self, tag, widget, event, iter):
|
def textview_event_after(self, tag, widget, event, iter_):
|
||||||
"""
|
"""
|
||||||
start rendering if clicked on a link
|
start rendering if clicked on a link
|
||||||
"""
|
"""
|
||||||
if tag.get_property('name') != 'latex' or \
|
if tag.get_property('name') != 'latex' or \
|
||||||
event.type != gtk.gdk.BUTTON_PRESS: return
|
event.type != Gdk.EventType.BUTTON_PRESS:
|
||||||
dollar_start, iter_start = iter.backward_search('$$',
|
return
|
||||||
gtk.TEXT_SEARCH_TEXT_ONLY)
|
dollar_start, iter_start = iter_.backward_search('$$',
|
||||||
iter_end, dollar_end = iter.forward_search('$$',
|
Gtk.TextSearchFlags.TEXT_ONLY, None)
|
||||||
gtk.TEXT_SEARCH_TEXT_ONLY)
|
iter_end, dollar_end = iter_.forward_search('$$',
|
||||||
|
Gtk.TextSearchFlags.TEXT_ONLY, None)
|
||||||
LatexRenderer(dollar_start, dollar_end, widget.get_buffer(), widget,
|
LatexRenderer(dollar_start, dollar_end, widget.get_buffer(), widget,
|
||||||
self.config['png_dpi'])
|
self.config['png_dpi'])
|
||||||
|
|
||||||
@@ -363,14 +367,15 @@ class LatexPlugin(GajimPlugin):
|
|||||||
newlist.append( [ list[i], list[i+1], ] )
|
newlist.append( [ list[i], list[i+1], ] )
|
||||||
return newlist
|
return newlist
|
||||||
|
|
||||||
assert isinstance(tb, gtk.TextBuffer)
|
assert isinstance(tb, Gtk.TextBuffer)
|
||||||
start_iter = tb.get_start_iter()
|
start_iter = tb.get_start_iter()
|
||||||
points = []
|
points = []
|
||||||
tuple_found = start_iter.forward_search('$$', gtk.TEXT_SEARCH_TEXT_ONLY)
|
tuple_found = start_iter.forward_search('$$',
|
||||||
|
Gtk.TextSearchFlags.TEXT_ONLY, None)
|
||||||
while tuple_found != None:
|
while tuple_found != None:
|
||||||
points.append(tuple_found)
|
points.append(tuple_found)
|
||||||
tuple_found = tuple_found[1].forward_search('$$',
|
tuple_found = tuple_found[1].forward_search('$$',
|
||||||
gtk.TEXT_SEARCH_TEXT_ONLY)
|
Gtk.TextSearchFlags.TEXT_ONLY, None)
|
||||||
|
|
||||||
for pair in split_list(points):
|
for pair in split_list(points):
|
||||||
tb.apply_tag_by_name('latex', pair[0][1], pair[1][0])
|
tb.apply_tag_by_name('latex', pair[0][1], pair[1][0])
|
||||||
@@ -380,9 +385,9 @@ class LatexPlugin(GajimPlugin):
|
|||||||
tv = chat_control.conv_textview.tv
|
tv = chat_control.conv_textview.tv
|
||||||
tb = tv.get_buffer()
|
tb = tv.get_buffer()
|
||||||
|
|
||||||
self.latex_tag = gtk.TextTag('latex')
|
self.latex_tag = Gtk.TextTag.new('latex')
|
||||||
self.latex_tag.set_property('foreground', 'blue')
|
self.latex_tag.set_property('foreground', 'blue')
|
||||||
self.latex_tag.set_property('underline', 'single')
|
self.latex_tag.set_property('underline', Pango.Underline.SINGLE)
|
||||||
d['tag_id'] = self.latex_tag.connect('event', self.textview_event_after)
|
d['tag_id'] = self.latex_tag.connect('event', self.textview_event_after)
|
||||||
tb.get_tag_table().add(self.latex_tag)
|
tb.get_tag_table().add(self.latex_tag)
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
[info]
|
[info]
|
||||||
name: Latex
|
name: Latex
|
||||||
short_name: latex
|
short_name: latex
|
||||||
version: 0.2.1
|
version: 0.3
|
||||||
description: render received latex code
|
description: render received latex code
|
||||||
authors: Yves Fischer <yvesf@xapek.org>
|
authors: Yves Fischer <yvesf@xapek.org>
|
||||||
Yann Leboulanger <asterix@lagaule.org>
|
Yann Leboulanger <asterix@lagaule.org>
|
||||||
homepage: http://trac-plugins.gajim.org/wiki/LatexPlugin
|
homepage: http://trac-plugins.gajim.org/wiki/LatexPlugin
|
||||||
max_gajim_version: 0.15.9
|
min_gajim_version: 0.15.10
|
||||||
|
|||||||
Reference in New Issue
Block a user