[Pkg-privacy-commits] [onionshare] 23/66: Porting onionshare GUI from python2 to python3, and also from PyQt4 to PyQt5 (#261). This commit ports onionshare_gui.
Ulrike Uhlig
u-guest at moszumanska.debian.org
Wed Apr 13 22:17:48 UTC 2016
This is an automated email from the git hooks/post-receive script.
u-guest pushed a commit to branch master
in repository onionshare.
commit 62c69c4c0b2b9be0f273303c4326279ff56cd011
Author: Micah Lee <micah at micahflee.com>
Date: Fri Feb 12 15:12:27 2016 -0800
Porting onionshare GUI from python2 to python3, and also from PyQt4 to PyQt5 (#261). This commit ports onionshare_gui.
---
onionshare_gui/__init__.py | 2 +-
onionshare_gui/common.py | 1 +
onionshare_gui/downloads.py | 10 +++++-----
onionshare_gui/file_selection.py | 43 +++++++++++++++++++---------------------
onionshare_gui/onionshare_gui.py | 40 ++++++++++++++++++-------------------
onionshare_gui/options.py | 10 +++++-----
onionshare_gui/server_status.py | 18 ++++++++---------
setup.py | 6 ++----
8 files changed, 63 insertions(+), 67 deletions(-)
diff --git a/onionshare_gui/__init__.py b/onionshare_gui/__init__.py
index 591070d..a531115 100644
--- a/onionshare_gui/__init__.py
+++ b/onionshare_gui/__init__.py
@@ -17,4 +17,4 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-from onionshare_gui import *
+from .onionshare_gui import *
diff --git a/onionshare_gui/common.py b/onionshare_gui/common.py
index 3ae3ea0..1a23b47 100644
--- a/onionshare_gui/common.py
+++ b/onionshare_gui/common.py
@@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import os, sys, inspect, platform
+
from onionshare import helpers
diff --git a/onionshare_gui/downloads.py b/onionshare_gui/downloads.py
index 054db3e..fcb7b0c 100644
--- a/onionshare_gui/downloads.py
+++ b/onionshare_gui/downloads.py
@@ -19,11 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import time
-from PyQt4 import QtCore, QtGui
+from PyQt5 import QtCore, QtWidgets
-import common
from onionshare import strings, helpers
+from . import common
class Download(object):
@@ -34,7 +34,7 @@ class Download(object):
self.downloaded_bytes = 0
# make a new progress bar
- self.progress_bar = QtGui.QProgressBar()
+ self.progress_bar = QtWidgets.QProgressBar()
self.progress_bar.setTextVisible(True)
self.progress_bar.setAlignment(QtCore.Qt.AlignHCenter)
self.progress_bar.setMinimum(0)
@@ -79,7 +79,7 @@ class Download(object):
self.started)
-class Downloads(QtGui.QVBoxLayout):
+class Downloads(QtWidgets.QVBoxLayout):
"""
The downloads chunk of the GUI. This lists all of the active download
progress bars.
@@ -90,7 +90,7 @@ class Downloads(QtGui.QVBoxLayout):
self.downloads = {}
# downloads label
- self.downloads_label = QtGui.QLabel(strings._('gui_downloads', True))
+ self.downloads_label = QtWidgets.QLabel(strings._('gui_downloads', True))
self.downloads_label.hide()
# add the widgets
diff --git a/onionshare_gui/file_selection.py b/onionshare_gui/file_selection.py
index 441b3c9..4d28b2c 100644
--- a/onionshare_gui/file_selection.py
+++ b/onionshare_gui/file_selection.py
@@ -18,13 +18,13 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import os
-from PyQt4 import QtCore, QtGui
+from PyQt5 import QtCore, QtWidgets, QtGui
-import common
from onionshare import strings, helpers
+from . import common
-class FileList(QtGui.QListWidget):
+class FileList(QtWidgets.QListWidget):
"""
The list of files and folders in the GUI.
"""
@@ -37,7 +37,7 @@ class FileList(QtGui.QListWidget):
self.setIconSize(QtCore.QSize(32, 32))
self.setSortingEnabled(True)
- class DropHereLabel(QtGui.QLabel):
+ class DropHereLabel(QtWidgets.QLabel):
"""
When there are no files or folders in the FileList yet, display the
'drop files here' message and graphic.
@@ -51,7 +51,7 @@ class FileList(QtGui.QListWidget):
if image:
self.setPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(common.get_image_path('drop_files.png'))))
else:
- self.setText(QtCore.QString(strings._('gui_drag_and_drop', True)))
+ self.setText(strings._('gui_drag_and_drop', True))
self.setStyleSheet('color: #999999;')
self.hide()
@@ -131,23 +131,20 @@ class FileList(QtGui.QListWidget):
Add a file or directory to this widget.
"""
if filename not in self.filenames:
- # make filenames unicode-safe for Qt (#141)
- filename = filename.encode('utf-8').decode('utf-8', 'replace')
-
self.filenames.append(filename)
fileinfo = QtCore.QFileInfo(filename)
basename = os.path.basename(filename.rstrip('/'))
- ip = QtGui.QFileIconProvider()
+ ip = QtWidgets.QFileIconProvider()
icon = ip.icon(fileinfo)
if os.path.isfile(filename):
size = helpers.human_readable_filesize(fileinfo.size())
else:
size = helpers.human_readable_filesize(helpers.dir_size(filename))
- item_name = unicode('{0:s} ({1:s})'.format(basename, size))
- item = QtGui.QListWidgetItem(item_name)
- item.setToolTip(QtCore.QString(size))
+ item_name = '{0:s} ({1:s})'.format(basename, size)
+ item = QtWidgets.QListWidgetItem(item_name)
+ item.setToolTip(size)
item.setIcon(icon)
self.addItem(item)
@@ -155,7 +152,7 @@ class FileList(QtGui.QListWidget):
self.files_updated.emit()
-class FileSelection(QtGui.QVBoxLayout):
+class FileSelection(QtWidgets.QVBoxLayout):
"""
The list of files and folders in the GUI, as well as buttons to add and
delete the files and folders.
@@ -170,13 +167,13 @@ class FileSelection(QtGui.QVBoxLayout):
self.file_list.files_dropped.connect(self.update)
# buttons
- self.add_files_button = QtGui.QPushButton(strings._('gui_add_files', True))
+ self.add_files_button = QtWidgets.QPushButton(strings._('gui_add_files', True))
self.add_files_button.clicked.connect(self.add_files)
- self.add_dir_button = QtGui.QPushButton(strings._('gui_add_folder', True))
+ self.add_dir_button = QtWidgets.QPushButton(strings._('gui_add_folder', True))
self.add_dir_button.clicked.connect(self.add_dir)
- self.delete_button = QtGui.QPushButton(strings._('gui_delete', True))
+ self.delete_button = QtWidgets.QPushButton(strings._('gui_delete', True))
self.delete_button.clicked.connect(self.delete_file)
- button_layout = QtGui.QHBoxLayout()
+ button_layout = QtWidgets.QHBoxLayout()
button_layout.addWidget(self.add_files_button)
button_layout.addWidget(self.add_dir_button)
button_layout.addWidget(self.delete_button)
@@ -214,19 +211,19 @@ class FileSelection(QtGui.QVBoxLayout):
"""
Add files button clicked.
"""
- filenames = QtGui.QFileDialog.getOpenFileNames(
- caption=strings._('gui_choose_files', True), options=QtGui.QFileDialog.ReadOnly)
+ filenames = QtWidgets.QFileDialog.getOpenFileNames(
+ caption=strings._('gui_choose_files', True), options=QtWidgets.QFileDialog.ReadOnly)
if filenames:
- for filename in filenames:
- self.file_list.add_file(str(filename))
+ for filename in filenames[0]:
+ self.file_list.add_file(filename)
self.update()
def add_dir(self):
"""
Add folder button clicked.
"""
- filename = QtGui.QFileDialog.getExistingDirectory(
- caption=strings._('gui_choose_folder', True), options=QtGui.QFileDialog.ReadOnly)
+ filename = QtWidgets.QFileDialog.getExistingDirectory(
+ caption=strings._('gui_choose_folder', True), options=QtWidgets.QFileDialog.ReadOnly)
if filename:
self.file_list.add_file(str(filename))
self.update()
diff --git a/onionshare_gui/onionshare_gui.py b/onionshare_gui/onionshare_gui.py
index 31f6cea..4ddacd2 100644
--- a/onionshare_gui/onionshare_gui.py
+++ b/onionshare_gui/onionshare_gui.py
@@ -19,9 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from __future__ import division
import os, sys, subprocess, inspect, platform, argparse, threading, time, math, inspect, platform
-from PyQt4 import QtCore, QtGui
+from PyQt5 import QtCore, QtWidgets, QtGui
-import common
+from . import common
try:
import onionshare
@@ -30,13 +30,13 @@ except ImportError:
import onionshare
from onionshare import strings, helpers, web
-from file_selection import FileSelection
-from server_status import ServerStatus
-from downloads import Downloads
-from options import Options
+from .file_selection import FileSelection
+from .server_status import ServerStatus
+from .downloads import Downloads
+from .options import Options
-class Application(QtGui.QApplication):
+class Application(QtWidgets.QApplication):
"""
This is Qt's QApplication class. It has been overridden to support threads
and the quick keyboard shortcut.
@@ -45,7 +45,7 @@ class Application(QtGui.QApplication):
platform = helpers.get_platform()
if platform == 'Linux':
self.setAttribute(QtCore.Qt.AA_X11InitThreads, True)
- QtGui.QApplication.__init__(self, sys.argv)
+ QtWidgets.QApplication.__init__(self, sys.argv)
self.installEventFilter(self)
def eventFilter(self, obj, event):
@@ -56,7 +56,7 @@ class Application(QtGui.QApplication):
return False
-class OnionShareGui(QtGui.QWidget):
+class OnionShareGui(QtWidgets.QWidget):
"""
OnionShareGui is the main window for the GUI that contains all of the
GUI elements.
@@ -98,7 +98,7 @@ class OnionShareGui(QtGui.QWidget):
self.starting_server_step2.connect(self.start_server_step2)
# filesize warning
- self.filesize_warning = QtGui.QLabel()
+ self.filesize_warning = QtWidgets.QLabel()
self.filesize_warning.setStyleSheet('padding: 10px 0; font-weight: bold; color: #333333;')
self.filesize_warning.hide()
@@ -109,14 +109,14 @@ class OnionShareGui(QtGui.QWidget):
self.options = Options(web, self.app)
# status bar
- self.status_bar = QtGui.QStatusBar()
+ self.status_bar = QtWidgets.QStatusBar()
self.status_bar.setSizeGripEnabled(False)
- version_label = QtGui.QLabel('v{0:s}'.format(helpers.get_version()))
+ version_label = QtWidgets.QLabel('v{0:s}'.format(helpers.get_version()))
version_label.setStyleSheet('color: #666666;')
self.status_bar.addPermanentWidget(version_label)
# main layout
- self.layout = QtGui.QVBoxLayout()
+ self.layout = QtWidgets.QVBoxLayout()
self.layout.addLayout(self.file_selection)
self.layout.addLayout(self.server_status)
self.layout.addWidget(self.filesize_warning)
@@ -128,7 +128,7 @@ class OnionShareGui(QtGui.QWidget):
# check for requests frequently
self.timer = QtCore.QTimer()
- QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.check_for_requests)
+ self.timer.timeout.connect(self.check_for_requests)
self.timer.start(500)
def start_server_step2(self):
@@ -152,7 +152,7 @@ class OnionShareGui(QtGui.QWidget):
try:
self.app.start_hidden_service(gui=True)
except onionshare.hs.NoTor as e:
- alert(e.args[0], QtGui.QMessageBox.Warning)
+ alert(e.args[0], QtWidgets.QMessageBox.Warning)
self.server_status.stop_server()
self.status_bar.clearMessage()
return
@@ -208,7 +208,7 @@ class OnionShareGui(QtGui.QWidget):
try:
r = web.q.get(False)
events.append(r)
- except web.Queue.Empty:
+ except web.queue.Empty:
done = True
for event in events:
@@ -246,11 +246,11 @@ class OnionShareGui(QtGui.QWidget):
self.status_bar.clearMessage()
-def alert(msg, icon=QtGui.QMessageBox.NoIcon):
+def alert(msg, icon=QtWidgets.QMessageBox.NoIcon):
"""
Pop up a message in a dialog window.
"""
- dialog = QtGui.QMessageBox()
+ dialog = QtWidgets.QMessageBox()
dialog.setWindowTitle("OnionShare")
dialog.setWindowIcon(window_icon)
dialog.setText(msg)
@@ -263,7 +263,7 @@ def main():
The main() function implements all of the logic that the GUI version of onionshare uses.
"""
strings.load_strings()
- print strings._('version_string').format(helpers.get_version())
+ print(strings._('version_string').format(helpers.get_version()))
# start the Qt app
global qtapp
@@ -310,7 +310,7 @@ def main():
# clean up when app quits
def shutdown():
app.cleanup()
- qtapp.connect(qtapp, QtCore.SIGNAL("aboutToQuit()"), shutdown)
+ qtapp.aboutToQuit.connect(shutdown)
# launch the gui
gui = OnionShareGui(qtapp, app)
diff --git a/onionshare_gui/options.py b/onionshare_gui/options.py
index 176f1c3..90f5a8f 100644
--- a/onionshare_gui/options.py
+++ b/onionshare_gui/options.py
@@ -17,13 +17,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-from PyQt4 import QtCore, QtGui
+from PyQt5 import QtCore, QtWidgets
-import common
from onionshare import strings, helpers
+from . import common
-class Options(QtGui.QHBoxLayout):
+class Options(QtWidgets.QHBoxLayout):
"""
The extra onionshare options in the GUI.
"""
@@ -34,13 +34,13 @@ class Options(QtGui.QHBoxLayout):
self.app = app
# close automatically
- self.close_automatically = QtGui.QCheckBox()
+ self.close_automatically = QtWidgets.QCheckBox()
if self.web.stay_open:
self.close_automatically.setCheckState(QtCore.Qt.Unchecked)
else:
self.close_automatically.setCheckState(QtCore.Qt.Checked)
self.close_automatically.setText(strings._("close_on_finish", True))
- self.connect(self.close_automatically, QtCore.SIGNAL('stateChanged(int)'), self.stay_open_changed)
+ self.close_automatically.stateChanged.connect(self.stay_open_changed)
# add the widgets
self.addWidget(self.close_automatically)
diff --git a/onionshare_gui/server_status.py b/onionshare_gui/server_status.py
index 9753895..6e1ff0d 100644
--- a/onionshare_gui/server_status.py
+++ b/onionshare_gui/server_status.py
@@ -18,13 +18,13 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import platform
-from PyQt4 import QtCore, QtGui
+from PyQt5 import QtCore, QtWidgets, QtGui
-import common
from onionshare import strings, helpers
+from . import common
-class ServerStatus(QtGui.QVBoxLayout):
+class ServerStatus(QtWidgets.QVBoxLayout):
"""
The server status chunk of the GUI.
"""
@@ -49,23 +49,23 @@ class ServerStatus(QtGui.QVBoxLayout):
self.status_image_stopped = QtGui.QImage(common.get_image_path('server_stopped.png'))
self.status_image_working = QtGui.QImage(common.get_image_path('server_working.png'))
self.status_image_started = QtGui.QImage(common.get_image_path('server_started.png'))
- self.status_image_label = QtGui.QLabel()
+ self.status_image_label = QtWidgets.QLabel()
self.status_image_label.setFixedWidth(30)
- self.server_button = QtGui.QPushButton()
+ self.server_button = QtWidgets.QPushButton()
self.server_button.clicked.connect(self.server_button_clicked)
- server_layout = QtGui.QHBoxLayout()
+ server_layout = QtWidgets.QHBoxLayout()
server_layout.addWidget(self.status_image_label)
server_layout.addWidget(self.server_button)
# url layout
url_font = QtGui.QFont()
- self.url_label = QtGui.QLabel()
+ self.url_label = QtWidgets.QLabel()
self.url_label.setFont(url_font)
self.url_label.setWordWrap(True)
self.url_label.setAlignment(QtCore.Qt.AlignCenter)
- self.copy_url_button = QtGui.QPushButton(strings._('gui_copy_url', True))
+ self.copy_url_button = QtWidgets.QPushButton(strings._('gui_copy_url', True))
self.copy_url_button.clicked.connect(self.copy_url)
- url_layout = QtGui.QHBoxLayout()
+ url_layout = QtWidgets.QHBoxLayout()
url_layout.addWidget(self.url_label)
url_layout.addWidget(self.copy_url_button)
diff --git a/setup.py b/setup.py
index ecc1f1a..ab1d990 100644
--- a/setup.py
+++ b/setup.py
@@ -83,11 +83,9 @@ if system == 'Linux':
url='https://github.com/micahflee/onionshare',
license="GPL v3",
keywords='onion, share, onionshare, tor, anonymous, web server',
- #packages=['onionshare', 'onionshare_gui'],
- packages=['onionshare'],
+ packages=['onionshare', 'onionshare_gui'],
include_package_data=True,
- #scripts=['install/linux_scripts/onionshare', 'install/linux_scripts/onionshare-gui'],
- scripts=['install/linux_scripts/onionshare'],
+ scripts=['install/linux_scripts/onionshare', 'install/linux_scripts/onionshare-gui'],
data_files=[
(os.path.join(sys.prefix, 'share/applications'), ['install/onionshare.desktop']),
(os.path.join(sys.prefix, 'share/appdata'), ['install/onionshare.appdata.xml']),
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/onionshare.git
More information about the Pkg-privacy-commits
mailing list