Merge remote-tracking branch 'upstream/master': Pull latest updates
This commit is contained in:
commit
d9f894448d
62
Makefile
62
Makefile
|
@ -2,6 +2,7 @@ APP=pybitmessage
|
|||
VERSION=0.3.4
|
||||
RELEASE=1
|
||||
ARCH_TYPE=`uname -m`
|
||||
PREFIX?=/usr/local
|
||||
|
||||
all:
|
||||
debug:
|
||||
|
@ -9,37 +10,42 @@ source:
|
|||
tar -cvzf ../${APP}_${VERSION}.orig.tar.gz ../${APP}-${VERSION} --exclude-vcs
|
||||
install:
|
||||
mkdir -p ${DESTDIR}/usr
|
||||
mkdir -p ${DESTDIR}/usr/bin
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/man
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/man/man1
|
||||
install -m 644 man/${APP}.1.gz ${DESTDIR}/usr/share/man/man1
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/${APP}
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/applications
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/pixmaps
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/icons
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/icons/hicolor
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/icons/hicolor/scalable
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/icons/hicolor/scalable/apps
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/icons/hicolor/24x24
|
||||
mkdir -m 755 -p ${DESTDIR}/usr/share/icons/hicolor/24x24/apps
|
||||
install -m 644 desktop/${APP}.desktop ${DESTDIR}/usr/share/applications/${APP}.desktop
|
||||
install -m 644 desktop/icon24.png ${DESTDIR}/usr/share/icons/hicolor/24x24/apps/${APP}.png
|
||||
cp -rf src/* ${DESTDIR}/usr/share/${APP}
|
||||
echo '#!/bin/sh' > ${DESTDIR}/usr/bin/${APP}
|
||||
echo 'cd /usr/share/pybitmessage' >> ${DESTDIR}/usr/bin/${APP}
|
||||
echo 'LD_LIBRARY_PATH="/opt/openssl-compat-bitcoin/lib/" exec python2 bitmessagemain.py' >> ${DESTDIR}/usr/bin/${APP}
|
||||
chmod +x ${DESTDIR}/usr/bin/${APP}
|
||||
mkdir -p ${DESTDIR}${PREFIX}
|
||||
mkdir -p ${DESTDIR}${PREFIX}/bin
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man/man1
|
||||
install -m 644 man/${APP}.1.gz ${DESTDIR}${PREFIX}/share/man/man1
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/${APP}
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/applications
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/pixmaps
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/icons
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/icons/hicolor
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/icons/hicolor/scalable
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/icons/hicolor/24x24
|
||||
mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/icons/hicolor/24x24/apps
|
||||
install -m 644 desktop/${APP}.desktop ${DESTDIR}${PREFIX}/share/applications/${APP}.desktop
|
||||
install -m 644 desktop/icon24.png ${DESTDIR}${PREFIX}/share/icons/hicolor/24x24/apps/${APP}.png
|
||||
cp -rf src/* ${DESTDIR}${PREFIX}/share/${APP}
|
||||
echo '#!/bin/sh' > ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
echo 'if [ -d /usr/local/share/${APP} ]; then' >> ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
echo ' cd /usr/local/share/${APP}' >> ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
echo 'else' >> ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
echo ' cd /usr/share/pybitmessage' >> ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
echo 'fi' >> ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
echo 'LD_LIBRARY_PATH="/opt/openssl-compat-bitcoin/lib/" exec python2 bitmessagemain.py' >> ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
chmod +x ${DESTDIR}${PREFIX}/bin/${APP}
|
||||
uninstall:
|
||||
rm -f /usr/share/man/man1/${APP}.1.gz
|
||||
rm -rf /usr/share/${APP}
|
||||
rm -f /usr/bin/${APP}
|
||||
rm -f /usr/share/applications/${APP}.desktop
|
||||
rm -f /usr/share/icons/hicolor/scalable/apps/${APP}.svg
|
||||
/usr/share/pixmaps/${APP}.svg
|
||||
rm -f ${PREFIX}/share/man/man1/${APP}.1.gz
|
||||
rm -rf ${PREFIX}/share/${APP}
|
||||
rm -f ${PREFIX}/bin/${APP}
|
||||
rm -f ${PREFIX}/share/applications/${APP}.desktop
|
||||
rm -f ${PREFIX}/share/icons/hicolor/scalable/apps/${APP}.svg
|
||||
rm -f ${PREFIX}/share/pixmaps/${APP}.svg
|
||||
clean:
|
||||
rm -f ${APP} \#* \.#* gnuplot* *.png debian/*.substvars debian/*.log
|
||||
rm -fr deb.* debian/${APP} rpmpackage/${ARCH_TYPE}
|
||||
rm -f ../${APP}*.deb ../${APP}*.changes ../${APP}*.asc ../${APP}*.dsc
|
||||
rm -f rpmpackage/*.src.rpm archpackage/*.gz archpackage/*.xz
|
||||
rm -f puppypackage/*.gz puppypackage/*.pet slackpackage/*.txz
|
||||
rm -f puppypackage/*.gz puppypackage/*.pet slackpackage/*.txz
|
||||
|
|
|
@ -7,7 +7,7 @@ arch=('i686' 'x86_64')
|
|||
url="https://github.com/Bitmessage/PyBitmessage"
|
||||
license=('MIT')
|
||||
groups=()
|
||||
depends=('python2' 'qt4' 'python2-pyqt4' 'sqlite' 'openssl')
|
||||
depends=('python2' 'qt4' 'python2-pyqt4' 'sqlite' 'openssl' 'gst123')
|
||||
makedepends=()
|
||||
optdepends=('python2-gevent')
|
||||
provides=()
|
||||
|
@ -27,5 +27,5 @@ build() {
|
|||
}
|
||||
package() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
make DESTDIR="$pkgdir/" install
|
||||
make DESTDIR="$pkgdir/" PREFIX="/usr" install
|
||||
}
|
||||
|
|
4
debian/control
vendored
4
debian/control
vendored
|
@ -4,12 +4,12 @@ Maintainer: Bob Mottram (4096 bits) <bob@robotics.uk.to>
|
|||
Build-Depends: debhelper (>= 9.0.0)
|
||||
Standards-Version: 3.9.4
|
||||
Homepage: https://github.com/Bitmessage/PyBitmessage
|
||||
Vcs-Git: https://github.com/fuzzgun/fin.git
|
||||
Vcs-Git: https://github.com/Bitmessage/PyBitmessage.git
|
||||
|
||||
Package: pybitmessage
|
||||
Section: mail
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, python (>= 2.7.0), openssl, python-qt4, libqt4-dev (>= 4.8.0), python-qt4-dev, sqlite3, libsqlite3-dev
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, python (>= 2.7.0), openssl, python-qt4, libqt4-dev (>= 4.8.0), python-qt4-dev, sqlite3, libsqlite3-dev, gst123
|
||||
Suggests: libmessaging-menu-dev
|
||||
Description: Send encrypted messages
|
||||
Bitmessage is a P2P communications protocol used to send encrypted
|
||||
|
|
3
debian/rules
vendored
3
debian/rules
vendored
|
@ -1,6 +1,7 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
APP=pybitmessage
|
||||
PREFIX=/usr
|
||||
build: build-stamp
|
||||
make
|
||||
build-arch: build-stamp
|
||||
|
@ -20,7 +21,7 @@ install: build clean
|
|||
dh_testroot
|
||||
dh_prep
|
||||
dh_installdirs
|
||||
${MAKE} install -B DESTDIR=${CURDIR}/debian/${APP}
|
||||
${MAKE} install -B DESTDIR=${CURDIR}/debian/${APP} PREFIX=/usr
|
||||
binary-indep: build install
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
|
|
|
@ -1,22 +1,32 @@
|
|||
# $Header: $
|
||||
|
||||
EAPI=4
|
||||
EAPI=5
|
||||
|
||||
inherit git-2 python-r1
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
PYTHON_REQ_USE="sqlite"
|
||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
|
||||
DESCRIPTION="Bitmessage is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication which means that the sender of a message cannot be spoofed, and it aims to hide "non-content" data, like the sender and receiver of messages, from passive eavesdroppers like those running warrantless wiretapping programs."
|
||||
HOMEPAGE="https://github.com/Bitmessage/PyBitmessage"
|
||||
SRC_URI="${PN}/${P}.tar.gz"
|
||||
EGIT_REPO_URI="https://github.com/Bitmessage/PyBitmessage.git"
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="x86"
|
||||
RDEPEND="dev-libs/popt"
|
||||
DEPEND="${RDEPEND}"
|
||||
DEPEND="dev-libs/popt
|
||||
${PYTHON_DEPS}"
|
||||
RDEPEND="${DEPEND}
|
||||
dev-libs/openssl
|
||||
dev-python/PyQt4[]"
|
||||
|
||||
src_configure() {
|
||||
econf --with-popt
|
||||
}
|
||||
|
||||
src_compile() { :; }
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" install
|
||||
emake DESTDIR="${D}" PREFIX="/usr" install
|
||||
# Install README and (Debian) changelog
|
||||
dodoc README.md debian/changelog
|
||||
}
|
||||
|
|
|
@ -4,4 +4,4 @@
|
|||
|
||||
rm -f Makefile rpmpackage/*.spec
|
||||
|
||||
packagemonkey -n "PyBitmessage" --version "0.3.4" --dir "." -l "mit" -e "Bob Mottram (4096 bits) <bob@robotics.uk.to>" --brief "Send encrypted messages" --desc "Bitmessage is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication which means that the sender of a message cannot be spoofed, and it aims to hide \"non-content\" data, like the sender and receiver of messages, from passive eavesdroppers like those running warrantless wiretapping programs." --homepage "https://github.com/Bitmessage/PyBitmessage" --section "mail" --categories "Office/Email" --dependsdeb "python (>= 2.7.0), openssl, python-qt4, libqt4-dev (>= 4.8.0), python-qt4-dev, sqlite3, libsqlite3-dev" --dependsrpm "python, PyQt4, openssl-compat-bitcoin-libs" --mainscript "bitmessagemain.py" --librarypath "/opt/openssl-compat-bitcoin/lib/" --suggestsdeb "libmessaging-menu-dev" --dependspuppy "openssl, python-qt4, sqlite3, sqlite3-dev, python-openssl, python-sip" --dependsarch "python2, qt4, python2-pyqt4, sqlite, openssl" --suggestsarch "python2-gevent" --pythonversion 2
|
||||
packagemonkey -n "PyBitmessage" --version "0.3.4" --dir "." -l "mit" -e "Bob Mottram (4096 bits) <bob@robotics.uk.to>" --brief "Send encrypted messages" --desc "Bitmessage is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication which means that the sender of a message cannot be spoofed, and it aims to hide \"non-content\" data, like the sender and receiver of messages, from passive eavesdroppers like those running warrantless wiretapping programs." --homepage "https://github.com/Bitmessage/PyBitmessage" --section "mail" --categories "Office/Email" --dependsdeb "python (>= 2.7.0), openssl, python-qt4, libqt4-dev (>= 4.8.0), python-qt4-dev, sqlite3, libsqlite3-dev, gst123" --dependsrpm "python, PyQt4, openssl-compat-bitcoin-libs, gst123" --mainscript "bitmessagemain.py" --librarypath "/opt/openssl-compat-bitcoin/lib/" --suggestsdeb "libmessaging-menu-dev" --dependspuppy "openssl, python-qt4, sqlite3, sqlite3-dev, python-openssl, python-sip, gst123" --dependsarch "python2, qt4, python2-pyqt4, sqlite, openssl, gst123" --suggestsarch "python2-gevent" --pythonversion 2 --dependsebuild "dev-libs/openssl, dev-python/PyQt4[${PYTHON_USEDEP}]" --buildebuild "\${PYTHON_DEPS}" --pythonreq "sqlite" --repository "https://github.com/Bitmessage/PyBitmessage.git"
|
||||
|
|
2
puppy.sh
2
puppy.sh
|
@ -27,7 +27,7 @@ mkdir -p ${PROJECTDIR}
|
|||
# Build the project
|
||||
make clean
|
||||
make
|
||||
make install -B DESTDIR=${PROJECTDIR}
|
||||
make install -B DESTDIR=${PROJECTDIR} PREFIX=/usr
|
||||
|
||||
# Alter the desktop file categories
|
||||
sed -i "s/Categories=Office;Email;/Categories=Internet;mailnews;/g" ${PROJECTDIR}/usr/share/applications/${APP}.desktop
|
||||
|
|
|
@ -1 +1 @@
|
|||
pybitmessage-0.3.4-1|PyBitmessage|0.3.4|1|Internet;mailnews;|5.1M||pybitmessage-0.3.4-1.pet|+openssl,+python-qt4,+sqlite3,+sqlite3-dev,+python-openssl,+python-sip|Send encrypted messages|ubuntu|precise|5|
|
||||
pybitmessage-0.3.4-1|PyBitmessage|0.3.4|1|Internet;mailnews;|5.8M||pybitmessage-0.3.4-1.pet|+openssl,+python-qt4,+sqlite3,+sqlite3-dev,+python-openssl,+python-sip,+gst123|Send encrypted messages|ubuntu|precise|5|
|
||||
|
|
|
@ -8,7 +8,7 @@ Packager: Bob Mottram (4096 bits) <bob@robotics.uk.to>
|
|||
Source0: http://yourdomainname.com/src/%{name}_%{version}.orig.tar.gz
|
||||
Group: Office/Email
|
||||
|
||||
Requires: python, PyQt4, openssl-compat-bitcoin-libs
|
||||
Requires: python, PyQt4, openssl-compat-bitcoin-libs, gst123
|
||||
|
||||
|
||||
%description
|
||||
|
@ -48,7 +48,7 @@ mkdir -p %{buildroot}/usr/share/pixmaps
|
|||
mkdir -p %{buildroot}/usr/share/icons/hicolor/scalable
|
||||
mkdir -p %{buildroot}/usr/share/icons/hicolor/scalable/apps
|
||||
# Make install but to the RPM BUILDROOT directory
|
||||
make install -B DESTDIR=%{buildroot}
|
||||
make install -B DESTDIR=%{buildroot} PREFIX=/usr
|
||||
|
||||
%files
|
||||
%doc README.md LICENSE
|
||||
|
|
2
slack.sh
2
slack.sh
|
@ -28,7 +28,7 @@ mkdir -p ${PROJECTDIR}
|
|||
# Build the project
|
||||
make clean
|
||||
make
|
||||
make install -B DESTDIR=${PROJECTDIR}
|
||||
make install -B DESTDIR=${PROJECTDIR} PREFIX=/usr
|
||||
|
||||
# Copy the slack-desc and doinst.sh files into the build install directory
|
||||
mkdir ${PROJECTDIR}/install
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
# The software version variable is now held in shared.py
|
||||
|
||||
#import ctypes
|
||||
# import ctypes
|
||||
try:
|
||||
from gevent import monkey
|
||||
monkey.patch_all()
|
||||
|
@ -36,7 +36,7 @@ import helper_bootstrap
|
|||
|
||||
import sys
|
||||
if sys.platform == 'darwin':
|
||||
if float( "{1}.{2}".format(*sys.version_info) ) < 7.5:
|
||||
if float("{1}.{2}".format(*sys.version_info)) < 7.5:
|
||||
print "You should use python 2.7.5 or greater."
|
||||
print "Your version: {0}.{1}.{2}".format(*sys.version_info)
|
||||
sys.exit(0)
|
||||
|
@ -56,8 +56,6 @@ def connectToStream(streamNumber):
|
|||
# This is one of several classes that constitute the API
|
||||
# This class was written by Vaibhav Bhatia. Modified by Jonathan Warren (Atheros).
|
||||
# http://code.activestate.com/recipes/501148-xmlrpc-serverclient-which-does-cookie-handling-and/
|
||||
|
||||
|
||||
class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
||||
|
||||
def do_POST(self):
|
||||
|
@ -342,7 +340,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
msgid, toAddress, fromAddress, subject, received, message, encodingtype = row
|
||||
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
|
||||
message = shared.fixPotentiallyInvalidUTF8Data(message)
|
||||
data += json.dumps({'msgid':msgid.encode('hex'),'toAddress':toAddress,'fromAddress':fromAddress,'subject':subject.encode('base64'),'message':message.encode('base64'),'encodingType':encodingtype,'receivedTime':received},indent=4, separators=(',', ': '))
|
||||
data += json.dumps({'msgid':msgid.encode('hex'), 'toAddress':toAddress, 'fromAddress':fromAddress, 'subject':subject.encode('base64'), 'message':message.encode('base64'), 'encodingType':encodingtype, 'receivedTime':received}, indent=4, separators=(',', ': '))
|
||||
data += ']}'
|
||||
return data
|
||||
elif method == 'getAllSentMessages':
|
||||
|
@ -358,7 +356,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
message = shared.fixPotentiallyInvalidUTF8Data(message)
|
||||
if len(data) > 25:
|
||||
data += ','
|
||||
data += json.dumps({'msgid':msgid.encode('hex'),'toAddress':toAddress,'fromAddress':fromAddress,'subject':subject.encode('base64'),'message':message.encode('base64'),'encodingType':encodingtype,'lastActionTime':lastactiontime,'status':status,'ackData':ackdata.encode('hex')},indent=4, separators=(',', ': '))
|
||||
data += json.dumps({'msgid':msgid.encode('hex'), 'toAddress':toAddress, 'fromAddress':fromAddress, 'subject':subject.encode('base64'), 'message':message.encode('base64'), 'encodingType':encodingtype, 'lastActionTime':lastactiontime, 'status':status, 'ackData':ackdata.encode('hex')}, indent=4, separators=(',', ': '))
|
||||
data += ']}'
|
||||
return data
|
||||
elif method == 'getInboxMessagesByAddress':
|
||||
|
@ -373,12 +371,12 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
shared.sqlLock.release()
|
||||
data = '{"inboxMessages":['
|
||||
for row in queryreturn:
|
||||
msgid, toAddress, fromAddress, subject, received, message, encodingtype= row
|
||||
msgid, toAddress, fromAddress, subject, received, message, encodingtype = row
|
||||
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
|
||||
message = shared.fixPotentiallyInvalidUTF8Data(message)
|
||||
if len(data) > 25:
|
||||
data += ','
|
||||
data += json.dumps({'msgid':msgid.encode('hex'),'toAddress':toAddress,'fromAddress':fromAddress,'subject':subject.encode('base64'),'message':message.encode('base64'),'encodingType':encodingtype,'receivedTime':received},indent=4, separators=(',', ': '))
|
||||
data += json.dumps({'msgid':msgid.encode('hex'), 'toAddress':toAddress, 'fromAddress':fromAddress, 'subject':subject.encode('base64'), 'message':message.encode('base64'), 'encodingType':encodingtype, 'receivedTime':received}, indent=4, separators=(',', ': '))
|
||||
data += ']}'
|
||||
return data
|
||||
elif method == 'getSentMessageById':
|
||||
|
@ -396,7 +394,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
msgid, toAddress, fromAddress, subject, lastactiontime, message, encodingtype, status, ackdata = row
|
||||
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
|
||||
message = shared.fixPotentiallyInvalidUTF8Data(message)
|
||||
data += json.dumps({'msgid':msgid.encode('hex'),'toAddress':toAddress,'fromAddress':fromAddress,'subject':subject.encode('base64'),'message':message.encode('base64'),'encodingType':encodingtype,'lastActionTime':lastactiontime,'status':status,'ackData':ackdata.encode('hex')},indent=4, separators=(',', ': '))
|
||||
data += json.dumps({'msgid':msgid.encode('hex'), 'toAddress':toAddress, 'fromAddress':fromAddress, 'subject':subject.encode('base64'), 'message':message.encode('base64'), 'encodingType':encodingtype, 'lastActionTime':lastactiontime, 'status':status, 'ackData':ackdata.encode('hex')}, indent=4, separators=(',', ': '))
|
||||
data += ']}'
|
||||
return data
|
||||
elif method == 'getSentMessagesByAddress':
|
||||
|
@ -416,7 +414,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
message = shared.fixPotentiallyInvalidUTF8Data(message)
|
||||
if len(data) > 25:
|
||||
data += ','
|
||||
data += json.dumps({'msgid':msgid.encode('hex'),'toAddress':toAddress,'fromAddress':fromAddress,'subject':subject.encode('base64'),'message':message.encode('base64'),'encodingType':encodingtype,'lastActionTime':lastactiontime,'status':status,'ackData':ackdata.encode('hex')},indent=4, separators=(',', ': '))
|
||||
data += json.dumps({'msgid':msgid.encode('hex'), 'toAddress':toAddress, 'fromAddress':fromAddress, 'subject':subject.encode('base64'), 'message':message.encode('base64'), 'encodingType':encodingtype, 'lastActionTime':lastactiontime, 'status':status, 'ackData':ackdata.encode('hex')}, indent=4, separators=(',', ': '))
|
||||
data += ']}'
|
||||
return data
|
||||
elif method == 'getSentMessageByAckData':
|
||||
|
@ -434,7 +432,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
msgid, toAddress, fromAddress, subject, lastactiontime, message, encodingtype, status, ackdata = row
|
||||
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
|
||||
message = shared.fixPotentiallyInvalidUTF8Data(message)
|
||||
data += json.dumps({'msgid':msgid.encode('hex'),'toAddress':toAddress,'fromAddress':fromAddress,'subject':subject.encode('base64'),'message':message.encode('base64'),'encodingType':encodingtype,'lastActionTime':lastactiontime,'status':status,'ackData':ackdata.encode('hex')},indent=4, separators=(',', ': '))
|
||||
data += json.dumps({'msgid':msgid.encode('hex'), 'toAddress':toAddress, 'fromAddress':fromAddress, 'subject':subject.encode('base64'), 'message':message.encode('base64'), 'encodingType':encodingtype, 'lastActionTime':lastactiontime, 'status':status, 'ackData':ackdata.encode('hex')}, indent=4, separators=(',', ': '))
|
||||
data += ']}'
|
||||
return data
|
||||
elif (method == 'trashMessage') or (method == 'trashInboxMessage'):
|
||||
|
@ -454,7 +452,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
shared.sqlReturnQueue.get()
|
||||
shared.sqlSubmitQueue.put('commit')
|
||||
shared.sqlLock.release()
|
||||
#shared.UISignalQueue.put(('removeSentRowByMsgid',msgid)) This function doesn't exist yet.
|
||||
# shared.UISignalQueue.put(('removeSentRowByMsgid',msgid)) This function doesn't exist yet.
|
||||
return 'Trashed sent message (assuming message existed).'
|
||||
elif method == 'sendMessage':
|
||||
if len(params) == 0:
|
||||
|
@ -513,7 +511,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
return 'API Error 0014: Your fromAddress is disabled. Cannot send.'
|
||||
|
||||
ackdata = OpenSSL.rand(32)
|
||||
|
||||
|
||||
t = ('', toAddress, toRipe, fromAddress, subject, message, ackdata, int(
|
||||
time.time()), 'msgqueued', 1, 1, 'sent', 2)
|
||||
helper_sent.insert(t)
|
||||
|
@ -577,7 +575,7 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
|||
toAddress = '[Broadcast subscribers]'
|
||||
ripe = ''
|
||||
|
||||
|
||||
|
||||
t = ('', toAddress, ripe, fromAddress, subject, message, ackdata, int(
|
||||
time.time()), 'broadcastqueued', 1, 1, 'sent', 2)
|
||||
helper_sent.insert(t)
|
||||
|
@ -719,8 +717,6 @@ if __name__ == "__main__":
|
|||
# signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||
|
||||
helper_bootstrap.knownNodes()
|
||||
helper_bootstrap.dns()
|
||||
|
||||
# Start the address generation thread
|
||||
addressGeneratorThread = addressGenerator()
|
||||
addressGeneratorThread.daemon = True # close the main program even if there are threads left
|
||||
|
@ -758,13 +754,6 @@ if __name__ == "__main__":
|
|||
singleAPIThread = singleAPI()
|
||||
singleAPIThread.daemon = True # close the main program even if there are threads left
|
||||
singleAPIThread.start()
|
||||
# self.singleAPISignalHandlerThread = singleAPISignalHandler()
|
||||
# self.singleAPISignalHandlerThread.start()
|
||||
# QtCore.QObject.connect(self.singleAPISignalHandlerThread, QtCore.SIGNAL("updateStatusBar(PyQt_PyObject)"), self.updateStatusBar)
|
||||
# QtCore.QObject.connect(self.singleAPISignalHandlerThread, QtCore.SIGNAL("passAddressGeneratorObjectThrough(PyQt_PyObject)"), self.connectObjectToAddressGeneratorSignals)
|
||||
# QtCore.QObject.connect(self.singleAPISignalHandlerThread,
|
||||
# QtCore.SIGNAL("displayNewSentMessage(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"),
|
||||
# self.displayNewSentMessage)
|
||||
|
||||
connectToStream(1)
|
||||
|
||||
|
@ -784,6 +773,7 @@ if __name__ == "__main__":
|
|||
import bitmessageqt
|
||||
bitmessageqt.run()
|
||||
else:
|
||||
shared.config.remove_option('bitmessagesettings', 'dontconnect')
|
||||
with shared.printLock:
|
||||
print 'Running as a daemon. You can use Ctrl+C to exit.'
|
||||
|
||||
|
|
|
@ -17,11 +17,13 @@ from bitmessageui import *
|
|||
from newaddressdialog import *
|
||||
from newsubscriptiondialog import *
|
||||
from regenerateaddresses import *
|
||||
from newchandialog import *
|
||||
from specialaddressbehavior import *
|
||||
from settings import *
|
||||
from about import *
|
||||
from help import *
|
||||
from iconglossary import *
|
||||
from connect import *
|
||||
import sys
|
||||
from time import strftime, localtime, gmtime
|
||||
import time
|
||||
|
@ -29,11 +31,16 @@ import os
|
|||
from pyelliptic.openssl import OpenSSL
|
||||
import pickle
|
||||
import platform
|
||||
import debug
|
||||
from debug import logger
|
||||
import subprocess
|
||||
|
||||
|
||||
try:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
except Exception as err:
|
||||
print 'PyBitmessage requires PyQt unless you want to run it as a daemon and interact with it using the API. You can download it from http://www.riverbankcomputing.com/software/pyqt/download or by searching Google for \'PyQt Download\' (without quotes).'
|
||||
print 'Error message:', err
|
||||
|
@ -50,7 +57,16 @@ def _translate(context, text):
|
|||
|
||||
class MyForm(QtGui.QMainWindow):
|
||||
|
||||
# sound type constants
|
||||
SOUND_NONE = 0
|
||||
SOUND_KNOWN = 1
|
||||
SOUND_UNKNOWN = 2
|
||||
SOUND_CONNECTED = 3
|
||||
SOUND_DISCONNECTED = 4
|
||||
SOUND_CONNECTION_GREEN = 5
|
||||
|
||||
str_broadcast_subscribers = '[Broadcast subscribers]'
|
||||
str_chan = '[chan]'
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
|
@ -103,6 +119,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
"triggered()"), self.click_actionDeleteAllTrashedMessages)
|
||||
QtCore.QObject.connect(self.ui.actionRegenerateDeterministicAddresses, QtCore.SIGNAL(
|
||||
"triggered()"), self.click_actionRegenerateDeterministicAddresses)
|
||||
QtCore.QObject.connect(self.ui.actionJoinChan, QtCore.SIGNAL(
|
||||
"triggered()"), self.click_actionJoinChan) # also used for creating chans.
|
||||
QtCore.QObject.connect(self.ui.pushButtonNewAddress, QtCore.SIGNAL(
|
||||
"clicked()"), self.click_NewAddressDialog)
|
||||
QtCore.QObject.connect(self.ui.comboBoxSendFrom, QtCore.SIGNAL(
|
||||
|
@ -291,6 +309,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
newItem = QtGui.QTableWidgetItem(addressInKeysFile)
|
||||
newItem.setFlags(
|
||||
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
if shared.safeConfigGetBoolean(addressInKeysFile, 'chan'):
|
||||
newItem.setTextColor(QtGui.QColor(216, 119, 0)) # orange
|
||||
if not isEnabled:
|
||||
newItem.setTextColor(QtGui.QColor(128, 128, 128))
|
||||
if shared.safeConfigGetBoolean(addressInKeysFile, 'mailinglist'):
|
||||
|
@ -405,6 +425,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
|
||||
self.rerenderComboBoxSendFrom()
|
||||
|
||||
|
||||
|
||||
# Show or hide the application window after clicking an item within the
|
||||
# tray icon or, on Windows, the try icon itself.
|
||||
def appIndicatorShowOrHideWindow(self):
|
||||
|
@ -592,6 +614,9 @@ class MyForm(QtGui.QMainWindow):
|
|||
elif status == 'msgsent':
|
||||
statusText = _translate("MainWindow", "Message sent. Waiting on acknowledgement. Sent at %1").arg(
|
||||
unicode(strftime(shared.config.get('bitmessagesettings', 'timeformat'), localtime(lastactiontime)),'utf-8'))
|
||||
elif status == 'msgsentnoackexpected':
|
||||
statusText = _translate("MainWindow", "Message sent. Sent at %1").arg(
|
||||
unicode(strftime(shared.config.get('bitmessagesettings', 'timeformat'), localtime(lastactiontime)),'utf-8'))
|
||||
elif status == 'doingmsgpow':
|
||||
statusText = _translate(
|
||||
"MainWindow", "Need to do work to send message. Work is queued.")
|
||||
|
@ -707,6 +732,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
newItem.setData(Qt.UserRole, str(toAddress))
|
||||
if shared.safeConfigGetBoolean(toAddress, 'mailinglist'):
|
||||
newItem.setTextColor(QtGui.QColor(137, 04, 177))
|
||||
if shared.safeConfigGetBoolean(str(toAddress), 'chan'):
|
||||
newItem.setTextColor(QtGui.QColor(216, 119, 0)) # orange
|
||||
self.ui.tableWidgetInbox.setItem(0, 0, newItem)
|
||||
if fromLabel == '':
|
||||
newItem = QtGui.QTableWidgetItem(
|
||||
|
@ -952,6 +979,57 @@ class MyForm(QtGui.QMainWindow):
|
|||
# update the menu entries
|
||||
self.ubuntuMessagingMenuUnread(drawAttention)
|
||||
|
||||
# play a sound
|
||||
def playSound(self, category, label):
|
||||
soundFilename = None
|
||||
|
||||
if label is not None:
|
||||
# does a sound file exist for this particular contact?
|
||||
if (os.path.isfile(shared.appdata + 'sounds/' + label + '.wav') or
|
||||
os.path.isfile(shared.appdata + 'sounds/' + label + '.mp3')):
|
||||
soundFilename = shared.appdata + 'sounds/' + label
|
||||
|
||||
if soundFilename is None:
|
||||
if category is self.SOUND_KNOWN:
|
||||
soundFilename = shared.appdata + 'sounds/known'
|
||||
elif category is self.SOUND_UNKNOWN:
|
||||
soundFilename = shared.appdata + 'sounds/unknown'
|
||||
elif category is self.SOUND_CONNECTED:
|
||||
soundFilename = shared.appdata + 'sounds/connected'
|
||||
elif category is self.SOUND_DISCONNECTED:
|
||||
soundFilename = shared.appdata + 'sounds/disconnected'
|
||||
elif category is self.SOUND_CONNECTION_GREEN:
|
||||
soundFilename = shared.appdata + 'sounds/green'
|
||||
|
||||
if soundFilename is not None:
|
||||
# if not wav then try mp3 format
|
||||
if not os.path.isfile(soundFilename + '.wav'):
|
||||
soundFilename = soundFilename + '.mp3'
|
||||
else:
|
||||
soundFilename = soundFilename + '.wav'
|
||||
|
||||
if os.path.isfile(soundFilename):
|
||||
if 'linux' in sys.platform:
|
||||
# Note: QSound was a nice idea but it didn't work
|
||||
if '.mp3' in soundFilename:
|
||||
try:
|
||||
subprocess.call(["gst123", soundFilename],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE)
|
||||
except:
|
||||
print "WARNING: gst123 must be installed in order to play mp3 sounds"
|
||||
else:
|
||||
try:
|
||||
subprocess.call(["aplay", soundFilename],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE)
|
||||
except:
|
||||
print "WARNING: aplay must be installed in order to play WAV sounds"
|
||||
elif sys.platform[0:3] == 'win':
|
||||
# use winsound on Windows
|
||||
import winsound
|
||||
winsound.PlaySound(soundFilename, winsound.SND_FILENAME)
|
||||
|
||||
# initialise the message notifier
|
||||
def notifierInit(self):
|
||||
global withMessagingMenu
|
||||
|
@ -959,8 +1037,11 @@ class MyForm(QtGui.QMainWindow):
|
|||
Notify.init('pybitmessage')
|
||||
|
||||
# shows a notification
|
||||
def notifierShow(self, title, subtitle):
|
||||
def notifierShow(self, title, subtitle, fromCategory, label):
|
||||
global withMessagingMenu
|
||||
|
||||
self.playSound(fromCategory, label);
|
||||
|
||||
if withMessagingMenu:
|
||||
n = Notify.Notification.new(
|
||||
title, subtitle, 'notification-message-email')
|
||||
|
@ -1030,6 +1111,68 @@ class MyForm(QtGui.QMainWindow):
|
|||
), self.regenerateAddressesDialogInstance.ui.lineEditPassphrase.text().toUtf8(), self.regenerateAddressesDialogInstance.ui.checkBoxEighteenByteRipe.isChecked()))
|
||||
self.ui.tabWidget.setCurrentIndex(3)
|
||||
|
||||
def click_actionJoinChan(self):
|
||||
self.newChanDialogInstance = newChanDialog(self)
|
||||
if self.newChanDialogInstance.exec_():
|
||||
if self.newChanDialogInstance.ui.radioButtonCreateChan.isChecked():
|
||||
if self.newChanDialogInstance.ui.lineEditChanNameCreate.text() == "":
|
||||
QMessageBox.about(self, _translate("MainWindow", "Chan name needed"), _translate(
|
||||
"MainWindow", "You didn't enter a chan name."))
|
||||
return
|
||||
shared.apiAddressGeneratorReturnQueue.queue.clear()
|
||||
shared.addressGeneratorQueue.put(('createChan', 3, 1, self.str_chan + ' ' + str(self.newChanDialogInstance.ui.lineEditChanNameCreate.text().toUtf8()), self.newChanDialogInstance.ui.lineEditChanNameCreate.text().toUtf8()))
|
||||
addressGeneratorReturnValue = shared.apiAddressGeneratorReturnQueue.get()
|
||||
print 'addressGeneratorReturnValue', addressGeneratorReturnValue
|
||||
if len(addressGeneratorReturnValue) == 0:
|
||||
QMessageBox.about(self, _translate("MainWindow", "Address already present"), _translate(
|
||||
"MainWindow", "Could not add chan because it appears to already be one of your identities."))
|
||||
return
|
||||
createdAddress = addressGeneratorReturnValue[0]
|
||||
self.addEntryToAddressBook(createdAddress, self.str_chan + ' ' + str(self.newChanDialogInstance.ui.lineEditChanNameCreate.text().toUtf8()))
|
||||
QMessageBox.about(self, _translate("MainWindow", "Success"), _translate(
|
||||
"MainWindow", "Successfully created chan. To let others join your chan, give them the chan name and this Bitmessage address: %1. This address also appears in 'Your Identities'.").arg(createdAddress))
|
||||
self.ui.tabWidget.setCurrentIndex(3)
|
||||
elif self.newChanDialogInstance.ui.radioButtonJoinChan.isChecked():
|
||||
if self.newChanDialogInstance.ui.lineEditChanNameJoin.text() == "":
|
||||
QMessageBox.about(self, _translate("MainWindow", "Chan name needed"), _translate(
|
||||
"MainWindow", "You didn't enter a chan name."))
|
||||
return
|
||||
if decodeAddress(self.newChanDialogInstance.ui.lineEditChanBitmessageAddress.text())[0] == 'versiontoohigh':
|
||||
QMessageBox.about(self, _translate("MainWindow", "Address too new"), _translate(
|
||||
"MainWindow", "Although that Bitmessage address might be valid, its version number is too new for us to handle. Perhaps you need to upgrade Bitmessage."))
|
||||
return
|
||||
if decodeAddress(self.newChanDialogInstance.ui.lineEditChanBitmessageAddress.text())[0] != 'success':
|
||||
QMessageBox.about(self, _translate("MainWindow", "Address invalid"), _translate(
|
||||
"MainWindow", "That Bitmessage address is not valid."))
|
||||
return
|
||||
shared.apiAddressGeneratorReturnQueue.queue.clear()
|
||||
shared.addressGeneratorQueue.put(('joinChan', addBMIfNotPresent(self.newChanDialogInstance.ui.lineEditChanBitmessageAddress.text()), self.str_chan + ' ' + str(self.newChanDialogInstance.ui.lineEditChanNameJoin.text().toUtf8()), self.newChanDialogInstance.ui.lineEditChanNameJoin.text().toUtf8()))
|
||||
addressGeneratorReturnValue = shared.apiAddressGeneratorReturnQueue.get()
|
||||
print 'addressGeneratorReturnValue', addressGeneratorReturnValue
|
||||
if addressGeneratorReturnValue == 'chan name does not match address':
|
||||
QMessageBox.about(self, _translate("MainWindow", "Address does not match chan name"), _translate(
|
||||
"MainWindow", "Although the Bitmessage address you entered was valid, it doesn\'t match the chan name."))
|
||||
return
|
||||
if len(addressGeneratorReturnValue) == 0:
|
||||
QMessageBox.about(self, _translate("MainWindow", "Address already present"), _translate(
|
||||
"MainWindow", "Could not add chan because it appears to already be one of your identities."))
|
||||
return
|
||||
createdAddress = addressGeneratorReturnValue[0]
|
||||
self.addEntryToAddressBook(createdAddress, self.str_chan + ' ' + str(self.newChanDialogInstance.ui.lineEditChanNameJoin.text()))
|
||||
QMessageBox.about(self, _translate("MainWindow", "Success"), _translate(
|
||||
"MainWindow", "Successfully joined chan. "))
|
||||
self.ui.tabWidget.setCurrentIndex(3)
|
||||
|
||||
def showConnectDialog(self):
|
||||
self.connectDialogInstance = connectDialog(self)
|
||||
if self.connectDialogInstance.exec_():
|
||||
if self.connectDialogInstance.ui.radioButtonConnectNow.isChecked():
|
||||
shared.config.remove_option('bitmessagesettings', 'dontconnect')
|
||||
with open(shared.appdata + 'keys.dat', 'wb') as configfile:
|
||||
shared.config.write(configfile)
|
||||
else:
|
||||
self.click_actionSettings()
|
||||
|
||||
def openKeysFile(self):
|
||||
if 'linux' in sys.platform:
|
||||
subprocess.call(["xdg-open", shared.appdata + 'keys.dat'])
|
||||
|
@ -1133,7 +1276,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
# if the connection is lost then show a notification
|
||||
if self.connected:
|
||||
self.notifierShow('Bitmessage', unicode(_translate(
|
||||
"MainWindow", "Connection lost").toUtf8(),'utf-8'))
|
||||
"MainWindow", "Connection lost").toUtf8(),'utf-8'),
|
||||
self.SOUND_DISCONNECTED, None)
|
||||
self.connected = False
|
||||
|
||||
if self.actionStatus is not None:
|
||||
|
@ -1150,7 +1294,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
# if a new connection has been established then show a notification
|
||||
if not self.connected:
|
||||
self.notifierShow('Bitmessage', unicode(_translate(
|
||||
"MainWindow", "Connected").toUtf8(),'utf-8'))
|
||||
"MainWindow", "Connected").toUtf8(),'utf-8'),
|
||||
self.SOUND_CONNECTED, None)
|
||||
self.connected = True
|
||||
|
||||
if self.actionStatus is not None:
|
||||
|
@ -1166,7 +1311,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
shared.statusIconColor = 'green'
|
||||
if not self.connected:
|
||||
self.notifierShow('Bitmessage', unicode(_translate(
|
||||
"MainWindow", "Connected").toUtf8(),'utf-8'))
|
||||
"MainWindow", "Connected").toUtf8(),'utf-8'),
|
||||
self.SOUND_CONNECTION_GREEN, None)
|
||||
self.connected = True
|
||||
|
||||
if self.actionStatus is not None:
|
||||
|
@ -1273,7 +1419,7 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.ui.tableWidgetInbox.item(i, 0).setTextColor(QtGui.QColor(137, 04, 177))
|
||||
else:
|
||||
self.ui.tableWidgetInbox.item(
|
||||
i, 0).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
i, 0).setTextColor(QApplication.palette().text().color())
|
||||
|
||||
def rerenderSentFromLabels(self):
|
||||
for i in range(self.ui.tableWidgetSent.rowCount()):
|
||||
|
@ -1377,12 +1523,11 @@ class MyForm(QtGui.QMainWindow):
|
|||
toAddress = addBMIfNotPresent(toAddress)
|
||||
try:
|
||||
shared.config.get(toAddress, 'enabled')
|
||||
# The toAddress is one owned by me. We cannot send
|
||||
# messages to ourselves without significant changes
|
||||
# to the codebase.
|
||||
QMessageBox.about(self, _translate("MainWindow", "Sending to your address"), _translate(
|
||||
"MainWindow", "Error: One of the addresses to which you are sending a message, %1, is yours. Unfortunately the Bitmessage client cannot process its own messages. Please try running a second client on a different computer or within a VM.").arg(toAddress))
|
||||
continue
|
||||
# The toAddress is one owned by me.
|
||||
if not shared.safeConfigGetBoolean(toAddress, 'chan'):
|
||||
QMessageBox.about(self, _translate("MainWindow", "Sending to your address"), _translate(
|
||||
"MainWindow", "Error: One of the addresses to which you are sending a message, %1, is yours. Unfortunately the Bitmessage client cannot process its own messages. Please try running a second client on a different computer or within a VM.").arg(toAddress))
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
if addressVersionNumber > 3 or addressVersionNumber <= 1:
|
||||
|
@ -1515,6 +1660,16 @@ class MyForm(QtGui.QMainWindow):
|
|||
def redrawLabelFrom(self, index):
|
||||
self.ui.labelFrom.setText(
|
||||
self.ui.comboBoxSendFrom.itemData(index).toPyObject())
|
||||
self.setBroadcastEnablementDependingOnWhetherThisIsAChanAddress(self.ui.comboBoxSendFrom.itemData(index).toPyObject())
|
||||
|
||||
def setBroadcastEnablementDependingOnWhetherThisIsAChanAddress(self, address):
|
||||
# If this is a chan then don't let people broadcast because no one
|
||||
# should subscribe to chan addresses.
|
||||
if shared.safeConfigGetBoolean(str(address), 'chan'):
|
||||
self.ui.radioButtonSpecific.click()
|
||||
self.ui.radioButtonBroadcast.setEnabled(False)
|
||||
else:
|
||||
self.ui.radioButtonBroadcast.setEnabled(True)
|
||||
|
||||
def rerenderComboBoxSendFrom(self):
|
||||
self.ui.comboBoxSendFrom.clear()
|
||||
|
@ -1631,6 +1786,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
newItem.setData(Qt.UserRole, str(toAddress))
|
||||
if shared.safeConfigGetBoolean(str(toAddress), 'mailinglist'):
|
||||
newItem.setTextColor(QtGui.QColor(137, 04, 177))
|
||||
if shared.safeConfigGetBoolean(str(toAddress), 'chan'):
|
||||
newItem.setTextColor(QtGui.QColor(216, 119, 0)) # orange
|
||||
self.ui.tableWidgetInbox.insertRow(0)
|
||||
self.ui.tableWidgetInbox.setItem(0, 0, newItem)
|
||||
|
||||
|
@ -1638,12 +1795,12 @@ class MyForm(QtGui.QMainWindow):
|
|||
newItem = QtGui.QTableWidgetItem(unicode(fromAddress, 'utf-8'))
|
||||
newItem.setToolTip(unicode(fromAddress, 'utf-8'))
|
||||
if shared.config.getboolean('bitmessagesettings', 'showtraynotifications'):
|
||||
self.notifierShow(unicode(_translate("MainWindow",'New Message').toUtf8(),'utf-8'), unicode(_translate("MainWindow",'From ').toUtf8(),'utf-8') + unicode(fromAddress, 'utf-8'))
|
||||
self.notifierShow(unicode(_translate("MainWindow",'New Message').toUtf8(),'utf-8'), unicode(_translate("MainWindow",'From ').toUtf8(),'utf-8') + unicode(fromAddress, 'utf-8'), self.SOUND_UNKNOWN, None)
|
||||
else:
|
||||
newItem = QtGui.QTableWidgetItem(unicode(fromLabel, 'utf-8'))
|
||||
newItem.setToolTip(unicode(unicode(fromLabel, 'utf-8')))
|
||||
if shared.config.getboolean('bitmessagesettings', 'showtraynotifications'):
|
||||
self.notifierShow(unicode(_translate("MainWindow",'New Message').toUtf8(),'utf-8'), unicode(_translate("MainWindow",'From ').toUtf8(),'utf-8') + unicode(fromLabel, 'utf-8'))
|
||||
self.notifierShow(unicode(_translate("MainWindow",'New Message').toUtf8(),'utf-8'), unicode(_translate("MainWindow",'From ').toUtf8(),'utf-8') + unicode(fromLabel, 'utf-8'), self.SOUND_KNOWN, unicode(fromLabel, 'utf-8'))
|
||||
newItem.setData(Qt.UserRole, str(fromAddress))
|
||||
newItem.setFont(font)
|
||||
self.ui.tableWidgetInbox.setItem(0, 1, newItem)
|
||||
|
@ -1670,45 +1827,47 @@ class MyForm(QtGui.QMainWindow):
|
|||
# First we must check to see if the address is already in the
|
||||
# address book. The user cannot add it again or else it will
|
||||
# cause problems when updating and deleting the entry.
|
||||
shared.sqlLock.acquire()
|
||||
t = (addBMIfNotPresent(str(
|
||||
self.NewSubscriptionDialogInstance.ui.lineEditSubscriptionAddress.text())),)
|
||||
shared.sqlSubmitQueue.put(
|
||||
'''select * from addressbook where address=?''')
|
||||
shared.sqlSubmitQueue.put(t)
|
||||
queryreturn = shared.sqlReturnQueue.get()
|
||||
shared.sqlLock.release()
|
||||
if queryreturn == []:
|
||||
self.ui.tableWidgetAddressBook.setSortingEnabled(False)
|
||||
self.ui.tableWidgetAddressBook.insertRow(0)
|
||||
newItem = QtGui.QTableWidgetItem(unicode(
|
||||
self.NewSubscriptionDialogInstance.ui.newsubscriptionlabel.text().toUtf8(), 'utf-8'))
|
||||
self.ui.tableWidgetAddressBook.setItem(0, 0, newItem)
|
||||
newItem = QtGui.QTableWidgetItem(addBMIfNotPresent(
|
||||
self.NewSubscriptionDialogInstance.ui.lineEditSubscriptionAddress.text()))
|
||||
newItem.setFlags(
|
||||
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
self.ui.tableWidgetAddressBook.setItem(0, 1, newItem)
|
||||
self.ui.tableWidgetAddressBook.setSortingEnabled(True)
|
||||
t = (str(self.NewSubscriptionDialogInstance.ui.newsubscriptionlabel.text().toUtf8()), addBMIfNotPresent(
|
||||
str(self.NewSubscriptionDialogInstance.ui.lineEditSubscriptionAddress.text())))
|
||||
shared.sqlLock.acquire()
|
||||
shared.sqlSubmitQueue.put(
|
||||
'''INSERT INTO addressbook VALUES (?,?)''')
|
||||
shared.sqlSubmitQueue.put(t)
|
||||
queryreturn = shared.sqlReturnQueue.get()
|
||||
shared.sqlSubmitQueue.put('commit')
|
||||
shared.sqlLock.release()
|
||||
self.rerenderInboxFromLabels()
|
||||
self.rerenderSentToLabels()
|
||||
else:
|
||||
self.statusBar().showMessage(_translate(
|
||||
"MainWindow", "Error: You cannot add the same address to your address book twice. Try renaming the existing one if you want."))
|
||||
address = addBMIfNotPresent(str(
|
||||
self.NewSubscriptionDialogInstance.ui.lineEditSubscriptionAddress.text()))
|
||||
label = self.NewSubscriptionDialogInstance.ui.newsubscriptionlabel.text().toUtf8()
|
||||
self.addEntryToAddressBook(address,label)
|
||||
else:
|
||||
self.statusBar().showMessage(_translate(
|
||||
"MainWindow", "The address you entered was invalid. Ignoring it."))
|
||||
|
||||
def addSubscription(self, label, address):
|
||||
def addEntryToAddressBook(self,address,label):
|
||||
shared.sqlLock.acquire()
|
||||
t = (address,)
|
||||
shared.sqlSubmitQueue.put(
|
||||
'''select * from addressbook where address=?''')
|
||||
shared.sqlSubmitQueue.put(t)
|
||||
queryreturn = shared.sqlReturnQueue.get()
|
||||
shared.sqlLock.release()
|
||||
if queryreturn == []:
|
||||
self.ui.tableWidgetAddressBook.setSortingEnabled(False)
|
||||
self.ui.tableWidgetAddressBook.insertRow(0)
|
||||
newItem = QtGui.QTableWidgetItem(unicode(label, 'utf-8'))
|
||||
self.ui.tableWidgetAddressBook.setItem(0, 0, newItem)
|
||||
newItem = QtGui.QTableWidgetItem(address)
|
||||
newItem.setFlags(
|
||||
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
self.ui.tableWidgetAddressBook.setItem(0, 1, newItem)
|
||||
self.ui.tableWidgetAddressBook.setSortingEnabled(True)
|
||||
t = (str(label), address)
|
||||
shared.sqlLock.acquire()
|
||||
shared.sqlSubmitQueue.put(
|
||||
'''INSERT INTO addressbook VALUES (?,?)''')
|
||||
shared.sqlSubmitQueue.put(t)
|
||||
queryreturn = shared.sqlReturnQueue.get()
|
||||
shared.sqlSubmitQueue.put('commit')
|
||||
shared.sqlLock.release()
|
||||
self.rerenderInboxFromLabels()
|
||||
self.rerenderSentToLabels()
|
||||
else:
|
||||
self.statusBar().showMessage(_translate(
|
||||
"MainWindow", "Error: You cannot add the same address to your address book twice. Try renaming the existing one if you want."))
|
||||
|
||||
def addSubscription(self, address, label):
|
||||
address = addBMIfNotPresent(address)
|
||||
#This should be handled outside of this function, for error displaying and such, but it must also be checked here.
|
||||
if shared.isAddressInMySubscriptionsList(address):
|
||||
|
@ -1745,7 +1904,7 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.statusBar().showMessage(_translate("MainWindow", "Error: You cannot add the same address to your subsciptions twice. Perhaps rename the existing one if you want."))
|
||||
return
|
||||
label = self.NewSubscriptionDialogInstance.ui.newsubscriptionlabel.text().toUtf8()
|
||||
self.addSubscription(label, address)
|
||||
self.addSubscription(address, label)
|
||||
|
||||
def loadBlackWhiteList(self):
|
||||
# Initialize the Blacklist or Whitelist table
|
||||
|
@ -1800,14 +1959,15 @@ class MyForm(QtGui.QMainWindow):
|
|||
shared.config.set('bitmessagesettings', 'startintray', str(
|
||||
self.settingsDialogInstance.ui.checkBoxStartInTray.isChecked()))
|
||||
if int(shared.config.get('bitmessagesettings', 'port')) != int(self.settingsDialogInstance.ui.lineEditTCPPort.text()):
|
||||
QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate(
|
||||
"MainWindow", "You must restart Bitmessage for the port number change to take effect."))
|
||||
if not shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
||||
QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate(
|
||||
"MainWindow", "You must restart Bitmessage for the port number change to take effect."))
|
||||
shared.config.set('bitmessagesettings', 'port', str(
|
||||
self.settingsDialogInstance.ui.lineEditTCPPort.text()))
|
||||
if shared.config.get('bitmessagesettings', 'socksproxytype') == 'none' and str(self.settingsDialogInstance.ui.comboBoxProxyType.currentText())[0:5] == 'SOCKS':
|
||||
if shared.statusIconColor != 'red':
|
||||
QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate(
|
||||
"MainWindow", "Bitmessage will use your proxy from now on but you may want to manually restart Bitmessage now to close existing connections."))
|
||||
"MainWindow", "Bitmessage will use your proxy from now on but you may want to manually restart Bitmessage now to close existing connections (if any)."))
|
||||
if shared.config.get('bitmessagesettings', 'socksproxytype')[0:5] == 'SOCKS' and str(self.settingsDialogInstance.ui.comboBoxProxyType.currentText()) == 'none':
|
||||
self.statusBar().showMessage('')
|
||||
shared.config.set('bitmessagesettings', 'socksproxytype', str(
|
||||
|
@ -1822,6 +1982,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.settingsDialogInstance.ui.lineEditSocksUsername.text()))
|
||||
shared.config.set('bitmessagesettings', 'sockspassword', str(
|
||||
self.settingsDialogInstance.ui.lineEditSocksPassword.text()))
|
||||
shared.config.set('bitmessagesettings', 'sockslisten', str(
|
||||
self.settingsDialogInstance.ui.checkBoxSocksListen.isChecked()))
|
||||
if float(self.settingsDialogInstance.ui.lineEditTotalDifficulty.text()) >= 1:
|
||||
shared.config.set('bitmessagesettings', 'defaultnoncetrialsperbyte', str(int(float(
|
||||
self.settingsDialogInstance.ui.lineEditTotalDifficulty.text()) * shared.networkDefaultProofOfWorkNonceTrialsPerByte)))
|
||||
|
@ -1874,7 +2036,14 @@ class MyForm(QtGui.QMainWindow):
|
|||
shared.knownNodesLock.release()
|
||||
os.remove(shared.appdata + 'keys.dat')
|
||||
os.remove(shared.appdata + 'knownnodes.dat')
|
||||
previousAppdataLocation = shared.appdata
|
||||
shared.appdata = ''
|
||||
debug.restartLoggingInUpdatedAppdataLocation()
|
||||
try:
|
||||
os.remove(previousAppdataLocation + 'debug.log')
|
||||
os.remove(previousAppdataLocation + 'debug.log.1')
|
||||
except:
|
||||
pass
|
||||
|
||||
if shared.appdata == '' and not self.settingsDialogInstance.ui.checkBoxPortableMode.isChecked(): # If we ARE using portable mode now but the user selected that we shouldn't...
|
||||
shared.appdata = shared.lookupAppdataFolder()
|
||||
|
@ -1894,6 +2063,12 @@ class MyForm(QtGui.QMainWindow):
|
|||
shared.knownNodesLock.release()
|
||||
os.remove('keys.dat')
|
||||
os.remove('knownnodes.dat')
|
||||
debug.restartLoggingInUpdatedAppdataLocation()
|
||||
try:
|
||||
os.remove('debug.log')
|
||||
os.remove('debug.log.1')
|
||||
except:
|
||||
pass
|
||||
|
||||
def click_radioButtonBlacklist(self):
|
||||
if shared.config.get('bitmessagesettings', 'blackwhitelist') == 'white':
|
||||
|
@ -1973,13 +2148,16 @@ class MyForm(QtGui.QMainWindow):
|
|||
currentRow = self.ui.tableWidgetYourIdentities.currentRow()
|
||||
addressAtCurrentRow = str(
|
||||
self.ui.tableWidgetYourIdentities.item(currentRow, 1).text())
|
||||
if shared.safeConfigGetBoolean(addressAtCurrentRow, 'chan'):
|
||||
return
|
||||
if self.dialog.ui.radioButtonBehaveNormalAddress.isChecked():
|
||||
shared.config.set(str(
|
||||
addressAtCurrentRow), 'mailinglist', 'false')
|
||||
# Set the color to either black or grey
|
||||
if shared.config.getboolean(addressAtCurrentRow, 'enabled'):
|
||||
self.ui.tableWidgetYourIdentities.item(
|
||||
currentRow, 1).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 1).setTextColor(QApplication.palette()
|
||||
.text().color())
|
||||
else:
|
||||
self.ui.tableWidgetYourIdentities.item(
|
||||
currentRow, 1).setTextColor(QtGui.QColor(128, 128, 128))
|
||||
|
@ -2006,12 +2184,6 @@ class MyForm(QtGui.QMainWindow):
|
|||
# address.'
|
||||
streamNumberForAddress = addressStream(
|
||||
self.dialog.ui.comboBoxExisting.currentText())
|
||||
|
||||
# self.addressGenerator = addressGenerator()
|
||||
# self.addressGenerator.setup(3,streamNumberForAddress,str(self.dialog.ui.newaddresslabel.text().toUtf8()),1,"",self.dialog.ui.checkBoxEighteenByteRipe.isChecked())
|
||||
# QtCore.QObject.connect(self.addressGenerator, SIGNAL("writeNewAddressToTable(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), self.writeNewAddressToTable)
|
||||
# QtCore.QObject.connect(self.addressGenerator, QtCore.SIGNAL("updateStatusBar(PyQt_PyObject)"), self.updateStatusBar)
|
||||
# self.addressGenerator.start()
|
||||
shared.addressGeneratorQueue.put(('createRandomAddress', 3, streamNumberForAddress, str(
|
||||
self.dialog.ui.newaddresslabel.text().toUtf8()), 1, "", self.dialog.ui.checkBoxEighteenByteRipe.isChecked()))
|
||||
else:
|
||||
|
@ -2023,11 +2195,6 @@ class MyForm(QtGui.QMainWindow):
|
|||
"MainWindow", "Choose a passphrase"), _translate("MainWindow", "You really do need a passphrase."))
|
||||
else:
|
||||
streamNumberForAddress = 1 # this will eventually have to be replaced by logic to determine the most available stream number.
|
||||
# self.addressGenerator = addressGenerator()
|
||||
# self.addressGenerator.setup(3,streamNumberForAddress,"unused address",self.dialog.ui.spinBoxNumberOfAddressesToMake.value(),self.dialog.ui.lineEditPassphrase.text().toUtf8(),self.dialog.ui.checkBoxEighteenByteRipe.isChecked())
|
||||
# QtCore.QObject.connect(self.addressGenerator, SIGNAL("writeNewAddressToTable(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), self.writeNewAddressToTable)
|
||||
# QtCore.QObject.connect(self.addressGenerator, QtCore.SIGNAL("updateStatusBar(PyQt_PyObject)"), self.updateStatusBar)
|
||||
# self.addressGenerator.start()
|
||||
shared.addressGeneratorQueue.put(('createDeterministicAddresses', 3, streamNumberForAddress, "unused deterministic address", self.dialog.ui.spinBoxNumberOfAddressesToMake.value(
|
||||
), self.dialog.ui.lineEditPassphrase.text().toUtf8(), self.dialog.ui.checkBoxEighteenByteRipe.isChecked()))
|
||||
else:
|
||||
|
@ -2104,6 +2271,7 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.ui.labelFrom.setText('')
|
||||
else:
|
||||
self.ui.labelFrom.setText(toAddressAtCurrentInboxRow)
|
||||
self.setBroadcastEnablementDependingOnWhetherThisIsAChanAddress(toAddressAtCurrentInboxRow)
|
||||
self.ui.lineEditTo.setText(str(fromAddressAtCurrentInboxRow))
|
||||
self.ui.comboBoxSendFrom.setCurrentIndex(0)
|
||||
# self.ui.comboBoxSendFrom.setEditText(str(self.ui.tableWidgetInbox.item(currentInboxRow,0).text))
|
||||
|
@ -2327,7 +2495,7 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.statusBar().showMessage(QtGui.QApplication.translate("MainWindow", "Error: You cannot add the same address to your subsciptions twice. Perhaps rename the existing one if you want."))
|
||||
continue
|
||||
labelAtCurrentRow = self.ui.tableWidgetAddressBook.item(currentRow,0).text().toUtf8()
|
||||
self.addSubscription(labelAtCurrentRow, addressAtCurrentRow)
|
||||
self.addSubscription(addressAtCurrentRow, labelAtCurrentRow)
|
||||
self.ui.tabWidget.setCurrentIndex(4)
|
||||
|
||||
def on_context_menuAddressBook(self, point):
|
||||
|
@ -2379,9 +2547,9 @@ class MyForm(QtGui.QMainWindow):
|
|||
shared.sqlSubmitQueue.put('commit')
|
||||
shared.sqlLock.release()
|
||||
self.ui.tableWidgetSubscriptions.item(
|
||||
currentRow, 0).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 0).setTextColor(QApplication.palette().text().color())
|
||||
self.ui.tableWidgetSubscriptions.item(
|
||||
currentRow, 1).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 1).setTextColor(QApplication.palette().text().color())
|
||||
shared.reloadBroadcastSendersForWhichImWatching()
|
||||
|
||||
def on_action_SubscriptionsDisable(self):
|
||||
|
@ -2450,9 +2618,9 @@ class MyForm(QtGui.QMainWindow):
|
|||
addressAtCurrentRow = self.ui.tableWidgetBlacklist.item(
|
||||
currentRow, 1).text()
|
||||
self.ui.tableWidgetBlacklist.item(
|
||||
currentRow, 0).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 0).setTextColor(QApplication.palette().text().color())
|
||||
self.ui.tableWidgetBlacklist.item(
|
||||
currentRow, 1).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 1).setTextColor(QApplication.palette().text().color())
|
||||
t = (str(addressAtCurrentRow),)
|
||||
shared.sqlLock.acquire()
|
||||
if shared.config.get('bitmessagesettings', 'blackwhitelist') == 'black':
|
||||
|
@ -2503,13 +2671,15 @@ class MyForm(QtGui.QMainWindow):
|
|||
with open(shared.appdata + 'keys.dat', 'wb') as configfile:
|
||||
shared.config.write(configfile)
|
||||
self.ui.tableWidgetYourIdentities.item(
|
||||
currentRow, 0).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 0).setTextColor(QApplication.palette().text().color())
|
||||
self.ui.tableWidgetYourIdentities.item(
|
||||
currentRow, 1).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 1).setTextColor(QApplication.palette().text().color())
|
||||
self.ui.tableWidgetYourIdentities.item(
|
||||
currentRow, 2).setTextColor(QtGui.QColor(0, 0, 0))
|
||||
currentRow, 2).setTextColor(QApplication.palette().text().color())
|
||||
if shared.safeConfigGetBoolean(addressAtCurrentRow, 'mailinglist'):
|
||||
self.ui.tableWidgetYourIdentities.item(currentRow, 1).setTextColor(QtGui.QColor(137, 04, 177))
|
||||
if shared.safeConfigGetBoolean(addressAtCurrentRow, 'chan'):
|
||||
self.ui.tableWidgetYourIdentities.item(currentRow, 1).setTextColor(QtGui.QColor(216, 119, 0)) # orange
|
||||
shared.reloadMyAddressHashes()
|
||||
|
||||
def on_action_YourIdentitiesDisable(self):
|
||||
|
@ -2678,11 +2848,14 @@ class MyForm(QtGui.QMainWindow):
|
|||
def writeNewAddressToTable(self, label, address, streamNumber):
|
||||
self.ui.tableWidgetYourIdentities.setSortingEnabled(False)
|
||||
self.ui.tableWidgetYourIdentities.insertRow(0)
|
||||
newItem = QtGui.QTableWidgetItem(unicode(label, 'utf-8'))
|
||||
self.ui.tableWidgetYourIdentities.setItem(
|
||||
0, 0, QtGui.QTableWidgetItem(unicode(label, 'utf-8')))
|
||||
0, 0, newItem)
|
||||
newItem = QtGui.QTableWidgetItem(address)
|
||||
newItem.setFlags(
|
||||
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
if shared.safeConfigGetBoolean(address, 'chan'):
|
||||
newItem.setTextColor(QtGui.QColor(216, 119, 0)) # orange
|
||||
self.ui.tableWidgetYourIdentities.setItem(0, 1, newItem)
|
||||
newItem = QtGui.QTableWidgetItem(streamNumber)
|
||||
newItem.setFlags(
|
||||
|
@ -2708,7 +2881,15 @@ class helpDialog(QtGui.QDialog):
|
|||
self.parent = parent
|
||||
self.ui.labelHelpURI.setOpenExternalLinks(True)
|
||||
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
||||
|
||||
class connectDialog(QtGui.QDialog):
|
||||
|
||||
def __init__(self, parent):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
self.ui = Ui_connectDialog()
|
||||
self.ui.setupUi(self)
|
||||
self.parent = parent
|
||||
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
||||
|
||||
class aboutDialog(QtGui.QDialog):
|
||||
|
||||
|
@ -2729,7 +2910,6 @@ class regenerateAddressesDialog(QtGui.QDialog):
|
|||
self.parent = parent
|
||||
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
||||
|
||||
|
||||
class settingsDialog(QtGui.QDialog):
|
||||
|
||||
def __init__(self, parent):
|
||||
|
@ -2763,6 +2943,8 @@ class settingsDialog(QtGui.QDialog):
|
|||
shared.config.get('bitmessagesettings', 'port')))
|
||||
self.ui.checkBoxAuthentication.setChecked(shared.config.getboolean(
|
||||
'bitmessagesettings', 'socksauthentication'))
|
||||
self.ui.checkBoxSocksListen.setChecked(shared.config.getboolean(
|
||||
'bitmessagesettings', 'sockslisten'))
|
||||
if str(shared.config.get('bitmessagesettings', 'socksproxytype')) == 'none':
|
||||
self.ui.comboBoxProxyType.setCurrentIndex(0)
|
||||
self.ui.lineEditSocksHostname.setEnabled(False)
|
||||
|
@ -2770,6 +2952,7 @@ class settingsDialog(QtGui.QDialog):
|
|||
self.ui.lineEditSocksUsername.setEnabled(False)
|
||||
self.ui.lineEditSocksPassword.setEnabled(False)
|
||||
self.ui.checkBoxAuthentication.setEnabled(False)
|
||||
self.ui.checkBoxSocksListen.setEnabled(False)
|
||||
elif str(shared.config.get('bitmessagesettings', 'socksproxytype')) == 'SOCKS4a':
|
||||
self.ui.comboBoxProxyType.setCurrentIndex(1)
|
||||
self.ui.lineEditTCPPort.setEnabled(False)
|
||||
|
@ -2826,11 +3009,13 @@ class settingsDialog(QtGui.QDialog):
|
|||
self.ui.lineEditSocksUsername.setEnabled(False)
|
||||
self.ui.lineEditSocksPassword.setEnabled(False)
|
||||
self.ui.checkBoxAuthentication.setEnabled(False)
|
||||
self.ui.checkBoxSocksListen.setEnabled(False)
|
||||
self.ui.lineEditTCPPort.setEnabled(True)
|
||||
elif comboBoxIndex == 1 or comboBoxIndex == 2:
|
||||
self.ui.lineEditSocksHostname.setEnabled(True)
|
||||
self.ui.lineEditSocksPort.setEnabled(True)
|
||||
self.ui.checkBoxAuthentication.setEnabled(True)
|
||||
self.ui.checkBoxSocksListen.setEnabled(True)
|
||||
if self.ui.checkBoxAuthentication.isChecked():
|
||||
self.ui.lineEditSocksUsername.setEnabled(True)
|
||||
self.ui.lineEditSocksPassword.setEnabled(True)
|
||||
|
@ -2847,17 +3032,23 @@ class SpecialAddressBehaviorDialog(QtGui.QDialog):
|
|||
currentRow = parent.ui.tableWidgetYourIdentities.currentRow()
|
||||
addressAtCurrentRow = str(
|
||||
parent.ui.tableWidgetYourIdentities.item(currentRow, 1).text())
|
||||
if shared.safeConfigGetBoolean(addressAtCurrentRow, 'mailinglist'):
|
||||
self.ui.radioButtonBehaviorMailingList.click()
|
||||
else:
|
||||
self.ui.radioButtonBehaveNormalAddress.click()
|
||||
try:
|
||||
mailingListName = shared.config.get(
|
||||
addressAtCurrentRow, 'mailinglistname')
|
||||
except:
|
||||
mailingListName = ''
|
||||
self.ui.lineEditMailingListName.setText(
|
||||
unicode(mailingListName, 'utf-8'))
|
||||
if not shared.safeConfigGetBoolean(addressAtCurrentRow, 'chan'):
|
||||
if shared.safeConfigGetBoolean(addressAtCurrentRow, 'mailinglist'):
|
||||
self.ui.radioButtonBehaviorMailingList.click()
|
||||
else:
|
||||
self.ui.radioButtonBehaveNormalAddress.click()
|
||||
try:
|
||||
mailingListName = shared.config.get(
|
||||
addressAtCurrentRow, 'mailinglistname')
|
||||
except:
|
||||
mailingListName = ''
|
||||
self.ui.lineEditMailingListName.setText(
|
||||
unicode(mailingListName, 'utf-8'))
|
||||
else: # if addressAtCurrentRow is a chan address
|
||||
self.ui.radioButtonBehaviorMailingList.setDisabled(True)
|
||||
self.ui.lineEditMailingListName.setText(_translate(
|
||||
"MainWindow", "This is a chan address. You cannot use it as a pseudo-mailing list."))
|
||||
|
||||
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
||||
|
||||
|
||||
|
@ -2916,11 +3107,11 @@ class NewAddressDialog(QtGui.QDialog):
|
|||
self.ui.groupBoxDeterministic.setHidden(True)
|
||||
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
||||
|
||||
class NewChanDialog(QtGui.QDialog):
|
||||
class newChanDialog(QtGui.QDialog):
|
||||
|
||||
def __init__(self, parent):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
self.ui = Ui_NewChanDialog()
|
||||
self.ui = Ui_newChanDialog()
|
||||
self.ui.setupUi(self)
|
||||
self.parent = parent
|
||||
self.ui.groupBoxCreateChan.setHidden(True)
|
||||
|
@ -3042,6 +3233,8 @@ def run():
|
|||
myapp.appIndicatorInit(app)
|
||||
myapp.ubuntuMessagingMenuInit()
|
||||
myapp.notifierInit()
|
||||
if shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
||||
myapp.showConnectDialog() # ask the user if we may connect
|
||||
if gevent is None:
|
||||
sys.exit(app.exec_())
|
||||
else:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'bitmessageui.ui'
|
||||
#
|
||||
# Created: Sat Jul 13 20:23:44 2013
|
||||
# Created: Sun Jul 21 17:50:02 2013
|
||||
# by: PyQt4 UI code generator 4.10.2
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|