Commit 098f6864 authored by Tanguy Ortolo's avatar Tanguy Ortolo

Upstream release 0.15.4

parent 1de5bffd
Gajim 0.15.4 (25 May 2013)
* Fix usage of OTR plugin
* Fix connection to non-SSL server
* Fix receiving GPG-encrypted messages while offline.
Gajim 0.15.3 (17 March 2013)
* Better handling of SSL errors
* Better handling of canceling file transfer
* Improve farstream calls
......
#!/usr/bin/env bash
gajimversion="0.15.3"
gajimversion="0.15.4"
if [ -d ".hg" ]; then
node=$(hg tip --template "{node}")
hgversion="-${node:0:12}"
......@@ -15,7 +15,7 @@
&& for p in `ls data/gui/*.ui`; do echo "[type: gettext/glade]$p" >> \
po/POTFILES.in; done \
&& ls -1 data/gajim.desktop.in.in \
src/*.py src/common/*.py src/command_system/implementation/*.py src/common/zeroconf/*.py src/plugins/*.py | grep -v ipython_view.py >> \
src/*.py src/common/*.py src/command_system/*.py src/command_system/implementation/*.py src/common/zeroconf/*.py src/plugins/*.py | grep -v ipython_view.py >> \
po/POTFILES.in \
&& echo -e "data/gajim.desktop.in\nsrc/ipython_view.py" > po/POTFILES.skip || exit 1
if [ $(find plugins/ -name '*.py' | wc -l) -gt 0 ];then
......
......@@ -590,7 +590,7 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Gajim - A Jabber Instant Messager'
PACKAGE_TARNAME='gajim'
PACKAGE_VERSION='0.15.3'
PACKAGE_VERSION='0.15.4'
PACKAGE_STRING='Gajim - A Jabber Instant Messager "version-set-in-hgversion"'
PACKAGE_BUGREPORT='http://trac.gajim.org/'
PACKAGE_URL=''
......@@ -1576,7 +1576,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
Gajim - A Jabber Instant Messager configure 0.15.3
Gajim - A Jabber Instant Messager configure 0.15.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -1945,7 +1945,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by Gajim - A Jabber Instant Messager $as_me 0.15.3, which was
It was created by Gajim - A Jabber Instant Messager $as_me 0.15.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
......@@ -2766,7 +2766,7 @@ fi
# Define the identity of the package.
PACKAGE='gajim'
VERSION='0.15.3'
VERSION='0.15.4'
cat >>confdefs.h <<_ACEOF
......@@ -14827,7 +14827,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by Gajim - A Jabber Instant Messager $as_me 0.15.3, which was
This file was extended by Gajim - A Jabber Instant Messager $as_me 0.15.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -14893,7 +14893,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
Gajim - A Jabber Instant Messager config.status 0.15.3
Gajim - A Jabber Instant Messager config.status 0.15.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
......
......@@ -200,7 +200,7 @@ Section "Gajim" SecGajim
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayName" "Gajim"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "UninstallString" "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayIcon" "$INSTDIR\bin\Gajim.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayVersion" "0.15.3"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayVersion" "0.15.4"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "URLInfoAbout" "http://www.gajim.org/"
WriteUninstaller "$INSTDIR\Uninstall.exe"
......
define([AC_PACKAGE_VERSION], [0.15.3])
define([AC_PACKAGE_VERSION], [0.15.4])
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-requires gtk+ 3.0 -->
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkTextBuffer" id="textbuffer1">
<property name="text">Plug-in decription should be displayed here. This text will be erased during PluginsWindow initialization.</property>
</object>
<object class="GtkWindow" id="window1">
<child>
<object class="GtkHPaned" id="hpaned2">
......@@ -17,14 +14,12 @@
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="border_width">6</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView" id="available_treeview">
<property name="visible">True</property>
......@@ -56,7 +51,6 @@
<object class="GtkVBox" id="vbox4">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="plugin_name_label1">
......@@ -140,7 +134,6 @@
<child>
<object class="GtkVBox" id="vbox5">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkHBox" id="hbox10">
<property name="visible">True</property>
......@@ -172,14 +165,14 @@
</packing>
</child>
<child>
<object class="GtkTextView" id="plugin_description_textview1">
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="pixels_above_lines">6</property>
<property name="wrap_mode">word</property>
<property name="left_margin">6</property>
<property name="right_margin">6</property>
<property name="indent">1</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="position">1</property>
......@@ -266,12 +259,11 @@
<child>
<object class="GtkVBox" id="hbox111">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkHBox" id="hbox1">
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="label1">
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Ftp server:</property>
......
[info]
name: Plugin Installer
short_name: plugin_installer
version: 0.11.1
version: 0.11.3
description: Install and upgrade plugins from ftp
authors: Denis Fomin <fominde@gmail.com>
Yann Leboulanger <asterix@lagaule.org>
......
......@@ -34,6 +34,7 @@ import zipfile
from common import gajim
from plugins import GajimPlugin
from plugins.helpers import log_calls, log
from conversation_textview import ConversationTextview
from dialogs import WarningDialog, HigDialog, YesNoDialog
from plugins.gui import GajimPluginConfigDialog
......@@ -149,7 +150,7 @@ class PluginInstaller(GajimPlugin):
def deactivate(self):
self.pl_menuitem.disconnect(self.id_)
if hasattr(self, 'page_num'):
self.notebook.remove_page(self.page_num)
self.notebook.remove_page(self.notebook.page_num(self.hpaned))
self.notebook.set_current_page(0)
for id_, widget in self.connected_ids.items():
widget.disconnect(id_)
......@@ -178,14 +179,14 @@ class PluginInstaller(GajimPlugin):
self.xml = gtk.Builder()
self.xml.set_translation_domain('gajim_plugins')
self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH, ['hpaned2'])
hpaned = self.xml.get_object('hpaned2')
self.page_num = self.notebook.append_page(hpaned,
self.hpaned = self.xml.get_object('hpaned2')
self.page_num = self.notebook.append_page(self.hpaned,
gtk.Label(_('Available')))
widgets_to_extract = ('plugin_name_label1',
'available_treeview', 'progressbar', 'inslall_upgrade_button',
'plugin_authors_label1', 'plugin_authors_label1',
'plugin_homepage_linkbutton1', 'plugin_description_textview1')
'plugin_homepage_linkbutton1')
for widget_name in widgets_to_extract:
setattr(self, widget_name, self.xml.get_object(widget_name))
......@@ -248,6 +249,11 @@ class PluginInstaller(GajimPlugin):
selection.set_mode(gtk.SELECTION_SINGLE)
self._clear_available_plugin_info()
self.plugin_description_textview = ConversationTextview(None)
sw = self.xml.get_object('scrolledwindow1')
sw.add(self.plugin_description_textview.tv)
self.xml.connect_signals(self)
self.window.show_all()
......@@ -270,7 +276,10 @@ class PluginInstaller(GajimPlugin):
self.inslall_upgrade_button.set_property('sensitive', True)
def on_notebook_switch_page(self, widget, page, page_num):
if not hasattr(self, 'ftp') and self.page_num == page_num:
tab_label_text = self.notebook.get_tab_label_text(self.hpaned)
if tab_label_text != (_('Available')):
return
if not hasattr(self, 'ftp'):
self.available_plugins_model.clear()
self.progressbar.show()
self.ftp = Ftp(self)
......@@ -350,6 +359,11 @@ class PluginInstaller(GajimPlugin):
def available_plugins_treeview_selection_changed(self, treeview_selection):
model, iter = treeview_selection.get_selected()
self.xml.get_object('scrolledwindow1').get_children()[0].destroy()
self.plugin_description_textview = ConversationTextview(None)
sw = self.xml.get_object('scrolledwindow1')
sw.add(self.plugin_description_textview.tv)
sw.show_all()
if iter:
self.plugin_name_label1.set_text(model.get_value(iter, C_NAME))
self.plugin_authors_label1.set_text(model.get_value(iter, C_AUTHORS))
......@@ -360,9 +374,14 @@ class PluginInstaller(GajimPlugin):
label = self.plugin_homepage_linkbutton1.get_children()[0]
label.set_ellipsize(pango.ELLIPSIZE_END)
self.plugin_homepage_linkbutton1.set_property('sensitive', True)
desc_textbuffer = self.plugin_description_textview1.get_buffer()
desc_textbuffer.set_text(_(model.get_value(iter, C_DESCRIPTION)))
self.plugin_description_textview1.set_property('sensitive', True)
desc = _(model.get_value(iter, C_DESCRIPTION))
if not desc.startswith('<body '):
desc = '<body xmlns=\'http://www.w3.org/1999/xhtml\'>' + \
desc + ' </body>'
desc = desc.replace('\n', '<br/>')
self.plugin_description_textview.tv.display_html(
desc, self.plugin_description_textview)
self.plugin_description_textview.tv.set_property('sensitive', True)
else:
self._clear_available_plugin_info()
......@@ -373,10 +392,6 @@ class PluginInstaller(GajimPlugin):
self.plugin_homepage_linkbutton1.set_label('')
self.plugin_homepage_linkbutton1.set_property('sensitive', False)
desc_textbuffer = self.plugin_description_textview1.get_buffer()
desc_textbuffer.set_text('')
self.plugin_description_textview1.set_property('sensitive', False)
def scan_dir_for_plugin(self, path):
plugins_found = []
conf = ConfigParser.ConfigParser()
......@@ -449,7 +464,9 @@ class PluginInstaller(GajimPlugin):
root_iter = self.available_plugins_model.get_iter_root()
selection.select_iter(root_iter)
scr_win = self.xml.get_object('scrolledwindow2')
scr_win.get_vadjustment().set_value(0)
vadjustment = scr_win.get_vadjustment()
if vadjustment:
vadjustment.set_value(0)
class Ftp(threading.Thread):
......
......@@ -71,12 +71,18 @@ src/advanced_configuration_window.py
src/atom_window.py
src/cell_renderer_image.py
src/chat_control.py
src/command_system/dispatcher.py
src/command_system/errors.py
src/command_system/framework.py
src/command_system/implementation/custom.py
src/command_system/implementation/execute.py
src/command_system/implementation/hosts.py
src/command_system/implementation/__init__.py
src/command_system/implementation/middleware.py
src/command_system/implementation/standard.py
src/command_system/__init__.py
src/command_system/mapping.py
src/command_system/tools.py
src/common/account.py
src/common/atom.py
src/common/caps_cache.py
......
......@@ -33,7 +33,7 @@ options = {
'build_exe': {
'includes': ['gtk.keysyms', 'dumbdbm', 'dbhash', 'bsddb', 'new',
'goocanvas', 'Crypto.PublicKey.DSA', 'Crypto.Hash.HMAC',
'numbers'],
'numbers', 'HTMLParser'],
'base': 'Win32GUI',
'bin_excludes': [
'iconv.dll', 'intl.dll', 'libatk-1.0-0.dll',
......
......@@ -1331,7 +1331,7 @@ class Connection(CommonConnection, ConnectionHandlers):
certificate=con.Connection.ssl_certificate[i]))
return True
i += 1
if hasattr(con.Connection, 'ssl_fingerprint_sha1'):
if con.Connection.ssl_fingerprint_sha1:
saved_fingerprint = gajim.config.get_per('accounts', self.name,
'ssl_fingerprint_sha1')
if saved_fingerprint:
......
......@@ -995,7 +995,8 @@ class ConnectionHandlersBase:
gajim.thread_interface(self.decrypt_thread, [encmsg, keyID,
obj], self._on_message_decrypted, [obj])
return
self._on_message_decrypted(None, obj)
gajim.nec.push_incoming_event(DecryptedMessageReceivedEvent(None,
conn=self, msg_obj=obj))
def _on_message_decrypted(self, output, obj):
if len(self.gpg_messages_to_decrypt):
......
......@@ -27,7 +27,7 @@ docdir = '../'
basedir = '../'
localedir = '../po'
version = '0.15.3'
version = '0.15.4'
import subprocess
try:
node = subprocess.Popen('hg tip --template "{node|short}"', shell=True,
......
......@@ -2669,9 +2669,10 @@ class FakeDataForm(gtk.Table, object):
table {entry1: value1}
"""
def __init__(self, infos):
def __init__(self, infos, selectable=False):
gtk.Table.__init__(self)
self.infos = infos
self.selectable = selectable
self.entries = {}
self._draw_table()
......@@ -2684,6 +2685,8 @@ class FakeDataForm(gtk.Table, object):
nbrow = 1
self.resize(rows = nbrow, columns = 2)
label = gtk.Label(self.infos['instructions'])
if self.selectable:
label.set_selectable(True)
self.attach(label, 0, 2, 0, 1, 0, 0, 0, 0)
for name in self.infos.keys():
if name in ('key', 'instructions', 'x', 'registered'):
......@@ -3793,10 +3796,12 @@ class AccountCreationWizardWindow:
empty_config = True
if obj.is_form:
dataform = dataforms.ExtendForm(node=obj.config)
self.data_form_widget = dataforms_widget.DataFormWidget(dataform)
self.data_form_widget = dataforms_widget.DataFormWidget()
self.data_form_widget.selectable = True
self.data_form_widget.set_data_form(dataform)
empty_config = False
else:
self.data_form_widget = FakeDataForm(obj.config)
self.data_form_widget = FakeDataForm(obj.config, selectable=True)
for field in obj.config:
if field in ('key', 'instructions', 'x', 'registered'):
continue
......
......@@ -37,6 +37,7 @@ from common import helpers
from time import time
from dialogs import AddNewContactWindow, NewChatDialog, JoinGroupchatWindow
from common import ged
from common.connection_handlers_events import MessageOutgoingEvent
from common import dbus_support
if dbus_support.supported:
......@@ -442,8 +443,10 @@ class SignalObject(dbus.service.Object):
if ctrl:
ctrl.print_conversation(message, frm='outgoing')
connection.send_message(jid, message, keyID, type_, subject,
session=session)
gajim.nec.push_outgoing_event(MessageOutgoingEvent(None,
account=connected_account, jid=jid, message=message,
keyID=keyID, type_=type_, control=ctrl))
return DBUS_BOOLEAN(True)
return DBUS_BOOLEAN(False)
......@@ -463,7 +466,7 @@ class SignalObject(dbus.service.Object):
keyID is specified, encrypt the message with the pgp key
"""
jid = self._get_real_jid(jid, account)
return self._send_message(jid, message, keyID, account, type, subject)
return self._send_message(jid, message, keyID, account, 'normal', subject)
@dbus.service.method(INTERFACE, in_signature='sss', out_signature='b')
def send_groupchat_message(self, room_jid, message, account):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment